drm/amdgpu: reconfigure spm golden settings on Navi1x after GFXOFF exit(v3)
authorTianci.Yin <tianci.yin@amd.com>
Mon, 20 Jul 2020 07:47:37 +0000 (15:47 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Aug 2020 20:22:39 +0000 (16:22 -0400)
On Navi1x, the SPM golden settings are lost after GFXOFF
enter/exit, so reconfigure the golden settings after GFXOFF
exit.

Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Tianci.Yin <tianci.yin@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c

index 0cd9de6..8ccd17d 100644 (file)
@@ -560,8 +560,14 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)
        if (enable && !adev->gfx.gfx_off_state && !adev->gfx.gfx_off_req_count) {
                schedule_delayed_work(&adev->gfx.gfx_off_delay_work, GFX_OFF_DELAY_ENABLE);
        } else if (!enable && adev->gfx.gfx_off_state) {
-               if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, false))
+               if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, false)) {
                        adev->gfx.gfx_off_state = false;
+
+                       if (adev->gfx.funcs->init_spm_golden) {
+                               dev_dbg(adev->dev, "GFXOFF is disabled, re-init SPM golden settings\n");
+                               amdgpu_gfx_init_spm_golden(adev);
+                       }
+               }
        }
 
        mutex_unlock(&adev->gfx.gfx_off_mutex);