USB audio issue on xhci

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[OK, moved now to linux-usb ML...]

At Fri, 11 Feb 2011 10:44:57 -0800,
Sarah Sharp wrote:
> 
> On Fri, Feb 11, 2011 at 11:11:29AM +0100, Takashi Iwai wrote:
> > Actually the audio on xhci seems broken, so far.
> > Recently I tested usb audio devices with xhci on new HP laptops, and
> > got several different errors per kernel versions.
> 
> I would be interested if you could send those errors to the linux-usb
> mailing list and Cc me.
> 
> > I had no time to dig into the issue yet, but if it's related with
> > bandwidth setup, we'd need definitely to work on it together.
> 
> The HP laptops have an NEC host controller in them, and I have heard
> some complaints about their isoc support.  They do have a firmware update
> that improves that support, so you may want to google around for that.
> 
> The other issue is the xHCI driver design.  Currently, with 0.96 xHCI
> hardware, we get multiple interrupts per isoc URB (as many interrupts as
> there are isoc buffers).  I have a work around in mind, but it involves
> updating the xHCI ring code, which is always somewhat hairy and may take
> a month or so.  However, for xHCI 1.0 host controllers, the spec
> architects have made some improvements that will easily allow us to get
> less interrupts (once per URB, or even less if the driver submits
> several URBs and marks some of them with the URB_NO_INTERRUPT flag).
> That only involves setting one bit, so that would be an easy one day
> fix.
> 
> Then there's the fact that the xHCI driver's ring code is recursive. :(
> I wrote it at 3 in the morning a couple days before a demo, and I really
> need to fix that ASAP.  There's also still performance issues, like
> register reads in the interrupt path that really should be removed.
> 
> But we should really pull in the linux-usb mailing list into any further
> discussion of this. :)

Looking down more at the errors, it seems that the controller stalls
after some point.  First, "short transfer on control ep" comes up once
or twice:

[ 1391.490134] xhci_hcd 0000:27:00.0: WARN: short transfer on control ep
[ 1391.479142] xhci_hcd 0000:27:00.0: WARN: short transfer on control ep

Then it starts "Stalled endpoint":

[ 1391.498122] xhci_hcd 0000:27:00.0: WARN: Stalled endpoint
[ 1391.505114] xhci_hcd 0000:27:00.0: WARN: Stalled endpoint
[ 1391.512114] xhci_hcd 0000:27:00.0: WARN: Stalled endpoint
...

At each time a stall happens, 3 trbs are queued up and pending.  So,
after repeating this cycle, it finally reaches to "no room":

[ 1401.120101] xhci_hcd 0000:27:00.0: ERROR no room on ep ring

The behavior looks consistent no matter which kernel version is used
between 2.6.32 and 2.6.38-rc5.  So, the problem is before isoc things,
but in other points.

FWIW, the ring causing this error is no ctrl but slot 1 ep 0.

I tested with two USB audio 1.x devices, and both show the similar
behavior.

Can this be a better hint for further looking?


thanks,

Takashi
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux