blob: f1f0f59a7c47d594a9753207d713d0834a0e99b1 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001Power Management Interface
2
3
4The power management subsystem provides a unified sysfs interface to
5userspace, regardless of what architecture or platform one is
6running. The interface exists in /sys/power/ directory (assuming sysfs
7is mounted at /sys).
8
9/sys/power/state controls system power state. Reading from this file
Zhang Ruidc5aeae2013-05-13 02:42:11 +000010returns what states are supported, which is hard-coded to 'freeze',
11'standby' (Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk'
Linus Torvalds1da177e2005-04-16 15:20:36 -070012(Suspend-to-Disk).
13
14Writing to this file one of those strings causes the system to
15transition into that state. Please see the file
16Documentation/power/states.txt for a description of each of those
17states.
18
19
20/sys/power/disk controls the operating mode of the suspend-to-disk
Johannes Berg11d77d02007-04-30 15:09:53 -070021mechanism. Suspend-to-disk can be handled in several ways. We have a
22few options for putting the system to sleep - using the platform driver
Rafael J. Wysocki26398a72007-10-18 03:04:40 -070023(e.g. ACPI or other suspend_ops), powering off the system or rebooting the
Johannes Berg11d77d02007-04-30 15:09:53 -070024system (for testing).
Linus Torvalds1da177e2005-04-16 15:20:36 -070025
Rafael J. Wysockib918f6e2006-11-02 22:07:19 -080026Additionally, /sys/power/disk can be used to turn on one of the two testing
27modes of the suspend-to-disk mechanism: 'testproc' or 'test'. If the
28suspend-to-disk mechanism is in the 'testproc' mode, writing 'disk' to
29/sys/power/state will cause the kernel to disable nonboot CPUs and freeze
30tasks, wait for 5 seconds, unfreeze tasks and enable nonboot CPUs. If it is
31in the 'test' mode, writing 'disk' to /sys/power/state will cause the kernel
32to disable nonboot CPUs and freeze tasks, shrink memory, suspend devices, wait
33for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs. Then,
34we are able to look in the log messages and work out, for example, which code
35is being slow and which device drivers are misbehaving.
36
Johannes Bergf0ced9b2007-05-06 14:50:50 -070037Reading from this file will display all supported modes and the currently
38selected one in brackets, for example
39
40 [shutdown] reboot test testproc
41
42Writing to this file will accept one of
Linus Torvalds1da177e2005-04-16 15:20:36 -070043
Johannes Berg11d77d02007-04-30 15:09:53 -070044 'platform' (only if the platform supports it)
Linus Torvalds1da177e2005-04-16 15:20:36 -070045 'shutdown'
46 'reboot'
Rafael J. Wysockib918f6e2006-11-02 22:07:19 -080047 'testproc'
48 'test'
Linus Torvalds1da177e2005-04-16 15:20:36 -070049
Rafael J. Wysockica0aec02006-01-06 00:15:56 -080050/sys/power/image_size controls the size of the image created by
51the suspend-to-disk mechanism. It can be written a string
52representing a non-negative integer that will be used as an upper
Rafael J. Wysocki853609b2006-02-01 03:05:07 -080053limit of the image size, in bytes. The suspend-to-disk mechanism will
Rafael J. Wysockica0aec02006-01-06 00:15:56 -080054do its best to ensure the image size will not exceed that number. However,
55if this turns out to be impossible, it will try to suspend anyway using the
56smallest image possible. In particular, if "0" is written to this file, the
57suspend image will be as small as possible.
58
59Reading from this file will display the current image size limit, which
Rafael J. Wysockiac5c24ec2010-09-20 19:44:56 +020060is set to 2/5 of available RAM by default.
Rafael J. Wysockic5c6ba42006-09-25 23:32:58 -070061
62/sys/power/pm_trace controls the code which saves the last PM event point in
63the RTC across reboots, so that you can debug a machine that just hangs
64during suspend (or more commonly, during resume). Namely, the RTC is only
65used to save the last PM event point if this file contains '1'. Initially it
66contains '0' which may be changed to '1' by writing a string representing a
67nonzero integer into it.
68
69To use this debugging feature you should attempt to suspend the machine, then
70reboot it and run
71
72 dmesg -s 1000000 | grep 'hash matches'
73
74CAUTION: Using it will cause your machine's real-time (CMOS) clock to be
75set to a random invalid time after a resume.