Ubuntu laptop freezes on suspend/lid close at PM: suspend entry (s2idle) on kernel 7.0.0-15
https://askubuntu.com/questions/1567073/ubuntu-laptop-freezes-on-suspend-lid-close-at-pm-suspend-entry-s2idle-on-kern
I’m troubleshooting a suspend problem on Ubuntu. When I close the lid or run sudo systemctl suspend, the laptop screen goes black, but it does not properly sleep or resume. The power button light stays on, and the machine becomes unresponsive. I have to hold the power button to force shutdown.
This started/persists on kernel:
Linux jamshaid-laptop 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64 GNU/Linux
Hardware:
HP Pavilion Gaming Laptop 15-ec2xxx
AMD Cezanne APU
NVIDIA GTX 1650 Mobile / Max-Q
Realtek RTL8852AE Wi-Fi/Bluetooth
Relevant current suspend mode:
cat /sys/power/mem_sleep
Output:
[s2idle] deep
Kernel command line includes:
mem_sleep_default=s2idle
I previously tried deep as well, but the issue persisted.
The failure pattern in journalctl is consistent. The system reaches suspend entry and then never logs a suspend exit. Example from a failed boot:
May 22 20:12:55 systemd-logind[2690]: The system will suspend now!
May 22 20:12:56 systemd[1]: Reached target sleep.target - Sleep.
May 22 20:12:56 systemd[1]: Starting nvidia-suspend.service - NVIDIA system suspend actions...
May 22 20:12:56 suspend[12351]: nvidia-suspend.service
May 22 20:12:56 systemd[1]: nvidia-suspend.service: Deactivated successfully.
May 22 20:12:56 systemd[1]: Finished nvidia-suspend.service - NVIDIA system suspend actions.
May 22 20:12:56 systemd[1]: Starting systemd-suspend.service - System Suspend...
May 22 20:12:56 systemd-sleep[12540]: Successfully froze unit 'user.slice'.
May 22 20:12:56 systemd-sleep[12540]: Performing sleep operation 'suspend'...
May 22 20:12:56 kernel: PM: suspend entry (s2idle)
After that, there is no PM: suspend exit. The next boot only happens after a hard power-off.
I originally had NVIDIA suspend hook errors like this:
NVRM: PreserveVideoMemoryAllocations module parameter is set.
System Power Management attempted without driver procfs suspend interface.
nv_pmops_suspend [nvidia] returns -5
I fixed that by enabling the NVIDIA systemd services:
sudo systemctl enable nvidia-suspend.service nvidia-resume.service nvidia-hibernate.service
Now they are enabled:
nvidia-suspend.service: enabled
nvidia-resume.service: enabled
nvidia-hibernate.service: enabled
NVIDIA driver details:
NVIDIA driver 580.142
NVIDIA module options:
options nvidia_drm modeset=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
/proc/driver/nvidia/params confirms:
PreserveVideoMemoryAllocations: 1
TemporaryFilePath: "/var/tmp"
I also switched PRIME mode from full NVIDIA mode to on-demand:
prime-select query
Output:
on-demand
But suspend still freezes in the same place.
Loaded relevant modules:
nvidia_uvm
nvidia_drm
nvidia_modeset
nvidia
amdgpu
rtw89_8852ae
rtw89_8852a
rtw89_pci
rtw89_core
btusb
bluetooth
There are also Realtek WiFi firmware/driver errors in recent logs:
rtw89_8852ae 0000:03:00.0: FW status = 0x44001100
rtw89_8852ae 0000:03:00.0: FW BADADDR = 0xee00
rtw89_8852ae 0000:03:00.0: SER catches error: 0x1000
rtw89_8852ae 0000:03:00.0: firmware failed to ack for leaving ps mode
rtw89_8852ae 0000:03:00.0: SER catches error: 0x4000
I tried turning WiFi off and stopping Bluetooth before suspend:
nmcli radio wifi off
sudo systemctl stop bluetooth
sudo systemctl suspend
But it still froze. Looking at logs, Bluetooth appears to have been restarted automatically by wireplumber/blueman right before suspend, so I’m not sure that test fully isolated the Realtek device.
One failed attempt showed:
NetworkManager: manager: rfkill: Wi-Fi hardware radio set disabled
systemd: Stopping bluetooth.service - Bluetooth service...
systemd: Stopped bluetooth.service - Bluetooth service.
dbus-daemon: Activating via systemd: service name='org.bluez'
systemd: Starting bluetooth.service - Bluetooth service...
systemd: Started bluetooth.service - Bluetooth service.
blueman-applet: adapter powered on while in off state, turning bluetooth on
...
kernel: PM: suspend entry (s2idle)
Sleep targets are not masked:
systemctl is-enabled sleep.target suspend.target hibernate.target hybrid-sleep.target
Output:
static
static
static
static
Things already tried:
- Changed between deep and s2idle suspend modes.
- Enabled NVIDIA suspend/resume/hibernate systemd services.
- Verified NVIDIA PreserveVideoMemoryAllocations and TemporaryFilePath.
- Switched PRIME mode to on-demand.
- Tried WiFi off and Bluetooth stopped before suspend.
- Checked for inhibitors; no persistent blocker found.
Current behavior:
- Lid close: screen goes black, power light remains on, system stalls.
sudo systemctl suspend: same behavior.
- No successful resume.
- No "PM: suspend exit" in journal.
- Requires hard power-off.
My main questions:
- How can I identify which device/driver is hanging after PM: suspend entry (s2idle)?
- Could this be a kernel 7.0.0-15-generic regression with
rtw89_8852ae, NVIDIA, or AMD suspend?
- What is the correct way to fully isolate the Realtek RTL8852AE WiFi/Bluetooth module before suspend?
- Are there known rtw89_pci module options for suspend issues, such as disabling ASPM or CLKREQ?
- Should I boot and pin an older kernel such as 6.17.0-23-generic if suspend works there?
I am looking for a proper debugging path or workaround.
Update after following Ubuntu DebuggingKernelSuspend:
I tested pm_test=freezer.
Commands used:
sudo sh -c 'echo freezer > /sys/power/pm_test'
cat /sys/power/pm_test
sudo systemctl suspend
Result:
The system froze during pm_test=freezer and did not return automatically. I had to hard power off using the power button.
After reboot I restored pm_test:
sudo sh -c 'echo none > /sys/power/pm_test'
cat /sys/power/pm_test
Output:
[none] core processors platform devices freezer
I did not continue with devices/platform/processors/core because freezer is already the first failing pm_test stage.
Kernel:
Linux jamshaid-laptop 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64 GNU/Linux
Sleep mode:
cat /sys/power/mem_sleep
Output:
[s2idle] deep
suspend_stats after the hard power-off/reboot:
success: 0
fail: 0
failed_freeze: 0
failed_prepare: 0
failed_suspend: 0
failed_suspend_late: 0
failed_suspend_noirq: 0
failed_resume_noirq: 0
failed_resume_early: 0
failed_resume: 0
failures:
last_failed_dev:
last_failed_errno: 0
last_failed_step:
Important log lines around the freezer test:
May 23 08:36:32 jamshaid-laptop sudo[9734]: jamshaid : TTY=/dev/pts/0 ; PWD=/home/jamshaid/suspend-debug ; USER=root ; COMMAND=/usr/bin/sh -c echo freezer > /sys/power/pm_test
May 23 08:36:32 jamshaid-laptop sudo[9745]: jamshaid : TTY=/dev/pts/0 ; PWD=/home/jamshaid/suspend-debug ; USER=root ; COMMAND=/usr/bin/systemctl suspend
May 23 08:36:32 jamshaid-laptop systemd-logind[2163]: The system will suspend now!
May 23 08:36:32 jamshaid-laptop ModemManager[1992]: [sleep-monitor-systemd] system is about to suspend
May 23 08:36:32 jamshaid-laptop NetworkManager[1919]: manager: sleep: sleep requested
May 23 08:36:33 jamshaid-laptop kernel: r8169 0000:02:00.0 eno1: Link is Down
May 23 08:36:33 jamshaid-laptop kernel: wlo1: deauthenticating from <AP> by local choice (Reason: 3=DEAUTH_LEAVING)
There is no clean return/resume recorded. The machine required hard power-off.
I have also created an archive with the collected logs:
suspend-debug-freezer-fail.tar.gz