drm/amdgpu: always reset the asic in suspend (v2)
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 12 Nov 2021 16:25:30 +0000 (11:25 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Dec 2021 13:54:45 +0000 (08:54 -0500)
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

Acked-by: Luben Tuikov <luben.tuikov@amd.com>
Acked-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

index 739e4d9303cda2ee5f0b5b806f8f1ca7a8fd0d6e..405b0d565ce35eee30e2d6ac8f80df081633c31e 100644 (file)
@@ -2170,7 +2170,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;
 }