USB: xhci: Stop debugging polling loop when HC dies.
[firefly-linux-kernel-4.4.55.git] / drivers / usb / host / xhci-hcd.c
index 99911e727e0b7950e4a11dec17bb17f08151e5e4..8719a3f6851d0c8465e3bca972e3b408ddf292a8 100644 (file)
@@ -335,6 +335,12 @@ void xhci_event_ring_work(unsigned long arg)
        spin_lock_irqsave(&xhci->lock, flags);
        temp = xhci_readl(xhci, &xhci->op_regs->status);
        xhci_dbg(xhci, "op reg status = 0x%x\n", temp);
+       if (temp == 0xffffffff) {
+               xhci_dbg(xhci, "HW died, polling stopped.\n");
+               spin_unlock_irqrestore(&xhci->lock, flags);
+               return;
+       }
+
        temp = xhci_readl(xhci, &xhci->ir_set->irq_pending);
        xhci_dbg(xhci, "ir_set 0 pending = 0x%x\n", temp);
        xhci_dbg(xhci, "No-op commands handled = %d\n", xhci->noops_handled);