From: Alan Stern Date: Tue, 19 Sep 2006 14:07:58 +0000 (-0400) Subject: USB: force root hub resume after power loss X-Git-Tag: v2.6.19-rc1~899^2~4 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=353a4098c61272b33a02ec5802fb3859fec91a0e;p=linux-2.6 USB: force root hub resume after power loss This patch(as785) forces the PM core to resume a root hub after a power loss during system sleep. If the root hub had been suspended before the system sleep then normally the PM core would not resume it afterward. Without this resume, various sorts of wakeup events (like port change events) can get lost. Signed-off-by: Alan Stern Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index c74baad19b..00441cde45 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1053,6 +1053,12 @@ void usb_root_hub_lost_power(struct usb_device *rhdev) unsigned long flags; dev_warn(&rhdev->dev, "root hub lost power or was reset\n"); + + /* Make sure no potential wakeup events get lost, + * by forcing the root hub to be resumed. + */ + rhdev->dev.power.prev_state.event = PM_EVENT_ON; + spin_lock_irqsave(&device_state_lock, flags); hub = hdev_to_hub(rhdev); for (port1 = 1; port1 <= rhdev->maxchild; ++port1) {