Kernel Panic on DREAMPLUG: Alignment Fault 1

Ian Lepore ian at FreeBSD.org
Wed Jul 31 22:31:58 UTC 2013


On Wed, 2013-07-31 at 17:38 +0200, Mattia Rossi wrote:
> Hi all,
> 
> this might be related to the WLI-UC-GNM Alignment Fault, but definitely 
> has nothing to do with Wireless LAN.
> It rather seems that there's a problem with the USB subsystem.
> 
> See dmesg an backtrace below.
> 
> ## Starting application at 0x00900000 ...
> KDB: debugger backends: ddb
> KDB: current backend: ddb
> Copyright (c) 1992-2013 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 10.0-CURRENT #9 r253846M: Wed Jul 31 17:24:31 CEST 2013
> root at freebsd9.1-base:/usr/obj/arm.arm/usr/devel/dreamplug/sys/DREAMPLUG-100m
> FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610
> WARNING: DIAGNOSTIC option enabled, expect reduced performance.
> CPU: Feroceon 88FR131 rev 1 (Marvell core)
>    Little-endian DC enabled IC enabled WA disabled DC streaming enabled
>    BTB disabled L2 enabled L2 prefetch enabled
>    WB enabled EABT branch prediction enabled
>    16KB/32B 4-way instruction cache
>    16KB/32B 4-way write-back-locking-C data cache
> real memory  = 536870912 (512 MB)
> avail memory = 510828544 (487 MB)
> SOC: Marvell 88F6281 rev A1, TClock 200MHz
>    Instruction cache prefetch disabled, data cache prefetch disabled
>    256KB 4-way set-associative write-through unified L2 cache
> random device not loaded; using insecure entropy
> localbus0: <Marvell device bus> on fdtbus0
> simplebus0: <Flattened device tree simple bus> on fdtbus0
> ic0: <Marvell Integrated Interrupt Controller> mem 0xf1020200-0xf102023b 
> on sim0
> timer0: <Marvell CPU Timer> mem 0xf1020300-0xf102032f irq 1 on simplebus0
> Event timer "CPUTimer0" frequency 200000000 Hz quality 1000
> Timecounter "CPUTimer1" frequency 200000000 Hz quality 1000
> gpio0: <Marvell Integrated GPIO Controller> mem 0xf1010100-0xf101011f 
> irq 35,360
> rtc0: <Marvell Integrated RTC> mem 0xf1010300-0xf1010307 on simplebus0
> twsi0: <Marvell Integrated I2C Bus Controller> mem 0xf1011000-0xf101101f 
> irq 430
> iicbus0: <Philips I2C bus> on twsi0
> iic0: <I2C generic I/O> on iicbus0
> mge0: <Marvell Gigabit Ethernet controller> mem 0xf1072000-0xf1073fff 
> irq 12,130
> mge0: Ethernet address: f0:ad:4e:00:84:c7
> miibus0: <MII bus> on mge0
> e1000phy0: <Marvell 88E1116R Gigabit PHY> PHY 0 on miibus0
> e1000phy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 
> 1000baseT, 10o
> mge1: <Marvell Gigabit Ethernet controller> mem 0xf1076000-0xf1077fff 
> irq 16,170
> mge1: Ethernet address: f0:ad:4e:00:84:c8
> miibus1: <MII bus> on mge1
> e1000phy1: <Marvell 88E1116R Gigabit PHY> PHY 1 on miibus1
> e1000phy1:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 
> 1000baseT, 10o
> uart0: <16550 or compatible> mem 0xf1012000-0xf101201f irq 33 on simplebus0
> uart0: console (1056,n,8,1)
> uart1: <16550 or compatible> mem 0xf1012100-0xf101211f irq 34 on simplebus0
> cesa0: <Marvell Cryptographic Engine and Security Accelerator> mem 
> 0xf1030000-00
> ehci0: <Marvell Integrated USB 2.0 controller> mem 0xf1050000-0xf1050fff 
> irq 480
> usbus0: EHCI version 1.0
> usbus0: set host controller mode
> usbus0 on ehci0
> mvs0: <Marvell 88F6281 SATA controller> mem 0xf1080000-0xf1085fff irq 21 
> on sim0
> mvs0: Gen-IIe, 2 3Gbps ports, Port Multiplier supported with FBS
> mvsch0: <Marvell SATA channel> at channel 0 on mvs0
> mvsch1: <Marvell SATA channel> at channel 1 on mvs0
> cryptosoft0: <software crypto>
> Timecounters tick every 10.000 msec
> IPsec: Initialized Security Association Processing.
> ipfw2 (+ipv6) initialized, divert enabled, nat enabled, default to 
> accept, loggd
> DUMMYNET 0 with IPv6 initialized (100409)
> load_dn_sched dn_sched FIFO loaded
> load_dn_sched dn_sched PRIO loaded
> load_dn_sched dn_sched QFQ loaded
> load_dn_sched dn_sched RR loaded
> load_dn_sched dn_sched WF2Q+ loaded
> usbus0: 480Mbps High Speed USB v2.0
> Fatal kernel mode data abort: 'Alignment Fault 1'
> trapframe: 0xde472b48
> FSR=00000001, FAR=de472bc4, spsr=60000093
> r0 =001e48e5, r1 =ffffffff, r2 =0000001c, r3 =001e48e5
> r4 =de472bbc, r5 =de472bc4, r6 =c3598c80, r7 =c0e7c830
> r8 =798ee230, r9 =00000015, r10=00000001, r11=de472bb4
> r12=c0d240e8, ssp=de472b94, slr=c0d44c6c, pc =c0ab8264
> 
> [ thread pid 5 tid 100036 ]
> Stopped at      binuptime+0x70: und     0xe1c500d0
> db> bt
> Tracing pid 5 tid 100036 td 0xc3598c80
> db_trace_self() at db_trace_self
>           pc = 0xc0d2807c  lr = 0xc0941d84 (db_hex2dec+0x4d8)
>           sp = 0xde472840  fp = 0xde472858
>          r10 = 0xc0e59e60
> db_hex2dec() at db_hex2dec+0x4d8
>           pc = 0xc0941d84  lr = 0xc09416f4 (db_command_loop+0x2f4)
>           sp = 0xde472860  fp = 0xde472900
>           r4 = 0x00000000  r5 = 0x00000000
>           r6 = 0xc0d9e9fc
> db_command_loop() at db_command_loop+0x2f4
>           pc = 0xc09416f4  lr = 0xc0941450 (db_command_loop+0x50)
>           sp = 0xde472908  fp = 0xde472918
>           r4 = 0xc0d7bae3  r5 = 0xc0d98378
>           r6 = 0xc0ebbdb8  r7 = 0xde472b48
>           r8 = 0xde472b48  r9 = 0xc0eb0614
>          r10 = 0xc0e5a0d0
> db_command_loop() at db_command_loop+0x50
>           pc = 0xc0941450  lr = 0xc0943e68 (X_db_symbol_values+0x254)
>           sp = 0xde472920  fp = 0xde472a40
>           r4 = 0x00000000  r5 = 0xde472928
>           r6 = 0xc0eb0638
> X_db_symbol_values() at X_db_symbol_values+0x254
>           pc = 0xc0943e68  lr = 0xc0adf580 (kdb_trap+0xd4)
>           sp = 0xde472a48  fp = 0xde472a68
>           r4 = 0x00000000  r5 = 0x00000001
>           r6 = 0xc0eb0638  r7 = 0xde472b48
> kdb_trap() at kdb_trap+0xd4
>           pc = 0xc0adf580  lr = 0xc0d38810 (data_abort_handler+0x640)
>           sp = 0xde472a70  fp = 0xde472a88
>           r4 = 0xde472b48  r5 = 0x600000d3
>           r6 = 0xde472bc4  r7 = 0x00000001
>           r8 = 0xde472b48  r9 = 0xde472bc4
>          r10 = 0x00000001
> data_abort_handler() at data_abort_handler+0x640
>           pc = 0xc0d38810  lr = 0xc0d39208 (swi_handler+0x548)
>           sp = 0xde472a90  fp = 0xde472a98
>           r4 = 0x00000001  r5 = 0xc3598c80
>           r6 = 0xc3598c80  r7 = 0xc0d39194
> swi_handler() at swi_handler+0x548
>           pc = 0xc0d39208  lr = 0xc0d3854c (data_abort_handler+0x37c)
>           sp = 0xde472aa0  fp = 0xde472b40
> data_abort_handler() at data_abort_handler+0x37c
>           pc = 0xc0d3854c  lr = 0xc0d29924 (exception_exit)
>           sp = 0xde472b48  fp = 0xde472bb4
>           r4 = 0xffffffff  r5 = 0xffff1004
>           r6 = 0xc3598c80  r7 = 0xc0e7c830
>           r8 = 0x798ee230  r9 = 0x00000015
>          r10 = 0x00000001
> exception_exit() at exception_exit
>           pc = 0xc0d29924  lr = 0xc0d44c6c (DELAY+0x764)
>           sp = 0xde472b94  fp = 0xde472bb4
>           r0 = 0x001e48e5  r1 = 0xffffffff
>           r2 = 0x0000001c  r3 = 0x001e48e5
>           r4 = 0xde472bbc  r5 = 0xde472bc4
>           r6 = 0xc3598c80  r7 = 0xc0e7c830
>           r8 = 0x798ee230  r9 = 0x00000015
>          r10 = 0x00000001 r12 = 0xc0d240e8
> binuptime() at binuptime+0x74
>           pc = 0xc0ab8268  lr = 0xc0d503ec (cpu_initclocks_bsp+0x41c)
>           sp = 0xde472bbc  fp = 0xde472bd4
>           r4 = 0x00000003  r5 = 0x00033940
>           r6 = 0xc3598c80  r7 = 0xc0d92761
>           r8 = 0xc0d9273a  r9 = 0x00000000
>          r10 = 0xc3586ac0
> cpu_initclocks_bsp() at cpu_initclocks_bsp+0x41c
>           pc = 0xc0d503ec  lr = 0xc0d44af8 (DELAY+0x5f0)
>           sp = 0xde472bdc  fp = 0xde472be4
>           r4 = 0xc352d400  r5 = 0xde472c34
> DELAY() at DELAY+0x5f0
>           pc = 0xc0d44af8  lr = 0xc0a82468 (intr_event_handle+0x88)
>           sp = 0xde472bec  fp = 0xde472c14
>           r4 = 0xc341e400
> intr_event_handle() at intr_event_handle+0x88
>           pc = 0xc0a82468  lr = 0xc0d2acac (arm_handler_execute+0x54)
>           sp = 0xde472c1c  fp = 0xde472c2c
>           r4 = 0xde472c34  r5 = 0x00000001
>           r6 = 0xc0e97c40  r7 = 0xc0eb90d8
>           r8 = 0xc352c200  r9 = 0xc37a1000
>          r10 = 0xc37a1000
> arm_handler_execute() at arm_handler_execute+0x54
>           pc = 0xc0d2acac  lr = 0xc0d3e2dc (irq_entry+0x94)
>           sp = 0xde472c34  fp = 0xde472c90
>           r4 = 0x00000000  r5 = 0xffff1004
>           r6 = 0xc0ebbc50  r7 = 0x00004c5f
> irq_entry() at irq_entry+0x94
>           pc = 0xc0d3e2dc  lr = 0xc0d3e2dc (irq_entry+0x94)
>           sp = 0xde472c34  fp = 0xde472c90
> Unwind failure (no registers changed)
> db>
> 
> 
> Usually this is the USB bit that follows the usbus0 line:
> 
> ugen0.1: <Marvell> at usbus0
> uhub0: <Marvell EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0
> WARNING: DIAGNOSTIC option enabled, expect reduced performance.
> uhub0: 1 port with 1 removable, self powered
> Root mount waiting for: usbus0
> ugen0.2: <vendor 0x1a40> at usbus0
> uhub1: <vendor 0x1a40 USB 2.0 Hub, class 9/0, rev 2.00/1.11, addr 2> on 
> usbus0
> Root mount waiting for: usbus0
> uhub1: 4 ports with 4 removable, self powered
> Root mount waiting for: usbus0
> Root mount waiting for: usbus0
> ugen0.3: <vendor 0x05e3> at usbus0
> umass0: <vendor 0x05e3 USB Storage, class 0/0, rev 2.00/99.10, addr 3> 
> on usbus0
> da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
> da0: <Generic STORAGE DEVICE 9910> Removable Direct Access SCSI-0 device
> da0: 40.000MB/s transfers
> da0: 1876MB (3842048 512 byte sectors: 255H 63S/T 239C)
> da0: quirks=0x3<NO_SYNC_CACHE,NO_6_BYTE>
> da1 at umass-sim0 bus 0 scbus2 target 0 lun 1
> da1: <Generic STORAGE DEVICE 9910> Removable Direct Access SCSI-0 device
> da1: 40.000MB/s transfers
> da1: 974MB (1995264 512 byte sectors: 64H 32S/T 974C)
> da1: quirks=0x3<NO_SYNC_CACHE,NO_6_BYTE>
> Root mount waiting for: usbus0
> ugen0.4: <USBest Technology> at usbus0
> umass1: <USBest Technology USB Mass Storage Device, class 0/0, rev 
> 2.00/1.00, a0
> da2 at umass-sim1 bus 1 scbus3 target 0 lun 0
> da2: <USB USB2FlashStorage 0.00> Removable Direct Access SCSI-2 device
> da2: 40.000MB/s transfers
> da2: 1967MB (4030463 512 byte sectors: 255H 63S/T 250C)
> da2: quirks=0x2<NO_6_BYTE>
> ugen0.5: <vendor 0x0d8c> at usbus0
> 
> Currently trying to find where the issue could be.
> 
> Mat

This is a strange abort, and if it's usb-related that's only accidental
I think.  It says it's an alignment fault, but the fault address reg has
a 32-bit aligned value in it.  That makes me think it must be an
ldrd/strd instruction (requires 64-bit alignment) that's faulting.  

Is this compiled with clang?  I think it emits such instructions and gcc
doesn't.  Except I don't think clang should use those instructions on
armv5, because of the alignment requirements.

-- Ian



More information about the freebsd-arm mailing list