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