Commit 35a54408 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu: cancel gfx idle work in device suspend for s0ix



This is normally handled in the gfx IP suspend callbacks, but
for S0ix, those are skipped because we don't want to touch
gfx.  So handle it in device suspend.

Fixes: b9467983 ("drm/amdgpu: add dynamic workload profile switching for gfx10")
Fixes: 963537ca ("drm/amdgpu: add dynamic workload profile switching for gfx11")
Fixes: 5f95a154 ("drm/amdgpu: add dynamic workload profile switching for gfx12")
Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 906ad451)
Cc: stable@vger.kernel.org
parent 50f29ead
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -3643,6 +3643,13 @@ static int amdgpu_device_ip_suspend_phase2(struct amdgpu_device *adev)
			    adev, adev->ip_blocks[i].version->type))
			continue;

		/* Since we skip suspend for S0i3, we need to cancel the delayed
		 * idle work here as the suspend callback never gets called.
		 */
		if (adev->in_s0ix &&
		    adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX &&
		    amdgpu_ip_version(adev, GC_HWIP, 0) >= IP_VERSION(10, 0, 0))
			cancel_delayed_work_sync(&adev->gfx.idle_work);
		/* skip suspend of gfx/mes and psp for S0ix
		 * gfx is in gfxoff state, so on resume it will exit gfxoff just
		 * like at runtime. PSP is also part of the always on hardware