Bug 216574 - Hybrid System Suspend broken HP EliteBook 845 G8 (a.k.a. Hybrid Sleep / s2both) (s2idle Notebook)
Summary: Hybrid System Suspend broken HP EliteBook 845 G8 (a.k.a. Hybrid Sleep / s2bot...
Status: RESOLVED CODE_FIX
Alias: None
Product: Drivers
Classification: Unclassified
Component: Platform_x86 (show other bugs)
Hardware: AMD Linux
: P1 normal
Assignee: drivers_platform_x86@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-10-13 01:11 UTC by kolAflash
Modified: 2022-10-31 12:42 UTC (History)
1 user (show)

See Also:
Kernel Version: 6.0
Subsystem:
Regression: No
Bisected commit-id:


Attachments
kernel log for hybrid sleep with s2idle: v6.0 (17.50 KB, text/plain)
2022-10-13 01:11 UTC, kolAflash
Details
Possible solution (1.04 KB, patch)
2022-10-13 02:01 UTC, Mario Limonciello (AMD)
Details | Diff

Description kolAflash 2022-10-13 01:11:50 UTC
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.
Comment 1 Mario Limonciello (AMD) 2022-10-13 02:01:52 UTC
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.
Comment 2 kolAflash 2022-10-13 03:01:06 UTC
@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)
Comment 3 Mario Limonciello (AMD) 2022-10-13 03:56:20 UTC
I've submitted it as https://lore.kernel.org/linux-pm/20221013035017.5098-1-mario.limonciello@amd.com/T/#u .
Comment 4 Mario Limonciello (AMD) 2022-10-31 12:42:26 UTC
Fixed in 6.1-rc3 and also will trickle into stable kernels.
https://github.com/torvalds/linux/commit/85850af4fc47132f3f2f0dd698b90f67906600b4

Note You need to log in before you can comment on or make changes to this bug.