| Rafael J. Wysocki | 84ed64e | 2006-08-30 23:38:06 +0200 | [diff] [blame] | 1 | What:		/sys/power/ | 
|  | 2 | Date:		August 2006 | 
|  | 3 | Contact:	Rafael J. Wysocki <rjw@sisk.pl> | 
|  | 4 | Description: | 
|  | 5 | The /sys/power directory will contain files that will | 
|  | 6 | provide a unified interface to the power management | 
|  | 7 | subsystem. | 
|  | 8 |  | 
|  | 9 | What:		/sys/power/state | 
|  | 10 | Date:		August 2006 | 
|  | 11 | Contact:	Rafael J. Wysocki <rjw@sisk.pl> | 
|  | 12 | Description: | 
|  | 13 | The /sys/power/state file controls the system power state. | 
|  | 14 | Reading from this file returns what states are supported, | 
|  | 15 | which is hard-coded to 'standby' (Power-On Suspend), 'mem' | 
|  | 16 | (Suspend-to-RAM), and 'disk' (Suspend-to-Disk). | 
|  | 17 |  | 
|  | 18 | Writing to this file one of these strings causes the system to | 
|  | 19 | transition into that state. Please see the file | 
|  | 20 | Documentation/power/states.txt for a description of each of | 
|  | 21 | these states. | 
|  | 22 |  | 
|  | 23 | What:		/sys/power/disk | 
| Rafael J. Wysocki | b918f6e | 2006-11-02 22:07:19 -0800 | [diff] [blame] | 24 | Date:		September 2006 | 
| Rafael J. Wysocki | 84ed64e | 2006-08-30 23:38:06 +0200 | [diff] [blame] | 25 | Contact:	Rafael J. Wysocki <rjw@sisk.pl> | 
|  | 26 | Description: | 
|  | 27 | The /sys/power/disk file controls the operating mode of the | 
|  | 28 | suspend-to-disk mechanism.  Reading from this file returns | 
|  | 29 | the name of the method by which the system will be put to | 
|  | 30 | sleep on the next suspend.  There are four methods supported: | 
|  | 31 | 'firmware' - means that the memory image will be saved to disk | 
|  | 32 | by some firmware, in which case we also assume that the | 
|  | 33 | firmware will handle the system suspend. | 
|  | 34 | 'platform' - the memory image will be saved by the kernel and | 
|  | 35 | the system will be put to sleep by the platform driver (e.g. | 
|  | 36 | ACPI or other PM registers). | 
|  | 37 | 'shutdown' - the memory image will be saved by the kernel and | 
|  | 38 | the system will be powered off. | 
|  | 39 | 'reboot' - the memory image will be saved by the kernel and | 
|  | 40 | the system will be rebooted. | 
|  | 41 |  | 
| Rafael J. Wysocki | b918f6e | 2006-11-02 22:07:19 -0800 | [diff] [blame] | 42 | Additionally, /sys/power/disk can be used to turn on one of the | 
|  | 43 | two testing modes of the suspend-to-disk mechanism: 'testproc' | 
|  | 44 | or 'test'.  If the suspend-to-disk mechanism is in the | 
|  | 45 | 'testproc' mode, writing 'disk' to /sys/power/state will cause | 
|  | 46 | the kernel to disable nonboot CPUs and freeze tasks, wait for 5 | 
|  | 47 | seconds, unfreeze tasks and enable nonboot CPUs.  If it is in | 
|  | 48 | the 'test' mode, writing 'disk' to /sys/power/state will cause | 
|  | 49 | the kernel to disable nonboot CPUs and freeze tasks, shrink | 
|  | 50 | memory, suspend devices, wait for 5 seconds, resume devices, | 
|  | 51 | unfreeze tasks and enable nonboot CPUs.  Then, we are able to | 
|  | 52 | look in the log messages and work out, for example, which code | 
|  | 53 | is being slow and which device drivers are misbehaving. | 
|  | 54 |  | 
| Rafael J. Wysocki | 84ed64e | 2006-08-30 23:38:06 +0200 | [diff] [blame] | 55 | The suspend-to-disk method may be chosen by writing to this | 
|  | 56 | file one of the accepted strings: | 
|  | 57 |  | 
|  | 58 | 'firmware' | 
|  | 59 | 'platform' | 
|  | 60 | 'shutdown' | 
|  | 61 | 'reboot' | 
| Rafael J. Wysocki | b918f6e | 2006-11-02 22:07:19 -0800 | [diff] [blame] | 62 | 'testproc' | 
|  | 63 | 'test' | 
| Rafael J. Wysocki | 84ed64e | 2006-08-30 23:38:06 +0200 | [diff] [blame] | 64 |  | 
|  | 65 | It will only change to 'firmware' or 'platform' if the system | 
|  | 66 | supports that. | 
|  | 67 |  | 
|  | 68 | What:		/sys/power/image_size | 
|  | 69 | Date:		August 2006 | 
|  | 70 | Contact:	Rafael J. Wysocki <rjw@sisk.pl> | 
|  | 71 | Description: | 
|  | 72 | The /sys/power/image_size file controls the size of the image | 
|  | 73 | created by the suspend-to-disk mechanism.  It can be written a | 
|  | 74 | string representing a non-negative integer that will be used | 
|  | 75 | as an upper limit of the image size, in bytes.  The kernel's | 
|  | 76 | suspend-to-disk code will do its best to ensure the image size | 
|  | 77 | will not exceed this number.  However, if it turns out to be | 
|  | 78 | impossible, the kernel will try to suspend anyway using the | 
|  | 79 | smallest image possible.  In particular, if "0" is written to | 
|  | 80 | this file, the suspend image will be as small as possible. | 
|  | 81 |  | 
|  | 82 | Reading from this file will display the current image size | 
|  | 83 | limit, which is set to 500 MB by default. | 
|  | 84 |  | 
|  | 85 | What:		/sys/power/pm_trace | 
|  | 86 | Date:		August 2006 | 
|  | 87 | Contact:	Rafael J. Wysocki <rjw@sisk.pl> | 
|  | 88 | Description: | 
|  | 89 | The /sys/power/pm_trace file controls the code which saves the | 
|  | 90 | last PM event point in the RTC across reboots, so that you can | 
|  | 91 | debug a machine that just hangs during suspend (or more | 
|  | 92 | commonly, during resume).  Namely, the RTC is only used to save | 
|  | 93 | the last PM event point if this file contains '1'.  Initially | 
|  | 94 | it contains '0' which may be changed to '1' by writing a | 
|  | 95 | string representing a nonzero integer into it. | 
|  | 96 |  | 
|  | 97 | To use this debugging feature you should attempt to suspend | 
|  | 98 | the machine, then reboot it and run | 
|  | 99 |  | 
|  | 100 | dmesg -s 1000000 | grep 'hash matches' | 
|  | 101 |  | 
| James Hogan | d33ac60 | 2010-10-12 00:00:25 +0200 | [diff] [blame] | 102 | If you do not get any matches (or they appear to be false | 
|  | 103 | positives), it is possible that the last PM event point | 
|  | 104 | referred to a device created by a loadable kernel module.  In | 
|  | 105 | this case cat /sys/power/pm_trace_dev_match (see below) after | 
|  | 106 | your system is started up and the kernel modules are loaded. | 
|  | 107 |  | 
| Rafael J. Wysocki | 84ed64e | 2006-08-30 23:38:06 +0200 | [diff] [blame] | 108 | CAUTION: Using it will cause your machine's real-time (CMOS) | 
|  | 109 | clock to be set to a random invalid time after a resume. | 
| Rafael J. Wysocki | 0e06b4a | 2010-01-23 22:25:15 +0100 | [diff] [blame] | 110 |  | 
| James Hogan | d33ac60 | 2010-10-12 00:00:25 +0200 | [diff] [blame] | 111 | What;		/sys/power/pm_trace_dev_match | 
|  | 112 | Date:		October 2010 | 
|  | 113 | Contact:	James Hogan <james@albanarts.com> | 
|  | 114 | Description: | 
|  | 115 | The /sys/power/pm_trace_dev_match file contains the name of the | 
|  | 116 | device associated with the last PM event point saved in the RTC | 
|  | 117 | across reboots when pm_trace has been used.  More precisely it | 
|  | 118 | contains the list of current devices (including those | 
|  | 119 | registered by loadable kernel modules since boot) which match | 
|  | 120 | the device hash in the RTC at boot, with a newline after each | 
|  | 121 | one. | 
|  | 122 |  | 
|  | 123 | The advantage of this file over the hash matches printed to the | 
|  | 124 | kernel log (see /sys/power/pm_trace), is that it includes | 
|  | 125 | devices created after boot by loadable kernel modules. | 
|  | 126 |  | 
|  | 127 | Due to the small hash size necessary to fit in the RTC, it is | 
|  | 128 | possible that more than one device matches the hash, in which | 
|  | 129 | case further investigation is required to determine which | 
|  | 130 | device is causing the problem.  Note that genuine RTC clock | 
|  | 131 | values (such as when pm_trace has not been used), can still | 
|  | 132 | match a device and output it's name here. | 
|  | 133 |  | 
| Rafael J. Wysocki | 0e06b4a | 2010-01-23 22:25:15 +0100 | [diff] [blame] | 134 | What:		/sys/power/pm_async | 
|  | 135 | Date:		January 2009 | 
|  | 136 | Contact:	Rafael J. Wysocki <rjw@sisk.pl> | 
|  | 137 | Description: | 
|  | 138 | The /sys/power/pm_async file controls the switch allowing the | 
|  | 139 | user space to enable or disable asynchronous suspend and resume | 
|  | 140 | of devices.  If enabled, this feature will cause some device | 
|  | 141 | drivers' suspend and resume callbacks to be executed in parallel | 
|  | 142 | with each other and with the main suspend thread.  It is enabled | 
|  | 143 | if this file contains "1", which is the default.  It may be | 
|  | 144 | disabled by writing "0" to this file, in which case all devices | 
|  | 145 | will be suspended and resumed synchronously. | 
| Rafael J. Wysocki | c125e96 | 2010-07-05 22:43:53 +0200 | [diff] [blame] | 146 |  | 
|  | 147 | What:		/sys/power/wakeup_count | 
|  | 148 | Date:		July 2010 | 
|  | 149 | Contact:	Rafael J. Wysocki <rjw@sisk.pl> | 
|  | 150 | Description: | 
|  | 151 | The /sys/power/wakeup_count file allows user space to put the | 
|  | 152 | system into a sleep state while taking into account the | 
|  | 153 | concurrent arrival of wakeup events.  Reading from it returns | 
|  | 154 | the current number of registered wakeup events and it blocks if | 
|  | 155 | some wakeup events are being processed at the time the file is | 
|  | 156 | read from.  Writing to it will only succeed if the current | 
|  | 157 | number of wakeup events is equal to the written value and, if | 
|  | 158 | successful, will make the kernel abort a subsequent transition | 
|  | 159 | to a sleep state if any wakeup events are reported after the | 
|  | 160 | write has returned. | 
| Rafael J. Wysocki | ddeb648 | 2011-05-15 11:38:48 +0200 | [diff] [blame] | 161 |  | 
|  | 162 | What:		/sys/power/reserved_size | 
|  | 163 | Date:		May 2011 | 
|  | 164 | Contact:	Rafael J. Wysocki <rjw@sisk.pl> | 
|  | 165 | Description: | 
|  | 166 | The /sys/power/reserved_size file allows user space to control | 
|  | 167 | the amount of memory reserved for allocations made by device | 
|  | 168 | drivers during the "device freeze" stage of hibernation.  It can | 
|  | 169 | be written a string representing a non-negative integer that | 
|  | 170 | will be used as the amount of memory to reserve for allocations | 
|  | 171 | made by device drivers' "freeze" callbacks, in bytes. | 
|  | 172 |  | 
|  | 173 | Reading from this file will display the current value, which is | 
|  | 174 | set to 1 MB by default. |