Update: It seems that disabling hibernation and hybrid sleep is the real solution. It’s likely that the laptop goes into hybrid sleep mode and waking up from that is an issue.

Setting the kernel parameter nvme_core.default_ps_max_latency_us=0 seems to resolve a vexing issue, where one in five times my ThinkPad E14 would refuse to wake up from sleep.

Linux (Ubuntu) was perfect for my ThinkPad E14 G4 except for one issue: about one in five times the machine would refuse to wake from sleep. I had to reboot the machine. This happened both with Ubuntu 24 (6.6.0-14 Linux kernel) and openSUsE Tumbleweed (6.7.7-1 kernel).

The only clue I could find was that, sometimes, I could get the machine to wake up and though the graphical login was broken in weird ways, I could get a text console (CTRL+ALT+F1) that suggested the drive, a Micron MTFDKCD512TFK NVMe SSD, was mounted in read only mode.

On openSUSE I could actually log in to the GUI and partially use my terminal is a way that was consistent the SSD being mounted read only.

I eventually found this page on the Arch Wiki (and various bits spread across the internet) which gave me a list of Kernel parameters to try. The error message in the section “Controller failure due to broken suspend support” was very similar to the one I could iommu=soft made it better (laptop would wake up correctly more often) but nvme_core.default_ps_max_latency_us=0 seems to have really resolved the issue.

I’m very happy to have found this solution as Linux was otherwise becoming unusable for me on this machine.

nvme_core.default_ps_max_latency_us=0Works
iommu=softImproved things
acpiphp.disable=1Did not work
nvme.noacpi=1Did not try