All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathias Nyman <mathias.nyman@intel.com>
To: Alistair Grant <akgrant0710@gmail.com>,
	Mathias Nyman <mathias.nyman@linux.intel.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>,
	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 16:47:55 +0200	[thread overview]
Message-ID: <5506ED1B.9020503@intel.com> (raw)
In-Reply-To: <CA+GUGJ0GjROHnMMMbRwLV7Qt2OMVe1_pTruNuw6qti0qH9a-rQ@mail.gmail.com>

On 16.03.2015 16:31, Alistair Grant wrote:
> On Mon, Mar 16, 2015 at 1:55 PM, Mathias Nyman
> <mathias.nyman@linux.intel.com> wrote:
>> 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
>>
> 
> Hi Mathias,
> 
> This is on top of 3.19.1 with only the XHCI_AVOID_BEI quirk patch applied.
> 
> If you'd like me to try it against 4.0-rc3, 4 or 5, please let me know.

Thanks, no that's not needed. 
But did the patch cause regression on top of 3.19.1?
I mean, did it make 3.19.1  worse, better or just different for you, while
booting with the device connected?

-Mathias

  reply	other threads:[~2015-03-16 14:46 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
2015-03-16 14:31         ` Alistair Grant
2015-03-16 14:47           ` Mathias Nyman [this message]
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=5506ED1B.9020503@intel.com \
    --to=mathias.nyman@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@linux.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.