diff options
| author | Kumar Gala <galak@kernel.crashing.org> | 2011-05-19 00:36:21 -0500 |
|---|---|---|
| committer | Kumar Gala <galak@kernel.crashing.org> | 2011-05-19 00:36:21 -0500 |
| commit | 134c428e5a31f2d5ed3a70ba20dac83895ec8b82 (patch) | |
| tree | 0fb28accbf09171b8a1ca792361f4160434529e8 /kernel/power/suspend.c | |
| parent | a0496d450ab8c17f6c4d86979b1f6ba486fe9365 (diff) | |
| parent | c560bbceaf6b06e52f1ef20131b76a3fdc0a2c19 (diff) | |
Merge remote branch 'benh/merge' into benh-next
Diffstat (limited to 'kernel/power/suspend.c')
| -rw-r--r-- | kernel/power/suspend.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c index 2814c32aed5..6275970b218 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -164,8 +164,11 @@ static int suspend_enter(suspend_state_t state) BUG_ON(!irqs_disabled()); error = sysdev_suspend(PMSG_SUSPEND); - if (!error) + if (!error) { error = syscore_suspend(); + if (error) + sysdev_resume(); + } if (!error) { if (!(suspend_test(TEST_CORE) || pm_wakeup_pending())) { error = suspend_ops->enter(state); @@ -213,7 +216,6 @@ int suspend_devices_and_enter(suspend_state_t state) goto Close; } suspend_console(); - pm_restrict_gfp_mask(); suspend_test_start(); error = dpm_suspend_start(PMSG_SUSPEND); if (error) { @@ -230,7 +232,6 @@ int suspend_devices_and_enter(suspend_state_t state) suspend_test_start(); dpm_resume_end(PMSG_RESUME); suspend_test_finish("resume devices"); - pm_restore_gfp_mask(); resume_console(); Close: if (suspend_ops->end) @@ -291,7 +292,9 @@ int enter_state(suspend_state_t state) goto Finish; pr_debug("PM: Entering %s sleep\n", pm_states[state]); + pm_restrict_gfp_mask(); error = suspend_devices_and_enter(state); + pm_restore_gfp_mask(); Finish: pr_debug("PM: Finishing wakeup.\n"); |
