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
Unified · Split
| @@ -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); |
| @@ -698,6 +698,7 @@ FW_VERSION_ATTR(rlc_srlg_fw_version, 0444, gfx.rlc_srlg_fw_version); · 697 unmodified lines | |||
| 698 | FW_VERSION_ATTR(rlc_srls_fw_version, 0444, gfx.rlc_srls_fw_version); | 698 | FW_VERSION_ATTR(rlc_srls_fw_version, 0444, gfx.rlc_srls_fw_version); |
| 699 | FW_VERSION_ATTR(mec_fw_version, 0444, gfx.mec_fw_version); | 699 | FW_VERSION_ATTR(mec_fw_version, 0444, gfx.mec_fw_version); |
| 700 | FW_VERSION_ATTR(mec2_fw_version, 0444, gfx.mec2_fw_version); | 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 | FW_VERSION_ATTR(sos_fw_version, 0444, psp.sos.fw_version); | 702 | FW_VERSION_ATTR(sos_fw_version, 0444, psp.sos.fw_version); |
| 702 | FW_VERSION_ATTR(asd_fw_version, 0444, psp.asd_context.bin_desc.fw_version); | 703 | FW_VERSION_ATTR(asd_fw_version, 0444, psp.asd_context.bin_desc.fw_version); |
| 703 | FW_VERSION_ATTR(ta_ras_fw_version, 0444, psp.ras_context.context.bin_desc.fw_version); | 704 | FW_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, NULL | 723 | &dev_attr_dmcu_fw_version.attr, &dev_attr_imu_fw_version.attr, |
| 724 | NULL | ||
| 723 | }; | 725 | }; |
| 724 | 726 | ||
| 725 | static const struct attribute_group fw_attr_group = { | 727 | static const struct attribute_group fw_attr_group = { |
| @@ -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); |
| @@ -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, |
| @@ -763,6 +763,8 @@ struct drm_amdgpu_cs_chunk_data { · 762 unmodified lines | |||
| 763 | #define AMDGPU_INFO_FW_MES_KIQ 0x19 | 763 | #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 0x1a | 765 | #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 0x0f | 770 | #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f |