Created attachment 302984 [details] kernel log for hybrid sleep with s2idle: v6.0 Hybrid Sleep isn't working on the HP EliteBook 845 G8 Notebook. Hybrid Sleep is documented here as "Hybrid System Suspend": https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/admin-guide/pm/sleep-states.rst?h=v6.0.1#n220 uswsusp called this s2both. (uswsusp is deprecated, but "Hybrid System Suspend" is currently supported by the kernel if I don't get the documentation wrong) This bug is forked off from: https://bugzilla.kernel.org/show_bug.cgi?id=216516#c34 I initiate Hybrid Sleep this way: echo suspend > /sys/power/disk echo disk > /sys/power/state But the system doesn't correctly enter Hybrid Sleep by activating s2idle. Instead the system seems to do just a hibernation to disk. So the system simply shuts down completely. At power on it resumes from swapfile. Correct behaviour would be to write the memory to swapfile (like hibernation to disk), but then enter s2idle. (the idea behind hybrid sleep is to prevent data loss if the battery is getting drained while being in some suspend to memory) The EliteBook 845 G8 (usually) only supports "s2idle" and no "deep" S3 mem_sleep mode. See: https://bugzilla.kernel.org/show_bug.cgi?id=216516#c5 Using "systemctl start hybrid-sleep.target" yields the same result. Please see attached dmesg output.
Created attachment 302985 [details] Possible solution I glanced through the kernel code and it seems to me it's currently hardcoded to try to go into S3 instead of what the kernel is configured for (which may be s2idle). See if this patch helps.
@Mario Your patch works like a charm :-) v6.0.1 with your patch solves the problem. Hybrid System Suspend works like intended. v6.0.1 is still broken. Do you need anything else from me to submit the patch to master? (and maybe to stable branches)
I've submitted it as https://lore.kernel.org/linux-pm/20221013035017.5098-1-mario.limonciello@amd.com/T/#u .
Fixed in 6.1-rc3 and also will trickle into stable kernels. https://github.com/torvalds/linux/commit/85850af4fc47132f3f2f0dd698b90f67906600b4