This gives more information and improves productivity.
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
 
 #define AMDGPU_WAIT_IDLE_TIMEOUT 200
 
+const char *soc15_ih_clientid_name[] = {
+       "IH",
+       "SDMA2 or ACP",
+       "ATHUB",
+       "BIF",
+       "SDMA3 or DCE",
+       "SDMA4 or ISP",
+       "VMC1 or PCIE0",
+       "RLC",
+       "SDMA0",
+       "SDMA1",
+       "SE0SH",
+       "SE1SH",
+       "SE2SH",
+       "SE3SH",
+       "VCN1 or UVD1",
+       "THM",
+       "VCN or UVD",
+       "SDMA5 or VCE0",
+       "VMC",
+       "SDMA6 or XDMA",
+       "GRBM_CP",
+       "ATS",
+       "ROM_SMUIO",
+       "DF",
+       "SDMA7 or VCE1",
+       "PWR",
+       "UTCL2",
+       "EA",
+       "UTCL2LOG",
+       "MP0",
+       "MP1"
+};
+
 /**
  * amdgpu_hotplug_work_func - work handler for display hotplug event
  *
 
                entry->src_id, entry->ring_id, entry->vmid,
                entry->pasid, task_info.process_name, task_info.tgid,
                task_info.task_name, task_info.pid);
-       dev_err(adev->dev, "  in page starting at address 0x%012llx from client %d\n",
-               addr, entry->client_id);
+       dev_err(adev->dev, "  in page starting at address 0x%016llx from client 0x%x (%s)\n",
+               addr, entry->client_id,
+               soc15_ih_clientid_name[entry->client_id]);
 
        if (!amdgpu_sriov_vf(adev))
                hub->vmhub_funcs->print_l2_protection_fault_status(adev,
 
                entry->src_id, entry->ring_id, entry->vmid,
                entry->pasid, task_info.process_name, task_info.tgid,
                task_info.task_name, task_info.pid);
-       dev_err(adev->dev, "  in page starting at address 0x%012llx from client %d\n",
-               addr, entry->client_id);
+       dev_err(adev->dev, "  in page starting at address 0x%016llx from IH client 0x%x (%s)\n",
+               addr, entry->client_id,
+               soc15_ih_clientid_name[entry->client_id]);
 
        if (amdgpu_sriov_vf(adev))
                return 0;
 
 #ifndef __SOC15_IH_CLIENTID_H__
 #define __SOC15_IH_CLIENTID_H__
 
- /*
-  * vega10+ IH clients
+/*
+ * Vega10+ IH clients
+ * Whenever this structure is updated, which should not happen, make sure
+ * soc15_ih_clientid_name in the below is also updated accordingly.
  */
 enum soc15_ih_clientid {
        SOC15_IH_CLIENTID_IH            = 0x00,
        SOC15_IH_CLIENTID_VMC1          = SOC15_IH_CLIENTID_PCIE0,
 };
 
+extern const char *soc15_ih_clientid_name[];
+
 #endif