Comment 25 for bug 247819

Revision history for this message
Richard Hull (rm-hull) wrote : Re: SDHC Card reader I/O errors on Hardy

I think it is more of a timing issue than mechanical per se - I'm running an own-build kernel (2.6.28-rc4) on top of intrepid on an acer aspire one, and was experiencing 'mmcblk0: error -110 transferring data' errors on a 16Gb SDHC card in the left hand slot.

The card was enabled for UDMA66 and hdparm -t /dev/mmcblk0 was reporting transfer rates in excess of 20Mb/sec, but it was unreliable.

I had a look at the kernel source, specifically file drivers/mmc/host/sdhci-pci.c, within function jmicron_probe: First thing it does is set up the quirks mode:

 if (chip->pdev->revision == 0) {
  chip->quirks |= SDHCI_QUIRK_32BIT_DMA_ADDR |
     SDHCI_QUIRK_32BIT_DMA_SIZE |
     SDHCI_QUIRK_32BIT_ADMA_SIZE |
     SDHCI_QUIRK_RESET_AFTER_REQUEST |
     SDHCI_QUIRK_BROKEN_SMALL_PIO |
     SDHCI_QUIRK_FORCE_HIGHSPEED;
 }

I've commented out the SDHCI_QUIRK_FORCE_HIGHSPEED and rebuild the kernel ... no more errors at all, but of course throughput is now only about 11Mb/sec. Much better to be stable than fast, IMHO.

Obviously this will only work for jmicron controllers ... I think that the bug is elsewhere, and all this does is mask the root cause of the problem (IIRC someone on the acer aspire one forum thought it was a timing / buffering / interrupt issue, but can't quote exactly).

R.