]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/amd: Move microcode init step to early_init()
authorMario Limonciello <mario.limonciello@amd.com>
Fri, 13 Oct 2023 19:26:02 +0000 (14:26 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 19 Oct 2023 22:26:51 +0000 (18:26 -0400)
The intention for early init is to find any missing microcode early
and fail the driver load if it's missing.  Move this step to earlier
in driver init to match other IP blocks.

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/gfx_v11_0.c

index 91c07ab4f14e2b6b1b3e39bf0cf3321ed1c4294e..f994508a36ea0c963f4c3fea88b3b5b20023ec8a 100644 (file)
@@ -589,6 +589,14 @@ static int gfx_v11_0_init_microcode(struct amdgpu_device *adev)
        adev->gfx.mec2_fw = NULL;
 
        gfx_v11_0_check_fw_cp_gfx_shadow(adev);
+
+       if (adev->gfx.imu.funcs && adev->gfx.imu.funcs->init_microcode) {
+               err = adev->gfx.imu.funcs->init_microcode(adev);
+               if (err)
+                       DRM_ERROR("Failed to init imu firmware!\n");
+               return err;
+       }
+
 out:
        if (err) {
                amdgpu_ucode_release(&adev->gfx.pfp_fw);
@@ -1395,14 +1403,6 @@ static int gfx_v11_0_sw_init(void *handle)
 
        adev->gfx.gfx_current_status = AMDGPU_GFX_NORMAL_MODE;
 
-       if (adev->gfx.imu.funcs) {
-               if (adev->gfx.imu.funcs->init_microcode) {
-                       r = adev->gfx.imu.funcs->init_microcode(adev);
-                       if (r)
-                               DRM_ERROR("Failed to load imu firmware!\n");
-               }
-       }
-
        gfx_v11_0_me_init(adev);
 
        r = gfx_v11_0_rlc_init(adev);