First, I should start with the obligatory LTT Modern Standby video:
Essentially, S0ix (also called Modern Standby) has been available for a while now.
The quick rundown of the history is that previously the most common sleep mode was sleep-to-ram (S3), but Intel had decided that it wanted to make laptops more like phones, and now we have Modern Standby (S0ix).
The thing is, S3 sleep relies mostly on the firmware to work and saves a lot of power, while S0ix relies mostly on the OS with slightly more power usage than S3 (that is, assuming the OS can put everything in a low power state).
If you watched the LTT video above you might now know that even Microsoft has been having issues with proper S0ix support (in their case, devices enter s0ix successfully but may wake up and not enter sleep again, therefore draining battery). And if Microsoft is having issue on Windows, you can bet Linux support is even worse (possible crashes or not putting every device on low power mode, so battery drain).
If your system is on S0ix mode, you should have this:
$ cat /sys/power/mem_sleep [s2idle] deep
As well as a message such as this on logs:
kernel: Low-power S0 idle used by default for system suspend
To force S3 sleep if supported on your machine (i.e. if
deep showed in the command above), just add
mem_sleep_default=deep to the kernel parameters.
Intel has a blog post on how to achieve proper S0ix:
And an accompanying tool to help debug:
I believe, since the kernel will automatically enable S0ix if it finds support in the ACPI table, that Fedora should work to either support it better, disable it by default unless it’s the only option or instruct users on how to disable manually.
I am willing to write docs and even a Magazine post about the third option.