| 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. |