Provide and explanation as to why we skip GFX and PSP for
S0ix.  GFX goes into gfxoff, same as runtime, so no need
to tear down and re-init.  PSP is part of the always on
state, so no need to touch it.

Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index a84d93ced407..a6f4b52ec796 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2725,10 +2725,14 @@ static int amdgpu_device_ip_suspend_phase2(struct 
amdgpu_device *adev)
                        continue;
                }
 
-               /* XXX fix these remaining cases */
+               /* skip suspend of gfx 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
+                * so no need to suspend it.
+                */
                if (adev->in_s0ix &&
-                   (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_PSP 
|| /* breaks resume */
-                    adev->ip_blocks[i].version->type == 
AMD_IP_BLOCK_TYPE_GFX))  /* breaks suspend */
+                   (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_PSP 
||
+                    adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX))
                        continue;
 
                /* XXX handle errors */
-- 
2.30.2

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to