From: Mathias Nyman <mathias.nyman@intel.com>
To: Alistair Grant <akgrant0710@gmail.com>
Cc: Mathias Nyman <mathias.nyman@linux.intel.com>,
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 18:29:58 +0200 [thread overview]
Message-ID: <55070506.8010205@intel.com> (raw)
In-Reply-To: <CA+GUGJ2OvBLxOCZL064JcYk2BzndRfecFeRiTzKCi9gWe5dFQA@mail.gmail.com>
On 16.03.2015 17:21, Alistair Grant wrote:
> On Mon, Mar 16, 2015 at 3:47 PM, Mathias Nyman <mathias.nyman@intel.com> wrote:
>> 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?
>
> Recording doesn't work at all with 3.19.1 without the patch. I've
> included an extract from syslog below of attempting to record with a
> clean 3.19.1 system (i.e. XHCI_AVOID_BEI quirk patch NOT applied, to
> state the obvious).
>
> I did mean to say in my original message that I would still release
> this patch even with the current known issue as it still improves the
> overall stability of the system.
>
Ok, thanks
I'll add it to the queue
-Mathias
next prev parent reply other threads:[~2015-03-16 16:28 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
2015-03-16 15:21 ` Alistair Grant
2015-03-16 16:29 ` Mathias Nyman [this message]
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=55070506.8010205@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 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).