RE: Easily reproducible Linux 3.3.2 Oops in ehci_work().

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Added -fno-inline and debug to the usb-code.

Unable to handle kernel paging request for data at address 0xbdb398b8
Faulting instruction address: 0xc01e1c7c
Oops: Kernel access of bad area, sig: 11 [#1]
PREEMPT ASP8347E
Modules linked in:
NIP: c01e1c7c LR: c01e20d0 CTR: 00000008
REGS: c3ff7d90 TRAP: 0300   Not tainted  (3.3.2)
MSR: 00001032 <ME,IR,DR,RI>  CR: 28082282  XER: 20000000
DAR: bdb398b8, DSISR: 22000000
TASK = c3a1a000[2236] 'cap' THREAD: c31da000
GPR00: 00000000 c3ff7e40 c3a1a000 bdb398ac c3139840 00000000 ffffffee ffffffb9 
GPR08: ffffffb5 00000000 ffa9ffff c337f07c 28082224 1001a448 000000ec bfde0394 
GPR16: c39cd0ec 00000000 c3a0d8ec 00000000 0000003b c337f000 c0377ad4 00000fff 
GPR24: 000001e0 00000000 000001d8 c0377afc 00000000 c3149780 c38958d8 c337f000 
NIP [c01e1c7c] itd_complete+0x170/0x25c
LR [c01e20d0] scan_periodic+0x144/0x494
Call Trace:
[c3ff7e40] [c01e1be0] itd_complete+0xd4/0x25c (unreliable)
[c3ff7e60] [c01e20d0] scan_periodic+0x144/0x494
[c3ff7ec0] [c01e248c] ehci_work+0x6c/0xc4
[c3ff7ed0] [c01e437c] ehci_irq+0x310/0x3d0
[c3ff7f70] [c01cbac8] usb_hcd_irq+0x44/0x6c
[c3ff7f80] [c00597f8] handle_irq_event_percpu+0x74/0x1b0
[c3ff7fc0] [c0059988] handle_irq_event+0x54/0x90
[c3ff7fe0] [c005c120] handle_level_irq+0xa0/0x114
[c3ff7ff0] [c000dd10] call_handle_irq+0x18/0x28
[c31dbf10] [c0005784] do_IRQ+0xe0/0x138
[c31dbf40] [c000fb24] ret_from_except+0x0/0x14
--- Exception: 501 at 0xff20708
    LR = 0xff20660
Instruction dump:
7f9fe214 54632036 381c0004 7c641a14 3863000c 7c00042c 741c7000 90abff88 
40820094 2f800000 419c0084 5400853e <9383000c> 90030008 80640058 7c030214 
---[ end trace 247b516dec17a232 ]---

NIP lookup:
(gdb) l *itd_complete+0x170
0x48bc is in itd_complete (drivers/usb/host/ehci-sched.c:1747).
1742                            if (!(t & EHCI_ISOC_BABBLE)) {
1743                                    desc->actual_length = EHCI_ITD_LENGTH(t);
1744                                    urb->actual_length += desc->actual_length;
1745                            }
1746                    } else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) {
1747                            desc->status = 0;
1748                            desc->actual_length = EHCI_ITD_LENGTH(t);
1749                            urb->actual_length += desc->actual_length;
1750                    } else {
1751                            /* URB was too late */

The last call trace address did not give me anything valuable and the kernel does
not like to be built with -O0 (forced to use inlining on some parts?). :(

Christian Melki


> On Wed, 2 May 2012, Christian Melki wrote:
> 
> > Hello.
> > 
> > I can reliably reproduce an Oops on our Freescale 8347:e with a 
> > Logitech webcam. Strange part is that I can only do it using 
> > usb-audio, never with the same device using uvcvideo or usb-storage.
> > It usually occurs within seconds of streaming from the USB-audio 
> > device. I have ported everything on our platfrom from our 2.6.32 
> > kernel to 3.3.2. USB never gave me an issue on 2.6.32 and I can't 
> > figure out why it would die in ehci_work like this.
> 
> It's probably not ehci_work() itself, but a subroutine call 
> that was inlined.
> 
> > 
> > Unable to handle kernel paging request for data at address 
> 0xbe903df8 
> > Faulting instruction address: 0xc01f45d4
> 
> Can you figure out what C statement corresponds to that address?  
> Perhaps by putting printk statements at strategic spots in 
> scan_async() and scan_periodic().
> 
> > Oops: Kernel access of bad area, sig: 11 [#1] PREEMPT 
> ASP8347E Modules 
> > linked in:
> > NIP: c01f45d4 LR: c01f41b0 CTR: 00000008
> > REGS: c3ff7e30 TRAP: 0300   Not tainted  (3.3.2)
> > MSR: 00001032 <ME,IR,DR,RI>  CR: 24482422  XER: 20000000
> > DAR: be903df8, DSISR: 22000000
> > TASK = c31996e0[2261] 'cap' THREAD: c31aa000
> > GPR00: 00000000 c3ff7ee0 c31996e0 c3a0438c c3b03d80 
> c31b3ba0 00000000 
> > 00000000
> > GPR08: be903dec 00000000 ffadffff c33b311c 44448484 
> 1001a448 00000e68 
> > c3a04328
> > GPR16: 00000000 01000000 00000e60 000001cd 000001cd 
> 00000730 c3a0438c 
> > c3a04390
> > GPR24: c3a0f730 00000000 c3b72de0 c3a09f30 00000000 
> c3a042d8 00000000 
> > c33b30a0 NIP [c01f45d4] ehci_work+0x8f4/0xac4 LR [c01f41b0] 
> > ehci_work+0x4d0/0xac4 Call Trace:
> > [c3ff7ee0] [c01f41b0] ehci_work+0x4d0/0xac4 (unreliable) [c3ff7f40] 
> > [c01f4c18] ehci_irq+0x284/0x2b4 [c3ff7f70] [c01dde24] 
> > usb_hcd_irq+0x44/0x6c [c3ff7f80] [c005ba10] 
> > handle_irq_event_percpu+0x74/0x1b0
> > [c3ff7fc0] [c005bba0] handle_irq_event+0x54/0x90 [c3ff7fe0] 
> [c005e338] 
> > handle_level_irq+0xa0/0x114 [c3ff7ff0] [c000dd48] 
> > call_handle_irq+0x18/0x28 [c31abf10] [c0005784] do_IRQ+0xe0/0x138 
> > [c31abf40] [c000fb64] ret_from_except+0x0/0x14
> > --- Exception: 501 at 0xff1565c
> >     LR = 0xff15658
> > Instruction dump:
> > 7cff3a14 55082036 38070004 7d044214 3908000c 7c00042c 74077000 
> > 932bff88 408200e0 2f800000 419c00cc 5400853e <90e8000c> 90080008 
> > 81040058 7c080214 ---[ end trace c2cdbb4339c562c5 ]---
> 
> It's hard to tell what's wrong just from this.
> 
> Alan Stern
> 
> --
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux