projects/linux·commit b1457bcc

Hibernation: prepare to enter the low power state

b1457bcc · Rafael J. Wysocki <[email protected]> · 2007-07-19 01:47:31 -07:00

During hibernation we call hibernation_ops->prepare() before creating the image,
but then, before saving it, we cancel the power transition by calling
hibernation_ops->finish().  Thus prior to calling hibernation_ops->enter() we
should let the platform firmware know that we're going to enter the low power
state after all.

Signed-off-by: Rafael J. Wysocki <[email protected]>
Cc: Gautham R Shenoy <[email protected]>
Cc: Pavel Machek <[email protected]>
Cc: Nigel Cunningham <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
b1457bcc3a00a0446c7f6e2f22fd24b6d8d0a309
Parents
10a1803d

Changes

1 files changed · +13 −2

FileStatusAddDelContent
kernel/power/disk.cmodified+13−2View file

kernel/power/disk.c

View file
diff --git a/kernel/power/disk.c b/kernel/power/disk.c
index 77ac605..885c653 100644
--- a/kernel/power/disk.c
+++ b/kernel/power/disk.c
@@ -205,12 +205,23 @@ int hibernation_restore(int platform_mode)
int hibernation_platform_enter(void)
{
+ int error;
+
if (hibernation_ops) {
kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK);
- return hibernation_ops->enter();
+ /*
+ * We have cancelled the power transition by running
+ * hibernation_ops->finish() before saving the image, so we
+ * should let the firmware know that we're going to enter the
+ * sleep state after all
+ */
+ error = hibernation_ops->prepare();
+ if (!error)
+ error = hibernation_ops->enter();
} else {
- return -ENOSYS;
+ error = -ENOSYS;
}
+ return error;
}
/**