diff options
Diffstat (limited to 'kernel/power/hibernate.c')
-rw-r--r-- | kernel/power/hibernate.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 5454cc639a8d..9c85c7822383 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c | |||
@@ -287,6 +287,8 @@ static int create_image(int platform_mode) | |||
287 | 287 | ||
288 | local_irq_disable(); | 288 | local_irq_disable(); |
289 | 289 | ||
290 | system_state = SYSTEM_SUSPEND; | ||
291 | |||
290 | error = syscore_suspend(); | 292 | error = syscore_suspend(); |
291 | if (error) { | 293 | if (error) { |
292 | pr_err("Some system devices failed to power down, aborting hibernation\n"); | 294 | pr_err("Some system devices failed to power down, aborting hibernation\n"); |
@@ -317,6 +319,7 @@ static int create_image(int platform_mode) | |||
317 | syscore_resume(); | 319 | syscore_resume(); |
318 | 320 | ||
319 | Enable_irqs: | 321 | Enable_irqs: |
322 | system_state = SYSTEM_RUNNING; | ||
320 | local_irq_enable(); | 323 | local_irq_enable(); |
321 | 324 | ||
322 | Enable_cpus: | 325 | Enable_cpus: |
@@ -445,6 +448,7 @@ static int resume_target_kernel(bool platform_mode) | |||
445 | goto Enable_cpus; | 448 | goto Enable_cpus; |
446 | 449 | ||
447 | local_irq_disable(); | 450 | local_irq_disable(); |
451 | system_state = SYSTEM_SUSPEND; | ||
448 | 452 | ||
449 | error = syscore_suspend(); | 453 | error = syscore_suspend(); |
450 | if (error) | 454 | if (error) |
@@ -478,6 +482,7 @@ static int resume_target_kernel(bool platform_mode) | |||
478 | syscore_resume(); | 482 | syscore_resume(); |
479 | 483 | ||
480 | Enable_irqs: | 484 | Enable_irqs: |
485 | system_state = SYSTEM_RUNNING; | ||
481 | local_irq_enable(); | 486 | local_irq_enable(); |
482 | 487 | ||
483 | Enable_cpus: | 488 | Enable_cpus: |
@@ -563,6 +568,7 @@ int hibernation_platform_enter(void) | |||
563 | goto Enable_cpus; | 568 | goto Enable_cpus; |
564 | 569 | ||
565 | local_irq_disable(); | 570 | local_irq_disable(); |
571 | system_state = SYSTEM_SUSPEND; | ||
566 | syscore_suspend(); | 572 | syscore_suspend(); |
567 | if (pm_wakeup_pending()) { | 573 | if (pm_wakeup_pending()) { |
568 | error = -EAGAIN; | 574 | error = -EAGAIN; |
@@ -575,6 +581,7 @@ int hibernation_platform_enter(void) | |||
575 | 581 | ||
576 | Power_up: | 582 | Power_up: |
577 | syscore_resume(); | 583 | syscore_resume(); |
584 | system_state = SYSTEM_RUNNING; | ||
578 | local_irq_enable(); | 585 | local_irq_enable(); |
579 | 586 | ||
580 | Enable_cpus: | 587 | Enable_cpus: |