diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-08-12 20:54:04 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-08-12 20:54:04 -0400 |
commit | 947d2c2cd3340d11a1737d3f4781170cc3a4b74f (patch) | |
tree | a0a21bb89fad010a7fba3c0e99da85a117a4d1ef /Documentation/power/interface.txt | |
parent | 62822e2ec4ad091ba31f823f577ef80db52e3c2c (diff) |
PM / sleep: Update some system sleep documentation
Update some documentation related to system sleep to document new
features and remove outdated information from it.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Reviewed-by: Chen Yu <yu.c.chen@intel.com>
Diffstat (limited to 'Documentation/power/interface.txt')
-rw-r--r-- | Documentation/power/interface.txt | 151 |
1 files changed, 76 insertions, 75 deletions
diff --git a/Documentation/power/interface.txt b/Documentation/power/interface.txt index f1f0f59a7c47..974916ff6608 100644 --- a/Documentation/power/interface.txt +++ b/Documentation/power/interface.txt | |||
@@ -1,75 +1,76 @@ | |||
1 | Power Management Interface | 1 | Power Management Interface for System Sleep |
2 | 2 | ||
3 | 3 | Copyright (c) 2016 Intel Corp., Rafael J. Wysocki <rafael.j.wysocki@intel.com> | |
4 | The power management subsystem provides a unified sysfs interface to | 4 | |
5 | userspace, regardless of what architecture or platform one is | 5 | The power management subsystem provides userspace with a unified sysfs interface |
6 | running. The interface exists in /sys/power/ directory (assuming sysfs | 6 | for system sleep regardless of the underlying system architecture or platform. |
7 | is mounted at /sys). | 7 | The interface is located in the /sys/power/ directory (assuming that sysfs is |
8 | 8 | mounted at /sys). | |
9 | /sys/power/state controls system power state. Reading from this file | 9 | |
10 | returns what states are supported, which is hard-coded to 'freeze', | 10 | /sys/power/state is the system sleep state control file. |
11 | 'standby' (Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk' | 11 | |
12 | (Suspend-to-Disk). | 12 | Reading from it returns a list of supported sleep states, encoded as: |
13 | 13 | ||
14 | Writing to this file one of those strings causes the system to | 14 | 'freeze' (Suspend-to-Idle) |
15 | transition into that state. Please see the file | 15 | 'standby' (Power-On Suspend) |
16 | Documentation/power/states.txt for a description of each of those | 16 | 'mem' (Suspend-to-RAM) |
17 | states. | 17 | 'disk' (Suspend-to-Disk) |
18 | 18 | ||
19 | 19 | Suspend-to-Idle is always supported. Suspend-to-Disk is always supported | |
20 | /sys/power/disk controls the operating mode of the suspend-to-disk | 20 | too as long the kernel has been configured to support hibernation at all |
21 | mechanism. Suspend-to-disk can be handled in several ways. We have a | 21 | (ie. CONFIG_HIBERNATION is set in the kernel configuration file). Support |
22 | few options for putting the system to sleep - using the platform driver | 22 | for Suspend-to-RAM and Power-On Suspend depends on the capabilities of the |
23 | (e.g. ACPI or other suspend_ops), powering off the system or rebooting the | 23 | platform. |
24 | system (for testing). | 24 | |
25 | 25 | If one of the strings listed in /sys/power/state is written to it, the system | |
26 | Additionally, /sys/power/disk can be used to turn on one of the two testing | 26 | will attempt to transition into the corresponding sleep state. Refer to |
27 | modes of the suspend-to-disk mechanism: 'testproc' or 'test'. If the | 27 | Documentation/power/states.txt for a description of each of those states. |
28 | suspend-to-disk mechanism is in the 'testproc' mode, writing 'disk' to | 28 | |
29 | /sys/power/state will cause the kernel to disable nonboot CPUs and freeze | 29 | /sys/power/disk controls the operating mode of hibernation (Suspend-to-Disk). |
30 | tasks, wait for 5 seconds, unfreeze tasks and enable nonboot CPUs. If it is | 30 | Specifically, it tells the kernel what to do after creating a hibernation image. |
31 | in the 'test' mode, writing 'disk' to /sys/power/state will cause the kernel | 31 | |
32 | to disable nonboot CPUs and freeze tasks, shrink memory, suspend devices, wait | 32 | Reading from it returns a list of supported options encoded as: |
33 | for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs. Then, | 33 | |
34 | we are able to look in the log messages and work out, for example, which code | 34 | 'platform' (put the system into sleep using a platform-provided method) |
35 | is being slow and which device drivers are misbehaving. | 35 | 'shutdown' (shut the system down) |
36 | 36 | 'reboot' (reboot the system) | |
37 | Reading from this file will display all supported modes and the currently | 37 | 'suspend' (trigger a Suspend-to-RAM transition) |
38 | selected one in brackets, for example | 38 | 'test_resume' (resume-after-hibernation test mode) |
39 | 39 | ||
40 | [shutdown] reboot test testproc | 40 | The currently selected option is printed in square brackets. |
41 | 41 | ||
42 | Writing to this file will accept one of | 42 | The 'platform' option is only available if the platform provides a special |
43 | 43 | mechanism to put the system to sleep after creating a hibernation image (ACPI | |
44 | 'platform' (only if the platform supports it) | 44 | does that, for example). The 'suspend' option is available if Suspend-to-RAM |
45 | 'shutdown' | 45 | is supported. Refer to Documentation/power/basic_pm_debugging.txt for the |
46 | 'reboot' | 46 | description of the 'test_resume' option. |
47 | 'testproc' | 47 | |
48 | 'test' | 48 | To select an option, write the string representing it to /sys/power/disk. |
49 | 49 | ||
50 | /sys/power/image_size controls the size of the image created by | 50 | /sys/power/image_size controls the size of hibernation images. |
51 | the suspend-to-disk mechanism. It can be written a string | 51 | |
52 | representing a non-negative integer that will be used as an upper | 52 | It can be written a string representing a non-negative integer that will be |
53 | limit of the image size, in bytes. The suspend-to-disk mechanism will | 53 | used as a best-effort upper limit of the image size, in bytes. The hibernation |
54 | do its best to ensure the image size will not exceed that number. However, | 54 | core will do its best to ensure that the image size will not exceed that number. |
55 | if this turns out to be impossible, it will try to suspend anyway using the | 55 | However, if that turns out to be impossible to achieve, a hibernation image will |
56 | smallest image possible. In particular, if "0" is written to this file, the | 56 | still be created and its size will be as small as possible. In particular, |
57 | suspend image will be as small as possible. | 57 | writing '0' to this file will enforce hibernation images to be as small as |
58 | 58 | possible. | |
59 | Reading from this file will display the current image size limit, which | 59 | |
60 | is set to 2/5 of available RAM by default. | 60 | Reading from this file returns the current image size limit, which is set to |
61 | 61 | around 2/5 of available RAM by default. | |
62 | /sys/power/pm_trace controls the code which saves the last PM event point in | 62 | |
63 | the RTC across reboots, so that you can debug a machine that just hangs | 63 | /sys/power/pm_trace controls the PM trace mechanism saving the last suspend |
64 | during suspend (or more commonly, during resume). Namely, the RTC is only | 64 | or resume event point in the RTC across reboots. |
65 | used to save the last PM event point if this file contains '1'. Initially it | 65 | |
66 | contains '0' which may be changed to '1' by writing a string representing a | 66 | It helps to debug hard lockups or reboots due to device driver failures that |
67 | nonzero integer into it. | 67 | occur during system suspend or resume (which is more common) more effectively. |
68 | 68 | ||
69 | To use this debugging feature you should attempt to suspend the machine, then | 69 | If /sys/power/pm_trace contains '1', the fingerprint of each suspend/resume |
70 | reboot it and run | 70 | event point in turn will be stored in the RTC memory (overwriting the actual |
71 | 71 | RTC information), so it will survive a system crash if one occurs right after | |
72 | dmesg -s 1000000 | grep 'hash matches' | 72 | storing it and it can be used later to identify the driver that caused the crash |
73 | 73 | to happen (see Documentation/power/s2ram.txt for more information). | |
74 | CAUTION: Using it will cause your machine's real-time (CMOS) clock to be | 74 | |
75 | set to a random invalid time after a resume. | 75 | Initially it contains '0' which may be changed to '1' by writing a string |
76 | representing a nonzero integer into it. | ||