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

drm/amd: Add IMU fw version to fw version queries

IMU is a new firmware for GFX11.

There are four means by which firmware version can be queried
from the driver: device attributes, vf2pf, debugfs,
and the AMDGPU_INFO_FW_VERSION option in the amdgpu info ioctl.

Add IMU as an option for those four methods.

V2: Added debugfs

Reviewed-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: David Francis <David.Francis@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

David Francis and committed by
Alex Deucher
68bc1473 abe4d9f0

+20 -1
+13
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
··· 344 344 fw_info->ver = adev->mes.ucode_fw_version[1]; 345 345 fw_info->feature = 0; 346 346 break; 347 + case AMDGPU_INFO_FW_IMU: 348 + fw_info->ver = adev->gfx.imu_fw_version; 349 + fw_info->feature = 0; 350 + break; 347 351 default: 348 352 return -EINVAL; 349 353 } ··· 1523 1519 seq_printf(m, "MEC2 feature version: %u, firmware version: 0x%08x\n", 1524 1520 fw_info.feature, fw_info.ver); 1525 1521 } 1522 + 1523 + /* IMU */ 1524 + query_fw.fw_type = AMDGPU_INFO_FW_IMU; 1525 + query_fw.index = 0; 1526 + ret = amdgpu_firmware_info(&fw_info, &query_fw, adev); 1527 + if (ret) 1528 + return ret; 1529 + seq_printf(m, "IMU feature version: %u, firmware version: 0x%08x\n", 1530 + fw_info.feature, fw_info.ver); 1526 1531 1527 1532 /* PSP SOS */ 1528 1533 query_fw.fw_type = AMDGPU_INFO_FW_SOS;
+3 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
··· 698 698 FW_VERSION_ATTR(rlc_srls_fw_version, 0444, gfx.rlc_srls_fw_version); 699 699 FW_VERSION_ATTR(mec_fw_version, 0444, gfx.mec_fw_version); 700 700 FW_VERSION_ATTR(mec2_fw_version, 0444, gfx.mec2_fw_version); 701 + FW_VERSION_ATTR(imu_fw_version, 0444, gfx.imu_fw_version); 701 702 FW_VERSION_ATTR(sos_fw_version, 0444, psp.sos.fw_version); 702 703 FW_VERSION_ATTR(asd_fw_version, 0444, psp.asd_context.bin_desc.fw_version); 703 704 FW_VERSION_ATTR(ta_ras_fw_version, 0444, psp.ras_context.context.bin_desc.fw_version); ··· 720 719 &dev_attr_ta_ras_fw_version.attr, &dev_attr_ta_xgmi_fw_version.attr, 721 720 &dev_attr_smc_fw_version.attr, &dev_attr_sdma_fw_version.attr, 722 721 &dev_attr_sdma2_fw_version.attr, &dev_attr_vcn_fw_version.attr, 723 - &dev_attr_dmcu_fw_version.attr, NULL 722 + &dev_attr_dmcu_fw_version.attr, &dev_attr_imu_fw_version.attr, 723 + NULL 724 724 }; 725 725 726 726 static const struct attribute_group fw_attr_group = {
+1
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
··· 547 547 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_RLC_SRLS, adev->gfx.rlc_srls_fw_version); 548 548 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_MEC, adev->gfx.mec_fw_version); 549 549 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_MEC2, adev->gfx.mec2_fw_version); 550 + POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_IMU, adev->gfx.imu_fw_version); 550 551 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_SOS, adev->psp.sos.fw_version); 551 552 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_ASD, 552 553 adev->psp.asd_context.bin_desc.fw_version);
+1
drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h
··· 70 70 AMD_SRIOV_UCODE_ID_RLC_SRLS, 71 71 AMD_SRIOV_UCODE_ID_MEC, 72 72 AMD_SRIOV_UCODE_ID_MEC2, 73 + AMD_SRIOV_UCODE_ID_IMU, 73 74 AMD_SRIOV_UCODE_ID_SOS, 74 75 AMD_SRIOV_UCODE_ID_ASD, 75 76 AMD_SRIOV_UCODE_ID_TA_RAS,
+2
include/uapi/drm/amdgpu_drm.h
··· 763 763 #define AMDGPU_INFO_FW_MES_KIQ 0x19 764 764 /* Subquery id: Query MES firmware version */ 765 765 #define AMDGPU_INFO_FW_MES 0x1a 766 + /* Subquery id: Query IMU firmware version */ 767 + #define AMDGPU_INFO_FW_IMU 0x1b 766 768 767 769 /* number of bytes moved for TTM migration */ 768 770 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f