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

Reply via email to