Panic mounting root on BeagleBone Black

Tim Kientzle kientzle at freebsd.org
Fri Sep 13 03:31:18 UTC 2013


On Sep 12, 2013, at 7:55 AM, Ian Lepore <ian at FreeBSD.org> wrote:

> On Wed, 2013-09-11 at 06:43 -0700, Tim Kientzle wrote:
>> Just built a new image for BBB from SVN r255438.
>> 
>> At the second boot, I got this:
>> 
>> Mounting local file systems:.
>> mmcsd0: Error indicated: 1 Timeout
>> g_vfs_done():mmcsd0s2a[READ(offset=2016903168, length=4096)]error = 5
>> vnode_pager_getpages: I/O read error
>> vm_fault: pager read error, pid 126 (ps)
>> mmcsd0: Error indicated: 1 Timeout
>> g_vfs_done():mmcsd0s2a[READ(offset=131072, length=32768)]error = 5
>> sdhci_ti0-slot0: Got data interrupt 0x00000010, but there is no active command.
>> sdhci_ti0-slot0: ============== REGISTER DUMP ==============
>> sdhci_ti0-slot0: Sys addr: 0x00000000 | Version:  0x00003101
>> sdhci_ti0-slot0: Blk size: 0x00000200 | Blk cnt:  0x00000010
>> sdhci_ti0-slot0: Argument: 0x0024679e | Trn mode: 0x0000193a
>> sdhci_ti0-slot0: Present:  0x01f70000 | Host ctl: 0x00000006
>> sdhci_ti0-slot0: Power:    0x0000000d | Blk gap:  0x00000000
>> sdhci_ti0-slot0: Wake-up:  0x00000000 | Clock:    0x00000007
>> sdhci_ti0-slot0: Timeout:  0x0000000d | Int stat: 0x00000000
>> sdhci_ti0-slot0: Int enab: 0x017f00fb | Sig enab: 0x017f00fb
>> sdhci_ti0-slot0: AC12 err: 0x00000000 | Slot int: 0x00000000
>> sdhci_ti0-slot0: Caps:     0x06e10080 | Max curr: 0x00000000
>> sdhci_ti0-slot0: ===========================================
>> 
>> …. few more similar messages, then ….
>> 
>> mmcsd0: Error indicated: 1 Timeout
>> g_vfs_done():mmcsd0s2a[WRITE(offset=20808192, length=512)]error = 5
>> g_vfs_done():mmcsd0s2a[WRITE(offset=1276346368, length=24576)]error = 5
>> panic: brelse: inappropriate B_PAGING or B_CLUSTER bp 0xcd148778
>> [bt snipped]
>> 
> 
> This was a single occurance, right?  Like you're not dead in the water
> or anything?

Here's the scenario:
  * New image built.
  * Booted.
  * Had power pulled almost immediately upon attaining multi-user (I got confused)
  * Rebooted.
  * Hit the above on mount root at the second boot.
  * Rebooted again and everything seems fine.

> There's insanity in that info... the register dump shows a multi-block
> write (8kbytes) was set up, but the command that timed out was a read.
> If a prior write had timed out why isn't there a g_vfs_done() error
> logged for it?

I may have over-trimmed.  There were several of these timeout
errors reported all at once.

> I think what we really need is some better error recovery in the mmc and
> sd layers.  Retrying a failed IO is cheap and easy.  More complex
> recovery is possible too (power cycling and re-intializing the card
> and/or controller).  But that has its own difficulties -- what if the
> nature of the problem was that the user swapped cards? -- you don't want
> to retry a write under those conditions.

I seem to recall seeing something in the AM335x TRM about
an indicator for card removal.  Does that help?

Tim



More information about the freebsd-arm mailing list