On Fri, 9 Apr 2004, David Brownell wrote:

> The now-more-common state is "sitting on UHCI complete_list".
> Subcases include "unlinked", "shut down", "normal completion",
> and "I/O error".

That's not quite right.  Membership in the complete_list is pretty
short-lived (entirely in_interrupt).  Maybe you're thinking of the
urb_remove_list?  That only includes "unlinked" and "shut down", not the 
other subcases.

> (Neither OHCI nor EHCI have such a state; it comes from the
> QH-per-URB approach.)

I don't think that's right, for either list.  The complete_list itself is 
unnecessary; using it was just a form of optimization in earlier versions 
of the driver (that's my guess).  It meant the driver could avoid 
releasing and reacquiring all those different spinlocks each time it gave 
back an URB.  The need for the urb_remove list arises because the driver 
can only synchronize with the hardware at SOF; when an URB is unlinked it 
has to remain on that list until the next synchronization point.  There's
no connection with QHs.


> > UHCI _had_ implemented disable_endpoint and someone encountered that race 
> > while closing the bluetooth device, it would have been impossible to 
> > reproduce or find the error.
> 
> If it was "impossible" it wouldn't be a problem though would it?  :)

Right, I should have said "nearly impossible" -- that can mean whatever 
you want!

Alan Stern



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to