drm/amdkfd: Add GC 9.4.3 KFD support
authorHawking Zhang <Hawking.Zhang@amd.com>
Mon, 6 Dec 2021 09:25:46 +0000 (17:25 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 31 Mar 2023 15:18:55 +0000 (11:18 -0400)
Add initial KFD support
Convert a few structures to IP version checking (Hawking)

Signed-off-by: Elena Sakhnovitch <elena.sakhnovitch@amd.com>
Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Amber Lin <Amber.Lin@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_crat.c
drivers/gpu/drm/amd/amdkfd/kfd_device.c
drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c

index 3251f47..475e470 100644 (file)
@@ -1462,6 +1462,7 @@ int kfd_get_gpu_cache_info(struct kfd_dev *kdev, struct kfd_gpu_cache_info **pca
                        num_of_cache_types = ARRAY_SIZE(vega20_cache_info);
                        break;
                case IP_VERSION(9, 4, 2):
+               case IP_VERSION(9, 4, 3):
                        *pcache_info = aldebaran_cache_info;
                        num_of_cache_types = ARRAY_SIZE(aldebaran_cache_info);
                        break;
index ec70a16..4100db4 100644 (file)
@@ -315,6 +315,7 @@ struct kfd_dev *kgd2kfd_probe(struct amdgpu_device *adev, bool vf)
                        break;
                /* Aldebaran */
                case IP_VERSION(9, 4, 2):
+               case IP_VERSION(9, 4, 3):
                        gfx_target_version = 90010;
                        f2g = &aldebaran_kfd2kgd;
                        break;
@@ -450,6 +451,10 @@ static void kfd_cwsr_init(struct kfd_dev *kfd)
                        BUILD_BUG_ON(sizeof(cwsr_trap_aldebaran_hex) > PAGE_SIZE);
                        kfd->cwsr_isa = cwsr_trap_aldebaran_hex;
                        kfd->cwsr_isa_size = sizeof(cwsr_trap_aldebaran_hex);
+               } else if (KFD_GC_VERSION(kfd) == IP_VERSION(9, 4, 3)) {
+                       BUILD_BUG_ON(sizeof(cwsr_trap_aldebaran_hex) > PAGE_SIZE);
+                       kfd->cwsr_isa = cwsr_trap_aldebaran_hex;
+                       kfd->cwsr_isa_size = sizeof(cwsr_trap_aldebaran_hex);
                } else if (KFD_GC_VERSION(kfd) < IP_VERSION(10, 1, 1)) {
                        BUILD_BUG_ON(sizeof(cwsr_trap_gfx9_hex) > PAGE_SIZE);
                        kfd->cwsr_isa = cwsr_trap_gfx9_hex;
index ed02b6d..f612325 100644 (file)
@@ -238,7 +238,8 @@ int pm_init(struct packet_manager *pm, struct device_queue_manager *dqm)
                pm->pmf = &kfd_vi_pm_funcs;
                break;
        default:
-               if (KFD_GC_VERSION(dqm->dev) == IP_VERSION(9, 4, 2))
+               if (KFD_GC_VERSION(dqm->dev) == IP_VERSION(9, 4, 2) ||
+                   KFD_GC_VERSION(dqm->dev) == IP_VERSION(9, 4, 3))
                        pm->pmf = &kfd_aldebaran_pm_funcs;
                else if (KFD_GC_VERSION(dqm->dev) >= IP_VERSION(9, 0, 1))
                        pm->pmf = &kfd_v9_pm_funcs;