![Rafael J. Wysocki](/assets/img/avatar_default.png)
Add a swsusp debugging mode. This does everything that's needed for a suspend except for actually suspending. So we can look in the log messages and work out a) what code is being slow and b) which drivers are misbehaving. (1) # echo testproc > /sys/power/disk # echo disk > /sys/power/state This should turn off the non-boot CPU, freeze all processes, wait for 5 seconds and then thaw the processes and the CPU. (2) # echo test > /sys/power/disk # echo disk > /sys/power/state This should turn off the non-boot CPU, freeze all processes, shrink memory, suspend all devices, wait for 5 seconds, resume the devices etc. Cc: Pavel Machek <pavel@ucw.cz> Cc: Stefan Seyfried <seife@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
104 lines
4.1 KiB
Text
104 lines
4.1 KiB
Text
What: /sys/power/
|
|
Date: August 2006
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/power directory will contain files that will
|
|
provide a unified interface to the power management
|
|
subsystem.
|
|
|
|
What: /sys/power/state
|
|
Date: August 2006
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/power/state file controls the system power state.
|
|
Reading from this file returns what states are supported,
|
|
which is hard-coded to 'standby' (Power-On Suspend), 'mem'
|
|
(Suspend-to-RAM), and 'disk' (Suspend-to-Disk).
|
|
|
|
Writing to this file one of these strings causes the system to
|
|
transition into that state. Please see the file
|
|
Documentation/power/states.txt for a description of each of
|
|
these states.
|
|
|
|
What: /sys/power/disk
|
|
Date: September 2006
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
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@sisk.pl>
|
|
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@sisk.pl>
|
|
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'
|
|
|
|
CAUTION: Using it will cause your machine's real-time (CMOS)
|
|
clock to be set to a random invalid time after a resume.
|