On Sat, Dec 12, 2020 at 2:22 AM Dexuan Cui <decui@xxxxxxxxxxxxx> wrote: > > Hi all, > It looks like Linux can hibernate even if the system does not support the ACPI > S4 state, as long as the system can shut down, so "cat /sys/power/state" > always contains "disk", unless we specify the kernel parameter "nohibernate" > or we use LOCKDOWN_HIBERNATION. > > In some scenarios IMO it can still be useful if the userspace is able to detect > if the ACPI S4 state is supported or not, e.g. when a Linux guest runs on > Hyper-V, Hyper-V uses the virtual ACPI S4 state as an indicator of the proper > support of the tool stack on the host, i.e. the guest is discouraged from > trying hibernation if the state is not supported. > > I know we can check the S4 state by 'dmesg': > > # dmesg |grep ACPI: | grep support > [ 3.034134] ACPI: (supports S0 S4 S5) > > But this method is unreliable because the kernel msg buffer can be filled > and overwritten. Is there any better method? If not, do you think if the > below patch is appropriate? Thanks! Sorry for the delay. If ACPI S4 is supported, /sys/power/disk will list "platform" as one of the options (and it will be the default one then). Otherwise, "platform" is not present in /sys/power/disk, because ACPI is the only user of hibernation_ops. HTH