PM: Do not acquire device semaphores upfront during suspend

Remove the code that acquires all device semaphores from the suspend
code path as it causes multiple problems to appear (most notably,
http://bugzilla.kernel.org/show_bug.cgi?id=10030) and revert the
change introduced by commit 4145ed6dc5
depending on the code being removed.

Remove pm_sleep_lock()/pm_sleep_unlock() from device_add() to avoid
the issue reported at http://bugzilla.kernel.org/show_bug.cgi?id=9874.

It should fix the regreesions reported at:
	http://bugzilla.kernel.org/show_bug.cgi?id=9874
	http://bugzilla.kernel.org/show_bug.cgi?id=10030

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Rafael J. Wysocki
2008-02-25 00:35:04 +01:00
committed by Greg Kroah-Hartman
parent a4573c488d
commit 7a8d37a373
3 changed files with 17 additions and 99 deletions

View File

@@ -770,13 +770,6 @@ int device_add(struct device *dev)
struct class_interface *class_intf;
int error;
error = pm_sleep_lock();
if (error) {
dev_warn(dev, "Suspicious %s during suspend\n", __FUNCTION__);
dump_stack();
return error;
}
dev = get_device(dev);
if (!dev || !strlen(dev->bus_id)) {
error = -EINVAL;
@@ -843,7 +836,6 @@ int device_add(struct device *dev)
}
Done:
put_device(dev);
pm_sleep_unlock();
return error;
BusError:
device_pm_remove(dev);