Re: Regression in audio playback with USB DAC caused by "USB: EHCI: use the new clear_tt_buffer interface"

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

 



On Sun, 15 Nov 2009, Javier Kohen wrote:

> On Sun, Nov 15, 2009 at 04:24, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> > On Sun, 15 Nov 2009, Javier Kohen wrote:
> >
> >> > Two later patches, 914b701280a76f96890ad63eb0fa99bf204b961c and
> >> > 7a0f0d951273eee889c2441846842348ebc00a2a, actually caused the callback
> >> > to be used.  So as long as neither of them is installed, I wouldn't
> >> > expect the first one to make any difference.
> >> >
> >>
> >> I don't know what to tell you. The bisect is clear. I know bisect is not
> >> perfect for troubleshooting, but unless I messed up really bad in the exact
> >> wrong moment, it identifies this patch as the culprit.
> >
> > Hmm.  If necessary, we can try experimenting with this patch to see
> > what happens.  But I can't see how it would cause any difference in
> > behavior at all.  Really, all it does is rename a few items and add a
> > callback that never gets used.
> >
> > Not being a big git user myself, I don't always trust the results of
> > its bisection searches.  Have you tried manually verifying that
> > reverting this patch from a non-working kernel -- with no other
> > changes! -- causes it to start working?
> >
> >> > Can you provide an equivalent trace with the offending patch reverted?
> >> >
> >> >
> >> Sure thing, it's attached to this mail. I've logged it on Debian kernel
> >> 2.6.30-5, which is based off 2.6.30.4. From what I see, the main (only?)
> >> difference is that the broken version talks to device 5 just when this
> >> breaks, while the other doesn't talk to device 5 at all. Device 5 seems to
> >> be an internal component of the hub, though I know nothing about USB
> >> internals. In a previous e-mail I've included the lsusb output hoping that
> >> it could give you more information about this device 5.
> >
> > The "hub" is actually two hubs ganged in series.  The first (device 3)
> > has only two ports, one of which is permanently connected to the second
> > (device 5), which has four ports.  The audio device is plugged into one
> > of them.
> >
> > Just out of curiosity, what does a usbmon trace show when you run the
> > earliest kernel in the bisection to evoke the problem?  That is, a
> > kernel with the patch you identified but not the two follow-on patches.
> > I would expect it to be exactly the same as the "working" trace, since
> > the patch doesn't cause any extra Clear-TT-Buffer requests to be sent.
> >
> > For what it's worth, the two usbmon traces don't show any particular
> > evidence of any problem at all.  The "working" trace shows a lack of
> > messages to device 5 (the hub), as you noticed.  Those messages are
> > Clear-TT-Buffer requests, and they are supposed to get sent whenever an
> > error occurs in an async transfer to a full- or low-speed device behind
> > a high-speed hub (the Clear-TT-Buffer gets sent to the hub; the TT, or
> > Transaction Translator, is the component in the hub responsible for
> > converting between full speed and high speed).
> >
> > The errors were the lines like these:
> >
> > ffff880072773d80 2958351933 S Ci:1:007:0 s a1 83 0200 0300 0002 2 <
> > ffff880072773d80 2958352055 C Ci:1:007:0 -32 0
> >
> > I don't know what "a1 83 0200 0300 0002" means -- some sort of audio
> > class-specific request.  At any rate, the device didn't recognize or
> > didn't respond to the request (the -32 error code), and that's the
> > reason for sending the Clear-TT-Buffer requests.
> >
> > Thus, the "non-working" trace is actually correct and the "working"
> > trace is actually wrong!  But aside from the lack of Clear-TT-Buffer's,
> > I didn't notice any particular difference between them.  In particular,
> > the audio data continued to be sent.  Whether the device received it is
> > another question; with isochronous transfers there's no way to know
> > since they aren't acknowledged by the recipient.
> >
> > Maybe the problem is in the hub, not the in audio device.  That is,
> > perhaps it couldn't handle the Clear-TT-Buffer's and stopped relaying
> > the audio data.  Have you tried using a different high-speed hub?
> 
> I see. That's a likely explanation. However, I don't have any other
> USB hubs. I'll see if I can borrow one from work and report back.
> 
> Thanks for your time. If there is anything else you'd like me to try
> in the meantime, just let me know.

Just the items mentioned above:

	Verify that a kernel with the patch installed fails, then
	revert the patch manually and verify that the resulting
	kernel succeeds.

	Get a usbmon trace with the offending patch present but not
	the two further patches.  Verify that this kernel fails.

Alan Stern

--
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