aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2018-05-29 21:06:17 -0400
committerDave Airlie <airlied@redhat.com>2018-05-29 21:12:22 -0400
commit568cf2e6aa0c762f14d2d0d481a006f93c63ab7a (patch)
tree7216fd42ea3e61a6e2b368b1877e51d17a815af8 /drivers/gpu/drm/amd/amdgpu
parent74860cbfdd41e7490f506eae08a0e633be95cc0f (diff)
parentebe1d22b57b86b6739f2739b5a0f52435596d84d (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/Makefile13
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c49
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h12
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c4
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
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..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)
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(
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 }