diff options
Diffstat (limited to 'kernel/power/user.c')
-rw-r--r-- | kernel/power/user.c | 12 |
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 | ||