diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd')
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/cik_event_interrupt.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/cik_regs.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 21 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_device.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 24 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_pasid.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_process.c | 34 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 10 |
12 files changed, 65 insertions, 64 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 @@ | |||
23 | #include "kfd_priv.h" | 23 | #include "kfd_priv.h" |
24 | #include "kfd_events.h" | 24 | #include "kfd_events.h" |
25 | #include "cik_int.h" | 25 | #include "cik_int.h" |
26 | #include "amdgpu_amdkfd.h" | ||
26 | 27 | ||
27 | static bool cik_event_interrupt_isr(struct kfd_dev *dev, | 28 | static bool cik_event_interrupt_isr(struct kfd_dev *dev, |
28 | const uint32_t *ih_ring_entry, | 29 | const uint32_t *ih_ring_entry, |
@@ -107,7 +108,7 @@ static void cik_event_interrupt_wq(struct kfd_dev *dev, | |||
107 | kfd_process_vm_fault(dev->dqm, pasid); | 108 | kfd_process_vm_fault(dev->dqm, pasid); |
108 | 109 | ||
109 | memset(&info, 0, sizeof(info)); | 110 | memset(&info, 0, sizeof(info)); |
110 | dev->kfd2kgd->get_vm_fault_info(dev->kgd, &info); | 111 | amdgpu_amdkfd_gpuvm_get_vm_fault_info(dev->kgd, &info); |
111 | if (!info.page_addr && !info.status) | 112 | if (!info.page_addr && !info.status) |
112 | return; | 113 | return; |
113 | 114 | ||
diff --git a/drivers/gpu/drm/amd/amdkfd/cik_regs.h b/drivers/gpu/drm/amd/amdkfd/cik_regs.h index 37ce6dd65391..8e2a1663c4db 100644 --- a/drivers/gpu/drm/amd/amdkfd/cik_regs.h +++ b/drivers/gpu/drm/amd/amdkfd/cik_regs.h | |||
@@ -68,6 +68,4 @@ | |||
68 | 68 | ||
69 | #define GRBM_GFX_INDEX 0x30800 | 69 | #define GRBM_GFX_INDEX 0x30800 |
70 | 70 | ||
71 | #define ATC_VMID_PASID_MAPPING_VALID (1U << 31) | ||
72 | |||
73 | #endif | 71 | #endif |
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 14d5b5fa822d..5f4062b41add 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include "kfd_priv.h" | 37 | #include "kfd_priv.h" |
38 | #include "kfd_device_queue_manager.h" | 38 | #include "kfd_device_queue_manager.h" |
39 | #include "kfd_dbgmgr.h" | 39 | #include "kfd_dbgmgr.h" |
40 | #include "amdgpu_amdkfd.h" | ||
40 | 41 | ||
41 | static long kfd_ioctl(struct file *, unsigned int, unsigned long); | 42 | static long kfd_ioctl(struct file *, unsigned int, unsigned long); |
42 | static int kfd_open(struct inode *, struct file *); | 43 | static int kfd_open(struct inode *, struct file *); |
@@ -834,8 +835,7 @@ static int kfd_ioctl_get_clock_counters(struct file *filep, | |||
834 | dev = kfd_device_by_id(args->gpu_id); | 835 | dev = kfd_device_by_id(args->gpu_id); |
835 | if (dev) | 836 | if (dev) |
836 | /* Reading GPU clock counter from KGD */ | 837 | /* Reading GPU clock counter from KGD */ |
837 | args->gpu_clock_counter = | 838 | args->gpu_clock_counter = amdgpu_amdkfd_get_gpu_clock_counter(dev->kgd); |
838 | dev->kfd2kgd->get_gpu_clock_counter(dev->kgd); | ||
839 | else | 839 | else |
840 | /* Node without GPU resource */ | 840 | /* Node without GPU resource */ |
841 | args->gpu_clock_counter = 0; | 841 | args->gpu_clock_counter = 0; |
@@ -1042,7 +1042,7 @@ static int kfd_ioctl_create_event(struct file *filp, struct kfd_process *p, | |||
1042 | } | 1042 | } |
1043 | mutex_unlock(&p->mutex); | 1043 | mutex_unlock(&p->mutex); |
1044 | 1044 | ||
1045 | err = kfd->kfd2kgd->map_gtt_bo_to_kernel(kfd->kgd, | 1045 | err = amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(kfd->kgd, |
1046 | mem, &kern_addr, &size); | 1046 | mem, &kern_addr, &size); |
1047 | if (err) { | 1047 | if (err) { |
1048 | pr_err("Failed to map event page to kernel\n"); | 1048 | pr_err("Failed to map event page to kernel\n"); |
@@ -1240,7 +1240,7 @@ bool kfd_dev_is_large_bar(struct kfd_dev *dev) | |||
1240 | if (dev->device_info->needs_iommu_device) | 1240 | if (dev->device_info->needs_iommu_device) |
1241 | return false; | 1241 | return false; |
1242 | 1242 | ||
1243 | dev->kfd2kgd->get_local_mem_info(dev->kgd, &mem_info); | 1243 | amdgpu_amdkfd_get_local_mem_info(dev->kgd, &mem_info); |
1244 | if (mem_info.local_mem_size_private == 0 && | 1244 | if (mem_info.local_mem_size_private == 0 && |
1245 | mem_info.local_mem_size_public > 0) | 1245 | mem_info.local_mem_size_public > 0) |
1246 | return true; | 1246 | return true; |
@@ -1281,7 +1281,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep, | |||
1281 | goto err_unlock; | 1281 | goto err_unlock; |
1282 | } | 1282 | } |
1283 | 1283 | ||
1284 | err = dev->kfd2kgd->alloc_memory_of_gpu( | 1284 | err = amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( |
1285 | dev->kgd, args->va_addr, args->size, | 1285 | dev->kgd, args->va_addr, args->size, |
1286 | pdd->vm, (struct kgd_mem **) &mem, &offset, | 1286 | pdd->vm, (struct kgd_mem **) &mem, &offset, |
1287 | flags); | 1287 | flags); |
@@ -1303,7 +1303,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep, | |||
1303 | return 0; | 1303 | return 0; |
1304 | 1304 | ||
1305 | err_free: | 1305 | err_free: |
1306 | dev->kfd2kgd->free_memory_of_gpu(dev->kgd, (struct kgd_mem *)mem); | 1306 | amdgpu_amdkfd_gpuvm_free_memory_of_gpu(dev->kgd, (struct kgd_mem *)mem); |
1307 | err_unlock: | 1307 | err_unlock: |
1308 | mutex_unlock(&p->mutex); | 1308 | mutex_unlock(&p->mutex); |
1309 | return err; | 1309 | return err; |
@@ -1338,7 +1338,8 @@ static int kfd_ioctl_free_memory_of_gpu(struct file *filep, | |||
1338 | goto err_unlock; | 1338 | goto err_unlock; |
1339 | } | 1339 | } |
1340 | 1340 | ||
1341 | ret = dev->kfd2kgd->free_memory_of_gpu(dev->kgd, (struct kgd_mem *)mem); | 1341 | ret = amdgpu_amdkfd_gpuvm_free_memory_of_gpu(dev->kgd, |
1342 | (struct kgd_mem *)mem); | ||
1342 | 1343 | ||
1343 | /* If freeing the buffer failed, leave the handle in place for | 1344 | /* If freeing the buffer failed, leave the handle in place for |
1344 | * clean-up during process tear-down. | 1345 | * clean-up during process tear-down. |
@@ -1418,7 +1419,7 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep, | |||
1418 | err = PTR_ERR(peer_pdd); | 1419 | err = PTR_ERR(peer_pdd); |
1419 | goto get_mem_obj_from_handle_failed; | 1420 | goto get_mem_obj_from_handle_failed; |
1420 | } | 1421 | } |
1421 | err = peer->kfd2kgd->map_memory_to_gpu( | 1422 | err = amdgpu_amdkfd_gpuvm_map_memory_to_gpu( |
1422 | peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm); | 1423 | peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm); |
1423 | if (err) { | 1424 | if (err) { |
1424 | pr_err("Failed to map to gpu %d/%d\n", | 1425 | 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, | |||
1430 | 1431 | ||
1431 | mutex_unlock(&p->mutex); | 1432 | mutex_unlock(&p->mutex); |
1432 | 1433 | ||
1433 | err = dev->kfd2kgd->sync_memory(dev->kgd, (struct kgd_mem *) mem, true); | 1434 | err = amdgpu_amdkfd_gpuvm_sync_memory(dev->kgd, (struct kgd_mem *) mem, true); |
1434 | if (err) { | 1435 | if (err) { |
1435 | pr_debug("Sync memory failed, wait interrupted by user signal\n"); | 1436 | pr_debug("Sync memory failed, wait interrupted by user signal\n"); |
1436 | goto sync_memory_failed; | 1437 | goto sync_memory_failed; |
@@ -1525,7 +1526,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, | |||
1525 | err = -ENODEV; | 1526 | err = -ENODEV; |
1526 | goto get_mem_obj_from_handle_failed; | 1527 | goto get_mem_obj_from_handle_failed; |
1527 | } | 1528 | } |
1528 | err = dev->kfd2kgd->unmap_memory_to_gpu( | 1529 | err = amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu( |
1529 | peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm); | 1530 | peer->kgd, (struct kgd_mem *)mem, peer_pdd->vm); |
1530 | if (err) { | 1531 | if (err) { |
1531 | pr_err("Failed to unmap from gpu %d/%d\n", | 1532 | 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 56412b0e7e1c..3783d122f283 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "kfd_priv.h" | 26 | #include "kfd_priv.h" |
27 | #include "kfd_topology.h" | 27 | #include "kfd_topology.h" |
28 | #include "kfd_iommu.h" | 28 | #include "kfd_iommu.h" |
29 | #include "amdgpu_amdkfd.h" | ||
29 | 30 | ||
30 | /* GPU Processor ID base for dGPUs for which VCRAT needs to be created. | 31 | /* GPU Processor ID base for dGPUs for which VCRAT needs to be created. |
31 | * GPU processor ID are expressed with Bit[31]=1. | 32 | * GPU processor ID are expressed with Bit[31]=1. |
@@ -753,12 +754,10 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size) | |||
753 | return -ENODATA; | 754 | return -ENODATA; |
754 | } | 755 | } |
755 | 756 | ||
756 | pcrat_image = kmalloc(crat_table->length, GFP_KERNEL); | 757 | pcrat_image = kmemdup(crat_table, crat_table->length, GFP_KERNEL); |
757 | if (!pcrat_image) | 758 | if (!pcrat_image) |
758 | return -ENOMEM; | 759 | return -ENOMEM; |
759 | 760 | ||
760 | memcpy(pcrat_image, crat_table, crat_table->length); | ||
761 | |||
762 | *crat_image = pcrat_image; | 761 | *crat_image = pcrat_image; |
763 | *size = crat_table->length; | 762 | *size = crat_table->length; |
764 | 763 | ||
@@ -1161,7 +1160,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image, | |||
1161 | cu->flags |= CRAT_CU_FLAGS_GPU_PRESENT; | 1160 | cu->flags |= CRAT_CU_FLAGS_GPU_PRESENT; |
1162 | cu->proximity_domain = proximity_domain; | 1161 | cu->proximity_domain = proximity_domain; |
1163 | 1162 | ||
1164 | kdev->kfd2kgd->get_cu_info(kdev->kgd, &cu_info); | 1163 | amdgpu_amdkfd_get_cu_info(kdev->kgd, &cu_info); |
1165 | cu->num_simd_per_cu = cu_info.simd_per_cu; | 1164 | cu->num_simd_per_cu = cu_info.simd_per_cu; |
1166 | cu->num_simd_cores = cu_info.simd_per_cu * cu_info.cu_active_number; | 1165 | cu->num_simd_cores = cu_info.simd_per_cu * cu_info.cu_active_number; |
1167 | cu->max_waves_simd = cu_info.max_waves_per_simd; | 1166 | cu->max_waves_simd = cu_info.max_waves_per_simd; |
@@ -1192,7 +1191,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image, | |||
1192 | * report the total FB size (public+private) as a single | 1191 | * report the total FB size (public+private) as a single |
1193 | * private heap. | 1192 | * private heap. |
1194 | */ | 1193 | */ |
1195 | kdev->kfd2kgd->get_local_mem_info(kdev->kgd, &local_mem_info); | 1194 | amdgpu_amdkfd_get_local_mem_info(kdev->kgd, &local_mem_info); |
1196 | sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr + | 1195 | sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr + |
1197 | sub_type_hdr->length); | 1196 | sub_type_hdr->length); |
1198 | 1197 | ||
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c index a9f18ea7e354..c004647c8cb4 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include "kfd_pm4_headers_vi.h" | 28 | #include "kfd_pm4_headers_vi.h" |
29 | #include "cwsr_trap_handler.h" | 29 | #include "cwsr_trap_handler.h" |
30 | #include "kfd_iommu.h" | 30 | #include "kfd_iommu.h" |
31 | #include "amdgpu_amdkfd.h" | ||
31 | 32 | ||
32 | #define MQD_SIZE_ALIGNED 768 | 33 | #define MQD_SIZE_ALIGNED 768 |
33 | 34 | ||
@@ -478,7 +479,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, | |||
478 | /* add another 512KB for all other allocations on gart (HPD, fences) */ | 479 | /* add another 512KB for all other allocations on gart (HPD, fences) */ |
479 | size += 512 * 1024; | 480 | size += 512 * 1024; |
480 | 481 | ||
481 | if (kfd->kfd2kgd->init_gtt_mem_allocation( | 482 | if (amdgpu_amdkfd_alloc_gtt_mem( |
482 | kfd->kgd, size, &kfd->gtt_mem, | 483 | kfd->kgd, size, &kfd->gtt_mem, |
483 | &kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr, | 484 | &kfd->gtt_start_gpu_addr, &kfd->gtt_start_cpu_ptr, |
484 | false)) { | 485 | false)) { |
@@ -552,7 +553,7 @@ kfd_topology_add_device_error: | |||
552 | kfd_doorbell_error: | 553 | kfd_doorbell_error: |
553 | kfd_gtt_sa_fini(kfd); | 554 | kfd_gtt_sa_fini(kfd); |
554 | kfd_gtt_sa_init_error: | 555 | kfd_gtt_sa_init_error: |
555 | kfd->kfd2kgd->free_gtt_mem(kfd->kgd, kfd->gtt_mem); | 556 | amdgpu_amdkfd_free_gtt_mem(kfd->kgd, kfd->gtt_mem); |
556 | dev_err(kfd_device, | 557 | dev_err(kfd_device, |
557 | "device %x:%x NOT added due to errors\n", | 558 | "device %x:%x NOT added due to errors\n", |
558 | kfd->pdev->vendor, kfd->pdev->device); | 559 | kfd->pdev->vendor, kfd->pdev->device); |
@@ -569,7 +570,7 @@ void kgd2kfd_device_exit(struct kfd_dev *kfd) | |||
569 | kfd_topology_remove_device(kfd); | 570 | kfd_topology_remove_device(kfd); |
570 | kfd_doorbell_fini(kfd); | 571 | kfd_doorbell_fini(kfd); |
571 | kfd_gtt_sa_fini(kfd); | 572 | kfd_gtt_sa_fini(kfd); |
572 | kfd->kfd2kgd->free_gtt_mem(kfd->kgd, kfd->gtt_mem); | 573 | amdgpu_amdkfd_free_gtt_mem(kfd->kgd, kfd->gtt_mem); |
573 | } | 574 | } |
574 | 575 | ||
575 | kfree(kfd); | 576 | kfree(kfd); |
@@ -681,6 +682,7 @@ void kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry) | |||
681 | { | 682 | { |
682 | uint32_t patched_ihre[KFD_MAX_RING_ENTRY_SIZE]; | 683 | uint32_t patched_ihre[KFD_MAX_RING_ENTRY_SIZE]; |
683 | bool is_patched = false; | 684 | bool is_patched = false; |
685 | unsigned long flags; | ||
684 | 686 | ||
685 | if (!kfd->init_complete) | 687 | if (!kfd->init_complete) |
686 | return; | 688 | return; |
@@ -690,7 +692,7 @@ void kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry) | |||
690 | return; | 692 | return; |
691 | } | 693 | } |
692 | 694 | ||
693 | spin_lock(&kfd->interrupt_lock); | 695 | spin_lock_irqsave(&kfd->interrupt_lock, flags); |
694 | 696 | ||
695 | if (kfd->interrupts_active | 697 | if (kfd->interrupts_active |
696 | && interrupt_is_wanted(kfd, ih_ring_entry, | 698 | && interrupt_is_wanted(kfd, ih_ring_entry, |
@@ -699,7 +701,7 @@ void kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry) | |||
699 | is_patched ? patched_ihre : ih_ring_entry)) | 701 | is_patched ? patched_ihre : ih_ring_entry)) |
700 | queue_work(kfd->ih_wq, &kfd->interrupt_work); | 702 | queue_work(kfd->ih_wq, &kfd->interrupt_work); |
701 | 703 | ||
702 | spin_unlock(&kfd->interrupt_lock); | 704 | spin_unlock_irqrestore(&kfd->interrupt_lock, flags); |
703 | } | 705 | } |
704 | 706 | ||
705 | int kgd2kfd_quiesce_mm(struct mm_struct *mm) | 707 | int kgd2kfd_quiesce_mm(struct mm_struct *mm) |
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..fb9d66ea13b7 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 @@ | |||
33 | #include "kfd_mqd_manager.h" | 33 | #include "kfd_mqd_manager.h" |
34 | #include "cik_regs.h" | 34 | #include "cik_regs.h" |
35 | #include "kfd_kernel_queue.h" | 35 | #include "kfd_kernel_queue.h" |
36 | #include "amdgpu_amdkfd.h" | ||
36 | 37 | ||
37 | /* Size of the per-pipe EOP queue */ | 38 | /* Size of the per-pipe EOP queue */ |
38 | #define CIK_HPD_EOP_BYTES_LOG2 11 | 39 | #define CIK_HPD_EOP_BYTES_LOG2 11 |
@@ -219,7 +220,7 @@ static int flush_texture_cache_nocpsch(struct kfd_dev *kdev, | |||
219 | if (ret) | 220 | if (ret) |
220 | return ret; | 221 | return ret; |
221 | 222 | ||
222 | return kdev->kfd2kgd->submit_ib(kdev->kgd, KGD_ENGINE_MEC1, qpd->vmid, | 223 | return amdgpu_amdkfd_submit_ib(kdev->kgd, KGD_ENGINE_MEC1, qpd->vmid, |
223 | qpd->ib_base, (uint32_t *)qpd->ib_kaddr, | 224 | qpd->ib_base, (uint32_t *)qpd->ib_kaddr, |
224 | pmf->release_mem_size / sizeof(uint32_t)); | 225 | pmf->release_mem_size / sizeof(uint32_t)); |
225 | } | 226 | } |
@@ -672,7 +673,7 @@ static int restore_process_queues_nocpsch(struct device_queue_manager *dqm, | |||
672 | 673 | ||
673 | pdd = qpd_to_pdd(qpd); | 674 | pdd = qpd_to_pdd(qpd); |
674 | /* Retrieve PD base */ | 675 | /* Retrieve PD base */ |
675 | pd_base = dqm->dev->kfd2kgd->get_process_page_dir(pdd->vm); | 676 | pd_base = amdgpu_amdkfd_gpuvm_get_process_page_dir(pdd->vm); |
676 | 677 | ||
677 | dqm_lock(dqm); | 678 | dqm_lock(dqm); |
678 | if (WARN_ON_ONCE(!qpd->evicted)) /* already restored, do nothing */ | 679 | 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, | |||
743 | 744 | ||
744 | pdd = qpd_to_pdd(qpd); | 745 | pdd = qpd_to_pdd(qpd); |
745 | /* Retrieve PD base */ | 746 | /* Retrieve PD base */ |
746 | pd_base = dqm->dev->kfd2kgd->get_process_page_dir(pdd->vm); | 747 | pd_base = amdgpu_amdkfd_gpuvm_get_process_page_dir(pdd->vm); |
747 | 748 | ||
748 | dqm_lock(dqm); | 749 | dqm_lock(dqm); |
749 | if (WARN_ON_ONCE(!qpd->evicted)) /* already restored, do nothing */ | 750 | if (WARN_ON_ONCE(!qpd->evicted)) /* already restored, do nothing */ |
@@ -793,7 +794,7 @@ static int register_process(struct device_queue_manager *dqm, | |||
793 | 794 | ||
794 | pdd = qpd_to_pdd(qpd); | 795 | pdd = qpd_to_pdd(qpd); |
795 | /* Retrieve PD base */ | 796 | /* Retrieve PD base */ |
796 | pd_base = dqm->dev->kfd2kgd->get_process_page_dir(pdd->vm); | 797 | pd_base = amdgpu_amdkfd_gpuvm_get_process_page_dir(pdd->vm); |
797 | 798 | ||
798 | dqm_lock(dqm); | 799 | dqm_lock(dqm); |
799 | list_add(&n->list, &dqm->queues); | 800 | list_add(&n->list, &dqm->queues); |
@@ -805,7 +806,7 @@ static int register_process(struct device_queue_manager *dqm, | |||
805 | retval = dqm->asic_ops.update_qpd(dqm, qpd); | 806 | retval = dqm->asic_ops.update_qpd(dqm, qpd); |
806 | 807 | ||
807 | if (dqm->processes_count++ == 0) | 808 | if (dqm->processes_count++ == 0) |
808 | dqm->dev->kfd2kgd->set_compute_idle(dqm->dev->kgd, false); | 809 | amdgpu_amdkfd_set_compute_idle(dqm->dev->kgd, false); |
809 | 810 | ||
810 | dqm_unlock(dqm); | 811 | dqm_unlock(dqm); |
811 | 812 | ||
@@ -829,7 +830,7 @@ static int unregister_process(struct device_queue_manager *dqm, | |||
829 | list_del(&cur->list); | 830 | list_del(&cur->list); |
830 | kfree(cur); | 831 | kfree(cur); |
831 | if (--dqm->processes_count == 0) | 832 | if (--dqm->processes_count == 0) |
832 | dqm->dev->kfd2kgd->set_compute_idle( | 833 | amdgpu_amdkfd_set_compute_idle( |
833 | dqm->dev->kgd, true); | 834 | dqm->dev->kgd, true); |
834 | goto out; | 835 | goto out; |
835 | } | 836 | } |
@@ -845,15 +846,8 @@ static int | |||
845 | set_pasid_vmid_mapping(struct device_queue_manager *dqm, unsigned int pasid, | 846 | set_pasid_vmid_mapping(struct device_queue_manager *dqm, unsigned int pasid, |
846 | unsigned int vmid) | 847 | unsigned int vmid) |
847 | { | 848 | { |
848 | uint32_t pasid_mapping; | ||
849 | |||
850 | pasid_mapping = (pasid == 0) ? 0 : | ||
851 | (uint32_t)pasid | | ||
852 | ATC_VMID_PASID_MAPPING_VALID; | ||
853 | |||
854 | return dqm->dev->kfd2kgd->set_pasid_vmid_mapping( | 849 | return dqm->dev->kfd2kgd->set_pasid_vmid_mapping( |
855 | dqm->dev->kgd, pasid_mapping, | 850 | dqm->dev->kgd, pasid, vmid); |
856 | vmid); | ||
857 | } | 851 | } |
858 | 852 | ||
859 | static void init_interrupts(struct device_queue_manager *dqm) | 853 | static void init_interrupts(struct device_queue_manager *dqm) |
@@ -1796,7 +1790,7 @@ static void kfd_process_hw_exception(struct work_struct *work) | |||
1796 | { | 1790 | { |
1797 | struct device_queue_manager *dqm = container_of(work, | 1791 | struct device_queue_manager *dqm = container_of(work, |
1798 | struct device_queue_manager, hw_exception_work); | 1792 | struct device_queue_manager, hw_exception_work); |
1799 | dqm->dev->kfd2kgd->gpu_recover(dqm->dev->kgd); | 1793 | amdgpu_amdkfd_gpu_reset(dqm->dev->kgd); |
1800 | } | 1794 | } |
1801 | 1795 | ||
1802 | #if defined(CONFIG_DEBUG_FS) | 1796 | #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..6910028010d6 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 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include "kfd_mqd_manager.h" | 24 | #include "kfd_mqd_manager.h" |
25 | #include "amdgpu_amdkfd.h" | ||
25 | 26 | ||
26 | struct mqd_manager *mqd_manager_init(enum KFD_MQD_TYPE type, | 27 | struct mqd_manager *mqd_manager_init(enum KFD_MQD_TYPE type, |
27 | struct kfd_dev *dev) | 28 | struct kfd_dev *dev) |
@@ -58,7 +59,7 @@ void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm, | |||
58 | uint32_t cu_per_sh[4] = {0}; | 59 | uint32_t cu_per_sh[4] = {0}; |
59 | int i, se, cu = 0; | 60 | int i, se, cu = 0; |
60 | 61 | ||
61 | mm->dev->kfd2kgd->get_cu_info(mm->dev->kgd, &cu_info); | 62 | amdgpu_amdkfd_get_cu_info(mm->dev->kgd, &cu_info); |
62 | 63 | ||
63 | if (cu_mask_count > cu_info.cu_active_number) | 64 | if (cu_mask_count > cu_info.cu_active_number) |
64 | cu_mask_count = cu_info.cu_active_number; | 65 | 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..9dbba609450e 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 @@ | |||
30 | #include "gc/gc_9_0_offset.h" | 30 | #include "gc/gc_9_0_offset.h" |
31 | #include "gc/gc_9_0_sh_mask.h" | 31 | #include "gc/gc_9_0_sh_mask.h" |
32 | #include "sdma0/sdma0_4_0_sh_mask.h" | 32 | #include "sdma0/sdma0_4_0_sh_mask.h" |
33 | #include "amdgpu_amdkfd.h" | ||
33 | 34 | ||
34 | static inline struct v9_mqd *get_mqd(void *mqd) | 35 | static inline struct v9_mqd *get_mqd(void *mqd) |
35 | { | 36 | { |
@@ -83,7 +84,7 @@ static int init_mqd(struct mqd_manager *mm, void **mqd, | |||
83 | *mqd_mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_KERNEL); | 84 | *mqd_mem_obj = kzalloc(sizeof(struct kfd_mem_obj), GFP_KERNEL); |
84 | if (!*mqd_mem_obj) | 85 | if (!*mqd_mem_obj) |
85 | return -ENOMEM; | 86 | return -ENOMEM; |
86 | retval = kfd->kfd2kgd->init_gtt_mem_allocation(kfd->kgd, | 87 | retval = amdgpu_amdkfd_alloc_gtt_mem(kfd->kgd, |
87 | ALIGN(q->ctl_stack_size, PAGE_SIZE) + | 88 | ALIGN(q->ctl_stack_size, PAGE_SIZE) + |
88 | ALIGN(sizeof(struct v9_mqd), PAGE_SIZE), | 89 | ALIGN(sizeof(struct v9_mqd), PAGE_SIZE), |
89 | &((*mqd_mem_obj)->gtt_mem), | 90 | &((*mqd_mem_obj)->gtt_mem), |
@@ -250,7 +251,7 @@ static void uninit_mqd(struct mqd_manager *mm, void *mqd, | |||
250 | struct kfd_dev *kfd = mm->dev; | 251 | struct kfd_dev *kfd = mm->dev; |
251 | 252 | ||
252 | if (mqd_mem_obj->gtt_mem) { | 253 | if (mqd_mem_obj->gtt_mem) { |
253 | kfd->kfd2kgd->free_gtt_mem(kfd->kgd, mqd_mem_obj->gtt_mem); | 254 | amdgpu_amdkfd_free_gtt_mem(kfd->kgd, mqd_mem_obj->gtt_mem); |
254 | kfree(mqd_mem_obj); | 255 | kfree(mqd_mem_obj); |
255 | } else { | 256 | } else { |
256 | kfd_gtt_sa_free(mm->dev, mqd_mem_obj); | 257 | 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 @@ | |||
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | #include "kfd_priv.h" | 24 | #include "kfd_priv.h" |
25 | #include "amdgpu_ids.h" | ||
25 | 26 | ||
26 | static unsigned int pasid_bits = 16; | 27 | static unsigned int pasid_bits = 16; |
27 | static const struct kfd2kgd_calls *kfd2kgd; | 28 | static const struct kfd2kgd_calls *kfd2kgd; |
@@ -71,7 +72,7 @@ unsigned int kfd_pasid_alloc(void) | |||
71 | return false; | 72 | return false; |
72 | } | 73 | } |
73 | 74 | ||
74 | r = kfd2kgd->alloc_pasid(pasid_bits); | 75 | r = amdgpu_pasid_alloc(pasid_bits); |
75 | 76 | ||
76 | return r > 0 ? r : 0; | 77 | return r > 0 ? r : 0; |
77 | } | 78 | } |
@@ -79,5 +80,5 @@ unsigned int kfd_pasid_alloc(void) | |||
79 | void kfd_pasid_free(unsigned int pasid) | 80 | void kfd_pasid_free(unsigned int pasid) |
80 | { | 81 | { |
81 | if (kfd2kgd) | 82 | if (kfd2kgd) |
82 | kfd2kgd->free_pasid(pasid); | 83 | amdgpu_pasid_free(pasid); |
83 | } | 84 | } |
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h index 53ff86d45d91..dec8e64f36bd 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h | |||
@@ -507,6 +507,7 @@ struct qcm_process_device { | |||
507 | * All the memory management data should be here too | 507 | * All the memory management data should be here too |
508 | */ | 508 | */ |
509 | uint64_t gds_context_area; | 509 | uint64_t gds_context_area; |
510 | /* Contains page table flags such as AMDGPU_PTE_VALID since gfx9 */ | ||
510 | uint64_t page_table_base; | 511 | uint64_t page_table_base; |
511 | uint32_t sh_mem_config; | 512 | uint32_t sh_mem_config; |
512 | uint32_t sh_mem_bases; | 513 | uint32_t sh_mem_bases; |
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index 0039e451d9af..80b36e860a0a 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/compat.h> | 31 | #include <linux/compat.h> |
32 | #include <linux/mman.h> | 32 | #include <linux/mman.h> |
33 | #include <linux/file.h> | 33 | #include <linux/file.h> |
34 | #include "amdgpu_amdkfd.h" | ||
34 | 35 | ||
35 | struct mm_struct; | 36 | struct mm_struct; |
36 | 37 | ||
@@ -100,8 +101,8 @@ static void kfd_process_free_gpuvm(struct kgd_mem *mem, | |||
100 | { | 101 | { |
101 | struct kfd_dev *dev = pdd->dev; | 102 | struct kfd_dev *dev = pdd->dev; |
102 | 103 | ||
103 | dev->kfd2kgd->unmap_memory_to_gpu(dev->kgd, mem, pdd->vm); | 104 | amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(dev->kgd, mem, pdd->vm); |
104 | dev->kfd2kgd->free_memory_of_gpu(dev->kgd, mem); | 105 | amdgpu_amdkfd_gpuvm_free_memory_of_gpu(dev->kgd, mem); |
105 | } | 106 | } |
106 | 107 | ||
107 | /* kfd_process_alloc_gpuvm - Allocate GPU VM for the KFD process | 108 | /* 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, | |||
119 | int handle; | 120 | int handle; |
120 | int err; | 121 | int err; |
121 | 122 | ||
122 | err = kdev->kfd2kgd->alloc_memory_of_gpu(kdev->kgd, gpu_va, size, | 123 | err = amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(kdev->kgd, gpu_va, size, |
123 | pdd->vm, &mem, NULL, flags); | 124 | pdd->vm, &mem, NULL, flags); |
124 | if (err) | 125 | if (err) |
125 | goto err_alloc_mem; | 126 | goto err_alloc_mem; |
126 | 127 | ||
127 | err = kdev->kfd2kgd->map_memory_to_gpu(kdev->kgd, mem, pdd->vm); | 128 | err = amdgpu_amdkfd_gpuvm_map_memory_to_gpu(kdev->kgd, mem, pdd->vm); |
128 | if (err) | 129 | if (err) |
129 | goto err_map_mem; | 130 | goto err_map_mem; |
130 | 131 | ||
131 | err = kdev->kfd2kgd->sync_memory(kdev->kgd, mem, true); | 132 | err = amdgpu_amdkfd_gpuvm_sync_memory(kdev->kgd, mem, true); |
132 | if (err) { | 133 | if (err) { |
133 | pr_debug("Sync memory failed, wait interrupted by user signal\n"); | 134 | pr_debug("Sync memory failed, wait interrupted by user signal\n"); |
134 | goto sync_memory_failed; | 135 | goto sync_memory_failed; |
@@ -147,7 +148,7 @@ static int kfd_process_alloc_gpuvm(struct kfd_process_device *pdd, | |||
147 | } | 148 | } |
148 | 149 | ||
149 | if (kptr) { | 150 | if (kptr) { |
150 | err = kdev->kfd2kgd->map_gtt_bo_to_kernel(kdev->kgd, | 151 | err = amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(kdev->kgd, |
151 | (struct kgd_mem *)mem, kptr, NULL); | 152 | (struct kgd_mem *)mem, kptr, NULL); |
152 | if (err) { | 153 | if (err) { |
153 | pr_debug("Map GTT BO to kernel failed\n"); | 154 | pr_debug("Map GTT BO to kernel failed\n"); |
@@ -165,7 +166,7 @@ sync_memory_failed: | |||
165 | return err; | 166 | return err; |
166 | 167 | ||
167 | err_map_mem: | 168 | err_map_mem: |
168 | kdev->kfd2kgd->free_memory_of_gpu(kdev->kgd, mem); | 169 | amdgpu_amdkfd_gpuvm_free_memory_of_gpu(kdev->kgd, mem); |
169 | err_alloc_mem: | 170 | err_alloc_mem: |
170 | *kptr = NULL; | 171 | *kptr = NULL; |
171 | return err; | 172 | return err; |
@@ -296,11 +297,11 @@ static void kfd_process_device_free_bos(struct kfd_process_device *pdd) | |||
296 | per_device_list) { | 297 | per_device_list) { |
297 | if (!peer_pdd->vm) | 298 | if (!peer_pdd->vm) |
298 | continue; | 299 | continue; |
299 | peer_pdd->dev->kfd2kgd->unmap_memory_to_gpu( | 300 | amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu( |
300 | peer_pdd->dev->kgd, mem, peer_pdd->vm); | 301 | peer_pdd->dev->kgd, mem, peer_pdd->vm); |
301 | } | 302 | } |
302 | 303 | ||
303 | pdd->dev->kfd2kgd->free_memory_of_gpu(pdd->dev->kgd, mem); | 304 | amdgpu_amdkfd_gpuvm_free_memory_of_gpu(pdd->dev->kgd, mem); |
304 | kfd_process_device_remove_obj_handle(pdd, id); | 305 | kfd_process_device_remove_obj_handle(pdd, id); |
305 | } | 306 | } |
306 | } | 307 | } |
@@ -323,11 +324,12 @@ static void kfd_process_destroy_pdds(struct kfd_process *p) | |||
323 | pdd->dev->id, p->pasid); | 324 | pdd->dev->id, p->pasid); |
324 | 325 | ||
325 | if (pdd->drm_file) { | 326 | if (pdd->drm_file) { |
326 | pdd->dev->kfd2kgd->release_process_vm(pdd->dev->kgd, pdd->vm); | 327 | amdgpu_amdkfd_gpuvm_release_process_vm( |
328 | pdd->dev->kgd, pdd->vm); | ||
327 | fput(pdd->drm_file); | 329 | fput(pdd->drm_file); |
328 | } | 330 | } |
329 | else if (pdd->vm) | 331 | else if (pdd->vm) |
330 | pdd->dev->kfd2kgd->destroy_process_vm( | 332 | amdgpu_amdkfd_gpuvm_destroy_process_vm( |
331 | pdd->dev->kgd, pdd->vm); | 333 | pdd->dev->kgd, pdd->vm); |
332 | 334 | ||
333 | list_del(&pdd->per_device_list); | 335 | list_del(&pdd->per_device_list); |
@@ -688,12 +690,12 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd, | |||
688 | dev = pdd->dev; | 690 | dev = pdd->dev; |
689 | 691 | ||
690 | if (drm_file) | 692 | if (drm_file) |
691 | ret = dev->kfd2kgd->acquire_process_vm( | 693 | ret = amdgpu_amdkfd_gpuvm_acquire_process_vm( |
692 | dev->kgd, drm_file, p->pasid, | 694 | dev->kgd, drm_file, p->pasid, |
693 | &pdd->vm, &p->kgd_process_info, &p->ef); | 695 | &pdd->vm, &p->kgd_process_info, &p->ef); |
694 | else | 696 | else |
695 | ret = dev->kfd2kgd->create_process_vm( | 697 | ret = amdgpu_amdkfd_gpuvm_create_process_vm(dev->kgd, p->pasid, |
696 | dev->kgd, p->pasid, &pdd->vm, &p->kgd_process_info, &p->ef); | 698 | &pdd->vm, &p->kgd_process_info, &p->ef); |
697 | if (ret) { | 699 | if (ret) { |
698 | pr_err("Failed to create process VM object\n"); | 700 | pr_err("Failed to create process VM object\n"); |
699 | return ret; | 701 | return ret; |
@@ -714,7 +716,7 @@ err_init_cwsr: | |||
714 | err_reserve_ib_mem: | 716 | err_reserve_ib_mem: |
715 | kfd_process_device_free_bos(pdd); | 717 | kfd_process_device_free_bos(pdd); |
716 | if (!drm_file) | 718 | if (!drm_file) |
717 | dev->kfd2kgd->destroy_process_vm(dev->kgd, pdd->vm); | 719 | amdgpu_amdkfd_gpuvm_destroy_process_vm(dev->kgd, pdd->vm); |
718 | pdd->vm = NULL; | 720 | pdd->vm = NULL; |
719 | 721 | ||
720 | return ret; | 722 | return ret; |
@@ -972,7 +974,7 @@ static void restore_process_worker(struct work_struct *work) | |||
972 | */ | 974 | */ |
973 | 975 | ||
974 | p->last_restore_timestamp = get_jiffies_64(); | 976 | p->last_restore_timestamp = get_jiffies_64(); |
975 | ret = pdd->dev->kfd2kgd->restore_process_bos(p->kgd_process_info, | 977 | ret = amdgpu_amdkfd_gpuvm_restore_process_bos(p->kgd_process_info, |
976 | &p->ef); | 978 | &p->ef); |
977 | if (ret) { | 979 | if (ret) { |
978 | pr_debug("Failed to restore BOs of pasid %d, retry after %d ms\n", | 980 | 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..c73b4ff61f99 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include "kfd_topology.h" | 36 | #include "kfd_topology.h" |
37 | #include "kfd_device_queue_manager.h" | 37 | #include "kfd_device_queue_manager.h" |
38 | #include "kfd_iommu.h" | 38 | #include "kfd_iommu.h" |
39 | #include "amdgpu_amdkfd.h" | ||
39 | 40 | ||
40 | /* topology_device_list - Master list of all topology devices */ | 41 | /* topology_device_list - Master list of all topology devices */ |
41 | static struct list_head topology_device_list; | 42 | static struct list_head topology_device_list; |
@@ -1052,7 +1053,7 @@ static uint32_t kfd_generate_gpu_id(struct kfd_dev *gpu) | |||
1052 | if (!gpu) | 1053 | if (!gpu) |
1053 | return 0; | 1054 | return 0; |
1054 | 1055 | ||
1055 | gpu->kfd2kgd->get_local_mem_info(gpu->kgd, &local_mem_info); | 1056 | amdgpu_amdkfd_get_local_mem_info(gpu->kgd, &local_mem_info); |
1056 | 1057 | ||
1057 | local_mem_size = local_mem_info.local_mem_size_private + | 1058 | local_mem_size = local_mem_info.local_mem_size_private + |
1058 | local_mem_info.local_mem_size_public; | 1059 | local_mem_info.local_mem_size_public; |
@@ -1118,8 +1119,7 @@ static void kfd_fill_mem_clk_max_info(struct kfd_topology_device *dev) | |||
1118 | * for APUs - If CRAT from ACPI reports more than one bank, then | 1119 | * for APUs - If CRAT from ACPI reports more than one bank, then |
1119 | * all the banks will report the same mem_clk_max information | 1120 | * all the banks will report the same mem_clk_max information |
1120 | */ | 1121 | */ |
1121 | dev->gpu->kfd2kgd->get_local_mem_info(dev->gpu->kgd, | 1122 | amdgpu_amdkfd_get_local_mem_info(dev->gpu->kgd, &local_mem_info); |
1122 | &local_mem_info); | ||
1123 | 1123 | ||
1124 | list_for_each_entry(mem, &dev->mem_props, list) | 1124 | list_for_each_entry(mem, &dev->mem_props, list) |
1125 | mem->mem_clk_max = local_mem_info.mem_clk_max; | 1125 | mem->mem_clk_max = local_mem_info.mem_clk_max; |
@@ -1240,7 +1240,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu) | |||
1240 | * needed for the topology | 1240 | * needed for the topology |
1241 | */ | 1241 | */ |
1242 | 1242 | ||
1243 | dev->gpu->kfd2kgd->get_cu_info(dev->gpu->kgd, &cu_info); | 1243 | amdgpu_amdkfd_get_cu_info(dev->gpu->kgd, &cu_info); |
1244 | dev->node_props.simd_arrays_per_engine = | 1244 | dev->node_props.simd_arrays_per_engine = |
1245 | cu_info.num_shader_arrays_per_engine; | 1245 | cu_info.num_shader_arrays_per_engine; |
1246 | 1246 | ||
@@ -1249,7 +1249,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu) | |||
1249 | dev->node_props.location_id = PCI_DEVID(gpu->pdev->bus->number, | 1249 | dev->node_props.location_id = PCI_DEVID(gpu->pdev->bus->number, |
1250 | gpu->pdev->devfn); | 1250 | gpu->pdev->devfn); |
1251 | dev->node_props.max_engine_clk_fcompute = | 1251 | dev->node_props.max_engine_clk_fcompute = |
1252 | dev->gpu->kfd2kgd->get_max_engine_clock_in_mhz(dev->gpu->kgd); | 1252 | amdgpu_amdkfd_get_max_engine_clock_in_mhz(dev->gpu->kgd); |
1253 | dev->node_props.max_engine_clk_ccompute = | 1253 | dev->node_props.max_engine_clk_ccompute = |
1254 | cpufreq_quick_get_max(0) / 1000; | 1254 | cpufreq_quick_get_max(0) / 1000; |
1255 | dev->node_props.drm_render_minor = | 1255 | dev->node_props.drm_render_minor = |