RE: [PATCH] xHCI: Increase the timeout for controller save state operation

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

 



> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai@xxxxxxx]
> Sent: Wednesday, June 06, 2012 4:00 PM
> To: Xu, Andiry
> Cc: Sarah Sharp; Linux USB; Andiry Xu; Ming Lei; stable@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH] xHCI: Increase the timeout for controller save state
> operation
> 
> At Mon, 4 Jun 2012 16:39:38 +0800,
> Andiry Xu wrote:
> >
> > When system software decides to power down the xHC with the intent of
> > resuming operation at a later time, it will ask xHC to save the internal
> > state and restore it when resume to correctly recover from a power event.
> > Two bits are used to enable this operation: Save State and Restore State.
> >
> > xHCI spec 4.23.2 says software should "Set the Controller Save State(CSS)
> > flag in the USBCMD register and wait for the Save State Status(SSS) flag
> > in the USBSTS register to transition to '0'". However, it does not define
> > how long software should wait for the SSS bit to transition to 0.
> >
> > Currently the timeout is set to 1ms. There is bug report
> > (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1002697)
> > indicates that the timeout is too short for ASMedia ASM1042 host
> controller
> > to save the state successfully. Increase the timeout to 10ms helps to
> > resolve the issue.
> >
> > Signed-off-by: Andiry Xu <andiry.xu@xxxxxxxxx>
> > Cc: Ming Lei <ming.lei@xxxxxxxxxxxxx>
> > Cc: <stable@xxxxxxxxxxxxxxx>
> > ---
> >  drivers/usb/host/xhci.c |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> > index afdc73e..8d446af 100644
> > --- a/drivers/usb/host/xhci.c
> > +++ b/drivers/usb/host/xhci.c
> > @@ -795,7 +795,7 @@ int xhci_suspend(struct xhci_hcd *xhci)
> >  	command = xhci_readl(xhci, &xhci->op_regs->command);
> >  	command |= CMD_CSS;
> >  	xhci_writel(xhci, command, &xhci->op_regs->command);
> > -	if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 10*100)) {
> > +	if (handshake(xhci, &xhci->op_regs->status, STS_SAVE, 0, 100*100)) {
> 
> IMO, 10 * 1000 is clearer as a representation of 10 ms.
> (I guess 10 * 100 was a typo?)
> 

OK. I don't remember why I didn't simply use 1000 in the first place.
Will submit a V2 patch later.

Thanks,
Andiry


--
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