Power Management Interface


The power management subsystem provides a unified sysfs interface to 
userspace, regardless of what architecture or platform one is
running. The interface exists in /sys/power/ directory (assuming sysfs
is mounted at /sys). 

/sys/power/state controls system power state. Reading from this file
returns what states are supported, which is hard-coded to 'standby'
(Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk'
(Suspend-to-Disk). 

Writing to this file one of those strings causes the system to
transition into that state. Please see the file
Documentation/power/states.txt for a description of each of those
states.


/sys/power/disk controls the operating mode of the suspend-to-disk
mechanism. Suspend-to-disk can be handled in several ways. We have a
few options for putting the system to sleep - using the platform driver
(e.g. ACPI or other suspend_ops), powering off the system or rebooting the
system (for testing).

Additionally, /sys/power/disk can be used to turn on one of the two testing
modes of the suspend-to-disk mechanism: 'testproc' or 'test'.  If the
suspend-to-disk mechanism is in the 'testproc' mode, writing 'disk' to
/sys/power/state will cause the kernel to disable nonboot CPUs and freeze
tasks, wait for 5 seconds, unfreeze tasks and enable nonboot CPUs.  If it is
in the 'test' mode, writing 'disk' to /sys/power/state will cause the kernel
to disable nonboot CPUs and freeze tasks, shrink memory, suspend devices, wait
for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs.  Then,
we are able to look in the log messages and work out, for example, which code
is being slow and which device drivers are misbehaving.

Reading from this file will display all supported modes and the currently
selected one in brackets, for example

	[shutdown] reboot test testproc

Writing to this file will accept one of

       'platform' (only if the platform supports it)
       'shutdown'
       'reboot'
       'testproc'
       'test'

/sys/power/image_size controls the size of the image created by
the suspend-to-disk mechanism.  It can be written a string
representing a non-negative integer that will be used as an upper
limit of the image size, in bytes.  The suspend-to-disk mechanism will
do its best to ensure the image size will not exceed that number.  However,
if this turns out to be impossible, it will try to suspend anyway using the
smallest image possible.  In particular, if "0" is written to this file, the
suspend image will be as small as possible.

Reading from this file will display the current image size limit, which
is set to 500 MB by default.

/sys/power/pm_trace controls the code which saves the last PM event point in
the RTC across reboots, so that you can debug a machine that just hangs
during suspend (or more commonly, during resume).  Namely, the RTC is only
used to save the last PM event point if this file contains '1'.  Initially it
contains '0' which may be changed to '1' by writing a string representing a
nonzero integer into it.

To use this debugging feature you should attempt to suspend the machine, then
reboot it and run

	dmesg -s 1000000 | grep 'hash matches'

CAUTION: Using it will cause your machine's real-time (CMOS) clock to be
set to a random invalid time after a resume.
