]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
xhci: don't try to reset the host if it is unaccessible
authorMathias Nyman <mathias.nyman@linux.intel.com>
Fri, 11 Nov 2016 13:13:12 +0000 (15:13 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 14 Nov 2016 09:18:21 +0000 (10:18 +0100)
There is no point in trying to reset the host controller by writing
to its registers if host is removed and registers just return 0xffffffff

bail out and return -ENODEV instead

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci.c

index b503189b98b04aa769136ef1e02a3c58cce80010..641663f18fdb032380aa9ab61be22591a6814d4b 100644 (file)
@@ -167,6 +167,12 @@ int xhci_reset(struct xhci_hcd *xhci)
        int ret, i;
 
        state = readl(&xhci->op_regs->status);
+
+       if (state == ~(u32)0) {
+               xhci_warn(xhci, "Host not accessible, reset failed.\n");
+               return -ENODEV;
+       }
+
        if ((state & STS_HALT) == 0) {
                xhci_warn(xhci, "Host controller not halted, aborting reset.\n");
                return 0;
@@ -690,7 +696,6 @@ void xhci_stop(struct usb_hcd *hcd)
                xhci->cmd_ring_state = CMD_RING_STATE_STOPPED;
                xhci_halt(xhci);
                xhci_reset(xhci);
-
                spin_unlock_irq(&xhci->lock);
        }