aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/power/user.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/power/user.c')
-rw-r--r--kernel/power/user.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/kernel/power/user.c b/kernel/power/user.c
index dd09efe7df54..bf211fee1222 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -368,9 +368,12 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
368 if (error) { 368 if (error) {
369 printk(KERN_ERR "Failed to suspend some devices.\n"); 369 printk(KERN_ERR "Failed to suspend some devices.\n");
370 } else { 370 } else {
371 /* Enter S3, system is already frozen */ 371 error = disable_nonboot_cpus();
372 suspend_enter(PM_SUSPEND_MEM); 372 if (!error) {
373 373 /* Enter S3, system is already frozen */
374 suspend_enter(PM_SUSPEND_MEM);
375 enable_nonboot_cpus();
376 }
374 /* Wake up devices */ 377 /* Wake up devices */
375 device_resume(); 378 device_resume();
376 } 379 }
@@ -398,9 +401,10 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
398 401
399 case PMOPS_ENTER: 402 case PMOPS_ENTER:
400 if (data->platform_suspend) { 403 if (data->platform_suspend) {
404 disable_nonboot_cpus();
401 kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK); 405 kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK);
402 error = pm_ops->enter(PM_SUSPEND_DISK); 406 error = pm_ops->enter(PM_SUSPEND_DISK);
403 error = 0; 407 enable_nonboot_cpus();
404 } 408 }
405 break; 409 break;
406 410