History

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

David Francis committed 4 years ago

Commit 68bc1471 parent abe4d9f5 files · +20 −1Browse files

Unified · Split

5 files
  1. drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +13 −0
  2. drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +3 −1
  3. drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +1 −0
  4. drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h +1 −0
  5. include/uapi/drm/amdgpu_drm.h +2 −0
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c+13−0
@@ -344,6 +344,10 @@ static int amdgpu_firmware_info(struct drm_amdgpu_info_firmware *fw_info, · 343 unmodified lines
344 fw_info->ver = adev->mes.ucode_fw_version[1];344 fw_info->ver = adev->mes.ucode_fw_version[1];
345 fw_info->feature = 0;345 fw_info->feature = 0;
346 break;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 default:351 default:
348 return -EINVAL;352 return -EINVAL;
349 }353 }
@@ -1520,6 +1524,15 @@ static int amdgpu_debugfs_firmware_info_show(struct seq_file *m, void *unused) · 1170 unmodified lines
1520 fw_info.feature, fw_info.ver);1524 fw_info.feature, fw_info.ver);
1521 }1525 }
1522 1526
1527 /* IMU */
1528 query_fw.fw_type = AMDGPU_INFO_FW_IMU;
1529 query_fw.index = 0;
1530 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
1531 if (ret)
1532 return ret;
1533 seq_printf(m, "IMU feature version: %u, firmware version: 0x%08x\n",
1534 fw_info.feature, fw_info.ver);
1535
1523 /* PSP SOS */1536 /* PSP SOS */
1524 query_fw.fw_type = AMDGPU_INFO_FW_SOS;1537 query_fw.fw_type = AMDGPU_INFO_FW_SOS;
1525 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);1538 ret = amdgpu_firmware_info(&fw_info, &query_fw, adev);
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c+3−1
@@ -698,6 +698,7 @@ FW_VERSION_ATTR(rlc_srlg_fw_version, 0444, gfx.rlc_srlg_fw_version); · 697 unmodified lines
698FW_VERSION_ATTR(rlc_srls_fw_version, 0444, gfx.rlc_srls_fw_version);698FW_VERSION_ATTR(rlc_srls_fw_version, 0444, gfx.rlc_srls_fw_version);
699FW_VERSION_ATTR(mec_fw_version, 0444, gfx.mec_fw_version);699FW_VERSION_ATTR(mec_fw_version, 0444, gfx.mec_fw_version);
700FW_VERSION_ATTR(mec2_fw_version, 0444, gfx.mec2_fw_version);700FW_VERSION_ATTR(mec2_fw_version, 0444, gfx.mec2_fw_version);
701FW_VERSION_ATTR(imu_fw_version, 0444, gfx.imu_fw_version);
701FW_VERSION_ATTR(sos_fw_version, 0444, psp.sos.fw_version);702FW_VERSION_ATTR(sos_fw_version, 0444, psp.sos.fw_version);
702FW_VERSION_ATTR(asd_fw_version, 0444, psp.asd_context.bin_desc.fw_version);703FW_VERSION_ATTR(asd_fw_version, 0444, psp.asd_context.bin_desc.fw_version);
703FW_VERSION_ATTR(ta_ras_fw_version, 0444, psp.ras_context.context.bin_desc.fw_version);704FW_VERSION_ATTR(ta_ras_fw_version, 0444, psp.ras_context.context.bin_desc.fw_version);
@@ -719,7 +720,8 @@ static struct attribute *fw_attrs[] = { · 15 unmodified lines
719 &dev_attr_ta_ras_fw_version.attr, &dev_attr_ta_xgmi_fw_version.attr,720 &dev_attr_ta_ras_fw_version.attr, &dev_attr_ta_xgmi_fw_version.attr,
720 &dev_attr_smc_fw_version.attr, &dev_attr_sdma_fw_version.attr,721 &dev_attr_smc_fw_version.attr, &dev_attr_sdma_fw_version.attr,
721 &dev_attr_sdma2_fw_version.attr, &dev_attr_vcn_fw_version.attr,722 &dev_attr_sdma2_fw_version.attr, &dev_attr_vcn_fw_version.attr,
722 &dev_attr_dmcu_fw_version.attr, NULL723 &dev_attr_dmcu_fw_version.attr, &dev_attr_imu_fw_version.attr,
724 NULL
723};725};
724 726
725static const struct attribute_group fw_attr_group = {727static const struct attribute_group fw_attr_group = {
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c+1−0
@@ -547,6 +547,7 @@ static void amdgpu_virt_populate_vf2pf_ucode_info(struct amdgpu_device *adev) · 546 unmodified lines
547 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_RLC_SRLS, adev->gfx.rlc_srls_fw_version);547 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_RLC_SRLS, adev->gfx.rlc_srls_fw_version);
548 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_MEC, adev->gfx.mec_fw_version);548 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_MEC, adev->gfx.mec_fw_version);
549 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_MEC2, adev->gfx.mec2_fw_version);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 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_SOS, adev->psp.sos.fw_version);551 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_SOS, adev->psp.sos.fw_version);
551 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_ASD,552 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_ASD,
552 adev->psp.asd_context.bin_desc.fw_version);553 adev->psp.asd_context.bin_desc.fw_version);
drivers/gpu/drm/amd/amdgpu/amdgv_sriovmsg.h+1−0
@@ -70,6 +70,7 @@ enum amd_sriov_ucode_engine_id { · 69 unmodified lines
70 AMD_SRIOV_UCODE_ID_RLC_SRLS,70 AMD_SRIOV_UCODE_ID_RLC_SRLS,
71 AMD_SRIOV_UCODE_ID_MEC,71 AMD_SRIOV_UCODE_ID_MEC,
72 AMD_SRIOV_UCODE_ID_MEC2,72 AMD_SRIOV_UCODE_ID_MEC2,
73 AMD_SRIOV_UCODE_ID_IMU,
73 AMD_SRIOV_UCODE_ID_SOS,74 AMD_SRIOV_UCODE_ID_SOS,
74 AMD_SRIOV_UCODE_ID_ASD,75 AMD_SRIOV_UCODE_ID_ASD,
75 AMD_SRIOV_UCODE_ID_TA_RAS,76 AMD_SRIOV_UCODE_ID_TA_RAS,
include/uapi/drm/amdgpu_drm.h+2−0
@@ -763,6 +763,8 @@ struct drm_amdgpu_cs_chunk_data { · 762 unmodified lines
763 #define AMDGPU_INFO_FW_MES_KIQ 0x19763 #define AMDGPU_INFO_FW_MES_KIQ 0x19
764 /* Subquery id: Query MES firmware version */764 /* Subquery id: Query MES firmware version */
765 #define AMDGPU_INFO_FW_MES 0x1a765 #define AMDGPU_INFO_FW_MES 0x1a
766 /* Subquery id: Query IMU firmware version */
767 #define AMDGPU_INFO_FW_IMU 0x1b
766 768
767/* number of bytes moved for TTM migration */769/* number of bytes moved for TTM migration */
768#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f770#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f