linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mathias Nyman <mathias.nyman@linux.intel.com>
To: Alistair Grant <akgrant0710@gmail.com>,
	Lu Baolu <baolu.lu@linux.intel.com>,
	Mathias Nyman <mathias.nyman@intel.com>
Cc: Devin Heitmueller <dheitmueller@kernellabs.com>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/1] usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers
Date: Mon, 16 Mar 2015 14:55:24 +0200	[thread overview]
Message-ID: <5506D2BC.9070001@linux.intel.com> (raw)
In-Reply-To: <CA+GUGJ1OiqMHcT8my4-nHBQ5-T-sGOqaf2HHi7YaeaJk-kUJ=g@mail.gmail.com>

On 15.03.2015 21:18, Alistair Grant wrote:
> On Sun, Mar 15, 2015 at 3:54 PM, Alistair Grant <akgrant0710@gmail.com> wrote:
>> On Thu, Mar 12, 2015 at 8:14 PM, Alistair Grant <akgrant0710@gmail.com> wrote:
>>> On Thu, Mar 12, 2015 at 11:15 AM, Lu Baolu <baolu.lu@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.lu@linux.intel.com>
>>>> Cc: stable@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 <akgrant0710@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


  reply	other threads:[~2015-03-16 12:54 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-12 10:15 [PATCH v2 1/1] usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers Lu Baolu
2015-03-12 19:14 ` Alistair Grant
2015-03-15 14:54   ` Alistair Grant
2015-03-15 19:18     ` Alistair Grant
2015-03-16 12:55       ` Mathias Nyman [this message]
2015-03-16 14:31         ` Alistair Grant
2015-03-16 14:47           ` Mathias Nyman
2015-03-16 15:21             ` Alistair Grant
2015-03-16 16:29               ` Mathias Nyman
2015-03-17 15:21                 ` Alistair Grant
2015-03-12 19:36 ` Devin Heitmueller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5506D2BC.9070001@linux.intel.com \
    --to=mathias.nyman@linux.intel.com \
    --cc=akgrant0710@gmail.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=dheitmueller@kernellabs.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).