aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2008-02-23 13:13:25 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-23 13:40:04 -0500
commit3a2d5b700132f35401f1d9e22fe3c2cab02c2549 (patch)
treead991428c41aee92a5f78b06bf73430af0e6f7ae /Documentation
parent39273b58a409cd6d65c9732bdca00bacd1626672 (diff)
PM: Introduce PM_EVENT_HIBERNATE callback state
During the last step of hibernation in the "platform" mode (with the help of ACPI) we use the suspend code, including the devices' ->suspend() methods, to prepare the system for entering the ACPI S4 system sleep state. But at least for some devices the operations performed by the ->suspend() callback in that case must be different from its operations during regular suspend. For this reason, introduce the new PM event type PM_EVENT_HIBERNATE and pass it to the device drivers' ->suspend() methods during the last phase of hibernation, so that they can distinguish this case and handle it as appropriate. Modify the drivers that handle PM_EVENT_SUSPEND in a special way and need to handle PM_EVENT_HIBERNATE in the same way. These changes are necessary to fix a hibernation regression related to the i915 driver (ref. http://lkml.org/lkml/2008/2/22/488). Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Pavel Machek <pavel@ucw.cz> Tested-by: Jeff Chua <jeff.chua.linux@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/power/devices.txt13
1 files changed, 8 insertions, 5 deletions
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt
index c53d26361919..461e4f1dbec4 100644
--- a/Documentation/power/devices.txt
+++ b/Documentation/power/devices.txt
@@ -310,9 +310,12 @@ used with suspend-to-disk:
310 PM_EVENT_SUSPEND -- quiesce the driver and put hardware into a low-power 310 PM_EVENT_SUSPEND -- quiesce the driver and put hardware into a low-power
311 state. When used with system sleep states like "suspend-to-RAM" or 311 state. When used with system sleep states like "suspend-to-RAM" or
312 "standby", the upcoming resume() call will often be able to rely on 312 "standby", the upcoming resume() call will often be able to rely on
313 state kept in hardware, or issue system wakeup events. When used 313 state kept in hardware, or issue system wakeup events.
314 instead with suspend-to-disk, few devices support this capability; 314
315 most are completely powered off. 315 PM_EVENT_HIBERNATE -- Put hardware into a low-power state and enable wakeup
316 events as appropriate. It is only used with hibernation
317 (suspend-to-disk) and few devices are able to wake up the system from
318 this state; most are completely powered off.
316 319
317 PM_EVENT_FREEZE -- quiesce the driver, but don't necessarily change into 320 PM_EVENT_FREEZE -- quiesce the driver, but don't necessarily change into
318 any low power mode. A system snapshot is about to be taken, often 321 any low power mode. A system snapshot is about to be taken, often
@@ -329,8 +332,8 @@ used with suspend-to-disk:
329 wakeup events nor DMA are allowed. 332 wakeup events nor DMA are allowed.
330 333
331To enter "standby" (ACPI S1) or "Suspend to RAM" (STR, ACPI S3) states, or 334To enter "standby" (ACPI S1) or "Suspend to RAM" (STR, ACPI S3) states, or
332the similarly named APM states, only PM_EVENT_SUSPEND is used; for "Suspend 335the similarly named APM states, only PM_EVENT_SUSPEND is used; the other event
333to Disk" (STD, hibernate, ACPI S4), all of those event codes are used. 336codes are used for hibernation ("Suspend to Disk", STD, ACPI S4).
334 337
335There's also PM_EVENT_ON, a value which never appears as a suspend event 338There's also PM_EVENT_ON, a value which never appears as a suspend event
336but is sometimes used to record the "not suspended" device state. 339but is sometimes used to record the "not suspended" device state.