Librem 14 suspend broken on kernel 6.0.2

This issue happens on kernel version 6.0.2. The current LTS kernel works fine. On suspend the screen stays on and the system freezes and cannot be woken up. I’m not sure on which kernel version the issue started as I haven’t been using my Librem 14 for the past 6 months. This should probably be migrated to the purism bug tracker. I can’t open an issue there as I don’t have an account. I think a Librem 14 owner or purism employee should bisect the kernel before posting to a kernel mailing list. I might do the bisect when I find the time.

I don’t see this issue with 6.0.2 personally. There are various things to check

cat /sys/power/mem_sleep 
cat /sys/power/disk
cat /etc/systemd/logind.conf
cat /etc/systemd/logind.conf.d/*

Then I should probably share more system details.

Arch Linux (Linux 6.0.2-arch1-1)
Librem-EC v1.10 (2022-10-04_9789a697)
coreboot 4.17-Purism-1

logind.conf is empty, cat /sys/power/mem_sleep is

s2idle [deep]

and cat /sys/power/disk is

[platform] shutdown reboot suspend test_resume

both on working and broken kernel version. Not sure how to proceed :confused:

The breaking change is between 5.9.14 and 6.0.1.

So I use Pureboot instead of coreboot, but otherwise, I have the same setup. The bug happens when you directly run systemctl suspend and/or echo mem | sudo tee /sys/power/state, I suppose?

Also do you have a USB-C monitor delivering power? I had trouble with those and had to get 2 RMAs before getting a working unit. But this issue was irrrespective of the kernel version… Just trying to collect data points

Yes, it happens on systemctl suspend. It’s not the USB-C port, I haven’t used that yet. Didn’t know you could charge through USB-C, that’s cool.

Once I find the offending kernel commit I’m sure I’ll get to the bottom of this. I gave it a go last night but it was pretty painful as once you compile older kernel versions there are incompatibilities with the newest GCC, etc. But I’m keeping at it.

I think installing fixed it. Without that kernel module suspend seems to work sometimes on the older kernel versions but never on the newer kernel versions. It also works without the kernel module if bluetooth and wifi are disabled with the kill switch. In any case the kernel module seems necessary for suspend to work reliably. Thanks for packaging this for Arch btw :slight_smile: