RE: [PATCH] USB: don't ignore suspend errors for root hubs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 
> 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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux