]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: Add client ids for mmhub v3.x
authorLijo Lazar <lijo.lazar@amd.com>
Tue, 17 Mar 2026 07:52:05 +0000 (13:22 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 17 Mar 2026 21:50:48 +0000 (17:50 -0400)
Initialize client ids for mmhub v3.x

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.c
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.c
drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.c
drivers/gpu/drm/amd/amdgpu/mmhub_v3_3.c

index ab966e69a342a30a9f9897b3cc5d0a02c7db522f..3d82cfa0f1b51186834ca8bee631d894828295d0 100644 (file)
@@ -97,7 +97,7 @@ mmhub_v3_0_print_l2_protection_fault_status(struct amdgpu_device *adev,
                                             uint32_t status)
 {
        uint32_t cid, rw;
-       const char *mmhub_cid = NULL;
+       const char *mmhub_cid;
 
        cid = REG_GET_FIELD(status,
                            MMVM_L2_PROTECTION_FAULT_STATUS, CID);
@@ -107,16 +107,7 @@ mmhub_v3_0_print_l2_protection_fault_status(struct amdgpu_device *adev,
        dev_err(adev->dev,
                "MMVM_L2_PROTECTION_FAULT_STATUS:0x%08X\n",
                status);
-       switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
-       case IP_VERSION(3, 0, 0):
-       case IP_VERSION(3, 0, 1):
-               mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_0_0) ?
-                       mmhub_client_ids_v3_0_0[cid][rw] : NULL;
-               break;
-       default:
-               mmhub_cid = NULL;
-               break;
-       }
+       mmhub_cid = amdgpu_mmhub_client_name(&adev->mmhub, cid, rw);
        dev_err(adev->dev, "\t Faulty UTCL2 client ID: %s (0x%x)\n",
                mmhub_cid ? mmhub_cid : "unknown", cid);
        dev_err(adev->dev, "\t MORE_FAULTS: 0x%lx\n",
@@ -521,6 +512,10 @@ static void mmhub_v3_0_init(struct amdgpu_device *adev)
                SOC15_REG_OFFSET(MMHUB, 0, regMMVM_CONTEXTS_DISABLE);
 
        hub->vmhub_funcs = &mmhub_v3_0_vmhub_funcs;
+
+       amdgpu_mmhub_init_client_info(&adev->mmhub,
+                                    mmhub_client_ids_v3_0_0,
+                                    ARRAY_SIZE(mmhub_client_ids_v3_0_0));
 }
 
 static u64 mmhub_v3_0_get_fb_location(struct amdgpu_device *adev)
index 14a742d3a99d78735dea4b9f86c18fbbef5c230f..a1b0b7b39a42a5e6f5cb6b9920f259d878bb4ffe 100644 (file)
@@ -104,7 +104,7 @@ mmhub_v3_0_1_print_l2_protection_fault_status(struct amdgpu_device *adev,
                                              uint32_t status)
 {
        uint32_t cid, rw;
-       const char *mmhub_cid = NULL;
+       const char *mmhub_cid;
 
        cid = REG_GET_FIELD(status,
                            MMVM_L2_PROTECTION_FAULT_STATUS, CID);
@@ -114,17 +114,7 @@ mmhub_v3_0_1_print_l2_protection_fault_status(struct amdgpu_device *adev,
        dev_err(adev->dev,
                "MMVM_L2_PROTECTION_FAULT_STATUS:0x%08X\n",
                status);
-
-       switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
-       case IP_VERSION(3, 0, 1):
-               mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_0_1) ?
-                       mmhub_client_ids_v3_0_1[cid][rw] : NULL;
-               break;
-       default:
-               mmhub_cid = NULL;
-               break;
-       }
-
+       mmhub_cid = amdgpu_mmhub_client_name(&adev->mmhub, cid, rw);
        dev_err(adev->dev, "\t Faulty UTCL2 client ID: %s (0x%x)\n",
                mmhub_cid ? mmhub_cid : "unknown", cid);
        dev_err(adev->dev, "\t MORE_FAULTS: 0x%lx\n",
@@ -504,6 +494,10 @@ static void mmhub_v3_0_1_init(struct amdgpu_device *adev)
                MMVM_CONTEXT1_CNTL__EXECUTE_PROTECTION_FAULT_ENABLE_INTERRUPT_MASK;
 
        hub->vmhub_funcs = &mmhub_v3_0_1_vmhub_funcs;
+
+       amdgpu_mmhub_init_client_info(&adev->mmhub,
+                                    mmhub_client_ids_v3_0_1,
+                                    ARRAY_SIZE(mmhub_client_ids_v3_0_1));
 }
 
 static u64 mmhub_v3_0_1_get_fb_location(struct amdgpu_device *adev)
index e1f07f2a1852722942ea8795bced3bb2c1c1507e..34e8dbd47c0f8b399e98e152a111d29090c7b01a 100644 (file)
@@ -97,7 +97,7 @@ mmhub_v3_0_2_print_l2_protection_fault_status(struct amdgpu_device *adev,
                                             uint32_t status)
 {
        uint32_t cid, rw;
-       const char *mmhub_cid = NULL;
+       const char *mmhub_cid;
 
        cid = REG_GET_FIELD(status,
                            MMVM_L2_PROTECTION_FAULT_STATUS, CID);
@@ -107,9 +107,7 @@ mmhub_v3_0_2_print_l2_protection_fault_status(struct amdgpu_device *adev,
        dev_err(adev->dev,
                "MMVM_L2_PROTECTION_FAULT_STATUS:0x%08X\n",
                status);
-
-       mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_0_2) ?
-               mmhub_client_ids_v3_0_2[cid][rw] : NULL;
+       mmhub_cid = amdgpu_mmhub_client_name(&adev->mmhub, cid, rw);
        dev_err(adev->dev, "\t Faulty UTCL2 client ID: %s (0x%x)\n",
                mmhub_cid ? mmhub_cid : "unknown", cid);
        dev_err(adev->dev, "\t MORE_FAULTS: 0x%lx\n",
@@ -510,6 +508,10 @@ static void mmhub_v3_0_2_init(struct amdgpu_device *adev)
                SOC15_REG_OFFSET(MMHUB, 0, regMMVM_L2_BANK_SELECT_RESERVED_CID2);
 
        hub->vmhub_funcs = &mmhub_v3_0_2_vmhub_funcs;
+
+       amdgpu_mmhub_init_client_info(&adev->mmhub,
+                                    mmhub_client_ids_v3_0_2,
+                                    ARRAY_SIZE(mmhub_client_ids_v3_0_2));
 }
 
 static u64 mmhub_v3_0_2_get_fb_location(struct amdgpu_device *adev)
index daf1f8ad4ccaa2bd215fd086459866a6fb7023ef..cfce7e1297d4a1b8aa1d2161927f63fa1a62536a 100644 (file)
@@ -217,7 +217,7 @@ mmhub_v3_3_print_l2_protection_fault_status(struct amdgpu_device *adev,
                                              uint32_t status)
 {
        uint32_t cid, rw;
-       const char *mmhub_cid = NULL;
+       const char *mmhub_cid;
 
        cid = REG_GET_FIELD(status,
                            MMVM_L2_PROTECTION_FAULT_STATUS, CID);
@@ -227,29 +227,10 @@ mmhub_v3_3_print_l2_protection_fault_status(struct amdgpu_device *adev,
        dev_err(adev->dev,
                "MMVM_L2_PROTECTION_FAULT_STATUS:0x%08X\n",
                status);
-
-       switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
-       case IP_VERSION(3, 3, 0):
-       case IP_VERSION(3, 3, 2):
-               mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_3) ?
-                           mmhub_client_ids_v3_3[cid][rw] :
-                           cid == 0x140 ? "UMSCH" : NULL;
-               break;
-       case IP_VERSION(3, 3, 1):
-               mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_3_1) ?
-                           mmhub_client_ids_v3_3_1[cid][rw] :
-                           cid == 0x140 ? "UMSCH" : NULL;
-               break;
-       case IP_VERSION(3, 4, 0):
-               mmhub_cid = cid < ARRAY_SIZE(mmhub_client_ids_v3_4) ?
-                       mmhub_client_ids_v3_4[cid][rw] :
-               cid == 0x140 ? "UMSCH" : NULL;
-               break;
-       default:
-               mmhub_cid = NULL;
-               break;
-       }
-
+       if (cid == 0x140)
+               mmhub_cid = "UMSCH";
+       else
+               mmhub_cid = amdgpu_mmhub_client_name(&adev->mmhub, cid, rw);
        dev_err(adev->dev, "\t Faulty UTCL2 client ID: %s (0x%x)\n",
                mmhub_cid ? mmhub_cid : "unknown", cid);
        dev_err(adev->dev, "\t MORE_FAULTS: 0x%lx\n",
@@ -640,6 +621,30 @@ static const struct amdgpu_vmhub_funcs mmhub_v3_3_vmhub_funcs = {
        .get_invalidate_req = mmhub_v3_3_get_invalidate_req,
 };
 
+static void mmhub_v3_3_init_client_info(struct amdgpu_device *adev)
+{
+       switch (amdgpu_ip_version(adev, MMHUB_HWIP, 0)) {
+       case IP_VERSION(3, 3, 0):
+       case IP_VERSION(3, 3, 2):
+               amdgpu_mmhub_init_client_info(&adev->mmhub,
+                                            mmhub_client_ids_v3_3,
+                                            ARRAY_SIZE(mmhub_client_ids_v3_3));
+               break;
+       case IP_VERSION(3, 3, 1):
+               amdgpu_mmhub_init_client_info(&adev->mmhub,
+                                            mmhub_client_ids_v3_3_1,
+                                            ARRAY_SIZE(mmhub_client_ids_v3_3_1));
+               break;
+       case IP_VERSION(3, 4, 0):
+               amdgpu_mmhub_init_client_info(&adev->mmhub,
+                                            mmhub_client_ids_v3_4,
+                                            ARRAY_SIZE(mmhub_client_ids_v3_4));
+               break;
+       default:
+               break;
+       }
+}
+
 static void mmhub_v3_3_init(struct amdgpu_device *adev)
 {
        struct amdgpu_vmhub *hub = &adev->vmhub[AMDGPU_MMHUB0(0)];
@@ -680,6 +685,8 @@ static void mmhub_v3_3_init(struct amdgpu_device *adev)
                MMVM_CONTEXT1_CNTL__EXECUTE_PROTECTION_FAULT_ENABLE_INTERRUPT_MASK;
 
        hub->vmhub_funcs = &mmhub_v3_3_vmhub_funcs;
+
+       mmhub_v3_3_init_client_info(adev);
 }
 
 static u64 mmhub_v3_3_get_fb_location(struct amdgpu_device *adev)