| What: /sys/power/ |
| Date: August 2006 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power directory will contain files that will |
| provide a unified interface to the power management |
| subsystem. |
| |
| What: /sys/power/state |
| Date: May 2014 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/state file controls system sleep states. |
| Reading from this file returns the available sleep state |
| labels, which may be "mem", "standby", "freeze" and "disk" |
| (hibernation). The meanings of the first three labels depend on |
| the relative_sleep_states command line argument as follows: |
| 1) relative_sleep_states = 1 |
| "mem", "standby", "freeze" represent non-hibernation sleep |
| states from the deepest ("mem", always present) to the |
| shallowest ("freeze"). "standby" and "freeze" may or may |
| not be present depending on the capabilities of the |
| platform. "freeze" can only be present if "standby" is |
| present. |
| 2) relative_sleep_states = 0 (default) |
| "mem" - "suspend-to-RAM", present if supported. |
| "standby" - "power-on suspend", present if supported. |
| "freeze" - "suspend-to-idle", always present. |
| |
| Writing to this file one of these strings causes the system to |
| transition into the corresponding state, if available. See |
| Documentation/power/states.txt for a description of what |
| "suspend-to-RAM", "power-on suspend" and "suspend-to-idle" mean. |
| |
| What: /sys/power/disk |
| Date: September 2006 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/disk file controls the operating mode of the |
| suspend-to-disk mechanism. Reading from this file returns |
| the name of the method by which the system will be put to |
| sleep on the next suspend. There are four methods supported: |
| 'firmware' - means that the memory image will be saved to disk |
| by some firmware, in which case we also assume that the |
| firmware will handle the system suspend. |
| 'platform' - the memory image will be saved by the kernel and |
| the system will be put to sleep by the platform driver (e.g. |
| ACPI or other PM registers). |
| 'shutdown' - the memory image will be saved by the kernel and |
| the system will be powered off. |
| 'reboot' - the memory image will be saved by the kernel and |
| the system will be rebooted. |
| |
| Additionally, /sys/power/disk can be used to turn on one of the |
| two testing modes of the suspend-to-disk mechanism: 'testproc' |
| or 'test'. If the suspend-to-disk mechanism is in the |
| 'testproc' mode, writing 'disk' to /sys/power/state will cause |
| the kernel to disable nonboot CPUs and freeze tasks, wait for 5 |
| seconds, unfreeze tasks and enable nonboot CPUs. If it is in |
| the 'test' mode, writing 'disk' to /sys/power/state will cause |
| the kernel to disable nonboot CPUs and freeze tasks, shrink |
| memory, suspend devices, wait for 5 seconds, resume devices, |
| unfreeze tasks and enable nonboot CPUs. Then, we are able to |
| look in the log messages and work out, for example, which code |
| is being slow and which device drivers are misbehaving. |
| |
| The suspend-to-disk method may be chosen by writing to this |
| file one of the accepted strings: |
| |
| 'firmware' |
| 'platform' |
| 'shutdown' |
| 'reboot' |
| 'testproc' |
| 'test' |
| |
| It will only change to 'firmware' or 'platform' if the system |
| supports that. |
| |
| What: /sys/power/image_size |
| Date: August 2006 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/image_size file controls the size of the image |
| created by the suspend-to-disk mechanism. It can be written a |
| string representing a non-negative integer that will be used |
| as an upper limit of the image size, in bytes. The kernel's |
| suspend-to-disk code will do its best to ensure the image size |
| will not exceed this number. However, if it turns out to be |
| impossible, the kernel will try to suspend anyway using the |
| smallest image possible. In particular, if "0" is written to |
| this file, the suspend image will be as small as possible. |
| |
| Reading from this file will display the current image size |
| limit, which is set to 500 MB by default. |
| |
| What: /sys/power/pm_trace |
| Date: August 2006 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/pm_trace file controls the code which saves the |
| last PM event point in the RTC across reboots, so that you can |
| debug a machine that just hangs during suspend (or more |
| commonly, during resume). Namely, the RTC is only used to save |
| the last PM event point if this file contains '1'. Initially |
| it contains '0' which may be changed to '1' by writing a |
| string representing a nonzero integer into it. |
| |
| To use this debugging feature you should attempt to suspend |
| the machine, then reboot it and run |
| |
| dmesg -s 1000000 | grep 'hash matches' |
| |
| If you do not get any matches (or they appear to be false |
| positives), it is possible that the last PM event point |
| referred to a device created by a loadable kernel module. In |
| this case cat /sys/power/pm_trace_dev_match (see below) after |
| your system is started up and the kernel modules are loaded. |
| |
| CAUTION: Using it will cause your machine's real-time (CMOS) |
| clock to be set to a random invalid time after a resume. |
| |
| What; /sys/power/pm_trace_dev_match |
| Date: October 2010 |
| Contact: James Hogan <james@albanarts.com> |
| Description: |
| The /sys/power/pm_trace_dev_match file contains the name of the |
| device associated with the last PM event point saved in the RTC |
| across reboots when pm_trace has been used. More precisely it |
| contains the list of current devices (including those |
| registered by loadable kernel modules since boot) which match |
| the device hash in the RTC at boot, with a newline after each |
| one. |
| |
| The advantage of this file over the hash matches printed to the |
| kernel log (see /sys/power/pm_trace), is that it includes |
| devices created after boot by loadable kernel modules. |
| |
| Due to the small hash size necessary to fit in the RTC, it is |
| possible that more than one device matches the hash, in which |
| case further investigation is required to determine which |
| device is causing the problem. Note that genuine RTC clock |
| values (such as when pm_trace has not been used), can still |
| match a device and output it's name here. |
| |
| What: /sys/power/pm_async |
| Date: January 2009 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/pm_async file controls the switch allowing the |
| user space to enable or disable asynchronous suspend and resume |
| of devices. If enabled, this feature will cause some device |
| drivers' suspend and resume callbacks to be executed in parallel |
| with each other and with the main suspend thread. It is enabled |
| if this file contains "1", which is the default. It may be |
| disabled by writing "0" to this file, in which case all devices |
| will be suspended and resumed synchronously. |
| |
| What: /sys/power/wakeup_count |
| Date: July 2010 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/wakeup_count file allows user space to put the |
| system into a sleep state while taking into account the |
| concurrent arrival of wakeup events. Reading from it returns |
| the current number of registered wakeup events and it blocks if |
| some wakeup events are being processed at the time the file is |
| read from. Writing to it will only succeed if the current |
| number of wakeup events is equal to the written value and, if |
| successful, will make the kernel abort a subsequent transition |
| to a sleep state if any wakeup events are reported after the |
| write has returned. |
| |
| What: /sys/power/reserved_size |
| Date: May 2011 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/reserved_size file allows user space to control |
| the amount of memory reserved for allocations made by device |
| drivers during the "device freeze" stage of hibernation. It can |
| be written a string representing a non-negative integer that |
| will be used as the amount of memory to reserve for allocations |
| made by device drivers' "freeze" callbacks, in bytes. |
| |
| Reading from this file will display the current value, which is |
| set to 1 MB by default. |
| |
| What: /sys/power/autosleep |
| Date: April 2012 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/autosleep file can be written one of the strings |
| returned by reads from /sys/power/state. If that happens, a |
| work item attempting to trigger a transition of the system to |
| the sleep state represented by that string is queued up. This |
| attempt will only succeed if there are no active wakeup sources |
| in the system at that time. After every execution, regardless |
| of whether or not the attempt to put the system to sleep has |
| succeeded, the work item requeues itself until user space |
| writes "off" to /sys/power/autosleep. |
| |
| Reading from this file causes the last string successfully |
| written to it to be returned. |
| |
| What: /sys/power/wake_lock |
| Date: February 2012 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/wake_lock file allows user space to create |
| wakeup source objects and activate them on demand (if one of |
| those wakeup sources is active, reads from the |
| /sys/power/wakeup_count file block or return false). When a |
| string without white space is written to /sys/power/wake_lock, |
| it will be assumed to represent a wakeup source name. If there |
| is a wakeup source object with that name, it will be activated |
| (unless active already). Otherwise, a new wakeup source object |
| will be registered, assigned the given name and activated. |
| If a string written to /sys/power/wake_lock contains white |
| space, the part of the string preceding the white space will be |
| regarded as a wakeup source name and handled as descrived above. |
| The other part of the string will be regarded as a timeout (in |
| nanoseconds) such that the wakeup source will be automatically |
| deactivated after it has expired. The timeout, if present, is |
| set regardless of the current state of the wakeup source object |
| in question. |
| |
| Reads from this file return a string consisting of the names of |
| wakeup sources created with the help of it that are active at |
| the moment, separated with spaces. |
| |
| |
| What: /sys/power/wake_unlock |
| Date: February 2012 |
| Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
| Description: |
| The /sys/power/wake_unlock file allows user space to deactivate |
| wakeup sources created with the help of /sys/power/wake_lock. |
| When a string is written to /sys/power/wake_unlock, it will be |
| assumed to represent the name of a wakeup source to deactivate. |
| If a wakeup source object of that name exists and is active at |
| the moment, it will be deactivated. |
| |
| Reads from this file return a string consisting of the names of |
| wakeup sources created with the help of /sys/power/wake_lock |
| that are inactive at the moment, separated with spaces. |
| |
| What: /sys/power/pm_print_times |
| Date: May 2012 |
| Contact: Sameer Nanda <snanda@chromium.org> |
| Description: |
| The /sys/power/pm_print_times file allows user space to |
| control whether the time taken by devices to suspend and |
| resume is printed. These prints are useful for hunting down |
| devices that take too long to suspend or resume. |
| |
| Writing a "1" enables this printing while writing a "0" |
| disables it. The default value is "0". Reading from this file |
| will display the current value. |
| |
| What: /sys/power/pm_wakeup_irq |
| Date: April 2015 |
| Contact: Alexandra Yates <alexandra.yates@linux.intel.org> |
| Description: |
| The /sys/power/pm_wakeup_irq file reports to user space the IRQ |
| number of the first wakeup interrupt (that is, the first |
| interrupt from an IRQ line armed for system wakeup) seen by the |
| kernel during the most recent system suspend/resume cycle. |
| |
| This output is useful for system wakeup diagnostics of spurious |
| wakeup interrupts. |