diff options
Diffstat (limited to 'kernel/power')
-rw-r--r-- | kernel/power/console.c | 10 | ||||
-rw-r--r-- | kernel/power/disk.c | 7 | ||||
-rw-r--r-- | kernel/power/swsusp.c | 2 | ||||
-rw-r--r-- | kernel/power/user.c | 9 |
4 files changed, 16 insertions, 12 deletions
diff --git a/kernel/power/console.c b/kernel/power/console.c index 623786d44159..89bcf4973ee5 100644 --- a/kernel/power/console.c +++ b/kernel/power/console.c | |||
@@ -27,7 +27,15 @@ int pm_prepare_console(void) | |||
27 | return 1; | 27 | return 1; |
28 | } | 28 | } |
29 | 29 | ||
30 | set_console(SUSPEND_CONSOLE); | 30 | if (set_console(SUSPEND_CONSOLE)) { |
31 | /* | ||
32 | * We're unable to switch to the SUSPEND_CONSOLE. | ||
33 | * Let the calling function know so it can decide | ||
34 | * what to do. | ||
35 | */ | ||
36 | release_console_sem(); | ||
37 | return 1; | ||
38 | } | ||
31 | release_console_sem(); | 39 | release_console_sem(); |
32 | 40 | ||
33 | if (vt_waitactive(SUSPEND_CONSOLE)) { | 41 | if (vt_waitactive(SUSPEND_CONSOLE)) { |
diff --git a/kernel/power/disk.c b/kernel/power/disk.c index 406b20adb27a..aec19b063e3f 100644 --- a/kernel/power/disk.c +++ b/kernel/power/disk.c | |||
@@ -240,12 +240,6 @@ static int software_resume(void) | |||
240 | goto Done; | 240 | goto Done; |
241 | } | 241 | } |
242 | 242 | ||
243 | error = platform_prepare(); | ||
244 | if (error) { | ||
245 | swsusp_free(); | ||
246 | goto Thaw; | ||
247 | } | ||
248 | |||
249 | pr_debug("PM: Reading swsusp image.\n"); | 243 | pr_debug("PM: Reading swsusp image.\n"); |
250 | 244 | ||
251 | error = swsusp_read(); | 245 | error = swsusp_read(); |
@@ -268,7 +262,6 @@ static int software_resume(void) | |||
268 | enable_nonboot_cpus(); | 262 | enable_nonboot_cpus(); |
269 | Free: | 263 | Free: |
270 | swsusp_free(); | 264 | swsusp_free(); |
271 | platform_finish(); | ||
272 | device_resume(); | 265 | device_resume(); |
273 | resume_console(); | 266 | resume_console(); |
274 | Thaw: | 267 | Thaw: |
diff --git a/kernel/power/swsusp.c b/kernel/power/swsusp.c index 7fb834397a0d..175370824f37 100644 --- a/kernel/power/swsusp.c +++ b/kernel/power/swsusp.c | |||
@@ -229,13 +229,13 @@ int swsusp_shrink_memory(void) | |||
229 | size += highmem_size; | 229 | size += highmem_size; |
230 | for_each_zone (zone) | 230 | for_each_zone (zone) |
231 | if (populated_zone(zone)) { | 231 | if (populated_zone(zone)) { |
232 | tmp += snapshot_additional_pages(zone); | ||
232 | if (is_highmem(zone)) { | 233 | if (is_highmem(zone)) { |
233 | highmem_size -= | 234 | highmem_size -= |
234 | zone_page_state(zone, NR_FREE_PAGES); | 235 | zone_page_state(zone, NR_FREE_PAGES); |
235 | } else { | 236 | } else { |
236 | tmp -= zone_page_state(zone, NR_FREE_PAGES); | 237 | tmp -= zone_page_state(zone, NR_FREE_PAGES); |
237 | tmp += zone->lowmem_reserve[ZONE_NORMAL]; | 238 | tmp += zone->lowmem_reserve[ZONE_NORMAL]; |
238 | tmp += snapshot_additional_pages(zone); | ||
239 | } | 239 | } |
240 | } | 240 | } |
241 | 241 | ||
diff --git a/kernel/power/user.c b/kernel/power/user.c index dd09efe7df54..7cf6713b2325 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 | } |