diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2008-02-24 18:35:04 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-03-04 17:47:05 -0500 |
commit | 7a8d37a37380e2b1500592d40b7ec384dbebe7a0 (patch) | |
tree | 9a23b48e49ffc3303e5998f20498c994da2788c1 /drivers/base/core.c | |
parent | a4573c488dd531c6e2d308ce8a7413c4a2646207 (diff) |
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 4145ed6dc597a9bea5f6ae8c574653b2de10620f
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>
Diffstat (limited to 'drivers/base/core.c')
-rw-r--r-- | drivers/base/core.c | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index 9c0070b5bd3e..1e2e0fa8a450 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -770,13 +770,6 @@ int device_add(struct device *dev) | |||
770 | struct class_interface *class_intf; | 770 | struct class_interface *class_intf; |
771 | int error; | 771 | int error; |
772 | 772 | ||
773 | error = pm_sleep_lock(); | ||
774 | if (error) { | ||
775 | dev_warn(dev, "Suspicious %s during suspend\n", __FUNCTION__); | ||
776 | dump_stack(); | ||
777 | return error; | ||
778 | } | ||
779 | |||
780 | dev = get_device(dev); | 773 | dev = get_device(dev); |
781 | if (!dev || !strlen(dev->bus_id)) { | 774 | if (!dev || !strlen(dev->bus_id)) { |
782 | error = -EINVAL; | 775 | error = -EINVAL; |
@@ -843,7 +836,6 @@ int device_add(struct device *dev) | |||
843 | } | 836 | } |
844 | Done: | 837 | Done: |
845 | put_device(dev); | 838 | put_device(dev); |
846 | pm_sleep_unlock(); | ||
847 | return error; | 839 | return error; |
848 | BusError: | 840 | BusError: |
849 | device_pm_remove(dev); | 841 | device_pm_remove(dev); |