I hate seeing oops traces that look familiar ... this being
the one where the rh_send_irq() code got a bogus pointer to
an OHCI controller, so it's not surprising that it oopsed
when accessing a non-existent root hub port on it.

I attach a patch that tries to detect such cases a bit earlier
in the call chain.  It should help a bit to determine whether
this is happening because of a bug inside the OHCI driver (it's
causing the bogus pointer itself) or outside (maybe some other
component trashed the timer callback).

Please try this patch and lets see if it gives better information.
It behaves on my hardware, which doesn't see such Oopsen.

- Dave


> *pde = 00000000
> Oops: 0000
> CPU: 0
> EIP: 0010:[<c587ece1>]
> Using defaults from ksymoops -t elf32-i386 -a i386
> EFLAGS: 00010292
> eax: 14c589f4 ebx: 00000068 ecx: 0000009e edx: 00000000
> esi: 0000000c edi: c0289f1c ebp: 00000061 esp: c0289ef8
> ds: 0018 es: 0018 ss: 0018
> Stack: c1e4c540 00000000 c02e06a0 c587ed7c 00000001 00000001 c0289f1e
> 00002a1b
>        000000ff ffffffff ffffffff ffffffff c1f0e001 c1e4d8e8 00000001
> c1e4c540
>        c0121441 c1e4c540 00000000 00000000 c02e06a0 c02e0660 00000000
> c010f158
> Call trace: [<c587ed7c>] [<c012144c>] [<c010f158>] [<c011e253>]
> [<c011e1b0>] 
>             [<c011e0af>] [<c010c40e>] [<c0108c40>] [<c0108c40>]
> [<c010b2f8>] 
>             [<c0108c40>] [<c0108c40>] [<c0100018>] [<c0108c63>]
> [<c0108ca4>] 
>             [<c0105000>] [<c010018d>]
> Code: 8b 00 a9 00 00 1f 00 74 16 b8 01 00 00 00 8b 4c 24 10 d3 e0
> 
> >>EIP; c587ece1 <[usb-ohci]rh_send_irq+c5/160>   <=====
> Trace; c587ed7c <[usb-ohci]rh_int_timer_do+0/54>
> Trace; c012144c <timer_bh+26c/2a8>
> Trace; c010f158 <timer_interrupt+84/f0>
> Trace; c011e253 <bh_action+1b/60>
> Trace; c011e1b0 <tasklet_hi_action+38/60>
> Trace; c011e0af <do_softirq+4f/70>
> Trace; c010c40e <do_IRQ+a6/b8>
> Trace; c0108c40 <default_idle+0/28>
> Trace; c0108c40 <default_idle+0/28>
> Trace; c010b2f8 <ret_from_intr+0/20>
> Trace; c0108c40 <default_idle+0/28>
> Trace; c0108c40 <default_idle+0/28>
> Trace; c0100018 <startup_32+18/135>
> Trace; c0108c63 <default_idle+23/28>
> Trace; c0108ca4 <cpu_idle+3c/50>
> Trace; c0105000 <empty_bad_page+0/1000>
> Trace; c010018d <L6+0/2>
> Code;  c587ece1 <[usb-ohci]rh_send_irq+c5/160>
> 00000000 <_EIP>:
> Code;  c587ece1 <[usb-ohci]rh_send_irq+c5/160>   <=====
>    0:   8b 00                     mov    (%eax),%eax   <=====
> Code;  c587ece3 <[usb-ohci]rh_send_irq+c7/160>
>    2:   a9 00 00 1f 00            test   $0x1f0000,%eax
> Code;  c587ece8 <[usb-ohci]rh_send_irq+cc/160>
>    7:   74 16                     je     1f <_EIP+0x1f> c587ed00
> <[usb-ohci]rh_send_irq+e4/160>
> Code;  c587ecea <[usb-ohci]rh_send_irq+ce/160>
>    9:   b8 01 00 00 00            mov    $0x1,%eax
> Code;  c587ecef <[usb-ohci]rh_send_irq+d3/160>
>    e:   8b 4c 24 10               mov    0x10(%esp,1),%ecx
> Code;  c587ecf3 <[usb-ohci]rh_send_irq+d7/160>
>   12:   d3 e0                     shl    %cl,%eax
>  

ohci-paranoid.patch

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to