reading from eMMC boot partions: timeout or ECC error?
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.