On Tue, Jun 15, 2004, Al Borchers <[EMAIL PROTECTED]> wrote:
> Skimming through the usb-ohci.c code quickly, it seems that OHCI
> calls the interrupt urb completion handlers for periodic interrupt
> urbs with its ohci_t ohci_lock spin lock held.  (See hc_interrupt,
> dl_done_list, and sohci_return_urb.)
> 
> The edgeport interrupt completion handler then calls usb_submit_urb
> to submit an urb on the bulk in endpoint.  But OHCI tries to get
> the ohci_lock again in submitting the urb (see sohci_submit_urb).
> Thats the deadlock.
> 
> The edgeport interrupt completion handler needs to postpone the
> call to usb_submit_urb until it is not in an interrupt.  (Another
> solution would be to change the edgeport interrupt urb into a
> one-shot urb and manually resubmit the interrupt urb.)
> 
> I will make this change and try to test it out on OHCI.

UHCI had a similar problem. We just created a list of completions and
added the URB to that list and then called the completions later in the
interrupt with no locks held.

JE



-------------------------------------------------------
This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference
Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer
Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA
REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to