* [3/3] usb: host: xhci: return early for xhci_urb_dequeue when removing hcd
@ 2018-09-21 1:48 Peter Chen
0 siblings, 0 replies; 2+ messages in thread
From: Peter Chen @ 2018-09-21 1:48 UTC (permalink / raw)
To: mathias.nyman; +Cc: linux-usb, linux-imx, jun.li, Peter Chen
When we are removing hcd, the stop endpoint command may be timeout.
To eliminate the timeout, we'd better return early. The related log
for this timeout like below:
[31.208933] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
[31.214972] usb 3-1-port2: cannot reset (err = -71)
[31.219962] usb 3-1-port2: cannot reset (err = -71)
[31.225069] usb 3-1-port2: cannot reset (err = -71)
[31.230018] usb 3-1-port2: Cannot enable. Maybe the USB cable is bad?
[31.236566] usb 3-1-port2: cannot disable (err = -71)
[31.241745] usb 3-1-port2: unable to enumerate USB device
[31.247255] usb 3-1-port2: cannot disable (err = -71)
[31.252422] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
[31.258486] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
[31.264518] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
[31.270649] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
[31.276723] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
[31.282809] usb 3-1: USB disconnect, device number 2
[31.287859] usb 3-1.1: USB disconnect, device number 3
[31.293076] usb 3-1.1: unregistering device
[31.299292] xhci-hcd xhci-hcd.1.auto: remove, state 4
[31.304416] usb usb4: USB disconnect, device number 1
[31.309566] usb 4-1: USB disconnect, device number 2
[31.314589] usb 4-1: unregistering device
[31.316389] usb 3-1: unregistering device
[31.331131] usb usb4: unregistering device
[31.339809] xhci-hcd xhci-hcd.1.auto: USB bus 4 deregistered
[31.345534] xhci-hcd xhci-hcd.1.auto: remove, state 1
[31.350668] usb usb3: USB disconnect, device number 1
[36.407457] xhci-hcd xhci-hcd.1.auto: xHCI host not responding to stop endpoint command.
[36.423638] xhci-hcd xhci-hcd.1.auto: xHCI host controller not responding, assume dead
[36.436502] usb usb3: unregistering device
[36.445429] xhci-hcd xhci-hcd.1.auto: USB bus 3 deregistered
Signed-off-by: Peter Chen <peter.chen@nxp.com>
---
drivers/usb/host/xhci.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 3113938063fd..1bcf27a9737d 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -1601,7 +1601,8 @@ static int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
goto err_giveback;
}
- if (xhci->xhc_state & XHCI_STATE_HALTED) {
+ if (xhci->xhc_state & XHCI_STATE_HALTED ||
+ xhci->xhc_state & XHCI_STATE_REMOVING) {
xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb,
"HC halted, freeing TD manually.");
for (i = urb_priv->num_tds_done;
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [3/3] usb: host: xhci: return early for xhci_urb_dequeue when removing hcd
@ 2018-09-21 9:01 Sergei Shtylyov
0 siblings, 0 replies; 2+ messages in thread
From: Sergei Shtylyov @ 2018-09-21 9:01 UTC (permalink / raw)
To: Peter Chen, mathias.nyman; +Cc: linux-usb, linux-imx, jun.li
On 9/21/2018 4:48 AM, Peter Chen wrote:
> When we are removing hcd, the stop endpoint command may be timeout.
> To eliminate the timeout, we'd better return early. The related log
> for this timeout like below:
>
> [31.208933] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
> [31.214972] usb 3-1-port2: cannot reset (err = -71)
> [31.219962] usb 3-1-port2: cannot reset (err = -71)
> [31.225069] usb 3-1-port2: cannot reset (err = -71)
> [31.230018] usb 3-1-port2: Cannot enable. Maybe the USB cable is bad?
> [31.236566] usb 3-1-port2: cannot disable (err = -71)
> [31.241745] usb 3-1-port2: unable to enumerate USB device
> [31.247255] usb 3-1-port2: cannot disable (err = -71)
> [31.252422] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
> [31.258486] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
> [31.264518] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
> [31.270649] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
> [31.276723] hub 3-1:1.0: hub_ext_port_status failed (err = -71)
> [31.282809] usb 3-1: USB disconnect, device number 2
> [31.287859] usb 3-1.1: USB disconnect, device number 3
> [31.293076] usb 3-1.1: unregistering device
> [31.299292] xhci-hcd xhci-hcd.1.auto: remove, state 4
> [31.304416] usb usb4: USB disconnect, device number 1
> [31.309566] usb 4-1: USB disconnect, device number 2
> [31.314589] usb 4-1: unregistering device
> [31.316389] usb 3-1: unregistering device
> [31.331131] usb usb4: unregistering device
> [31.339809] xhci-hcd xhci-hcd.1.auto: USB bus 4 deregistered
> [31.345534] xhci-hcd xhci-hcd.1.auto: remove, state 1
> [31.350668] usb usb3: USB disconnect, device number 1
> [36.407457] xhci-hcd xhci-hcd.1.auto: xHCI host not responding to stop endpoint command.
> [36.423638] xhci-hcd xhci-hcd.1.auto: xHCI host controller not responding, assume dead
> [36.436502] usb usb3: unregistering device
> [36.445429] xhci-hcd xhci-hcd.1.auto: USB bus 3 deregistered
>
> Signed-off-by: Peter Chen <peter.chen@nxp.com>
> ---
> drivers/usb/host/xhci.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> index 3113938063fd..1bcf27a9737d 100644
> --- a/drivers/usb/host/xhci.c
> +++ b/drivers/usb/host/xhci.c
> @@ -1601,7 +1601,8 @@ static int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
> goto err_giveback;
> }
>
> - if (xhci->xhc_state & XHCI_STATE_HALTED) {
> + if (xhci->xhc_state & XHCI_STATE_HALTED ||
> + xhci->xhc_state & XHCI_STATE_REMOVING) {
This way this line blends with the branch below, could you indent either
with 2 tabs (I think it's the style preferred in the USB code) or starting the
continuation line under xhci on the previous line.
> xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb,
> "HC halted, freeing TD manually.");
> for (i = urb_priv->num_tds_done;
>
MBR, Sergei
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-09-21 9:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-21 1:48 [3/3] usb: host: xhci: return early for xhci_urb_dequeue when removing hcd Peter Chen
-- strict thread matches above, loose matches on Subject: below --
2018-09-21 9:01 Sergei Shtylyov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).