drm/amd: Don't parse IMU ucode version if it won't be loaded
authorMario Limonciello <mario.limonciello@amd.com>
Fri, 13 Oct 2023 19:26:03 +0000 (14:26 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 19 Oct 2023 22:26:51 +0000 (18:26 -0400)
When the IMU ucode is loaded by the PSP parsing the version that comes from
Linux will vary. Rather than showing the wrong data to kernel interface
consumers, avoid populating it in this case.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/imu_v11_0.c

index 875fb5a..c0bdab3 100644 (file)
@@ -55,7 +55,6 @@ static int imu_v11_0_init_microcode(struct amdgpu_device *adev)
        if (err)
                goto out;
        imu_hdr = (const struct imu_firmware_header_v1_0 *)adev->gfx.imu_fw->data;
-       adev->gfx.imu_fw_version = le32_to_cpu(imu_hdr->header.ucode_version);
        //adev->gfx.imu_feature_version = le32_to_cpu(imu_hdr->ucode_feature_version);
        
        if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
@@ -69,7 +68,8 @@ static int imu_v11_0_init_microcode(struct amdgpu_device *adev)
                info->fw = adev->gfx.imu_fw;
                adev->firmware.fw_size +=
                        ALIGN(le32_to_cpu(imu_hdr->imu_dram_ucode_size_bytes), PAGE_SIZE);
-       }
+       } else
+               adev->gfx.imu_fw_version = le32_to_cpu(imu_hdr->header.ucode_version);
 
 out:
        if (err) {