USB panic on 8.0/arm

Gavin Atkinson gavin at FreeBSD.org
Tue May 12 16:34:30 UTC 2009


Hi all,

I have an NSLU2, which I am netbooting.  I've been doing most of my work
on it with USB removed from the kernel because the old stack would
always panic.  I've recently been trying the new USB stack, and have
found that it still panics most of the time on boot.  But not all the
time.

Firstly, please note that the version of Linux that was installed onto
this hardware when I got it (not the factory installed OS, though) also
seems to have problems most of the time with the USB controller, so I
guess there is a chance that this is a hardware problem.

That said, here are the symptoms:  No USB in kernel, boots fine every
time.

New USB stack in the kernel: Just once, I've seen it probe and attach
just fine.  Here's proof:

[snip]
real memory  = 33554432 (32 MB)
avail memory = 25829376 (24 MB)
ixp0: <Intel IXP4XX> on motherboard
ixp0: 37603<RCOMP,USB,ETH0,ETH1,PCI>
pcib0: <IXP4XX PCI Bus> on ixp0
pci0: <PCI bus> on pcib0
ohci0: <NEC uPD 9210 USB controller> irq 28 at device 1.0 on pci0
ohci0: [ITHREAD]
usbus0: <NEC uPD 9210 USB controller> on ohci0
ohci1: <NEC uPD 9210 USB controller> irq 27 at device 1.1 on pci0
ohci1: [ITHREAD]
usbus1: <NEC uPD 9210 USB controller> on ohci1
ehci0: <NEC uPD 720100 USB 2.0 controller> irq 26 at device 1.2 on pci0
ehci0: [ITHREAD]
usbus2: EHCI version 1.0
usbus2: <NEC uPD 720100 USB 2.0 controller> on ehci0
ixpclk0: <IXP4XX Timer> on ixp0
[snip]

Every other time I've booted with USB compiled in, I'll get a panic:

RedBoot> go
KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2009 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 8.0-CURRENT #5: Fri May  8 16:28:01 BST 2009
    root at buffy.york.ac.uk:/usr/obj/arm/usr/src-test/sys/NSLU
CPU: IXP425 266MHz rev 1 (ARMv5TE) (XScale core)
  DC enabled IC enabled WB enabled LABT branch prediction enabled
  32KB/32B 32-way Instruction cache
  32KB/32B 32-way write-back-locking Data cache
real memory  = 33554432 (32 MB)
avail memory = 25829376 (24 MB)
ixp0: <Intel IXP4XX> on motherboard
ixp0: 37603<RCOMP,USB,ETH0,ETH1,PCI>
pcib0: <IXP4XX PCI Bus> on ixp0
pci0: <PCI bus> on pcib0
ohci0: <NEC uPD 9210 USB controller> irq 28 at device 1.0 on pci0
ohci0: [ITHREAD]
Fatal kernel mode data abort: 'External Linefetch Abort (P)'
trapframe: 0xc00fbafc
FSR=00000406, FAR=Invalid,  spsr=600000d3
r0 =c0ae4000, r1 =f8000000, r2 =00000034, r3 =c0ae407c
r4 =00001270, r5 =00001278, r6 =00001274, r7 =00000003
r8 =00001140, r9 =c0ae5000, r10=00001140, r11=c00fbb88
r12=c0ae407c, ssp=c00fbb48, slr=c023c14c, pc =c023c148

