Power Management Interface for System Sleep

Copyright (c) 2016 Intel Corp., Rafael J. Wysocki <rafael.j.wysocki@intel.com>

The power management subsystem provides userspace with a unified sysfs interface
for system sleep regardless of the underlying system architecture or platform.
The interface is located in the /sys/power/ directory (assuming that sysfs is
mounted at /sys).

/sys/power/state is the system sleep state control file.

Reading from it returns a list of supported sleep states, encoded as:

'freeze' (Suspend-to-Idle)
'standby' (Power-On Suspend)
'mem' (Suspend-to-RAM)
'disk' (Suspend-to-Disk)

Suspend-to-Idle is always supported.  Suspend-to-Disk is always supported
too as long the kernel has been configured to support hibernation at all
(ie. CONFIG_HIBERNATION is set in the kernel configuration file).  Support
for Suspend-to-RAM and Power-On Suspend depends on the capabilities of the
platform.

If one of the strings listed in /sys/power/state is written to it, the system
will attempt to transition into the corresponding sleep state.  Refer to
Documentation/power/states.txt for a description of each of those states.

/sys/power/disk controls the operating mode of hibernation (Suspend-to-Disk).
Specifically, it tells the kernel what to do after creating a hibernation image.

Reading from it returns a list of supported options encoded as:

'platform' (put the system into sleep using a platform-provided method)
'shutdown' (shut the system down)
'reboot' (reboot the system)
'suspend' (trigger a Suspend-to-RAM transition)
'test_resume' (resume-after-hibernation test mode)

The currently selected option is printed in square brackets.

The 'platform' option is only available if the platform provides a special
mechanism to put the system to sleep after creating a hibernation image (ACPI
does that, for example).  The 'suspend' option is available if Suspend-to-RAM
is supported.  Refer to Documentation/power/basic_pm_debugging.txt for the
description of the 'test_resume' option.

To select an option, write the string representing it to /sys/power/disk.

/sys/power/image_size controls the size of hibernation images.

It can be written a string representing a non-negative integer that will be
used as a best-effort upper limit of the image size, in bytes.  The hibernation
core will do its best to ensure that the image size will not exceed that number.
However, if that turns out to be impossible to achieve, a hibernation image will
still be created and its size will be as small as possible.  In particular,
writing '0' to this file will enforce hibernation images to be as small as
possible.

Reading from this file returns the current image size limit, which is set to
around 2/5 of available RAM by default.

/sys/power/pm_trace controls the PM trace mechanism saving the last suspend
or resume event point in the RTC across reboots.

It helps to debug hard lockups or reboots due to device driver failures that
occur during system suspend or resume (which is more common) more effectively.

If /sys/power/pm_trace contains '1', the fingerprint of each suspend/resume
event point in turn will be stored in the RTC memory (overwriting the actual
RTC information), so it will survive a system crash if one occurs right after
storing it and it can be used later to identify the driver that caused the crash
to happen (see Documentation/power/s2ram.txt for more information).

Initially it contains '0' which may be changed to '1' by writing a string
representing a nonzero integer into it.
