Commit ed3d7f66 authored by Kamal Mostafa's avatar Kamal Mostafa Committed by Stefan Bader

UBUNTU: SAUCE: xhci: Fix soft lockup in xhci_pci_probe path when XHCI_STATE_HALTED

Commit 27a41a83 ("xhci: Cleanup only when releasing primary hcd")
causes a soft lockup at boot when XHCI_STATE_HALTED, preventing
VirtualBox 5.1.x from booting if USB3.0 is enabled.

Revert to allowing xhci_irq to handle the interrupt when
XHCI_STATE_HALTED but not XHCI_STATE_DYING.

Fixes: 27a41a83 ("xhci: Cleanup only when releasing primary hcd")
BugLink: https://bugs.launchpad.net/bugs/1604058Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
Cc: <stable@vger.kernel.org> #v4.3+
Cc: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Acked-by: default avatarTim Gardner <tim.gardner@canonical.com>
Acked-by: default avatarStefan Bader <stefan.bader@canonical.com>
parent fc3bda55
......@@ -2744,8 +2744,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd)
writel(irq_pending, &xhci->ir_set->irq_pending);
}
if (xhci->xhc_state & XHCI_STATE_DYING ||
xhci->xhc_state & XHCI_STATE_HALTED) {
if (xhci->xhc_state & XHCI_STATE_DYING) {
xhci_dbg(xhci, "xHCI dying, ignoring interrupt. "
"Shouldn't IRQs be disabled?\n");
/* Clear the event handler busy flag (RW1C);
......@@ -2757,6 +2756,8 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd)
spin_unlock(&xhci->lock);
return IRQ_HANDLED;
} else if (xhci->xhc_state & XHCI_STATE_HALTED) {
xhci_dbg(xhci, "xHCI halted, handling interrupt.\n");
}
event_ring_deq = xhci->event_ring->dequeue;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment