diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-27 15:20:00 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-27 15:20:00 -0700 | 
| commit | be6b694713740cea4610754171deec2db9cd668b (patch) | |
| tree | 765680b0996f8af1d4263fa83daeb58935238841 | |
| parent | 0fd97ab48971735e38677cfdab64e4db581530f8 (diff) | |
| parent | 7bed50c5edf5cba8dd515a31191cbfb6065ddc85 (diff) | |
Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6
* 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
  ACPI / PM: Avoid infinite recurrence while registering power resources
  PM / Wakeup: Fix initialization of wakeup-related device sysfs files
| -rw-r--r-- | drivers/acpi/scan.c | 4 | ||||
| -rw-r--r-- | drivers/base/power/main.c | 1 | ||||
| -rw-r--r-- | drivers/base/power/wakeup.c | 2 | 
3 files changed, 6 insertions, 1 deletions
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index b136c9c1e531..449c556274c0 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -943,6 +943,10 @@ static int acpi_bus_get_flags(struct acpi_device *device)  	if (ACPI_SUCCESS(status))  		device->flags.lockable = 1; +	/* Power resources cannot be power manageable. */ +	if (device->device_type == ACPI_BUS_TYPE_POWER) +		return 0; +  	/* Presence of _PS0|_PR0 indicates 'power manageable' */  	status = acpi_get_handle(device->handle, "_PS0", &temp);  	if (ACPI_FAILURE(status)) diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index fbc5b6e7c591..abe3ab709e87 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -63,6 +63,7 @@ void device_pm_init(struct device *dev)  	dev->power.wakeup = NULL;  	spin_lock_init(&dev->power.lock);  	pm_runtime_init(dev); +	INIT_LIST_HEAD(&dev->power.entry);  }  /** diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c index 4573c83df6dd..abbbd33e8d8a 100644 --- a/drivers/base/power/wakeup.c +++ b/drivers/base/power/wakeup.c @@ -258,7 +258,7 @@ void device_set_wakeup_capable(struct device *dev, bool capable)  	if (!!dev->power.can_wakeup == !!capable)  		return; -	if (device_is_registered(dev)) { +	if (device_is_registered(dev) && !list_empty(&dev->power.entry)) {  		if (capable) {  			if (wakeup_sysfs_add(dev))  				return;  | 
