From: Hawking Zhang <[email protected]>

Add initial KFD support
Convert a few structures to IP version checking (Hawking)

Signed-off-by: Elena Sakhnovitch <[email protected]>
Signed-off-by: Hawking Zhang <[email protected]>
Reviewed-by: Amber Lin <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c           | 1 +
 drivers/gpu/drm/amd/amdkfd/kfd_device.c         | 5 +++++
 drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c | 3 ++-
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
index 3251f4783ba1..475e47027354 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
@@ -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;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
index ec70a1658dc3..4100db469d57 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
@@ -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;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
index ed02b6d8bf63..f612325241aa 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
@@ -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;
-- 
2.39.2

Reply via email to