diff mbox series

[1/2,SRU,J,OEM-5.14] UBUNTU: SAUCE: drm/amdgpu: always reset the asic in suspend (v2)

Message ID 20211227082827.1739603-2-acelan.kao@canonical.com
State Accepted
Headers show
Series Got black screen when resume from s2idle with AMD dGPU | expand

Commit Message

AceLan Kao Dec. 27, 2021, 8:28 a.m. UTC
From: Alex Deucher <alexander.deucher@amd.com>

BugLink: https://bugs.launchpad.net/bugs/1955790

If the platform suspend happens to fail and the power rail
is not turned off, the GPU will be in an unknown state on
resume, so reset the asic so that it will be in a known
good state on resume even if the platform suspend failed.

v2: handle s0ix

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Luben Tuikov <luben.tuikov@amd.com>
Acked-by: Evan Quan <evan.quan@amd.com>
(cherry picked from commit
https://patchwork.freedesktop.org/patch/463002/)
Signed-off-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 971c5b8e75dc5..7258a14aa7bf3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -1479,7 +1479,10 @@  static int amdgpu_pmops_suspend(struct device *dev)
 	adev->in_s3 = true;
 	r = amdgpu_device_suspend(drm_dev, true);
 	adev->in_s3 = false;
-
+	if (r)
+		return r;
+	if (!adev->in_s0ix)
+		r = amdgpu_asic_reset(adev);
 	return r;
 }