Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: add the hw_ip version of all IP's

Add all the IP's version information on a SOC to the
devcoredump.

Signed-off-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Sunil Khatri and committed by
Alex Deucher
d72e2bda 2e52dd1e

+60
+60
drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
··· 29 29 #include "sienna_cichlid.h" 30 30 #include "smu_v13_0_10.h" 31 31 32 + const char *hw_ip_names[MAX_HWIP] = { 33 + [GC_HWIP] = "GC", 34 + [HDP_HWIP] = "HDP", 35 + [SDMA0_HWIP] = "SDMA0", 36 + [SDMA1_HWIP] = "SDMA1", 37 + [SDMA2_HWIP] = "SDMA2", 38 + [SDMA3_HWIP] = "SDMA3", 39 + [SDMA4_HWIP] = "SDMA4", 40 + [SDMA5_HWIP] = "SDMA5", 41 + [SDMA6_HWIP] = "SDMA6", 42 + [SDMA7_HWIP] = "SDMA7", 43 + [LSDMA_HWIP] = "LSDMA", 44 + [MMHUB_HWIP] = "MMHUB", 45 + [ATHUB_HWIP] = "ATHUB", 46 + [NBIO_HWIP] = "NBIO", 47 + [MP0_HWIP] = "MP0", 48 + [MP1_HWIP] = "MP1", 49 + [UVD_HWIP] = "UVD/JPEG/VCN", 50 + [VCN1_HWIP] = "VCN1", 51 + [VCE_HWIP] = "VCE", 52 + [VPE_HWIP] = "VPE", 53 + [DF_HWIP] = "DF", 54 + [DCE_HWIP] = "DCE", 55 + [OSSSYS_HWIP] = "OSSSYS", 56 + [SMUIO_HWIP] = "SMUIO", 57 + [PWR_HWIP] = "PWR", 58 + [NBIF_HWIP] = "NBIF", 59 + [THM_HWIP] = "THM", 60 + [CLK_HWIP] = "CLK", 61 + [UMC_HWIP] = "UMC", 62 + [RSMU_HWIP] = "RSMU", 63 + [XGMI_HWIP] = "XGMI", 64 + [DCI_HWIP] = "DCI", 65 + [PCIE_HWIP] = "PCIE", 66 + }; 67 + 32 68 int amdgpu_reset_init(struct amdgpu_device *adev) 33 69 { 34 70 int ret = 0; ··· 231 195 drm_printf(&p, "process_name: %s PID: %d\n", 232 196 coredump->reset_task_info.process_name, 233 197 coredump->reset_task_info.pid); 198 + 199 + /* GPU IP's information of the SOC */ 200 + if (coredump->adev) { 201 + drm_printf(&p, "\nIP Information\n"); 202 + drm_printf(&p, "SOC Family: %d\n", coredump->adev->family); 203 + drm_printf(&p, "SOC Revision id: %d\n", coredump->adev->rev_id); 204 + drm_printf(&p, "SOC External Revision id: %d\n", 205 + coredump->adev->external_rev_id); 206 + 207 + for (int i = 1; i < MAX_HWIP; i++) { 208 + for (int j = 0; j < HWIP_MAX_INSTANCE; j++) { 209 + int ver = coredump->adev->ip_versions[i][j]; 210 + 211 + if (ver) 212 + drm_printf(&p, "HWIP: %s[%d][%d]: v%d.%d.%d.%d.%d\n", 213 + hw_ip_names[i], i, j, 214 + IP_VERSION_MAJ(ver), 215 + IP_VERSION_MIN(ver), 216 + IP_VERSION_REV(ver), 217 + IP_VERSION_VARIANT(ver), 218 + IP_VERSION_SUBREV(ver)); 219 + } 220 + } 221 + } 234 222 235 223 if (coredump->ring) { 236 224 drm_printf(&p, "\nRing timed out details\n");