kernel panic while building SDIO driver

Udit agarwal dev.madaari at gmail.com
Mon Apr 16 15:16:58 UTC 2018


Hi,
The error seems to occur during mmc_scan_lun call (at line 318
freebsd/mmc_xpt.c
<https://github.com/freebsd/freebsd/blob/07e520e17e91077fc4187ac8902d2144a3ecfb5f/sys/cam/mmc/mmc_xpt.c>
) within mmc_action. Also, below is the backtrace info (if it is usefull)

db> bt
Tracing pid 4 tid 100048 td 0xd2fa0ae0
lock order reversal: (sleepable after non-sleepable)
1st 0xc30e1464 CAM device lock (CAM device lock) @
/BBB/src/sys/cam/cam_xpt.c:832
2nd 0xc07f7718 kernel linker (kernel linker) @
/BBB/src/sys/kern/kern_linker.c:592
stack backtrace:
db_trace_self() at db_trace_self
pc = 0xc0527124 lr = 0xc00cf82c (db_stack_trace+0x108)
sp = 0xd0dc07d8 fp = 0xd0dc07f0
db_stack_trace() at db_stack_trace+0x108
pc = 0xc00cf82c lr = 0xc00cf480 (db_command+0x258)
sp = 0xd0dc07f8 fp = 0xd0dc0898
r4 = 0x00000001 r5 = 0x00000000
r6 = 0xc05c54b9 r10 = 0xc086f560
db_command() at db_command+0x258
pc = 0xc00cf480 lr = 0xc00cf218 (db_command_loop+0x74)
sp = 0xd0dc08a0 fp = 0xd0dc08b0
r4 = 0xc059c562 r5 = 0xc05bd4c0
r6 = 0xc086f54c r7 = 0xc06957f0
r8 = 0xc06e9849 r9 = 0xc0807908
r10 = 0x00000010
db_command_loop() at db_command_loop+0x74
pc = 0xc00cf218 lr = 0xc00d2c34 (db_trap+0x12c)
sp = 0xd0dc08b8 fp = 0xd0dc09d0
r4 = 0x00000000 r5 = 0xc086f558

On Sun, Apr 15, 2018 at 11:23 PM, Stanislav Sedov <stas at freebsd.org> wrote:

>
> > On Apr 15, 2018, at 8:01 AM, Udit agarwal <dev.madaari at gmail.com> wrote:
> >
> > Hi,
> > I have been trying to build the kernel (for BBB) invoking SDIO driver
> from
> > FreeBSD latest src tree using BEAGLEBONE-MMCCAM kernconf file(Yes, I
> added
> > that file manually). I seems like the kernel panics due to sleep
> > lock(complete logs:
> > https://gist.github.com/madaari/4779d75e7f1ab88369318a40cb026d9b )
> >
> > mmc_dev_async(async_code=0x20, path_id=1, target_id=0, lun_id=0
> > Got AC_PATH_REGISTERED -- whatever...
> > mmc_dev_async(async_code=0x20, path_id=1, target_id=ffffffff,
> > lun_id=ffffffff
> > usbus0: 480Mbps High Speed USB v2.0
> > usbus1: 480Mbps High Speed USB v2.0
> > (noperiph:sdhci_slot0:0:-1:ffffffff): XPT_SCAN_{BUS,TGT,LUN}
> > Kernel page fault with the following non-sleepable locks held:
> > exclusive sleep mutex CAM device lock (CAM device lock) r = 0
> (0xc30e1464)
> > lock2
> > stack backtrace:
> > Fatal kernel mode data abort: 'Translation Fault (L1)' on read
> > trapframe: 0xd0dc0ac0
> > FSR=00000005, FAR=00000010, spsr=60000013
> > r0 =00000061, r1 =00000188, r2 =d0dc0a8c, r3 =60000013
> > r4 =c30e0000, r5 =c30dec40, r6 =00000000, r7 =d0dc0b68
> > r8 =c086f528, r9 =c068f050, r10=00000000, r11=d0dc0d10
> > r12=00000062, ssp=d0dc0b50, slr=c002b77c, pc =c002b5c0
> > [ thread pid 4 tid 100048 ]
> > Stopped at mmc_action+0x94: ldr r6, [r6, #0x010]
> > db>
> >
> > Any idea how to resolve this?
> >
>
> It actually panicked on read fault (see L1 translation failure) on trying
> to read the address which isn’t mapped.  From the obstruction printed, it
> appears to be r6, which is 0x0 — most likely a NULL pointer dereference in
> the code.  What is at mmc_action+0x95 in your kernel?
>
> --
> Stas
>


More information about the freebsd-arm mailing list