OSDN Git Service

drm/amdgpu: set mp1 state before reload
authorJohn Clements <john.clements@amd.com>
Tue, 14 Apr 2020 07:22:29 +0000 (15:22 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 22 Apr 2020 22:11:46 +0000 (18:11 -0400)
Set MP1 state to prepare for unload before reloading SMU FW

Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: John Clements <john.clements@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
drivers/gpu/drm/amd/powerplay/smu_v11_0.c

index 8d1c91b..8020f18 100644 (file)
@@ -1384,12 +1384,21 @@ static int psp_execute_np_fw_load(struct psp_context *psp,
 static int psp_load_smu_fw(struct psp_context *psp)
 {
        int ret;
+       struct amdgpu_device* adev = psp->adev;
        struct amdgpu_firmware_info *ucode =
-                       &psp->adev->firmware.ucode[AMDGPU_UCODE_ID_SMC];
+                       &adev->firmware.ucode[AMDGPU_UCODE_ID_SMC];
 
        if (!ucode->fw || amdgpu_sriov_vf(psp->adev))
                return 0;
 
+
+       if (adev->in_gpu_reset) {
+               ret = amdgpu_dpm_set_mp1_state(adev, PP_MP1_STATE_UNLOAD);
+               if (ret) {
+                       DRM_WARN("Failed to set MP1 state prepare for reload\n");
+               }
+       }
+
        ret = psp_execute_np_fw_load(psp, ucode);
 
        if (ret)
index b502fca..a96ea3e 100644 (file)
@@ -1700,12 +1700,6 @@ int smu_v11_0_baco_set_state(struct smu_context *smu, enum smu_baco_state state)
                if (ret)
                        goto out;
 
-               if (ras && ras->supported) {
-                       ret = smu_send_smc_msg(smu, SMU_MSG_PrepareMp1ForUnload, NULL);
-                       if (ret)
-                               goto out;
-               }
-
                /* clear vbios scratch 6 and 7 for coming asic reinit */
                WREG32(adev->bios_scratch_reg_offset + 6, 0);
                WREG32(adev->bios_scratch_reg_offset + 7, 0);