ADMA Error while booting L4T

We are trying to boot L4T on a custom board based on Tegra K1 processor. After quite much of debugging, we have reached a point where we are able to flash u-boot and boot kernel from both eMMC and SD card. However, when the kernel tries to mount the rootfs, it is able to mount the mmcblk0p1/mmcblk1p1 partition but hangs after throwing following:

[   11.935367] mmc1: ADMA error
[   11.941245] sdhci: =========== REGISTER DUMP (mmc1)===========
[   11.949353] sdhci: Sys addr: 0x00000000 | Version:  0x00000303
[   11.957510] sdhci: Blk size: 0x00007200 | Blk cnt:  0x00000028
[   11.965688] sdhci: Argument: 0x00440cc0 | Trn mode: 0x00000033
[   11.973895] sdhci: Present:  0x01fb0206 | Host ctl: 0x00000013
[   11.982134] sdhci: Power:    0x0000000d | Blk gap:  0x00000000
[   11.990404] sdhci: Wake-up:  0x00000000 | Clock:    0x00000007
[   11.998644] sdhci: Timeout:  0x0000000e | Int stat: 0x00000000
[   12.006822] sdhci: Int enab: 0x02ff000b | Sig enab: 0x02fc000b
[   12.014939] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
[   12.022978] sdhci: Caps:     0x376fd080 | Caps_1:   0x10002f73
[   12.030966] sdhci: Cmd:      0x0000123a | Max curr: 0x00000000
[   12.038910] sdhci: Host ctl2: 0x0000308b
[   12.044909] sdhci: ADMA Err: 0x00000001 | ADMA Ptr: 0xae8420c0
[   12.052861] sdhci: ===========================================

When we tried to disable ADMA on SDHCI by passing “sdhci.debug_quirks=32832” to kernel command line argument, the Tegra SDHCI driver crashes and kernel hangs at following:

[    8.076631] Waiting for root device /dev/mmcblk1p1...

Please find below files of detailed kernel logs for both scenarios when ADMA was enabled and disabled.

Kernel_Log_ADMA_Active.txt (50.2 KB)
Kernel_Log_ADMA_Disabled.txt (41.6 KB)

Anyone with some suggestion? We are still stuck at same point.

Tried to create ramdisk image using busybox filesystem from and deployed it on our card using steps mentioned in comment #15 & #13 on this thread . In this case the kernel completes its bootup but filesystem isnt mounted and kernel doesn’t show any message or error about filesystem.

Duplicate of (feel free to copy content there, but it is hard to work with topics spread out over multiple threads):

Thanks for your response @linuxdev.

We were trying the quoted task just as a workaround to ADMA issue. Although I will try the comment you made in other thread about adding echo statements in init script, but can you or someone else give an idea why I am getting these ADMA errors? Are these errors because of RAM issues or SDHCI controller/driver fault? Because our main goal is to run L4T on our board from eMMC.

I couldn’t say. Sometimes people have a slightly off hardware design; sometimes a device tree change is required; sometimes a driver wants a physical address, but is being given a virtual address (or vice versa). The echo statements are to see at what point during boot of the initrd the error occurs…this would narrow in on what runs at the moment of failure.

Fortunately the issue has been resolved. It was occurring due to two reasons mentioned below:

  1. Serial EEPROM of the board was not programmed. We programmed the EEPROM through u-boot as mentioned in this comment

  2. This issue was causing more trouble in addition to ADMA errors. There was a routing issue in DDR which resulted in chip-select of two DDR chips to be continuously asserted. This resulted in a number of random issues including GPU driver crashing on boot.

After programming the EEPROM and doing a rework on our board to rectify chip-select issue, everything went smooth.