diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index c74baad19b16..00441cde4588 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) {