diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2732-drm-amdgpu-Simplify-kgd2kfd-interface.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2732-drm-amdgpu-Simplify-kgd2kfd-interface.patch | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2732-drm-amdgpu-Simplify-kgd2kfd-interface.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2732-drm-amdgpu-Simplify-kgd2kfd-interface.patch new file mode 100644 index 00000000..101e7f04 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2732-drm-amdgpu-Simplify-kgd2kfd-interface.patch @@ -0,0 +1,171 @@ +From dae47835f5fe3c439792cdd953768606656f315e Mon Sep 17 00:00:00 2001 +From: Amber Lin <Amber.Lin@amd.com> +Date: Thu, 13 Dec 2018 15:18:01 -0500 +Subject: [PATCH 2732/2940] drm/amdgpu: Simplify kgd2kfd interface +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +After amdkfd is merged into amdgpu module, amdgpu can call amdkfd +functions directly. + +Signed-off-by: Amber Lin <Amber.Lin@amd.com> +Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> +Acked-by: Christian König <christian.koenig@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 25 ++++++++----------- + .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 3 +-- + .../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 6 ++--- + 3 files changed, 13 insertions(+), 21 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +index 067c017bbdd7..8313da971e9e 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +@@ -62,18 +62,13 @@ int amdgpu_amdkfd_init(void) + + void amdgpu_amdkfd_fini(void) + { +- if (kgd2kfd) { +- kgd2kfd->exit(); +- symbol_put(kgd2kfd_init); +- } ++ kgd2kfd_exit(); + } + + void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev) + { + const struct kfd2kgd_calls *kfd2kgd; + +- if (!kgd2kfd) +- return; + + switch (adev->asic_type) { + #ifdef CONFIG_DRM_AMDGPU_CIK +@@ -101,8 +96,8 @@ void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev) + return; + } + +- adev->kfd.dev = kgd2kfd->probe((struct kgd_dev *)adev, +- adev->pdev, kfd2kgd); ++ adev->kfd.dev = kgd2kfd_probe((struct kgd_dev *)adev, ++ adev->pdev, kfd2kgd); + + if (adev->kfd.dev) + amdgpu_amdkfd_total_mem_size += adev->gmc.real_vram_size; +@@ -206,14 +201,14 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev) + gpu_resources.reserved_doorbell_mask = 0x1f0; + gpu_resources.reserved_doorbell_val = 0x0f0; + +- kgd2kfd->device_init(adev->kfd.dev, &gpu_resources); ++ kgd2kfd_device_init(adev->kfd.dev, &gpu_resources); + } + } + + void amdgpu_amdkfd_device_fini(struct amdgpu_device *adev) + { + if (adev->kfd.dev) { +- kgd2kfd->device_exit(adev->kfd.dev); ++ kgd2kfd_device_exit(adev->kfd.dev); + adev->kfd.dev = NULL; + } + } +@@ -222,13 +217,13 @@ void amdgpu_amdkfd_interrupt(struct amdgpu_device *adev, + const void *ih_ring_entry) + { + if (adev->kfd.dev) +- kgd2kfd->interrupt(adev->kfd.dev, ih_ring_entry); ++ kgd2kfd_interrupt(adev->kfd.dev, ih_ring_entry); + } + + void amdgpu_amdkfd_suspend(struct amdgpu_device *adev) + { + if (adev->kfd.dev) +- kgd2kfd->suspend(adev->kfd.dev); ++ kgd2kfd_suspend(adev->kfd.dev); + } + + int amdgpu_amdkfd_resume(struct amdgpu_device *adev) +@@ -236,7 +231,7 @@ int amdgpu_amdkfd_resume(struct amdgpu_device *adev) + int r = 0; + + if (adev->kfd.dev) +- r = kgd2kfd->resume(adev->kfd.dev); ++ r = kgd2kfd_resume(adev->kfd.dev); + + return r; + } +@@ -246,7 +241,7 @@ int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev) + int r = 0; + + if (adev->kfd.dev) +- r = kgd2kfd->pre_reset(adev->kfd.dev); ++ r = kgd2kfd_pre_reset(adev->kfd.dev); + + return r; + } +@@ -256,7 +251,7 @@ int amdgpu_amdkfd_post_reset(struct amdgpu_device *adev) + int r = 0; + + if (adev->kfd.dev) +- r = kgd2kfd->post_reset(adev->kfd.dev); ++ r = kgd2kfd_post_reset(adev->kfd.dev); + + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c +index 3c7055ecd990..3107b9575929 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c +@@ -31,7 +31,6 @@ + + static const struct dma_fence_ops amdkfd_fence_ops; + static atomic_t fence_seq = ATOMIC_INIT(0); +-extern const struct kgd2kfd_calls *kgd2kfd; + + /* Eviction Fence + * Fence helper functions to deal with KFD memory eviction. +@@ -123,7 +122,7 @@ static bool amdkfd_fence_enable_signaling(struct dma_fence *f) + if (dma_fence_is_signaled(f)) + return true; + +- if (!kgd2kfd->schedule_evict_and_restore_process(fence->mm, f)) ++ if (!kgd2kfd_schedule_evict_and_restore_process(fence->mm, f)) + return true; + + return false; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +index 5ca697af9a53..b6e07e27fe24 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +@@ -44,8 +44,6 @@ + */ + #define AMDGPU_USERPTR_RESTORE_DELAY_MS 1 + +-extern const struct kgd2kfd_calls *kgd2kfd; +- + /* Impose limit on how much memory KFD can use */ + static struct { + uint64_t max_system_mem_limit; +@@ -1783,7 +1781,7 @@ int amdgpu_amdkfd_evict_userptr(struct kgd_mem *mem, + evicted_bos = atomic_inc_return(&process_info->evicted_bos); + if (evicted_bos == 1) { + /* First eviction, stop the queues */ +- r = kgd2kfd->quiesce_mm(mm); ++ r = kgd2kfd_quiesce_mm(mm); + if (r) + pr_err("Failed to quiesce KFD\n"); + schedule_delayed_work(&process_info->restore_userptr_work, +@@ -2075,7 +2073,7 @@ static void amdgpu_amdkfd_restore_userptr_worker(struct work_struct *work) + evicted_bos) + goto unlock_out; + evicted_bos = 0; +- if (kgd2kfd->resume_mm(mm)) { ++ if (kgd2kfd_resume_mm(mm)) { + pr_err("%s: Failed to resume KFD\n", __func__); + /* No recovery from this failure. Probably the CP is + * hanging. No point trying again. +-- +2.17.1 + |