On Sun, Apr 17, 2011 at 12:23 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote: > On Saturday 16 April 2011, Andrei Warkentin wrote: >> @@ -982,6 +1016,26 @@ static const struct mmc_fixup blk_fixups[] = >> MMC_FIXUP("SEM08G", 0x2, 0x100, add_quirk, MMC_QUIRK_INAND_CMD38), >> MMC_FIXUP("SEM16G", 0x2, 0x100, add_quirk, MMC_QUIRK_INAND_CMD38), >> MMC_FIXUP("SEM32G", 0x2, 0x100, add_quirk, MMC_QUIRK_INAND_CMD38), >> + >> + /* >> + * Some MMC cards experience performance degradation with CMD23 >> + * instead of CMD12-bounded multiblock transfers. For now we'll >> + * white list what's good: >> + * 1) Certain SanDisk eMMCs with the old MMCA manfid. >> + * 2) All new SanDisk products. >> + * >> + * N.B. This doesn't affect SD cards. >> + */ >> + MMC_FIXUP(CID_NAME_ANY, CID_MANFID_ANY, CID_OEMID_ANY, add_quirk_mmc, >> + MMC_QUIRK_BLK_NO_CMD23), >> + MMC_FIXUP("SEM04G", 0x2, 0x100, remove_quirk_mmc, MMC_QUIRK_BLK_NO_CMD23), >> + MMC_FIXUP("SEM08G", 0x2, 0x100, remove_quirk_mmc, MMC_QUIRK_BLK_NO_CMD23), >> + MMC_FIXUP("SEM16G", 0x2, 0x100, remove_quirk_mmc, MMC_QUIRK_BLK_NO_CMD23), >> + MMC_FIXUP("SEM32G", 0x2, 0x100, remove_quirk_mmc, MMC_QUIRK_BLK_NO_CMD23), >> + MMC_FIXUP("SEM02G", 0x2, 0x100, remove_quirk_mmc, MMC_QUIRK_BLK_NO_CMD23), >> + MMC_FIXUP(CID_NAME_ANY, 0x45, CID_OEMID_ANY, >> + remove_quirk_mmc, MMC_QUIRK_BLK_NO_CMD23), >> + >> END_FIXUP >> }; > > Shouldn't this better be a blacklist for known bad cards? > > As far as I can tell, we should always use CMD23 where possible. > I thought about this some more. In this space (eMMCs), it's still going to be up to the system integrator to evaluate the system and enable/disable certain properties (such as CMD23 use) as they make sense. What you would want to avoid, ideally, is someone compiling a kernel for their pre-2.6.40 embedded system, not knowing anything amount eMMCs and CMD23, and winding up with an I/O performance regression. So maybe this should be a blacklist for known bad cards. And the entire support should be a "default-N" compile option for MMCs (not SDs). That way someone who just does an "make oldconfig" will see "CONFIG_MMC_BLK_CMD23 - I/O performance improvement for newer eMMC cards, may cause degradation on older cards". What do you think? A -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html