On Fri, 3 Jun 2005, Stuart MacDonald wrote:

> Why doesn't queueing work?

Sorry, I don't know.  :-(  My knowledge of the 2.4 uhci driver is limited 
to the extent that it resembles the 2.6 uhci-hcd driver.  I've never 
seriously considered trying to maintain or improve it.

> Rhetorical mostly, :-) but if you happen to have an answer, I'm
> willing to make a patch.
> 
> The only guess I was able to come up with is that there's a race
> between uhci_submit_urb() and its callees uhci_submit_bulk() &
> uhci_append_queued_urb() and uhci_interrupt() and its callees that
> causes the "Chain of QHs and TDs" to be such that the hardware thinks
> the chain is done, but that the driver things the chain is running.
> 
> I did see that uhci_interrupt() stops entering ie interrupts have
> stopped being generated, but not due to lockup since the system was
> fine, and I could reload my driver and have it communicate again.

I don't even know whether there's a flagrant error in the code or a subtle 
race.

However, there is one possibility...  Older Intel UHCI hardware (the PIIX3
Neptune chipset) has an erratum that causes the controller sometimes to
update a completed TD's status but not update the QH's element pointer.  
As a result the controller remains stuck on the completed TD and never
advances to the next one.  Could that be happening to you?  You can find
out by building the driver with CONFIG_USB_DEBUG turned on and loading it
with

        modprobe uhci debug=3

Then the file under /proc/driver/uhci/ corresponding to the controller in
use will contain debugging information showing the current state of the
schedule.  If you examine that while the queue is stopped you'll be able
to see exactly what's wrong.

Of course this particular erratum would also affect transfers that don't 
use bulk queuing...

> Please don't spend any time on this on my behalf; I've already worked
> around it.

Okay, I won't.

Alan Stern



-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to