[thread pid 0 tid 100000 ]
Stopped at      ohci_suspend+0x140c:    ldr     r15, [r3, #0x024]
db> bt
Tracing pid 0 tid 100000 td 0xc04fd110
db_trace_thread() at db_trace_thread+0xc
scp=0xc041ee94 rlv=0xc0213778 (db_command_init+0x4c8)
        rsp=0xc00fb7f4 rfp=0xc00fb810
        r10=0x00000001 r9=0xc0503bd8
        r8=0xc04fa75c r7=0x00000062 r6=0x00000002 r5=0x00000010
        r4=0xc04fd110
db_command_init() at db_command_init+0x3f0
scp=0xc02136a0 rlv=0xc0213008 (db_skip_to_eol+0x49c)
        rsp=0xc00fb814 rfp=0xc00fb8b8
        r5=0x00000000 r4=0xc04cf0c0
db_skip_to_eol() at db_skip_to_eol+0x1d0
scp=0xc0212d3c rlv=0xc0213174 (db_command_loop+0x60)
        rsp=0xc00fb8bc rfp=0xc00fb8c8
        r10=0x00000000 r8=0x00000406
        r7=0xc00fbafc r6=0xc0503bd0 r5=0x600000d3 r4=0xc00fb8d4
db_command_loop() at db_command_loop+0xc
scp=0xc0213120 rlv=0xc02153b0 (X_db_sym_numargs+0xf4)
        rsp=0xc00fb8cc rfp=0xc00fb9e8
X_db_sym_numargs() at X_db_sym_numargs+0x14
scp=0xc02152d0 rlv=0xc02cf8e8 (kdb_trap+0xa4)
        rsp=0xc00fb9ec rfp=0xc00fba14
        r4=0x000000c0
kdb_trap() at kdb_trap+0xc
scp=0xc02cf850 rlv=0xc042e844 (badaddr_read+0x280)
        rsp=0xc00fba18 rfp=0xc00fba34
        r10=0xc00fbef8 r9=0x00000000
        r8=0xc00fbafc r7=0x00000406 r6=0x00000000 r5=0x00000406
        r4=0xc00fbafc
badaddr_read() at badaddr_read+0xfc
scp=0xc042e6c0 rlv=0xc042ec08 (prefetch_abort_handler+0x36c)
        rsp=0xc00fba38 rfp=0xc00fba58
        r6=0xc04fd110 r5=0xc00fbef8
        r4=0xc00fbafc
prefetch_abort_handler() at prefetch_abort_handler+0x2a4
scp=0xc042eb40 rlv=0xc042edd4 (data_abort_handler+0x110)
        rsp=0xc00fba5c rfp=0xc00fbaf8
        r7=0xc04fd110 r6=0x00001274
        r5=0xffff1004 r4=0xc05189ec
data_abort_handler() at data_abort_handler+0xc
scp=0xc042ecd0 rlv=0xc04208dc (address_exception_entry+0x50)
        rsp=0xc00fbafc rfp=0xc00fbb88
        r10=0x00001140 r9=0xc0ae5000
        r8=0x00001140 r7=0x00000003 r6=0x00001274 r5=0xffff1004
        r4=0x01070000
ohci_suspend() at ohci_suspend+0x1138
scp=0xc023be74 rlv=0xc023ccc0 (ohci_init+0x208)
        rsp=0xc00fbb8c rfp=0xc00fbbc4
        r10=0x00001140 r9=0x00000006
        r8=0x00001140 r7=0xc0ae5aa0 r6=0x00000000 r5=0xc0ae5000
        r4=0x00000000
ohci_init() at ohci_init+0xc
scp=0xc023cac4 rlv=0xc023e6ac (ohci_interrupt+0x1990)
        rsp=0xc00fbbc8 rfp=0xc00fbc00
        r10=0xc0ae5aa0 r9=0x00000009
        r8=0xc0a9ee80 r7=0xc0ae5000 r6=0x00001154 r5=0x00001150
        r4=0x00001268
ohci_interrupt() at ohci_interrupt+0x1380
scp=0xc023e09c rlv=0xc02c9fb0 (device_attach+0x2c8)
        rsp=0xc00fbc04 rfp=0xc00fbc40
        r10=0xc0a9ee80 r8=0xffffffff
        r7=0xc02c8640 r6=0xc0a9eecc r5=0x80000000 r4=0xc0ae2000
device_attach() at device_attach+0xc
scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34)
        rsp=0xc00fbc44 rfp=0xc00fbc54
        r10=0xc0ae2000 r8=0xffffffff
        r7=0xc02c8640 r6=0x00000000 r5=0x00000000 r4=0xc0a9ee80
device_probe_and_attach() at device_probe_and_attach+0xc
scp=0xc02cabd8 rlv=0xc02cacf0 (bus_generic_attach+0x20)
        rsp=0xc00fbc58 rfp=0xc00fbc68
        r4=0xc0a9ee80
bus_generic_attach() at bus_generic_attach+0xc
scp=0xc02cacdc rlv=0xc022a190 (pci_add_children+0x240)
        rsp=0xc00fbc6c rfp=0xc00fbc8c
        r4=0xc0ae2000
pci_add_children() at pci_add_children+0x154
scp=0xc022a0a4 rlv=0xc02c9fb0 (device_attach+0x2c8)
        rsp=0xc00fbc90 rfp=0xc00fbccc
        r6=0xc0ae204c r5=0x80000000
        r4=0xc0a9d380
device_attach() at device_attach+0xc
scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34)
        rsp=0xc00fbcd0 rfp=0xc00fbce0
        r10=0xc0a9d380 r8=0xffffffff
        r7=0xc02c8640 r6=0xc0a9d380 r5=0xc0ae4000 r4=0xc0ae2000
