This patch (as1030) prints warning messages in the system log when drivers try to register or unregister devices during a system sleep transition. These actions are now illegal and will either fail or block (likely leading to deadlock). Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> --- This patch applies on top of gregkh-driver-pm-acquire-device-locks-prior-to-suspending.patch. The new locking arrangement can cause deadlocks or other errors if drivers try to do the wrong thing. With this patch we should easily be able to tell where the problems are. Alan Stern Index: usb-2.6/drivers/base/core.c =================================================================== --- usb-2.6.orig/drivers/base/core.c +++ usb-2.6/drivers/base/core.c @@ -789,8 +789,11 @@ int device_add(struct device *dev) int error; error = pm_sleep_lock(); - if (error) + if (error) { + dev_warn(dev, "Illegal %s during suspend\n", __FUNCTION__); + dump_stack(); return error; + } dev = get_device(dev); if (!dev || !strlen(dev->bus_id)) { @@ -953,6 +956,13 @@ void device_del(struct device * dev) struct device * parent = dev->parent; struct class_interface *class_intf; + if (pm_sleep_lock()) { + dev_warn(dev, "Illegal %s during suspend\n", __FUNCTION__); + dump_stack(); + } else { + pm_sleep_unlock(); + } + if (parent) klist_del(&dev->knode_parent); if (MAJOR(dev->devt)) _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm