summaryrefslogtreecommitdiffstats
path: root/kernel/power/hibernate.c
diff options
context:
space:
mode:
authorSebastian Capella <sebastian.capella@linaro.org>2014-04-22 02:30:46 +0200
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-05-01 01:02:25 +0200
commit2c730785d9532d2a9c46e059bd6a6c9a764c539f (patch)
treedb321b3e87c9ebaf4897a8a8e8fed9f79195a6ea /kernel/power/hibernate.c
parentPM / hibernate: use unsigned local variables in swsusp_show_speed() (diff)
downloadlinux-2c730785d9532d2a9c46e059bd6a6c9a764c539f.tar.xz
linux-2c730785d9532d2a9c46e059bd6a6c9a764c539f.zip
PM / hibernate: no kernel_power_off when pm_power_off NULL
Reboot logic in kernel/reboot will avoid calling kernel_power_off when pm_power_off is null, and instead uses kernel_halt. Change hibernate's power_down to follow the behavior in the reboot call. Calling the notifier twice (once for SYS_POWER_OFF and again for SYS_HALT) causes a panic during hibernation on Kirkwood Openblocks A6 board. Signed-off-by: Sebastian Capella <sebastian.capella@linaro.org> Reported-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> Reviewed-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'kernel/power/hibernate.c')
-rw-r--r--kernel/power/hibernate.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
index de4b989cc8fd..1f08ac7f55d8 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -599,7 +599,8 @@ static void power_down(void)
case HIBERNATION_PLATFORM:
hibernation_platform_enter();
case HIBERNATION_SHUTDOWN:
- kernel_power_off();
+ if (pm_power_off)
+ kernel_power_off();
break;
#ifdef CONFIG_SUSPEND
case HIBERNATION_SUSPEND:
@@ -627,7 +628,8 @@ static void power_down(void)
* corruption after resume.
*/
printk(KERN_CRIT "PM: Please power down manually\n");
- while(1);
+ while (1)
+ cpu_relax();
}
/**