diff options
Diffstat (limited to 'kernel/power')
-rw-r--r-- | kernel/power/hibernate.c | 24 | ||||
-rw-r--r-- | kernel/power/main.c | 8 | ||||
-rw-r--r-- | kernel/power/suspend.c | 4 |
3 files changed, 20 insertions, 16 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 6d6d28870335..a5d4cf0aa03e 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c | |||
@@ -245,8 +245,8 @@ void swsusp_show_speed(struct timeval *start, struct timeval *stop, | |||
245 | * create_image - Create a hibernation image. | 245 | * create_image - Create a hibernation image. |
246 | * @platform_mode: Whether or not to use the platform driver. | 246 | * @platform_mode: Whether or not to use the platform driver. |
247 | * | 247 | * |
248 | * Execute device drivers' .freeze_noirq() callbacks, create a hibernation image | 248 | * Execute device drivers' "late" and "noirq" freeze callbacks, create a |
249 | * and execute the drivers' .thaw_noirq() callbacks. | 249 | * hibernation image and run the drivers' "noirq" and "early" thaw callbacks. |
250 | * | 250 | * |
251 | * Control reappears in this routine after the subsequent restore. | 251 | * Control reappears in this routine after the subsequent restore. |
252 | */ | 252 | */ |
@@ -254,7 +254,7 @@ static int create_image(int platform_mode) | |||
254 | { | 254 | { |
255 | int error; | 255 | int error; |
256 | 256 | ||
257 | error = dpm_suspend_noirq(PMSG_FREEZE); | 257 | error = dpm_suspend_end(PMSG_FREEZE); |
258 | if (error) { | 258 | if (error) { |
259 | printk(KERN_ERR "PM: Some devices failed to power down, " | 259 | printk(KERN_ERR "PM: Some devices failed to power down, " |
260 | "aborting hibernation\n"); | 260 | "aborting hibernation\n"); |
@@ -306,7 +306,7 @@ static int create_image(int platform_mode) | |||
306 | Platform_finish: | 306 | Platform_finish: |
307 | platform_finish(platform_mode); | 307 | platform_finish(platform_mode); |
308 | 308 | ||
309 | dpm_resume_noirq(in_suspend ? | 309 | dpm_resume_start(in_suspend ? |
310 | (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE); | 310 | (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE); |
311 | 311 | ||
312 | return error; | 312 | return error; |
@@ -394,16 +394,16 @@ int hibernation_snapshot(int platform_mode) | |||
394 | * resume_target_kernel - Restore system state from a hibernation image. | 394 | * resume_target_kernel - Restore system state from a hibernation image. |
395 | * @platform_mode: Whether or not to use the platform driver. | 395 | * @platform_mode: Whether or not to use the platform driver. |
396 | * | 396 | * |
397 | * Execute device drivers' .freeze_noirq() callbacks, restore the contents of | 397 | * Execute device drivers' "noirq" and "late" freeze callbacks, restore the |
398 | * highmem that have not been restored yet from the image and run the low-level | 398 | * contents of highmem that have not been restored yet from the image and run |
399 | * code that will restore the remaining contents of memory and switch to the | 399 | * the low-level code that will restore the remaining contents of memory and |
400 | * just restored target kernel. | 400 | * switch to the just restored target kernel. |
401 | */ | 401 | */ |
402 | static int resume_target_kernel(bool platform_mode) | 402 | static int resume_target_kernel(bool platform_mode) |
403 | { | 403 | { |
404 | int error; | 404 | int error; |
405 | 405 | ||
406 | error = dpm_suspend_noirq(PMSG_QUIESCE); | 406 | error = dpm_suspend_end(PMSG_QUIESCE); |
407 | if (error) { | 407 | if (error) { |
408 | printk(KERN_ERR "PM: Some devices failed to power down, " | 408 | printk(KERN_ERR "PM: Some devices failed to power down, " |
409 | "aborting resume\n"); | 409 | "aborting resume\n"); |
@@ -460,7 +460,7 @@ static int resume_target_kernel(bool platform_mode) | |||
460 | Cleanup: | 460 | Cleanup: |
461 | platform_restore_cleanup(platform_mode); | 461 | platform_restore_cleanup(platform_mode); |
462 | 462 | ||
463 | dpm_resume_noirq(PMSG_RECOVER); | 463 | dpm_resume_start(PMSG_RECOVER); |
464 | 464 | ||
465 | return error; | 465 | return error; |
466 | } | 466 | } |
@@ -518,7 +518,7 @@ int hibernation_platform_enter(void) | |||
518 | goto Resume_devices; | 518 | goto Resume_devices; |
519 | } | 519 | } |
520 | 520 | ||
521 | error = dpm_suspend_noirq(PMSG_HIBERNATE); | 521 | error = dpm_suspend_end(PMSG_HIBERNATE); |
522 | if (error) | 522 | if (error) |
523 | goto Resume_devices; | 523 | goto Resume_devices; |
524 | 524 | ||
@@ -549,7 +549,7 @@ int hibernation_platform_enter(void) | |||
549 | Platform_finish: | 549 | Platform_finish: |
550 | hibernation_ops->finish(); | 550 | hibernation_ops->finish(); |
551 | 551 | ||
552 | dpm_resume_noirq(PMSG_RESTORE); | 552 | dpm_resume_start(PMSG_RESTORE); |
553 | 553 | ||
554 | Resume_devices: | 554 | Resume_devices: |
555 | entering_platform_hibernation = false; | 555 | entering_platform_hibernation = false; |
diff --git a/kernel/power/main.c b/kernel/power/main.c index 9824b41e5a18..8c5014a4e052 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c | |||
@@ -165,16 +165,20 @@ static int suspend_stats_show(struct seq_file *s, void *unused) | |||
165 | last_errno %= REC_FAILED_NUM; | 165 | last_errno %= REC_FAILED_NUM; |
166 | last_step = suspend_stats.last_failed_step + REC_FAILED_NUM - 1; | 166 | last_step = suspend_stats.last_failed_step + REC_FAILED_NUM - 1; |
167 | last_step %= REC_FAILED_NUM; | 167 | last_step %= REC_FAILED_NUM; |
168 | seq_printf(s, "%s: %d\n%s: %d\n%s: %d\n%s: %d\n" | 168 | seq_printf(s, "%s: %d\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n" |
169 | "%s: %d\n%s: %d\n%s: %d\n%s: %d\n", | 169 | "%s: %d\n%s: %d\n%s: %d\n%s: %d\n%s: %d\n", |
170 | "success", suspend_stats.success, | 170 | "success", suspend_stats.success, |
171 | "fail", suspend_stats.fail, | 171 | "fail", suspend_stats.fail, |
172 | "failed_freeze", suspend_stats.failed_freeze, | 172 | "failed_freeze", suspend_stats.failed_freeze, |
173 | "failed_prepare", suspend_stats.failed_prepare, | 173 | "failed_prepare", suspend_stats.failed_prepare, |
174 | "failed_suspend", suspend_stats.failed_suspend, | 174 | "failed_suspend", suspend_stats.failed_suspend, |
175 | "failed_suspend_late", | ||
176 | suspend_stats.failed_suspend_late, | ||
175 | "failed_suspend_noirq", | 177 | "failed_suspend_noirq", |
176 | suspend_stats.failed_suspend_noirq, | 178 | suspend_stats.failed_suspend_noirq, |
177 | "failed_resume", suspend_stats.failed_resume, | 179 | "failed_resume", suspend_stats.failed_resume, |
180 | "failed_resume_early", | ||
181 | suspend_stats.failed_resume_early, | ||
178 | "failed_resume_noirq", | 182 | "failed_resume_noirq", |
179 | suspend_stats.failed_resume_noirq); | 183 | suspend_stats.failed_resume_noirq); |
180 | seq_printf(s, "failures:\n last_failed_dev:\t%-s\n", | 184 | seq_printf(s, "failures:\n last_failed_dev:\t%-s\n", |
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c index 4fd51beed879..560a639614a1 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c | |||
@@ -147,7 +147,7 @@ static int suspend_enter(suspend_state_t state, bool *wakeup) | |||
147 | goto Platform_finish; | 147 | goto Platform_finish; |
148 | } | 148 | } |
149 | 149 | ||
150 | error = dpm_suspend_noirq(PMSG_SUSPEND); | 150 | error = dpm_suspend_end(PMSG_SUSPEND); |
151 | if (error) { | 151 | if (error) { |
152 | printk(KERN_ERR "PM: Some devices failed to power down\n"); | 152 | printk(KERN_ERR "PM: Some devices failed to power down\n"); |
153 | goto Platform_finish; | 153 | goto Platform_finish; |
@@ -189,7 +189,7 @@ static int suspend_enter(suspend_state_t state, bool *wakeup) | |||
189 | if (suspend_ops->wake) | 189 | if (suspend_ops->wake) |
190 | suspend_ops->wake(); | 190 | suspend_ops->wake(); |
191 | 191 | ||
192 | dpm_resume_noirq(PMSG_RESUME); | 192 | dpm_resume_start(PMSG_RESUME); |
193 | 193 | ||
194 | Platform_finish: | 194 | Platform_finish: |
195 | if (suspend_ops->finish) | 195 | if (suspend_ops->finish) |