On Thu, Mar 12, 2015 at 11:15 AM, Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> wrote: > When a device with an isochronous endpoint is plugged into the Intel > xHCI host controller, and the driver submits multiple frames per URB, > the xHCI driver will set the Block Event Interrupt (BEI) flag on all > but the last TD for the URB. This causes the host controller to place > an event on the event ring, but not send an interrupt. When the last > TD for the URB completes, BEI is cleared, and we get an interrupt for > the whole URB. > > However, under Intel xHCI host controllers, if the event ring is full > of events from transfers with BEI set, an "Event Ring is Full" event > will be posted to the last entry of the event ring, but no interrupt > is generated. Host will cease all transfer and command executions and > wait until software completes handling the pending events in the event > ring. That means xHC stops, but event of "event ring is full" is not > notified. As the result, the xHC looks like dead to user. > > This patch is to apply XHCI_AVOID_BEI quirk to Intel xHC devices. And > it should be backported to kernels as old as 3.0, that contains the > commit 69e848c2090a ("Intel xhci: Support EHCI/xHCI port switching."). > > Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > --- > drivers/usb/host/xhci-pci.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c > index fd53c9e..2af32e2 100644 > --- a/drivers/usb/host/xhci-pci.c > +++ b/drivers/usb/host/xhci-pci.c > @@ -115,6 +115,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) > if (pdev->vendor == PCI_VENDOR_ID_INTEL) { > xhci->quirks |= XHCI_LPM_SUPPORT; > xhci->quirks |= XHCI_INTEL_HOST; > + xhci->quirks |= XHCI_AVOID_BEI; > } > if (pdev->vendor == PCI_VENDOR_ID_INTEL && > pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) { > @@ -130,7 +131,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) > * PPT chipsets. > */ > xhci->quirks |= XHCI_SPURIOUS_REBOOT; > - xhci->quirks |= XHCI_AVOID_BEI; > } > if (pdev->vendor == PCI_VENDOR_ID_INTEL && > pdev->device == PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI) { > -- > 2.1.0 > > -- This works for me... Computer: Dell XPS13 9333 USB controller: Intel Corporation 8 Series USB xHCI HC (rev 04) (prog-if 30 [XHCI]) Kernel: 3.19.1 USB Device: Hauppauge USB-Live2 Please let me know if I can help in any other way. Tested-by: Alistair Grant <akgrant0710@xxxxxxxxx> Thanks! Alistair -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html