device_probe_and_attach() at device_probe_and_attach+0xc
scp=0xc02cabd8 rlv=0xc02cacf0 (bus_generic_attach+0x20)
        rsp=0xc00fbce4 rfp=0xc00fbcf4
        r4=0xc0ae2000
bus_generic_attach() at bus_generic_attach+0xc
scp=0xc02cacdc rlv=0xc0433f50 (cpu_initclocks+0x1104)
        rsp=0xc00fbcf8 rfp=0xc00fbd40
        r4=0xffffffff
cpu_initclocks() at cpu_initclocks+0xe3c
scp=0xc0433c88 rlv=0xc02c9fb0 (device_attach+0x2c8)
        rsp=0xc00fbd44 rfp=0xc00fbd80
        r6=0xc0a9d3cc r5=0x80000000
        r4=0xc0a9d500
device_attach() at device_attach+0xc
scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34)
        rsp=0xc00fbd84 rfp=0xc00fbd94
        r10=0xc0a9d500 r8=0xffffffff
        r7=0xc02c8640 r6=0xc0a9d500 r5=0xc0a9d480 r4=0xc0a9d380
device_probe_and_attach() at device_probe_and_attach+0xc
scp=0xc02cabd8 rlv=0xc02cacf0 (bus_generic_attach+0x20)
        rsp=0xc00fbd98 rfp=0xc00fbda8
        r4=0xc0a9d380
bus_generic_attach() at bus_generic_attach+0xc
scp=0xc02cacdc rlv=0xc0432be0 (arm_unmask_irq+0x894)
        rsp=0xc00fbdac rfp=0xc00fbdec
        r4=0xc0a9d500
arm_unmask_irq() at arm_unmask_irq+0x534
scp=0xc0432880 rlv=0xc02c9fb0 (device_attach+0x2c8)
        rsp=0xc00fbdf0 rfp=0xc00fbe2c
        r6=0xc0a9d54c r5=0x80000000
        r4=0xc0a9d680
device_attach() at device_attach+0xc
scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34)
        rsp=0xc00fbe30 rfp=0xc00fbe40
        r10=0xc0a9d680 r8=0xffffffff
        r7=0xc02c8640 r6=0xc0a9d6cc r5=0x80000000 r4=0xc0a9d500
device_probe_and_attach() at device_probe_and_attach+0xc
scp=0xc02cabd8 rlv=0xc02cacf0 (bus_generic_attach+0x20)
        rsp=0xc00fbe44 rfp=0xc00fbe54
        r4=0xc0a9d500
bus_generic_attach() at bus_generic_attach+0xc
scp=0xc02cacdc rlv=0xc0423594 (minidumpsys+0xb18)
        rsp=0xc00fbe58 rfp=0xc00fbe68
        r4=0xc0a9d680
minidumpsys() at minidumpsys+0xb08
scp=0xc0423584 rlv=0xc02c9fb0 (device_attach+0x2c8)
        rsp=0xc00fbe6c rfp=0xc00fbea8
        r4=0xc048f730
device_attach() at device_attach+0xc
scp=0xc02c9cf4 rlv=0xc02cac00 (device_probe_and_attach+0x34)
        rsp=0xc00fbeac rfp=0xc00fbebc
        r10=0x0000000a r8=0x00000000
        r7=0x00200198 r6=0x00000006 r5=0x002001a4 r4=0xc0a9d680
device_probe_and_attach() at device_probe_and_attach+0xc
scp=0xc02cabd8 rlv=0xc02cac2c (root_bus_configure+0x28)
        rsp=0xc00fbec0 rfp=0xc00fbed0
        r4=0xc0a9d680
root_bus_configure() at root_bus_configure+0xc
scp=0xc02cac10 rlv=0xc0419e48 (xdr_sizeof+0x1d0)
        rsp=0xc00fbed4 rfp=0xc00fbee0
        r4=0xc0491d3c
xdr_sizeof() at xdr_sizeof+0x1cc
scp=0xc0419e44 rlv=0xc0274d28 (mi_startup+0xdc)
        rsp=0xc00fbee4 rfp=0xc00fbef4
mi_startup() at mi_startup+0xc
scp=0xc0274c58 rlv=0xc020023c (btext+0x13c)
        rsp=0xc00fbef8 rfp=0x00000000
        r4=0x0020027c
db>

Any suggestions as to what I can test or how I can get any useful
information?

Thanks,

Gavin                                      


More information about the freebsd-usb mailing list