Jaakko Niemi wrote:
I have couple different problems with two different Edgeport boxes,
which are hooked into a Dell PowerEdge 1750 with ServerWorks OSB4/CSB5
ohci usb controller, running 2.4.26 without any patches.
First, with older Edgeport/8, if I try to access any of /dev/ttyUSBx
devices, the machine hangs hard.
...
ksymoops 2.4.9 on i686 2.4.26es. Options used
...
NMI Watchdog detected LOCKUP on CPU1, eip f8b9cedb, registers:
...
EIP; f8b9cedb <[usb-ohci].text.lock.usb_ohci+6/74> <=====
...
Trace; f8b8766d <[usbcore]usb_submit_urb+3d/40>
Trace; f8ba7910 <[io_edgeport]edge_interrupt_callback+110/340>
Trace; f8bac83c <[io_edgeport].rodata.end+61/2325>
Trace; f8bac855 <[io_edgeport].rodata.end+7a/2325>
Trace; f8b994b0 <[usb-ohci]sohci_return_urb+f0/120>
Trace; f8b9b91a <[usb-ohci]dl_done_list+ca/110>
Trace; f8b9c6bd <[usb-ohci]hc_interrupt+1ad/220>
Trace; c01097c9 <handle_IRQ_event+79/b0>
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.
-- Al
-------------------------------------------------------
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