aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/core.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2008-02-24 18:35:04 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-03-04 17:47:05 -0500
commit7a8d37a37380e2b1500592d40b7ec384dbebe7a0 (patch)
tree9a23b48e49ffc3303e5998f20498c994da2788c1 /drivers/base/core.c
parenta4573c488dd531c6e2d308ce8a7413c4a2646207 (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.c8
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);