[MX25][MMC] mmc esdhc failure in 3.3-rc5 (still present in rc7)

joancarles joancarles at fqingenieria.es
Mon Mar 12 09:12:02 EDT 2012


Hi

On Tue, 06 Mar 2012 11:29:50 +0000, joancarles wrote:
> Hi
>
> I have the following error when trying to access the SD-card on my 
> MX25
> device:
>
> root at mx25-noah:~$> mount /media/card/
> root at mx25-noah:~$> df -kh /media/card
> Filesystem                Size      Used Available Use% Mounted on
> /dev/mmcblk0p1          123.6M      2.7M    120.9M   2% /media/card
> root at mx25-noah:~$> touch /media/card/file
> [   82.982920] mmcblk0: error -110 transferring data, sector 559, nr 
> 1,
> cmd response 0x900, card status 0x0
> [   82.993544] end_request: I/O error, dev mmcblk0, sector 559
> [   82.999169] Buffer I/O error on device mmcblk0p1, logical block 
> 497
> [   83.005458] lost page write due to I/O error on mmcblk0p1
> [   83.013922] mmcblk0: error -84 transferring data, sector 559, nr 
> 1, cmd
> response 0x900, card status 0x0
> [   83.024114] end_request: I/O error, dev mmcblk0, sector 559
> [   83.029965] FAT-fs (mmcblk0p1): Directory bread(block 497) failed
> [   83.038051] mmcblk0: error -84 transferring data, sector 560, nr 
> 1, cmd
> response 0x900, card status 0x0
> [   83.048579] end_request: I/O error, dev mmcblk0, sector 560
> [   83.054205] Buffer I/O error on device mmcblk0p1, logical block 
> 498
> [   83.060494] lost page write due to I/O error on mmcblk0p1
> touch: /media/card/file: Input/output error
>
> I have compiled the kernel 3.3-rc5 with driver core debug support and 
> I
> get the following information:
>
> root at mx25-noah:~$> dmesg | grep -i mmc
> [    0.228098] bus: 'mmc': registered
> [    0.228139] device class 'mmc_host': registering
> [    1.405180] bus: 'mmc': add driver mmcblk
> [    1.429969] device: 'mmc0::': device_add
> [    1.430249] PM: Adding info for No Bus:mmc0::
> [    1.430837] Registered led device: mmc0::
> [    1.430884] device: 'mmc0': device_add
> [    1.431114] PM: Adding info for No Bus:mmc0
> [    1.432953] mmc0: SDHCI controller on sdhci-esdhc-imx25.0
> [sdhci-esdhc-imx25.0] using DMA
> [    1.771322] mmc0: host does not support reading read-only switch.
> assuming write-enable.
> [    1.798584] mmc0: new high speed SD card at address 0002
> [    1.804018] device: 'mmc0:0002': device_add
> [    1.804283] bus: 'mmc': add device mmc0:0002
> [    1.804445] PM: Adding info for mmc:mmc0:0002
> [    1.815198] bus: 'mmc': driver_probe_device: matched device 
> mmc0:0002
> with driver mmcblk
> [    1.815256] bus: 'mmc': really_probe: probing driver mmcblk with 
> device
> mmc0:0002
> [    1.825154] mmcblk0: mmc0:0002 00000 1.86 GiB
> [    1.835076] device: 'mmcblk0': device_add
> [    1.835680] PM: Adding info for No Bus:mmcblk0
> [    1.849286]  mmcblk0: p1 p2
> [    1.852252] device: 'mmcblk0p1': device_add
> [    1.855232] PM: Adding info for No Bus:mmcblk0p1
> [    1.855371] device: 'mmcblk0p2': device_add
> [    1.855874] PM: Adding info for No Bus:mmcblk0p2
> [    1.866667] driver: 'mmc0:0002': driver_bound: bound to device 
> 'mmcblk'
> [    1.866720] bus: 'mmc': really_probe: bound device mmc0:0002 to 
> driver
> mmcblk
> [   82.982920] mmcblk0: error -110 transferring data, sector 559, nr 
> 1,
> cmd response 0x900, card status 0x0
> [   82.993544] end_request: I/O error, dev mmcblk0, sector 559
> [   82.999169] Buffer I/O error on device mmcblk0p1, logical block 
> 497
> [   83.005458] lost page write due to I/O error on mmcblk0p1
> [   83.013922] mmcblk0: error -84 transferring data, sector 559, nr 
> 1, cmd
> response 0x900, card status 0x0
> [   83.024114] end_request: I/O error, dev mmcblk0, sector 559
> [   83.029965] FAT-fs (mmcblk0p1): Directory bread(block 497) failed
> [   83.038051] mmcblk0: error -84 transferring data, sector 560, nr 
> 1, cmd
> response 0x900, card status 0x0
> [   83.048579] end_request: I/O error, dev mmcblk0, sector 560
> [   83.054205] Buffer I/O error on device mmcblk0p1, logical block 
> 498
> [   83.060494] lost page write due to I/O error on mmcblk0p1
>
> The same device booted into a 2.6.39.3 kernel works just fine. The
> initialization of the esdhc driver in the device section is as 
> follows:
>
> imx25_add_sdhci_esdhc_imx(0, NULL);
>
> Changing it to a pdata init as shown below does not change anything 
> with
> regard to the failure:
>
> imx25_add_sdhci_esdhc_imx(0, &noah_esdhc_pdata);
> static const struct esdhc_platform_data noah_esdhc_pdata __initconst 
> = {
>         .wp_gpio = -EINVAL,
>         .cd_gpio = -EINVAL,
>         .wp_type = ESDHC_WP_NONE,
>         .cd_type = ESDHC_CD_NONE,
> };
>
> What could have changed between 2.6.39.3 and 3.3-rc5 to trigger this
> behaviour? A quick look at
>
> git diff v2.6.39 drivers/mmc/host/sdhci-esdhc-imx.c
>
> only confuses me with regard to this issue.
>
> Regards

This is still present in 3.3-rc7. Anyone? Where could I start debugging 
this? The same device works just fine with the 2.6.39.3 kernel based 
sdhci driver (drivers/mmc/host/sdhci-esdhc-imx.c). Unfortunately, due to 
out-of-tree device support for a custom i.MX25 board that I have started 
with a fresh 3.3-rc2 git tree, I cannot bisect the tree down to 2.6.39, 
or at least I don't know how.

Best regards
-- 
Joan C. Abelaira



More information about the linux-arm-kernel mailing list