aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/power/suspend.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/power/suspend.c')
-rw-r--r--kernel/power/suspend.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index 8935369d503a..1c41ba215419 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -163,19 +163,13 @@ static int suspend_enter(suspend_state_t state)
163 arch_suspend_disable_irqs(); 163 arch_suspend_disable_irqs();
164 BUG_ON(!irqs_disabled()); 164 BUG_ON(!irqs_disabled());
165 165
166 error = sysdev_suspend(PMSG_SUSPEND); 166 error = syscore_suspend();
167 if (!error) {
168 error = syscore_suspend();
169 if (error)
170 sysdev_resume();
171 }
172 if (!error) { 167 if (!error) {
173 if (!(suspend_test(TEST_CORE) || pm_wakeup_pending())) { 168 if (!(suspend_test(TEST_CORE) || pm_wakeup_pending())) {
174 error = suspend_ops->enter(state); 169 error = suspend_ops->enter(state);
175 events_check_enabled = false; 170 events_check_enabled = false;
176 } 171 }
177 syscore_resume(); 172 syscore_resume();
178 sysdev_resume();
179 } 173 }
180 174
181 arch_suspend_enable_irqs(); 175 arch_suspend_enable_irqs();
@@ -216,7 +210,6 @@ int suspend_devices_and_enter(suspend_state_t state)
216 goto Close; 210 goto Close;
217 } 211 }
218 suspend_console(); 212 suspend_console();
219 pm_restrict_gfp_mask();
220 suspend_test_start(); 213 suspend_test_start();
221 error = dpm_suspend_start(PMSG_SUSPEND); 214 error = dpm_suspend_start(PMSG_SUSPEND);
222 if (error) { 215 if (error) {
@@ -227,13 +220,12 @@ int suspend_devices_and_enter(suspend_state_t state)
227 if (suspend_test(TEST_DEVICES)) 220 if (suspend_test(TEST_DEVICES))
228 goto Recover_platform; 221 goto Recover_platform;
229 222
230 suspend_enter(state); 223 error = suspend_enter(state);
231 224
232 Resume_devices: 225 Resume_devices:
233 suspend_test_start(); 226 suspend_test_start();
234 dpm_resume_end(PMSG_RESUME); 227 dpm_resume_end(PMSG_RESUME);
235 suspend_test_finish("resume devices"); 228 suspend_test_finish("resume devices");
236 pm_restore_gfp_mask();
237 resume_console(); 229 resume_console();
238 Close: 230 Close:
239 if (suspend_ops->end) 231 if (suspend_ops->end)
@@ -294,7 +286,9 @@ int enter_state(suspend_state_t state)
294 goto Finish; 286 goto Finish;
295 287
296 pr_debug("PM: Entering %s sleep\n", pm_states[state]); 288 pr_debug("PM: Entering %s sleep\n", pm_states[state]);
289 pm_restrict_gfp_mask();
297 error = suspend_devices_and_enter(state); 290 error = suspend_devices_and_enter(state);
291 pm_restore_gfp_mask();
298 292
299 Finish: 293 Finish:
300 pr_debug("PM: Finishing wakeup.\n"); 294 pr_debug("PM: Finishing wakeup.\n");