On 15.03.2015 21:18, Alistair Grant wrote: > On Sun, Mar 15, 2015 at 3:54 PM, Alistair Grant <akgrant0...@gmail.com> wrote: >> On Thu, Mar 12, 2015 at 8:14 PM, Alistair Grant <akgrant0...@gmail.com> >> wrote: >>> On Thu, Mar 12, 2015 at 11:15 AM, Lu Baolu <baolu...@linux.intel.com> 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...@linux.intel.com> >>>> Cc: sta...@vger.kernel.org >>>> --- >>>> 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 <akgrant0...@gmail.com> >> >> Just FYI... >> >> I was able to test this on a slightly older laptop that had both USB2 >> and USB3 ports and can confirm that it also works there: >> >> 00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset >> Family USB xHCI Host Controller (rev 04) > > It looks like I may have signed-off a little too soon. While the patch is > working correctly if the Hauppauge Live2 is plugged in after the system has > booted and settled down (my normal use case), it fails if the Live2 is > plugged in while the system is booted up. > > Unplugging the Live2 after recording (which appears to succeed from the > command line, but had no audio), executing lsusb just hangs. > > I've included what I think is the relevant portions of /var/log/syslog > below. If you'd like the entire log file posted somewhere please let me > know.
Hi What kernel did you try this patch on? The output look a bit like the regression in 4.0-rc3 caused by: commit 27082e2654dc148078b0abdfc3c8e5ccbde0ebfa xhci: Clear the host side toggle manually when endpoint is 'soft reset' which will be reverted (in 4.0-rc5 I hope). If you boot the same base kernel without the patch does it work then? -Mathias -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html