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 ...
This commit is contained in:
@@ -64,6 +64,17 @@ config PM_TRACE
|
||||
CAUTION: this option will cause your machine's real-time clock to be
|
||||
set to an invalid time after a resume.
|
||||
|
||||
config PM_SYSFS_DEPRECATED
|
||||
bool "Driver model /sys/devices/.../power/state files (DEPRECATED)"
|
||||
depends on PM && SYSFS
|
||||
default n
|
||||
help
|
||||
The driver model started out with a sysfs file intended to provide
|
||||
a userspace hook for device power management. This feature has never
|
||||
worked very well, except for limited testing purposes, and so it will
|
||||
be removed. It's not clear that a generic mechanism could really
|
||||
handle the wide variability of device power states; any replacements
|
||||
are likely to be bus or driver specific.
|
||||
|
||||
config SOFTWARE_SUSPEND
|
||||
bool "Software Suspend"
|
||||
|
||||
+2
-2
@@ -103,7 +103,7 @@ static void unprepare_processes(void)
|
||||
}
|
||||
|
||||
/**
|
||||
* pm_suspend_disk - The granpappy of power management.
|
||||
* pm_suspend_disk - The granpappy of hibernation power management.
|
||||
*
|
||||
* If we're going through the firmware, then get it over with quickly.
|
||||
*
|
||||
@@ -212,7 +212,7 @@ static int software_resume(void)
|
||||
|
||||
pr_debug("PM: Preparing devices for restore.\n");
|
||||
|
||||
if ((error = device_suspend(PMSG_FREEZE))) {
|
||||
if ((error = device_suspend(PMSG_PRETHAW))) {
|
||||
printk("Some devices failed to suspend\n");
|
||||
swsusp_free();
|
||||
goto Thaw;
|
||||
|
||||
@@ -247,6 +247,9 @@ int swsusp_suspend(void)
|
||||
restore_processor_state();
|
||||
Restore_highmem:
|
||||
restore_highmem();
|
||||
/* NOTE: device_power_up() is just a resume() for devices
|
||||
* that suspended with irqs off ... no overall powerup.
|
||||
*/
|
||||
device_power_up();
|
||||
Enable_irqs:
|
||||
local_irq_enable();
|
||||
@@ -256,8 +259,12 @@ Enable_irqs:
|
||||
int swsusp_resume(void)
|
||||
{
|
||||
int error;
|
||||
|
||||
local_irq_disable();
|
||||
if (device_power_down(PMSG_FREEZE))
|
||||
/* NOTE: device_power_down() is just a suspend() with irqs off;
|
||||
* it has no special "power things down" semantics
|
||||
*/
|
||||
if (device_power_down(PMSG_PRETHAW))
|
||||
printk(KERN_ERR "Some devices failed to power down, very bad\n");
|
||||
/* We'll ignore saved state, but this gets preempt count (etc) right */
|
||||
save_processor_state();
|
||||
|
||||
+1
-1
@@ -196,7 +196,7 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp,
|
||||
snapshot_free_unused_memory(&data->handle);
|
||||
down(&pm_sem);
|
||||
pm_prepare_console();
|
||||
error = device_suspend(PMSG_FREEZE);
|
||||
error = device_suspend(PMSG_PRETHAW);
|
||||
if (!error) {
|
||||
error = swsusp_resume();
|
||||
device_resume();
|
||||
|
||||
Reference in New Issue
Block a user