[PATCH v2 0/3] Fix DCN 3.1.4 hangs on s2idle entry

Mario Limonciello mario.limonciello at amd.com
Tue May 16 23:34:17 UTC 2023


DCN 3.1.4 s2idle entry will hang
occasionally on s2idle entry, but only if running Wayland and only
when using `systemctl suspend`, not `echo mem | tee /sys/power/state`.

This happens because using `systemctl suspend` will cause the screen
to lock right before writing mem into /sys/power/state.

This causes a delayed GFXOFF entry to be scheduled right before s2idle
entry.  If the workqueue doesn't get processed before the RLC is turned
off the system is hung. Even if the workqueue *does* get processed, there
is a race between the APU microcontrollers and driver for whether GFX
is actually powered off when RLC is turned off.

To avoid this issue, flush the workqueue on s2idle entry and ensure that
GFX is really in GFXOFF before any sensitive register accesses occur.

Mario Limonciello (3):
  drm/amd: Flush any delayed gfxoff on suspend entry
  drm/amd: Poll for GFX core to be off
  drm/amd: Skip RLC suspend for s0ix on PSP 13.0.4 and 13.0.11

 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 25 ++++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c     | 18 ++++++++++++++++
 drivers/gpu/drm/amd/include/amd_shared.h   |  1 +
 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c  |  4 ++--
 4 files changed, 46 insertions(+), 2 deletions(-)

-- 
2.34.1



More information about the amd-gfx mailing list