Lenovo Thinkpad p16s gen 2 suspend-then-hibernate hangs indefinitely
Brief summary of the problem:
Thinkpad p16s with a Ryzen 7 7840U with exactly the same symptoms regarding suspend/hibernation that are described here. I first discovered the issue using suspend-then-hibernate.
To recap:
boot -> suspend -> suspend (works)
boot -> hibernate -> hibernate (works)
boot -> hibernate -> suspend (works)
boot -> suspend -> hibernate (hangs, needs hard reset, leds still powered on incl. NIC)
6.6.1-suspends-then-hibernates-hangs.pm_debug.txt
I can reliable reproduce this with almost all hardware in the BIOS turned off, different distros, with or without desktop environment installed and multiple kernel version. The patch from here almost fixes the issue. After the first suspend-then-hibernate cycle the system reliably (as far as I can tell by now) does what I would expect it to do. Only on the first cycle strange things seem to happen.
Either it suspends twice in a row before it hibernates and resumes as expected.
6.6.1_patched-suspends-twice-then-hibernates-and-resumes-correctly-on-first-try.txt
Or it suspends then hibernates, does NOT hang, but as soon as the lid is opened, turns back on and hangs unresponsive again.
6.8.1_patched-suspends-then-hibernates-resumes-on-lid-open-and-hangs-on-first-try.txt
With every suspend cycle, patched or not i get these suspicious error messages.
Mär 24 23:13:12 nixos kernel: [drm:mes_v11_0_submit_pkt_and_poll_completion.constprop.0 [amdgpu]] *ERROR* MES failed to response msg=14
Mär 24 23:13:12 nixos kernel: [drm:amdgpu_mes_reg_write_reg_wait [amdgpu]] *ERROR* failed to reg_write_reg_wait
Hardware description:
- Thinkpad p16s AMD
- s2idle_report-2024-03-25.txt
System information:
- I can reproduce this with Arch Linux as well as NixOs
- I can reproduce this 10/10 with Kernel 6.1.82 | 6.6.1-zen as well as 6.8.1
- latest BIOS update from March 11. 2024 | 1.18 (UEFI BIOS) 1.16 (ECP)
- latest linux-firmware package 20240312
How to reproduce the issue:
suspend-then-hibernate or manually suspend first and hibernate second.