> This patch (as1532) fixes a mistake in the USB suspend code. When the > system is going to sleep, we should ignore errors in powering down USB > devices, because they don't really matter. The devices will go to low > power anyway when the entire USB bus gets suspended (except for > SuperSpeed devices; maybe they will need special treatment later). > > However we should not ignore errors in suspending root hubs, > especially if the error indicates that the suspend raced with a wakeup > request. Doing so might leave the bus powered on while the system was > supposed to be asleep, or it might cause the suspend of the root hub's > parent controller device to fail, or it might cause a wakeup request > to be ignored. > > The patch fixes the problem by ignoring errors only when the device in > question is not a root hub. > > Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > Reported-by: Chen Peter <B29397@xxxxxxxxxxxxx> > CC: <stable@xxxxxxxxxxxxxxx> > > --- > > drivers/usb/core/driver.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > Index: usb-3.3/drivers/usb/core/driver.c > =================================================================== > --- usb-3.3.orig/drivers/usb/core/driver.c > +++ usb-3.3/drivers/usb/core/driver.c > @@ -1189,8 +1189,13 @@ static int usb_suspend_both(struct usb_d > if (status == 0) { > status = usb_suspend_device(udev, msg); > > - /* Again, ignore errors during system sleep transitions */ > - if (!PMSG_IS_AUTO(msg)) > + /* > + * Ignore errors from non-root-hub devices during > + * system sleep transitions. For the most part, > + * these devices should go to low power anyway when > + * the entire bus is suspended. > + */ > + if (udev->parent && !PMSG_IS_AUTO(msg)) > status = 0; > } > > Tested-by: Chen Peter <peter.chen@xxxxxxxxxxxxx> This patch is tested at Freescale MX6 Sabrelite board with v3.0.15 kernel. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html