> xhci driver does exactly this, but fails to stop the command ring while > trying to abort the command TRB. > > Does increasing the timeout for stopping command ring help? > > diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c > index f5b0e1ce22af..6cecbca34cca 100644 > --- a/drivers/usb/host/xhci-ring.c > +++ b/drivers/usb/host/xhci-ring.c > @@ -397,7 +397,7 @@ static int xhci_abort_cmd_ring(struct xhci_hcd *xhci, unsigned long flags) > * and try to recover a -ETIMEDOUT with a host controller reset. > */ > ret = xhci_handshake(&xhci->op_regs->cmd_ring, > - CMD_RING_RUNNING, 0, 5 * 1000 * 1000); > + CMD_RING_RUNNING, 0, 10 * 1000 * 1000); > if (ret < 0) { > xhci_err(xhci, "Abort failed to stop command ring: %d\n", ret); > xhci_halt(xhci); Well, for us it doesn't really help as it still ends the life of the HC, but it doesn't solve the issue either (you can see the 10 second timeout here). Feb 24 13:11:53 AW24-002133 kernel: usb 3-2.4: new full-speed USB device number 16 using xhci_hcd Feb 24 13:12:08 AW24-002133 kernel: xhci_hcd 0002:01:00.0: Abort failed to stop command ring: -110 Feb 24 13:12:08 AW24-002133 kernel: xhci_hcd 0002:01:00.0: xHCI host controller not responding, assume dead Feb 24 13:12:08 AW24-002133 kernel: xhci_hcd 0002:01:00.0: HC died; cleaning up Feb 24 13:12:08 AW24-002133 kernel: xhci_hcd 0002:01:00.0: Timeout while waiting for setup device command Feb 24 13:12:08 AW24-002133 kernel: usb 3-1: USB disconnect, device number 2 Feb 24 13:12:08 AW24-002133 kernel: usb 4-1: USB disconnect, device number 2 Feb 24 13:12:08 AW24-002133 kernel: usb 4-2: USB disconnect, device number 3 Feb 24 13:12:08 AW24-002133 kernel: usb 3-2: USB disconnect, device number 3 Feb 24 13:12:09 AW24-002133 kernel: usb 3-2.4: device not accepting address 16, error -108 Feb 24 13:12:09 AW24-002133 kernel: usb 3-2-port4: couldn't allocate usb_device Also 10 seconds with interrupts disabled causes its own problems (5 seconds is an eternity with interrupts off in itself...). > Thanks > -Mathias