|  | 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. |