diff options
author | Dave Airlie <airlied@redhat.com> | 2018-05-29 21:06:17 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-05-29 21:12:22 -0400 |
commit | 568cf2e6aa0c762f14d2d0d481a006f93c63ab7a (patch) | |
tree | 7216fd42ea3e61a6e2b368b1877e51d17a815af8 /drivers/gpu/drm/amd/amdgpu | |
parent | 74860cbfdd41e7490f506eae08a0e633be95cc0f (diff) | |
parent | ebe1d22b57b86b6739f2739b5a0f52435596d84d (diff) |
Merge tag 'drm-amdkfd-next-2018-05-28' of git://people.freedesktop.org/~gabbayo/linux into drm-next
- Build amdkfd's related files inside amdgpu only if amdkfd is built
- Fix compile warning
- Print info message in case ASIC is not supported by amdkfd
Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180528110435.GA17960@odedg-x270
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 | } |