aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2706-drm-amdkfd-Simplify-kfd2kgd-interface.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2706-drm-amdkfd-Simplify-kfd2kgd-interface.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2706-drm-amdkfd-Simplify-kfd2kgd-interface.patch545
1 files changed, 545 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2706-drm-amdkfd-Simplify-kfd2kgd-interface.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2706-drm-amdkfd-Simplify-kfd2kgd-interface.patch
new file mode 100644
index 00000000..c04af5f2
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2706-drm-amdkfd-Simplify-kfd2kgd-interface.patch
@@ -0,0 +1,545 @@
+From b91aca92835a36d36b866383860915b01448e795 Mon Sep 17 00:00:00 2001
+From: Amber Lin <Amber.Lin@amd.com>
+Date: Tue, 16 Oct 2018 11:36:15 -0400
+Subject: [PATCH 2706/2940] drm/amdkfd: Simplify kfd2kgd interface
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+After amdkfd module is merged into amdgpu, KFD can call amdgpu directly
+and no longer needs to use the function pointer. Replace those function
+pointers with functions if they are not ASIC dependent.
+
+Signed-off-by: Amber Lin <Amber.Lin@amd.com>
+Acked-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ .../gpu/drm/amd/amdkfd/cik_event_interrupt.c | 3 +-
+ drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 21 ++++++------
+ drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 5 +--
+ drivers/gpu/drm/amd/amdkfd/kfd_device.c | 7 ++--
+ .../drm/amd/amdkfd/kfd_device_queue_manager.c | 15 ++++----
+ drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c | 3 +-
+ .../gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 5 +--
+ drivers/gpu/drm/amd/amdkfd/kfd_pasid.c | 5 +--
+ drivers/gpu/drm/amd/amdkfd/kfd_process.c | 34 ++++++++++---------
+ drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 10 +++---
+ 10 files changed, 59 insertions(+), 49 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/cik_event_interrupt.c b/drivers/gpu/drm/amd/amdkfd/cik_event_interrupt.c
+index 5d2475d5392c..177d1e5329a5 100644
+--- a/drivers/gpu/drm/amd/amdkfd/cik_event_interrupt.c
++++ b/drivers/gpu/drm/amd/amdkfd/cik_event_interrupt.c
+@@ -23,6 +23,7 @@
+ #include "kfd_priv.h"
+ #include "kfd_events.h"
+ #include "cik_int.h"
++#include "amdgpu_amdkfd.h"
+
+ static bool cik_event_interrupt_isr(struct kfd_dev *dev,
+ const uint32_t *ih_ring_entry,
+@@ -107,7 +108,7 @@ static void cik_event_interrupt_wq(struct kfd_dev *dev,
+ kfd_process_vm_fault(dev->dqm, pasid);
+
+ memset(&info, 0, sizeof(info));
+- dev->kfd2kgd->get_vm_fault_info(dev->kgd, &info);
++ amdgpu_amdkfd_gpuvm_get_vm_fault_info(dev->kgd, &info);
+ if (!info.page_addr && !info.status)
+ return;
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+index 14d5b5fa822d..85e833df5727 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+@@ -37,6 +37,7 @@
+ #include "kfd_priv.h"
+ #include "kfd_device_queue_manager.h"
+ #include "kfd_dbgmgr.h"
++#include "amdgpu_amdkfd.h"
+
+ static long kfd_ioctl(struct file *, unsigned int, unsigned long);
+ static int kfd_open(struct inode *, struct file *);
+@@ -834,8 +835,7 @@ static int kfd_ioctl_get_clock_counters(struct file *filep,
+ dev = kfd_device_by_id(args->gpu_id);
+ if (dev)
+ /* Reading GPU clock counter from KGD */
+- args->gpu_clock_counter =
+- dev->kfd2kgd->get_gpu_clock_counter(dev->kgd);
++ args->gpu_clock_counter = get_gpu_clock_counter(dev->kgd);
+ else
+ /* Node without GPU resource */
+ args->gpu_clock_counter = 0;
+@@ -1042,7 +1042,7 @@ static int kfd_ioctl_create_event(struct file *filp, struct kfd_process *p,
+ }
+ mutex_unlock(&p->mutex);
+
+- err = kfd->kfd2kgd->map_gtt_bo_to_kernel(kfd->kgd,
++ err = amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(kfd->kgd,
+ mem, &kern_addr, &size);
+ if (err) {
+ pr_err("Failed to map event page to kernel\n");
+@@ -1240,7 +1240,7 @@ bool kfd_dev_is_large_bar(struct kfd_dev *dev)
+ if (dev->device_info->needs_iommu_device)
+ return false;
+
+- dev->kfd2kgd->get_local_mem_info(dev->kgd, &mem_info);
++ get_local_mem_info(dev->kgd, &mem_info);
+ if (mem_info.local_mem_size_private == 0 &&
+ mem_info.local_mem_size_public > 0)
+ return true;
+@@ -1281,7 +1281,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
+ goto err_unlock;
+ }
+
+- err = dev->kfd2kgd->alloc_memory_of_gpu(
++ err = amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
+ dev->kgd, args->va_addr, args->size,
+ pdd->vm, (struct kgd_mem **) &mem, &offset,
+ flags);
+@@ -1303,7 +1303,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
+ return 0;
+
+ err_free:
+- dev->kfd2kgd->free_memory_of_gpu(dev->kgd, (struct kgd_mem *)mem);
++ amdgpu_amdkfd_gpuvm_free_memory_of_gpu(dev->kgd, (struct kgd_mem *)mem);
+ err_unlock:
+ mutex_unlock(&p->mutex);
+ return err;
+@@ -1338,7 +1338,8 @@ static int kfd_ioctl_free_memory_of_gpu(struct file *filep,
+ goto err_unlock;
+ }
+
+- ret = dev->kfd2kgd->free_memory_of_gpu(dev->kgd, (struct kgd_mem *)mem);
++ ret = amdgpu_amdkfd_gpuvm_free_memory_of_gpu(dev->kgd,
++ (struct kgd_mem *)mem);
+
+ /* If freeing the buffer failed, leave the handle in place for
+ * clean-up during process tear-down.
+@@ -1418,7 +1419,7 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep,
+ err = PTR_ERR(peer_pdd);
+ goto get_mem_obj_from_handle_failed;
+ }
+- err = peer->kfd2kgd->map_memory_to_gpu(
++ err = amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
+ peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm);
+ if (err) {
+ pr_err("Failed to map to gpu %d/%d\n",
+@@ -1430,7 +1431,7 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep,
+
+ mutex_unlock(&p->mutex);
+
+- err = dev->kfd2kgd->sync_memory(dev->kgd, (struct kgd_mem *) mem, true);
++ err = amdgpu_amdkfd_gpuvm_sync_memory(dev->kgd, (struct kgd_mem *) mem, true);
+ if (err) {
+ pr_debug("Sync memory failed, wait interrupted by user signal\n");
+ goto sync_memory_failed;
+@@ -1525,7 +1526,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep,
+ err = -ENODEV;
+ goto get_mem_obj_from_handle_failed;
+ }
+- err = dev->kfd2kgd->unmap_memory_to_gpu(
++ err = amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm);
+ if (err) {
+ pr_err("Failed to unmap from gpu %d/%d\n",
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+index dd4f3bdbf08c..a48be9992478 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+@@ -26,6 +26,7 @@
+ #include "kfd_priv.h"
+ #include "kfd_topology.h"
+ #include "kfd_iommu.h"
++#include "amdgpu_amdkfd.h"
+
+ /* GPU Processor ID base for dGPUs for which VCRAT needs to be created.
+ * GPU processor ID are expressed with Bit[31]=1.
+@@ -1159,7 +1160,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
+ cu->flags |= CRAT_CU_FLAGS_GPU_PRESENT;
+ cu->proximity_domain = proximity_domain;
+
+- kdev->kfd2kgd->get_cu_info(kdev->kgd, &cu_info);
++ get_cu_info(kdev->kgd, &cu_info);
+ cu->num_simd_per_cu = cu_info.simd_per_cu;
+ cu->num_simd_cores = cu_info.simd_per_cu * cu_info.cu_active_number;
+ cu->max_waves_simd = cu_info.max_waves_per_simd;
+@@ -1190,7 +1191,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
+ * report the total FB size (public+private) as a single
+ * private heap.
+ */
+- kdev->kfd2kgd->get_local_mem_info(kdev->kgd, &local_mem_info);
++ get_local_mem_info(kdev->kgd, &local_mem_info);
+ sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr +
+ sub_type_hdr->length);
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+index a9f18ea7e354..eeb42af763ce 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+@@ -28,6 +28,7 @@
+ #include "kfd_pm4_headers_vi.h"
+ #include "cwsr_trap_handler.h"
+ #include "kfd_iommu.h"
++#include "amdgpu_amdkfd.h"
+
+ #define MQD_SIZE_ALIGNED 768
+
+@@ -478,7 +479,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
+ /* add another 512KB for all other allocations on gart (HPD, fences) */
+ size += 512 * 1024;
+
+- if (kfd->kfd2kgd->init_gtt_mem_allocation(
++ if (alloc_gtt_mem(
+ kfd->kgd, size, &kfd->gtt_mem,
+ &kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr,
+ false)) {
+@@ -552,7 +553,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
+ kfd_doorbell_error:
+ kfd_gtt_sa_fini(kfd);
+ kfd_gtt_sa_init_error:
+- kfd->kfd2kgd->free_gtt_mem(kfd->kgd, kfd->gtt_mem);
++ free_gtt_mem(kfd->kgd, kfd->gtt_mem);
+ dev_err(kfd_device,
+ "device %x:%x NOT added due to errors\n",
+ kfd->pdev->vendor, kfd->pdev->device);
+@@ -569,7 +570,7 @@ void kgd2kfd_device_exit(struct kfd_dev *kfd)
+ kfd_topology_remove_device(kfd);
+ kfd_doorbell_fini(kfd);
+ kfd_gtt_sa_fini(kfd);
+- kfd->kfd2kgd->free_gtt_mem(kfd->kgd, kfd->gtt_mem);
++ free_gtt_mem(kfd->kgd, kfd->gtt_mem);
+ }
+
+ kfree(kfd);
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+index a3b933967171..dfd8f9e5dd95 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+@@ -33,6 +33,7 @@
+ #include "kfd_mqd_manager.h"
+ #include "cik_regs.h"
+ #include "kfd_kernel_queue.h"
++#include "amdgpu_amdkfd.h"
+
+ /* Size of the per-pipe EOP queue */
+ #define CIK_HPD_EOP_BYTES_LOG2 11
+@@ -219,7 +220,7 @@ static int flush_texture_cache_nocpsch(struct kfd_dev *kdev,
+ if (ret)
+ return ret;
+
+- return kdev->kfd2kgd->submit_ib(kdev->kgd, KGD_ENGINE_MEC1, qpd->vmid,
++ return amdgpu_amdkfd_submit_ib(kdev->kgd, KGD_ENGINE_MEC1, qpd->vmid,
+ qpd->ib_base, (uint32_t *)qpd->ib_kaddr,
+ pmf->release_mem_size / sizeof(uint32_t));
+ }
+@@ -672,7 +673,7 @@ static int restore_process_queues_nocpsch(struct device_queue_manager *dqm,
+
+ pdd = qpd_to_pdd(qpd);
+ /* Retrieve PD base */
+- pd_base = dqm->dev->kfd2kgd->get_process_page_dir(pdd->vm);
++ pd_base = amdgpu_amdkfd_gpuvm_get_process_page_dir(pdd->vm);
+
+ dqm_lock(dqm);
+ if (WARN_ON_ONCE(!qpd->evicted)) /* already restored, do nothing */
+@@ -743,7 +744,7 @@ static int restore_process_queues_cpsch(struct device_queue_manager *dqm,
+
+ pdd = qpd_to_pdd(qpd);
+ /* Retrieve PD base */
+- pd_base = dqm->dev->kfd2kgd->get_process_page_dir(pdd->vm);
++ pd_base = amdgpu_amdkfd_gpuvm_get_process_page_dir(pdd->vm);
+
+ dqm_lock(dqm);
+ if (WARN_ON_ONCE(!qpd->evicted)) /* already restored, do nothing */
+@@ -793,7 +794,7 @@ static int register_process(struct device_queue_manager *dqm,
+
+ pdd = qpd_to_pdd(qpd);
+ /* Retrieve PD base */
+- pd_base = dqm->dev->kfd2kgd->get_process_page_dir(pdd->vm);
++ pd_base = amdgpu_amdkfd_gpuvm_get_process_page_dir(pdd->vm);
+
+ dqm_lock(dqm);
+ list_add(&n->list, &dqm->queues);
+@@ -805,7 +806,7 @@ static int register_process(struct device_queue_manager *dqm,
+ retval = dqm->asic_ops.update_qpd(dqm, qpd);
+
+ if (dqm->processes_count++ == 0)
+- dqm->dev->kfd2kgd->set_compute_idle(dqm->dev->kgd, false);
++ amdgpu_amdkfd_set_compute_idle(dqm->dev->kgd, false);
+
+ dqm_unlock(dqm);
+
+@@ -829,7 +830,7 @@ static int unregister_process(struct device_queue_manager *dqm,
+ list_del(&cur->list);
+ kfree(cur);
+ if (--dqm->processes_count == 0)
+- dqm->dev->kfd2kgd->set_compute_idle(
++ amdgpu_amdkfd_set_compute_idle(
+ dqm->dev->kgd, true);
+ goto out;
+ }
+@@ -1796,7 +1797,7 @@ static void kfd_process_hw_exception(struct work_struct *work)
+ {
+ struct device_queue_manager *dqm = container_of(work,
+ struct device_queue_manager, hw_exception_work);
+- dqm->dev->kfd2kgd->gpu_recover(dqm->dev->kgd);
++ amdgpu_amdkfd_gpu_reset(dqm->dev->kgd);
+ }
+
+ #if defined(CONFIG_DEBUG_FS)
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
+index e33019a7a883..270807038867 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
+@@ -22,6 +22,7 @@
+ */
+
+ #include "kfd_mqd_manager.h"
++#include "amdgpu_amdkfd.h"
+
+ struct mqd_manager *mqd_manager_init(enum KFD_MQD_TYPE type,
+ struct kfd_dev *dev)
+@@ -58,7 +59,7 @@ void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm,
+ uint32_t cu_per_sh[4] = {0};
+ int i, se, cu = 0;
+
+- mm->dev->kfd2kgd->get_cu_info(mm->dev->kgd, &cu_info);
++ get_cu_info(mm->dev->kgd, &cu_info);
+
+ if (cu_mask_count > cu_info.cu_active_number)
+ cu_mask_count = cu_info.cu_active_number;
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
+index f381c1cb27bd..db3b1950a6a6 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
+@@ -30,6 +30,7 @@
+ #include "gc/gc_9_0_offset.h"
+ #include "gc/gc_9_0_sh_mask.h"
+ #include "sdma0/sdma0_4_0_sh_mask.h"
++#include "amdgpu_amdkfd.h"
+
+ static inline struct v9_mqd *get_mqd(void *mqd)
+ {
+@@ -83,7 +84,7 @@ static int init_mqd(struct mqd_manager *mm, void **mqd,
+ *mqd_mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_KERNEL);
+ if (!*mqd_mem_obj)
+ return -ENOMEM;
+- retval = kfd->kfd2kgd->init_gtt_mem_allocation(kfd->kgd,
++ retval = alloc_gtt_mem(kfd->kgd,
+ ALIGN(q->ctl_stack_size, PAGE_SIZE) +
+ ALIGN(sizeof(struct v9_mqd), PAGE_SIZE),
+ &((*mqd_mem_obj)->gtt_mem),
+@@ -250,7 +251,7 @@ static void uninit_mqd(struct mqd_manager *mm, void *mqd,
+ struct kfd_dev *kfd = mm->dev;
+
+ if (mqd_mem_obj->gtt_mem) {
+- kfd->kfd2kgd->free_gtt_mem(kfd->kgd, mqd_mem_obj->gtt_mem);
++ free_gtt_mem(kfd->kgd, mqd_mem_obj->gtt_mem);
+ kfree(mqd_mem_obj);
+ } else {
+ kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
+index 15fff4420e53..33b08ff00b50 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_pasid.c
+@@ -22,6 +22,7 @@
+
+ #include <linux/types.h>
+ #include "kfd_priv.h"
++#include "amdgpu_ids.h"
+
+ static unsigned int pasid_bits = 16;
+ static const struct kfd2kgd_calls *kfd2kgd;
+@@ -71,7 +72,7 @@ unsigned int kfd_pasid_alloc(void)
+ return false;
+ }
+
+- r = kfd2kgd->alloc_pasid(pasid_bits);
++ r = amdgpu_pasid_alloc(pasid_bits);
+
+ return r > 0 ? r : 0;
+ }
+@@ -79,5 +80,5 @@ unsigned int kfd_pasid_alloc(void)
+ void kfd_pasid_free(unsigned int pasid)
+ {
+ if (kfd2kgd)
+- kfd2kgd->free_pasid(pasid);
++ amdgpu_pasid_free(pasid);
+ }
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+index 3ecb54e76281..6b99f6b9fdc8 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+@@ -31,6 +31,7 @@
+ #include <linux/compat.h>
+ #include <linux/mman.h>
+ #include <linux/file.h>
++#include "amdgpu_amdkfd.h"
+
+ struct mm_struct;
+
+@@ -100,8 +101,8 @@ static void kfd_process_free_gpuvm(struct kgd_mem *mem,
+ {
+ struct kfd_dev *dev = pdd->dev;
+
+- dev->kfd2kgd->unmap_memory_to_gpu(dev->kgd, mem, pdd->vm);
+- dev->kfd2kgd->free_memory_of_gpu(dev->kgd, mem);
++ amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(dev->kgd, mem, pdd->vm);
++ amdgpu_amdkfd_gpuvm_free_memory_of_gpu(dev->kgd, mem);
+ }
+
+ /* kfd_process_alloc_gpuvm - Allocate GPU VM for the KFD process
+@@ -119,16 +120,16 @@ static int kfd_process_alloc_gpuvm(struct kfd_process_device *pdd,
+ int handle;
+ int err;
+
+- err = kdev->kfd2kgd->alloc_memory_of_gpu(kdev->kgd, gpu_va, size,
++ err = amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(kdev->kgd, gpu_va, size,
+ pdd->vm, &mem, NULL, flags);
+ if (err)
+ goto err_alloc_mem;
+
+- err = kdev->kfd2kgd->map_memory_to_gpu(kdev->kgd, mem, pdd->vm);
++ err = amdgpu_amdkfd_gpuvm_map_memory_to_gpu(kdev->kgd, mem, pdd->vm);
+ if (err)
+ goto err_map_mem;
+
+- err = kdev->kfd2kgd->sync_memory(kdev->kgd, mem, true);
++ err = amdgpu_amdkfd_gpuvm_sync_memory(kdev->kgd, mem, true);
+ if (err) {
+ pr_debug("Sync memory failed, wait interrupted by user signal\n");
+ goto sync_memory_failed;
+@@ -147,7 +148,7 @@ static int kfd_process_alloc_gpuvm(struct kfd_process_device *pdd,
+ }
+
+ if (kptr) {
+- err = kdev->kfd2kgd->map_gtt_bo_to_kernel(kdev->kgd,
++ err = amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(kdev->kgd,
+ (struct kgd_mem *)mem, kptr, NULL);
+ if (err) {
+ pr_debug("Map GTT BO to kernel failed\n");
+@@ -165,7 +166,7 @@ static int kfd_process_alloc_gpuvm(struct kfd_process_device *pdd,
+ return err;
+
+ err_map_mem:
+- kdev->kfd2kgd->free_memory_of_gpu(kdev->kgd, mem);
++ amdgpu_amdkfd_gpuvm_free_memory_of_gpu(kdev->kgd, mem);
+ err_alloc_mem:
+ *kptr = NULL;
+ return err;
+@@ -296,11 +297,11 @@ static void kfd_process_device_free_bos(struct kfd_process_device *pdd)
+ per_device_list) {
+ if (!peer_pdd->vm)
+ continue;
+- peer_pdd->dev->kfd2kgd->unmap_memory_to_gpu(
++ amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
+ peer_pdd->dev->kgd, mem, peer_pdd->vm);
+ }
+
+- pdd->dev->kfd2kgd->free_memory_of_gpu(pdd->dev->kgd, mem);
++ amdgpu_amdkfd_gpuvm_free_memory_of_gpu(pdd->dev->kgd, mem);
+ kfd_process_device_remove_obj_handle(pdd, id);
+ }
+ }
+@@ -323,11 +324,12 @@ static void kfd_process_destroy_pdds(struct kfd_process *p)
+ pdd->dev->id, p->pasid);
+
+ if (pdd->drm_file) {
+- pdd->dev->kfd2kgd->release_process_vm(pdd->dev->kgd, pdd->vm);
++ amdgpu_amdkfd_gpuvm_release_process_vm(
++ pdd->dev->kgd, pdd->vm);
+ fput(pdd->drm_file);
+ }
+ else if (pdd->vm)
+- pdd->dev->kfd2kgd->destroy_process_vm(
++ amdgpu_amdkfd_gpuvm_destroy_process_vm(
+ pdd->dev->kgd, pdd->vm);
+
+ list_del(&pdd->per_device_list);
+@@ -688,12 +690,12 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
+ dev = pdd->dev;
+
+ if (drm_file)
+- ret = dev->kfd2kgd->acquire_process_vm(
++ ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(
+ dev->kgd, drm_file,
+ &pdd->vm, &p->kgd_process_info, &p->ef);
+ else
+- ret = dev->kfd2kgd->create_process_vm(
+- dev->kgd, &pdd->vm, &p->kgd_process_info, &p->ef);
++ ret = amdgpu_amdkfd_gpuvm_create_process_vm(dev->kgd, p->pasid,
++ &pdd->vm, &p->kgd_process_info, &p->ef);
+ if (ret) {
+ pr_err("Failed to create process VM object\n");
+ return ret;
+@@ -714,7 +716,7 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd,
+ err_reserve_ib_mem:
+ kfd_process_device_free_bos(pdd);
+ if (!drm_file)
+- dev->kfd2kgd->destroy_process_vm(dev->kgd, pdd->vm);
++ amdgpu_amdkfd_gpuvm_destroy_process_vm(dev->kgd, pdd->vm);
+ pdd->vm = NULL;
+
+ return ret;
+@@ -972,7 +974,7 @@ static void restore_process_worker(struct work_struct *work)
+ */
+
+ p->last_restore_timestamp = get_jiffies_64();
+- ret = pdd->dev->kfd2kgd->restore_process_bos(p->kgd_process_info,
++ ret = amdgpu_amdkfd_gpuvm_restore_process_bos(p->kgd_process_info,
+ &p->ef);
+ if (ret) {
+ pr_debug("Failed to restore BOs of pasid %d, retry after %d ms\n",
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
+index e3843c5929ed..6f73101d0136 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
+@@ -36,6 +36,7 @@
+ #include "kfd_topology.h"
+ #include "kfd_device_queue_manager.h"
+ #include "kfd_iommu.h"
++#include "amdgpu_amdkfd.h"
+
+ /* topology_device_list - Master list of all topology devices */
+ static struct list_head topology_device_list;
+@@ -1052,7 +1053,7 @@ static uint32_t kfd_generate_gpu_id(struct kfd_dev *gpu)
+ if (!gpu)
+ return 0;
+
+- gpu->kfd2kgd->get_local_mem_info(gpu->kgd, &local_mem_info);
++ get_local_mem_info(gpu->kgd, &local_mem_info);
+
+ local_mem_size = local_mem_info.local_mem_size_private +
+ local_mem_info.local_mem_size_public;
+@@ -1118,8 +1119,7 @@ static void kfd_fill_mem_clk_max_info(struct kfd_topology_device *dev)
+ * for APUs - If CRAT from ACPI reports more than one bank, then
+ * all the banks will report the same mem_clk_max information
+ */
+- dev->gpu->kfd2kgd->get_local_mem_info(dev->gpu->kgd,
+- &local_mem_info);
++ get_local_mem_info(dev->gpu->kgd, &local_mem_info);
+
+ list_for_each_entry(mem, &dev->mem_props, list)
+ mem->mem_clk_max = local_mem_info.mem_clk_max;
+@@ -1240,7 +1240,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
+ * needed for the topology
+ */
+
+- dev->gpu->kfd2kgd->get_cu_info(dev->gpu->kgd, &cu_info);
++ get_cu_info(dev->gpu->kgd, &cu_info);
+ dev->node_props.simd_arrays_per_engine =
+ cu_info.num_shader_arrays_per_engine;
+
+@@ -1249,7 +1249,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
+ dev->node_props.location_id = PCI_DEVID(gpu->pdev->bus->number,
+ gpu->pdev->devfn);
+ dev->node_props.max_engine_clk_fcompute =
+- dev->gpu->kfd2kgd->get_max_engine_clock_in_mhz(dev->gpu->kgd);
++ get_max_engine_clock_in_mhz(dev->gpu->kgd);
+ dev->node_props.max_engine_clk_ccompute =
+ cpufreq_quick_get_max(0) / 1000;
+ dev->node_props.drm_render_minor =
+--
+2.17.1
+