aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorOded Gabbay <oded.gabbay@gmail.com>2018-05-18 15:18:16 -0400
committerOded Gabbay <oded.gabbay@gmail.com>2018-05-18 15:18:16 -0400
commitfcdfa432a5b0569e8c5399effa950c71940b5889 (patch)
treef9e121e67fca8a7ac1289b6cf8669e91892f1760 /drivers/gpu
parentdd41fb8547c2422f3a3a75e7226525e8bba9381c (diff)
drm/amdgpu: conditionally compile amdgpu's amdkfd files
In case CONFIG_HSA_AMD is not chosen, there is no need to compile amdkfd files that reside inside amdgpu dirver. In addition, because amdkfd depends on x86_64 architecture and amdgpu is not, compiling amdkfd files under i386 architecture can cause compiler errors and warnings. This patch modifies amdgpu's makefile to build amdkfd files only if CONFIG_HSA_AMD is chosen. The only file to be compiled unconditionally is amdgpu_amdkfd.c There are stub functions that are compiled only if amdkfd is not compiled. In that case, calls from amdgpu driver proper will go to those functions instead of the real functions. v2: instead of using function pointers, use stub functions v3: initialize kgd2kfd to NULL in case amdkfd is not compiled Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/Makefile13
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c47
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h12
3 files changed, 63 insertions, 9 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
58amdgpu-$(CONFIG_DRM_AMDGPU_CIK)+= cik.o cik_ih.o kv_smc.o kv_dpm.o \ 58amdgpu-$(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
62amdgpu-$(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 61amdgpu-$(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
134amdgpu-y += amdgpu_amdkfd.o
135
136ifneq ($(CONFIG_HSA_AMD),)
135amdgpu-y += \ 137amdgpu-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
143ifneq ($(CONFIG_DRM_AMDGPU_CIK),)
144amdgpu-y += amdgpu_amdkfd_gfx_v7.o
145endif
146
147endif
148
142# add cgs 149# add cgs
143amdgpu-y += amdgpu_cgs.o 150amdgpu-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..95fcbd8a4bf3 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}
@@ -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)
475bool amdkfd_fence_check_mm(struct dma_fence *f, struct mm_struct *mm)
476{
477 return false;
478}
479
480void amdgpu_amdkfd_unreserve_system_memory_limit(struct amdgpu_bo *bo)
481{
482}
483
484void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev,
485 struct amdgpu_vm *vm)
486{
487}
488
489struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct dma_fence *f)
490{
491 return NULL;
492}
493
494int amdgpu_amdkfd_evict_userptr(struct kgd_mem *mem, struct mm_struct *mm)
495{
496 return 0;
497}
498
499struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions(void)
500{
501 return NULL;
502}
503
504struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void)
505{
506 return NULL;
507}
508
509struct 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 */
158int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm, 158int 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);
161int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd, 161int 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);
165void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev, 165void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev,
166 struct amdgpu_vm *vm); 166 struct amdgpu_vm *vm);
167void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm); 167void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm);
168uint32_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *vm); 168uint32_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *vm);
169int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( 169int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(