Skip to contentSkip to conversation

reading from eMMC boot partions: timeout or ECC error?

DISCUSSION Alexander Stein 1 participant 1 message Oct 22, 2012 MMC, SD and SDIO

lore
Share & tools
lore
#0 lore raw

Hello,

I'm currently investigating problems during accessing /dev/mmcblk1boot0 and /dev/mmcblk0 simultaneously. Currenty I'm running a 3.6.2 kernel and enter the following command directly after bootup:

Quoted 1 line
# dd if=/dev/mmcblk1boot0 of=/dev/null bs=4096 (bs is chosen arbitrary)

and get the following output:

Quoted 3 lines

64+0 records in
64+0 records out
262144 bytes (256.0KB) copied, 0.022922 seconds, 10.9MB/s

If I redo this, i get

Quoted 4 lines
# dd if=/dev/mmcblk1boot0 of=/dev/null bs=4096
64+0 records in
64+0 records out
262144 bytes (256.0KB) copied, 0.719781 seconds, 355.7KB/s

And the following 2 lines in dmesg:

Quoted 2 lines
[   39.794510] mmcblk1boot0: error -110 transferring data, sector 0, nr 32, cmd response 0x900, card status 0xb00
[   39.805648] mmcblk1boot0: retrying using single block read

It seems the first read was successful and pretty fast and the 2nd one eventually finished but it seems it got a timeout. The above message are printed when the request status is MMC_BLK_ECC_ERR which in turn is set when the following conditions is met:
drivers/mmc/card/block.c 726-728

Quoted 3 lines

if ((status & R1_CARD_ECC_FAILED) ||

    (brq->stop.resp[0] & R1_CARD_ECC_FAILED) ||
    (brq->cmd.resp[0] & R1_CARD_ECC_FAILED))

So is this an ECC error or a timeout? Why doesn't it happen the 1st time? Any hints?

Best regards,
Alexander

PS: Is arbitrary switching bewteen mmcblk1boot0 and mmcblk1 supported/intended? Once I acces mmcblk1boot0 readin from mmcblk1 results in different errors.