diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/Makefile | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 49 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 4 |
4 files changed, 66 insertions, 12 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile index a51c5a960750..bfd332c95b61 100644 --- a/drivers/gpu/drm/amd/amdgpu/Makefile +++ b/drivers/gpu/drm/amd/amdgpu/Makefile | |||
| @@ -56,8 +56,7 @@ amdgpu-y += amdgpu_device.o amdgpu_kms.o \ | |||
| 56 | 56 | ||
| 57 | # add asic specific block | 57 | # add asic specific block |
| 58 | amdgpu-$(CONFIG_DRM_AMDGPU_CIK)+= cik.o cik_ih.o kv_smc.o kv_dpm.o \ | 58 | amdgpu-$(CONFIG_DRM_AMDGPU_CIK)+= cik.o cik_ih.o kv_smc.o kv_dpm.o \ |
| 59 | ci_smc.o ci_dpm.o dce_v8_0.o gfx_v7_0.o cik_sdma.o uvd_v4_2.o vce_v2_0.o \ | 59 | ci_smc.o ci_dpm.o dce_v8_0.o gfx_v7_0.o cik_sdma.o uvd_v4_2.o vce_v2_0.o |
| 60 | amdgpu_amdkfd_gfx_v7.o | ||
| 61 | 60 | ||
| 62 | amdgpu-$(CONFIG_DRM_AMDGPU_SI)+= si.o gmc_v6_0.o gfx_v6_0.o si_ih.o si_dma.o dce_v6_0.o si_dpm.o si_smc.o | 61 | amdgpu-$(CONFIG_DRM_AMDGPU_SI)+= si.o gmc_v6_0.o gfx_v6_0.o si_ih.o si_dma.o dce_v6_0.o si_dpm.o si_smc.o |
| 63 | 62 | ||
| @@ -132,13 +131,21 @@ amdgpu-y += \ | |||
| 132 | vcn_v1_0.o | 131 | vcn_v1_0.o |
| 133 | 132 | ||
| 134 | # add amdkfd interfaces | 133 | # add amdkfd interfaces |
| 134 | amdgpu-y += amdgpu_amdkfd.o | ||
| 135 | |||
| 136 | ifneq ($(CONFIG_HSA_AMD),) | ||
| 135 | amdgpu-y += \ | 137 | amdgpu-y += \ |
| 136 | amdgpu_amdkfd.o \ | ||
| 137 | amdgpu_amdkfd_fence.o \ | 138 | amdgpu_amdkfd_fence.o \ |
| 138 | amdgpu_amdkfd_gpuvm.o \ | 139 | amdgpu_amdkfd_gpuvm.o \ |
| 139 | amdgpu_amdkfd_gfx_v8.o \ | 140 | amdgpu_amdkfd_gfx_v8.o \ |
| 140 | amdgpu_amdkfd_gfx_v9.o | 141 | amdgpu_amdkfd_gfx_v9.o |
| 141 | 142 | ||
| 143 | ifneq ($(CONFIG_DRM_AMDGPU_CIK),) | ||
| 144 | amdgpu-y += amdgpu_amdkfd_gfx_v7.o | ||
| 145 | endif | ||
| 146 | |||
| 147 | endif | ||
| 148 | |||
| 142 | # add cgs | 149 | # add cgs |
| 143 | amdgpu-y += amdgpu_cgs.o | 150 | amdgpu-y += amdgpu_cgs.o |
| 144 | 151 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c index bd36ee9f7e6d..8f6f45567bfa 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | |||
| @@ -50,15 +50,21 @@ int amdgpu_amdkfd_init(void) | |||
| 50 | kgd2kfd = NULL; | 50 | kgd2kfd = NULL; |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | |||
| 53 | #elif defined(CONFIG_HSA_AMD) | 54 | #elif defined(CONFIG_HSA_AMD) |
| 55 | |||
| 54 | ret = kgd2kfd_init(KFD_INTERFACE_VERSION, &kgd2kfd); | 56 | ret = kgd2kfd_init(KFD_INTERFACE_VERSION, &kgd2kfd); |
| 55 | if (ret) | 57 | if (ret) |
| 56 | kgd2kfd = NULL; | 58 | kgd2kfd = NULL; |
| 57 | 59 | ||
| 58 | #else | 60 | #else |
| 61 | kgd2kfd = NULL; | ||
| 59 | ret = -ENOENT; | 62 | ret = -ENOENT; |
| 60 | #endif | 63 | #endif |
| 64 | |||
| 65 | #if defined(CONFIG_HSA_AMD_MODULE) || defined(CONFIG_HSA_AMD) | ||
| 61 | amdgpu_amdkfd_gpuvm_init_mem_limits(); | 66 | amdgpu_amdkfd_gpuvm_init_mem_limits(); |
| 67 | #endif | ||
| 62 | 68 | ||
| 63 | return ret; | 69 | return ret; |
| 64 | } | 70 | } |
| @@ -97,7 +103,7 @@ void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev) | |||
| 97 | kfd2kgd = amdgpu_amdkfd_gfx_9_0_get_functions(); | 103 | kfd2kgd = amdgpu_amdkfd_gfx_9_0_get_functions(); |
| 98 | break; | 104 | break; |
| 99 | default: | 105 | default: |
| 100 | dev_dbg(adev->dev, "kfd not supported on this ASIC\n"); | 106 | dev_info(adev->dev, "kfd not supported on this ASIC\n"); |
| 101 | return; | 107 | return; |
| 102 | } | 108 | } |
| 103 | 109 | ||
| @@ -464,3 +470,44 @@ bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid) | |||
| 464 | 470 | ||
| 465 | return false; | 471 | return false; |
| 466 | } | 472 | } |
| 473 | |||
| 474 | #if !defined(CONFIG_HSA_AMD_MODULE) && !defined(CONFIG_HSA_AMD) | ||
| 475 | bool amdkfd_fence_check_mm(struct dma_fence *f, struct mm_struct *mm) | ||
| 476 | { | ||
| 477 | return false; | ||
| 478 | } | ||
| 479 | |||
| 480 | void amdgpu_amdkfd_unreserve_system_memory_limit(struct amdgpu_bo *bo) | ||
| 481 | { | ||
| 482 | } | ||
| 483 | |||
| 484 | void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev, | ||
| 485 | struct amdgpu_vm *vm) | ||
| 486 | { | ||
| 487 | } | ||
| 488 | |||
| 489 | struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct dma_fence *f) | ||
| 490 | { | ||
| 491 | return NULL; | ||
| 492 | } | ||
| 493 | |||
| 494 | int amdgpu_amdkfd_evict_userptr(struct kgd_mem *mem, struct mm_struct *mm) | ||
| 495 | { | ||
| 496 | return 0; | ||
| 497 | } | ||
| 498 | |||
| 499 | struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions(void) | ||
| 500 | { | ||
| 501 | return NULL; | ||
| 502 | } | ||
| 503 | |||
| 504 | struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void) | ||
| 505 | { | ||
| 506 | return NULL; | ||
| 507 | } | ||
| 508 | |||
| 509 | struct kfd2kgd_calls *amdgpu_amdkfd_gfx_9_0_get_functions(void) | ||
| 510 | { | ||
| 511 | return NULL; | ||
| 512 | } | ||
| 513 | #endif | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h index 12367a9951e8..a8418a3f4e9d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | |||
| @@ -156,14 +156,14 @@ uint64_t amdgpu_amdkfd_get_vram_usage(struct kgd_dev *kgd); | |||
| 156 | 156 | ||
| 157 | /* GPUVM API */ | 157 | /* GPUVM API */ |
| 158 | int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm, | 158 | int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm, |
| 159 | void **process_info, | 159 | void **process_info, |
| 160 | struct dma_fence **ef); | 160 | struct dma_fence **ef); |
| 161 | int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd, | 161 | int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd, |
| 162 | struct file *filp, | 162 | struct file *filp, |
| 163 | void **vm, void **process_info, | 163 | void **vm, void **process_info, |
| 164 | struct dma_fence **ef); | 164 | struct dma_fence **ef); |
| 165 | void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev, | 165 | void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev, |
| 166 | struct amdgpu_vm *vm); | 166 | struct amdgpu_vm *vm); |
| 167 | void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm); | 167 | void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm); |
| 168 | uint32_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *vm); | 168 | uint32_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *vm); |
| 169 | int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( | 169 | int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c index 8f37991df61b..f0c0d3953f69 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | |||
| @@ -470,9 +470,9 @@ static int kgd_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id, | |||
| 470 | WREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_WPTR_HI), | 470 | WREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_WPTR_HI), |
| 471 | upper_32_bits(guessed_wptr)); | 471 | upper_32_bits(guessed_wptr)); |
| 472 | WREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_WPTR_POLL_ADDR), | 472 | WREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_WPTR_POLL_ADDR), |
| 473 | lower_32_bits((uint64_t)wptr)); | 473 | lower_32_bits((uintptr_t)wptr)); |
| 474 | WREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_WPTR_POLL_ADDR_HI), | 474 | WREG32(SOC15_REG_OFFSET(GC, 0, mmCP_HQD_PQ_WPTR_POLL_ADDR_HI), |
| 475 | upper_32_bits((uint64_t)wptr)); | 475 | upper_32_bits((uintptr_t)wptr)); |
| 476 | WREG32(SOC15_REG_OFFSET(GC, 0, mmCP_PQ_WPTR_POLL_CNTL1), | 476 | WREG32(SOC15_REG_OFFSET(GC, 0, mmCP_PQ_WPTR_POLL_CNTL1), |
| 477 | get_queue_mask(adev, pipe_id, queue_id)); | 477 | get_queue_mask(adev, pipe_id, queue_id)); |
| 478 | } | 478 | } |
