diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-30 18:12:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-30 18:12:14 -0400 |
commit | 53d8f67082c9b86699dd88b7f9e667e245193f21 (patch) | |
tree | 0e888713ee7a1a53b05852839aeb724fabe80490 /arch | |
parent | 93c36ed8348934b462044d2d60ab345055318933 (diff) | |
parent | 8efb8c76fcdccf5050c0ea059dac392789baaff2 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
PCI PM: Make pci_prepare_to_sleep() disable wake-up if needed
radeonfb: Use __pci_complete_power_transition()
PCI PM: Introduce __pci_[start|complete]_power_transition() (rev. 2)
PCI PM: Restore config spaces of all devices during early resume
PCI PM: Make pci_set_power_state() handle devices with no PM support
PCI PM: Put devices into low power states during late suspend (rev. 2)
PCI PM: Move pci_restore_standard_config to pci-driver.c
PCI PM: Use pci_set_power_state during early resume
PCI PM: Consistently use variable name "error" for pm call return values
kexec: Change kexec jump code ordering
PM: Change hibernation code ordering
PM: Change suspend code ordering
PM: Rework handling of interrupts during suspend-resume
PM: Introduce functions for suspending and resuming device interrupts
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/apm_32.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c index 10033fe718e0..ac7783a67432 100644 --- a/arch/x86/kernel/apm_32.c +++ b/arch/x86/kernel/apm_32.c | |||
@@ -1190,8 +1190,10 @@ static int suspend(int vetoable) | |||
1190 | struct apm_user *as; | 1190 | struct apm_user *as; |
1191 | 1191 | ||
1192 | device_suspend(PMSG_SUSPEND); | 1192 | device_suspend(PMSG_SUSPEND); |
1193 | local_irq_disable(); | 1193 | |
1194 | device_power_down(PMSG_SUSPEND); | 1194 | device_power_down(PMSG_SUSPEND); |
1195 | |||
1196 | local_irq_disable(); | ||
1195 | sysdev_suspend(PMSG_SUSPEND); | 1197 | sysdev_suspend(PMSG_SUSPEND); |
1196 | 1198 | ||
1197 | local_irq_enable(); | 1199 | local_irq_enable(); |
@@ -1209,9 +1211,12 @@ static int suspend(int vetoable) | |||
1209 | if (err != APM_SUCCESS) | 1211 | if (err != APM_SUCCESS) |
1210 | apm_error("suspend", err); | 1212 | apm_error("suspend", err); |
1211 | err = (err == APM_SUCCESS) ? 0 : -EIO; | 1213 | err = (err == APM_SUCCESS) ? 0 : -EIO; |
1214 | |||
1212 | sysdev_resume(); | 1215 | sysdev_resume(); |
1213 | device_power_up(PMSG_RESUME); | ||
1214 | local_irq_enable(); | 1216 | local_irq_enable(); |
1217 | |||
1218 | device_power_up(PMSG_RESUME); | ||
1219 | |||
1215 | device_resume(PMSG_RESUME); | 1220 | device_resume(PMSG_RESUME); |
1216 | queue_event(APM_NORMAL_RESUME, NULL); | 1221 | queue_event(APM_NORMAL_RESUME, NULL); |
1217 | spin_lock(&user_list_lock); | 1222 | spin_lock(&user_list_lock); |
@@ -1228,8 +1233,9 @@ static void standby(void) | |||
1228 | { | 1233 | { |
1229 | int err; | 1234 | int err; |
1230 | 1235 | ||
1231 | local_irq_disable(); | ||
1232 | device_power_down(PMSG_SUSPEND); | 1236 | device_power_down(PMSG_SUSPEND); |
1237 | |||
1238 | local_irq_disable(); | ||
1233 | sysdev_suspend(PMSG_SUSPEND); | 1239 | sysdev_suspend(PMSG_SUSPEND); |
1234 | local_irq_enable(); | 1240 | local_irq_enable(); |
1235 | 1241 | ||
@@ -1239,8 +1245,9 @@ static void standby(void) | |||
1239 | 1245 | ||
1240 | local_irq_disable(); | 1246 | local_irq_disable(); |
1241 | sysdev_resume(); | 1247 | sysdev_resume(); |
1242 | device_power_up(PMSG_RESUME); | ||
1243 | local_irq_enable(); | 1248 | local_irq_enable(); |
1249 | |||
1250 | device_power_up(PMSG_RESUME); | ||
1244 | } | 1251 | } |
1245 | 1252 | ||
1246 | static apm_event_t get_event(void) | 1253 | static apm_event_t get_event(void) |