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