diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-26 14:49:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-26 14:49:46 -0400 |
commit | dd77a4ee0f3981693d4229aa1d57cea9e526ff47 (patch) | |
tree | cb486be20b950201103a03636cbb1e1d180f0098 /kernel/power/swsusp.c | |
parent | e8216dee838c09776680a6f1a2e54d81f3cdfa14 (diff) | |
parent | 7e9f4b2d3e21e87c26025810413ef1592834e63b (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6: (47 commits)
Driver core: Don't call put methods while holding a spinlock
Driver core: Remove unneeded routines from driver core
Driver core: Fix potential deadlock in driver core
PCI: enable driver multi-threaded probe
Driver Core: add ability for drivers to do a threaded probe
sysfs: add proper sysfs_init() prototype
drivers/base: check errors
drivers/base: Platform notify needs to occur before drivers attach to the device
v4l-dev2: handle __must_check
add CONFIG_ENABLE_MUST_CHECK
add __must_check to device management code
Driver core: fixed add_bind_files() definition
Driver core: fix comments in drivers/base/power/resume.c
sysfs_remove_bin_file: no return value, dump_stack on error
kobject: must_check fixes
Driver core: add ability for devices to create and remove bin files
Class: add support for class interfaces for devices
Driver core: create devices/virtual/ tree
Driver core: add device_rename function
Driver core: add ability for classes to handle devices properly
...
Diffstat (limited to 'kernel/power/swsusp.c')
-rw-r--r-- | kernel/power/swsusp.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/power/swsusp.c b/kernel/power/swsusp.c index 8ef677ea0cea..0b66659dc516 100644 --- a/kernel/power/swsusp.c +++ b/kernel/power/swsusp.c | |||
@@ -247,6 +247,9 @@ int swsusp_suspend(void) | |||
247 | restore_processor_state(); | 247 | restore_processor_state(); |
248 | Restore_highmem: | 248 | Restore_highmem: |
249 | restore_highmem(); | 249 | restore_highmem(); |
250 | /* NOTE: device_power_up() is just a resume() for devices | ||
251 | * that suspended with irqs off ... no overall powerup. | ||
252 | */ | ||
250 | device_power_up(); | 253 | device_power_up(); |
251 | Enable_irqs: | 254 | Enable_irqs: |
252 | local_irq_enable(); | 255 | local_irq_enable(); |
@@ -256,8 +259,12 @@ Enable_irqs: | |||
256 | int swsusp_resume(void) | 259 | int swsusp_resume(void) |
257 | { | 260 | { |
258 | int error; | 261 | int error; |
262 | |||
259 | local_irq_disable(); | 263 | local_irq_disable(); |
260 | if (device_power_down(PMSG_FREEZE)) | 264 | /* NOTE: device_power_down() is just a suspend() with irqs off; |
265 | * it has no special "power things down" semantics | ||
266 | */ | ||
267 | if (device_power_down(PMSG_PRETHAW)) | ||
261 | printk(KERN_ERR "Some devices failed to power down, very bad\n"); | 268 | printk(KERN_ERR "Some devices failed to power down, very bad\n"); |
262 | /* We'll ignore saved state, but this gets preempt count (etc) right */ | 269 | /* We'll ignore saved state, but this gets preempt count (etc) right */ |
263 | save_processor_state(); | 270 | save_processor_state(); |