diff options
Diffstat (limited to 'kernel/power/suspend.c')
-rw-r--r-- | kernel/power/suspend.c | 14 |
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"); |