The suspend-to-idle could be a pure software construct. It works (at least in theory) even without any suspend_ops
. See comments in the pm_states_init()
. But it could also utilize capabilities of platform firmware (the so-called "BIOS") for better power efficient. For example, on some platform the suspend-to-idle utilizes the S0ix ACPI state, sometimes called "modern standby" for better marketing. In this case, the suspend-to-idle is not a purely software construct, but rather rely on the platform firmware for certain degree. One good example is the s0ix-selftest-tool.sh
provided in the S0ixSelftestTool
by Intel. This is a tool to see if suspend-to-idle could utilize the S0ix states on Intel processors properly. The very first thing it does it dump the ACPI tables and see if S0ix is supported. So some platform support is almosted required in this case.
For further description, see Power management/Suspend and hibernate on Arch Wiki. Also the HOW TO ACHIEVE S0IX STATES IN LINUX on once live-kicking 01.org, but now only exists on the web.archive.org.
Also read the Suspend to Idle from Linaro.
Note that this talk mainly focused on x86 architectures.
There are 2 version of suspension mentioned in the talk:
The former one is the s2idle
; the later one is suspend-to-ram.
Learn More →