I am working on a USB driver for an Irda dongle and getting perodic
oops, that look like a race in the unlink urb code. The machine is
a 2 cpu SMP running 2.6.2-rc2 (ie latest code).
Since the device and IRDA are basically half duplex, the driver is
doing the following (in a kernel thread).
Post receive interrupt urb
...
Unlink receive urb
Transmit...
I am using synchronous unlink because the transmit can't start until the
receive has aborted.
Any clues as to where to go from here on this problem?
--------------------------------------------------------------
Oops: 0002 [#1]
CPU: 0
EIP: 0060:[<f9bcbb47>] Not tainted
EFLAGS: 00010083
EIP is at uhci_remove_pending_qhs+0x69/0x19c [uhci_hcd]
eax: e5d24614 ebx: 6b6b6b6b ecx: 6b6b6b6b edx: 6b6b6b6b
esi: 0000d000 edi: f08b6e30 ebp: c03f1ee4 esp: c03f1eb0
ds: 007b es: 007b ss: 0068
Process swapper (pid: 0, threadinfo=c03f0000 task=c0394fa0)
Stack: f08b6e10 c03f1ee4 f08b6e28 f08b6bf8 f08b6e18 00000282 f08b6e20 f08b6e10
b604161a 00000000 00000000 0000d000 f08b6bf8 c03f1f14 f9bcbd07 f08b6bf8
00000001 c03f1f04 c012d6a1 00000001 c03f1f8c c03f1f2c f08b6bf8 00000001
Call Trace:
[<f9bcbd07>] uhci_irq+0x8d/0x217 [uhci_hcd]
[<c012d6a1>] do_timer+0x50/0xd2
[<f9bae99c>] usb_hcd_irq+0x35/0x5c [usbcore]
[<c010d482>] handle_IRQ_event+0x39/0x62
[<c010d8e6>] do_IRQ+0xdd/0x230
[<c01187fb>] smp_apic_timer_interrupt+0xe2/0x155
[<c0105000>] _stext+0x0/0x7e
[<c010bb40>] common_interrupt+0x18/0x20
[<c0108b99>] default_idle+0x0/0x31
[<c0105000>] _stext+0x0/0x7e
[<c0108bc5>] default_idle+0x2c/0x31
[<c0108c33>] cpu_idle+0x31/0x3f
[<c03f2892>] start_kernel+0x1ad/0x1fe
[<c03f242e>] unknown_bootoption+0x0/0x105
Code: 89 53 04 89 1a 89 40 04 89 00 c7 41 24 98 ff ff ff c7 40 20
<0>Kernel panic: Fatal exception in interrupt
In interrupt handler - not syncing
-----------
00004ade <uhci_remove_pending_qhs>:
4ade: 55 push %ebp
4adf: 89 e5 mov %esp,%ebp
4ae1: 57 push %edi
4ae2: 56 push %esi
4ae3: 53 push %ebx
4ae4: 83 ec 28 sub $0x28,%esp
4ae7: 9c pushf
4ae8: 8f 45 e0 popl 0xffffffe0(%ebp)
4aeb: fa cli
4aec: 8b 45 08 mov 0x8(%ebp),%eax
4aef: 05 20 02 00 00 add $0x220,%eax
4af4: 89 45 dc mov %eax,0xffffffdc(%ebp)
4af7: 81 78 04 ad 4e ad de cmpl $0xdead4ead,0x4(%eax)
4afe: 0f 85 2e 01 00 00 jne 4c32 <uhci_remove_pending_qhs+0x1
54>
4b04: 8b 55 08 mov 0x8(%ebp),%edx
4b07: f0 fe 8a 20 02 00 00 lock decb 0x220(%edx)
4b0e: 0f 88 a3 11 00 00 js 5cb7 <.text.lock.uhci_hcd+0x210>
4b14: 8b 45 08 mov 0x8(%ebp),%eax
4b17: 81 c2 28 02 00 00 add $0x228,%edx
4b1d: 89 55 e4 mov %edx,0xffffffe4(%ebp)
4b20: 8b 98 28 02 00 00 mov 0x228(%eax),%ebx
4b26: 39 d3 cmp %edx,%ebx
4b28: 0f 84 9b 00 00 00 je 4bc9 <uhci_remove_pending_qhs+0xe
b>
4b2e: 8d 90 30 02 00 00 lea 0x230(%eax),%edx
4b34: 8d b8 38 02 00 00 lea 0x238(%eax),%edi
4b3a: 89 55 d4 mov %edx,0xffffffd4(%ebp)
4b3d: 89 d8 mov %ebx,%eax
4b3f: 8b 4b 08 mov 0x8(%ebx),%ecx
4b42: 8b 1b mov (%ebx),%ebx
4b44: 8b 50 04 mov 0x4(%eax),%edx
4b47: 89 53 04 mov %edx,0x4(%ebx)
Looks like the entry in the remove list was free and
is marked as poisoned.
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel