Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Power Management Interface |
| 2 | |
| 3 | |
| 4 | The power management subsystem provides a unified sysfs interface to |
| 5 | userspace, regardless of what architecture or platform one is |
| 6 | running. The interface exists in /sys/power/ directory (assuming sysfs |
| 7 | is mounted at /sys). |
| 8 | |
| 9 | /sys/power/state controls system power state. Reading from this file |
| 10 | returns what states are supported, which is hard-coded to 'standby' |
| 11 | (Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk' |
| 12 | (Suspend-to-Disk). |
| 13 | |
| 14 | Writing to this file one of those strings causes the system to |
| 15 | transition into that state. Please see the file |
| 16 | Documentation/power/states.txt for a description of each of those |
| 17 | states. |
| 18 | |
| 19 | |
| 20 | /sys/power/disk controls the operating mode of the suspend-to-disk |
| 21 | mechanism. Suspend-to-disk can be handled in several ways. The |
| 22 | greatest distinction is who writes memory to disk - the firmware or |
| 23 | the kernel. If the firmware does it, we assume that it also handles |
| 24 | suspending the system. |
| 25 | |
| 26 | If the kernel does it, then we have three options for putting the system |
| 27 | to sleep - using the platform driver (e.g. ACPI or other PM |
| 28 | registers), powering off the system or rebooting the system (for |
| 29 | testing). The system will support either 'firmware' or 'platform', and |
| 30 | that is known a priori. But, the user may choose 'shutdown' or |
| 31 | 'reboot' as alternatives. |
| 32 | |
Rafael J. Wysocki | b918f6e | 2006-11-02 22:07:19 -0800 | [diff] [blame^] | 33 | Additionally, /sys/power/disk can be used to turn on one of the two testing |
| 34 | modes of the suspend-to-disk mechanism: 'testproc' or 'test'. If the |
| 35 | suspend-to-disk mechanism is in the 'testproc' mode, writing 'disk' to |
| 36 | /sys/power/state will cause the kernel to disable nonboot CPUs and freeze |
| 37 | tasks, wait for 5 seconds, unfreeze tasks and enable nonboot CPUs. If it is |
| 38 | in the 'test' mode, writing 'disk' to /sys/power/state will cause the kernel |
| 39 | to disable nonboot CPUs and freeze tasks, shrink memory, suspend devices, wait |
| 40 | for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs. Then, |
| 41 | we are able to look in the log messages and work out, for example, which code |
| 42 | is being slow and which device drivers are misbehaving. |
| 43 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 44 | Reading from this file will display what the mode is currently set |
| 45 | to. Writing to this file will accept one of |
| 46 | |
| 47 | 'firmware' |
| 48 | 'platform' |
| 49 | 'shutdown' |
| 50 | 'reboot' |
Rafael J. Wysocki | b918f6e | 2006-11-02 22:07:19 -0800 | [diff] [blame^] | 51 | 'testproc' |
| 52 | 'test' |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 53 | |
| 54 | It will only change to 'firmware' or 'platform' if the system supports |
| 55 | it. |
| 56 | |
Rafael J. Wysocki | ca0aec0 | 2006-01-06 00:15:56 -0800 | [diff] [blame] | 57 | /sys/power/image_size controls the size of the image created by |
| 58 | the suspend-to-disk mechanism. It can be written a string |
| 59 | representing a non-negative integer that will be used as an upper |
Rafael J. Wysocki | 853609b | 2006-02-01 03:05:07 -0800 | [diff] [blame] | 60 | limit of the image size, in bytes. The suspend-to-disk mechanism will |
Rafael J. Wysocki | ca0aec0 | 2006-01-06 00:15:56 -0800 | [diff] [blame] | 61 | do its best to ensure the image size will not exceed that number. However, |
| 62 | if this turns out to be impossible, it will try to suspend anyway using the |
| 63 | smallest image possible. In particular, if "0" is written to this file, the |
| 64 | suspend image will be as small as possible. |
| 65 | |
| 66 | Reading from this file will display the current image size limit, which |
| 67 | is set to 500 MB by default. |
Rafael J. Wysocki | c5c6ba4 | 2006-09-25 23:32:58 -0700 | [diff] [blame] | 68 | |
| 69 | /sys/power/pm_trace controls the code which saves the last PM event point in |
| 70 | the RTC across reboots, so that you can debug a machine that just hangs |
| 71 | during suspend (or more commonly, during resume). Namely, the RTC is only |
| 72 | used to save the last PM event point if this file contains '1'. Initially it |
| 73 | contains '0' which may be changed to '1' by writing a string representing a |
| 74 | nonzero integer into it. |
| 75 | |
| 76 | To use this debugging feature you should attempt to suspend the machine, then |
| 77 | reboot it and run |
| 78 | |
| 79 | dmesg -s 1000000 | grep 'hash matches' |
| 80 | |
| 81 | CAUTION: Using it will cause your machine's real-time (CMOS) clock to be |
| 82 | set to a random invalid time after a resume. |