Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Aug 2015 20:49:27 -0700
From:      kah42pub <kah42pub@blarg.com>
To:        freebsd-arm@freebsd.org
Subject:   Re: Crash during installworld on RPI2
Message-ID:  <55DA9447.9040802@blarg.com>
In-Reply-To: <20150824023341.GA53136@www.zefox.net>
References:  <20150824023341.GA53136@www.zefox.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 8/23/15 19:33, bob prohaska wrote:
> For the third time in about as many weeks 11-Current has crashed during installworld.
> This represents about one in five tries. In every case the crash is triggered by
> writing to the DOS partition of the microSD card. The latest instance is at
> 
> FreeBSD www.zefox.org 11.0-CURRENT FreeBSD 11.0-CURRENT #40 r287009M: Sat Aug 22 07:48:40 PDT 2015     bob@www.zefox.org:/usr/obj/usr/src/sys/RPI2  arm 
> 
> All three crashes have been preceeded by a stream of warnings similar to
> smsc0: warning: MII read timeout
> smsc0: warning: Failed to read register 0x114
> smsc0: warning: MII is busy
> smsc0: warning: Failed to write register 0x114
> smsc0: warning: Failed to write register 0x114
> usually starting during buildworld and not always crashing; most attempts succeed.
> 
> The kernel config is default, /etc/fstab contains
> /dev/mmcsd0s1   /boot/msdos     msdosfs rw,noatime      0 0
> /dev/mmcsd0s2a  /               ufs rw,noatime          1 1
> #md             /tmp            mfs rw,noatime,-s50m    0 0
> #md             /var/log        mfs rw,noatime,-s15m    0 0
> #md             /var/tmp        mfs rw,noatime,-s5m     0 0
> /dev/da0p4      /tmp            ufs rw,noatime          0 0
> /dev/da0p3      /usr            ufs rw,noatime,late,failok              1 2
> /dev/da0p2      none            swap    sw                              0 0
> /dev/da0p1      /var            ufs rw,noatime          0 0
> 
> mmcsd0 is a Sandisk Ultra 8 GB class 10 microSD card, da0 is an old 32GB 
> ATA drive in a usb2.0 enclosure.
> 
> The end of the console output and backtrace follow. I'm not skilled enough to
> interpret the output but I hope it's of use to others.
> 
> smsc0: warning: MII read timeout
> smsc0: warning: Failed to read register 0x114
> smsc0: warning: MII is busy
> smsc0: warning: Failed to write register 0x114
> smsc0: warning: Failed to write register 0x114
> sdhci_bcm0-slot0:  Controller timeout
> sdhci_bcm0-slot0: ============== REGISTER DUMP ==============
> sdhci_bcm0-slot0: Sys addr: 0x02148a00 | Version:  0x00009902
> sdhci_bcm0-slot0: Blk size: 0x00000200 | Blk cnt:  0x00000096
> sdhci_bcm0-slot0: Argument: 0x001730c0 | Trn mode: 0x0000193a
> sdhci_bcm0-slot0: Present:  0x01ff0506 | Host ctl: 0x00000003
> sdhci_bcm0-slot0: Power:    0x0000000f | Blk gap:  0x00000000
> sdhci_bcm0-slot0: Wake-up:  0x00000000 | Clock:    0x00000307
> sdhci_bcm0-slot0: Timeout:  0x0000000e | Int stat: 0x00000010
> sdhci_bcm0-slot0: Int enab: 0x01ff00fb | Sig enab: 0x01ff00fb
> sdhci_bcm0-slot0: AC12 err: 0x00000000 | Slot int: 0x00000001
> sdhci_bcm0-slot0: Caps:     0x00000000 | Max curr: 0x00000001
> sdhci_bcm0-slot0: ===========================================
> mmcsd0: Error indicated: 1 Timeout
> g_vfs_done():mmcsd0s2a[WRITE(offset=725647360, length=131072)]error = 5
> mmcsd0: Error indicated: 1 Timeout
> mmcsd0: Error indicated: 1 Timeout
> mmcsd0: Error indicated: 1 Timeout
> mmcsd0: Error indicated: 1 Timeout
> g_vfs_done():mmcsd0s2a[WRITE(offset=725778432, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=725909504, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=726040576, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=726171648, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=726302720, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=726433792, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=726564864, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=726695936, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=726827008, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=726958080, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=727089152, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=727220224, length=131072)]error = 5
> g_vfs_done():mmcsd0s2a[WRITE(offset=20932096, length=512)]error = 5
> panic: brelse: inappropriate B_PAGING or B_CLUSTER bp 0xd76fc2d0
> cpuid = 0
> KDB: enter: panic
> [ thread pid 12 tid 100014 ]
> Stopped at      $d.7:   ldrb    r15, [r15, r15, ror r15]!
> db> bt
> Tracing pid 12 tid 100014 td 0xc39fd360
> db_trace_self() at db_trace_self
>          pc = 0xc053f010  lr = 0xc0140fec (db_stack_trace+0x108)
>          sp = 0xd69e19d8  fp = 0xd69e19f0
>         r10 = 0xc07745f8
> db_stack_trace() at db_stack_trace+0x108
>          pc = 0xc0140fec  lr = 0xc0140a38 (db_command+0x388)
>          sp = 0xd69e19f8  fp = 0xd69e1a98
>          r4 = 0x00000000  r5 = 0x00000000
>          r6 = 0x00000000 r10 = 0xc07745f8
> db_command() at db_command+0x388
>          pc = 0xc0140a38  lr = 0xc01406a0 (db_command_loop+0x74)
>          sp = 0xd69e1aa0  fp = 0xd69e1ab0
>          r4 = 0xc05a3ab0  r5 = 0xc05c48a6
>          r6 = 0xc07745e4  r7 = 0xd69e1c80
>          r8 = 0xc0769620  r9 = 0xc0687764
>         r10 = 0xc0769624
> db_command_loop() at db_command_loop+0x74
>          pc = 0xc01406a0  lr = 0xc01431d0 (db_trap+0x108)
>          sp = 0xd69e1ab8  fp = 0xd69e1bd0
>          r4 = 0x00000000  r5 = 0xc07745f0
>          r6 = 0xc0769648 r10 = 0xc0769624
> db_trap() at db_trap+0x108
>          pc = 0xc01431d0  lr = 0xc02e89b8 (kdb_trap+0x184)
>          sp = 0xd69e1bd8  fp = 0xd69e1c00
>          r4 = 0x00000000  r5 = 0x00000001
>          r6 = 0xc0769648  r7 = 0xd69e1c80
> kdb_trap() at kdb_trap+0x184
>          pc = 0xc02e89b8  lr = 0xc05570ac (undefinedinstruction+0x344)
>          sp = 0xd69e1c08  fp = 0xd69e1c78
>          r4 = 0x00000000  r5 = 0x00000000
>          r6 = 0xc0556cb8  r7 = 0xe7ffffff
>          r8 = 0xc39fd360  r9 = 0xc02e8110
>         r10 = 0xd69e1c80
> undefinedinstruction() at undefinedinstruction+0x344
>          pc = 0xc05570ac  lr = 0xc0540698 (exception_exit)
>          sp = 0xd69e1c80  fp = 0xd69e1d18
>          r4 = 0xc05c48fb  r5 = 0x00000001
>          r6 = 0xc075a0e0  r7 = 0xc075a278
>          r8 = 0xd69e1d6c  r9 = 0xc0775e08
>         r10 = 0xc39fd360
> exception_exit() at exception_exit
>          pc = 0xc0540698  lr = 0xc02e8100 (kdb_enter+0x48)
>          sp = 0xd69e1d10  fp = 0xd69e1d18
>          r0 = 0xc0769634  r1 = 0x00000000
>          r2 = 0xd69e1c44  r3 = 0xc05c87c4
>          r4 = 0xc05c48fb  r5 = 0x00000001
>          r6 = 0xc075a0e0  r7 = 0xc075a278
>          r8 = 0xd69e1d6c  r9 = 0xc0775e08
>         r10 = 0xc39fd360 r12 = 0xc06a2448
> $a.8() at $a.8
>          pc = 0xc02e8114  lr = 0xc02ac40c (vpanic+0x164)
>          sp = 0xd69e1d20  fp = 0xd69e1d40
>          r4 = 0x00000100 r10 = 0xc39fd360
> vpanic() at vpanic+0x164
>          pc = 0xc02ac40c  lr = 0xc02ac2a8 (vpanic)
>          sp = 0xd69e1d48  fp = 0xd69e1d60
>          r4 = 0xc075a178  r5 = 0xc05d0e17
>          r6 = 0xd69e1d6c  r7 = 0xc075a0e0
>          r8 = 0xc077522c  r9 = 0xc05b6589
>         r10 = 0x00000000
> vpanic() at vpanic
>          pc = 0xc02ac2a8  lr = 0xc0338f18 (brelse+0x6f0)
>          sp = 0xd69e1d68  fp = 0xd69e1dd8
>          r4 = 0xc02ac2a8  r5 = 0x00000001
>          r6 = 0xd69e1d6c  r7 = 0xd76fc2d0
>          r8 = 0xc42c93d4  r9 = 0xd76fc2d0
>         r10 = 0xc0758184
> brelse() at brelse+0x6f0
>          pc = 0xc0338f18  lr = 0xc033c77c (bufdone+0x58)
>          sp = 0xd69e1de0  fp = 0xd69e1de8
>          r4 = 0xd76fc2d0  r5 = 0xc42c93d4
>          r6 = 0xc0758140  r7 = 0xc0758184
>          r8 = 0xc077522c  r9 = 0xc05b6589
>         r10 = 0x00000000
> bufdone() at bufdone+0x58
>          pc = 0xc033c77c  lr = 0xc023c3a4 (g_io_schedule_up+0xe4)
>          sp = 0xd69e1df0  fp = 0xd69e1e20
>          r4 = 0xc05b88cf  r5 = 0xc700c348
> g_io_schedule_up() at g_io_schedule_up+0xe4
>          pc = 0xc023c3a4  lr = 0xc023cacc (g_up_procbody+0x78)
>          sp = 0xd69e1e28  fp = 0xd69e1e30
>          r4 = 0xc05b8cf1  r5 = 0xc07581ac
>          r6 = 0xc023ca54  r7 = 0x00000000
>          r8 = 0xd69e1e58  r9 = 0x00000000
>         r10 = 0x00000000
> g_up_procbody() at g_up_procbody+0x78
>          pc = 0xc023cacc  lr = 0xc027a544 (fork_exit+0xa0)
>          sp = 0xd69e1e38  fp = 0xd69e1e50
>          r4 = 0xc39fd360  r5 = 0xc3958000
> fork_exit() at fork_exit+0xa0
>          pc = 0xc027a544  lr = 0xc0540628 (swi_exit)
>          sp = 0xd69e1e58  fp = 0x00000000
>          r4 = 0xc023ca54  r5 = 0x00000000
>          r6 = 0x00000000  r7 = 0x00000000
>          r8 = 0x00000000 r10 = 0x00000000
> swi_exit() at swi_exit
>          pc = 0xc0540628  lr = 0xc0540628 (swi_exit)
>          sp = 0xd69e1e58  fp = 0x00000000
> db>  
> 
> 
> Thanks for reading and any guidance,
> 
> bob prohaska
> 
> _______________________________________________
> freebsd-arm@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"
> 
> 

For what it is worth...

I used to see these errors on my RPI2/11-CURRENT any time there was even
moderate disk I/O followed by extreme system performance issues and
eventually a crash:

msc0: warning: MII read timeout
smsc0: warning: Failed to read register 0x114
smsc0: warning: MII is busy
smsc0: warning: Failed to write register 0x114
smsc0: warning: Failed to write register 0x114

In my case, I traced it back to the kernel I was using that did NOT have
these options defined:

options         INVARIANTS
options         INVARIANT_SUPPORT

Adding or making sure those options were in my kernel build has made
those errors go away completely for me on my RPI2/11-CURRENT boards.

Of course, your mileage may vary.  Hope it helps.

Kris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55DA9447.9040802>