Hi Dmitry, [Cc += Nico] On Mon, Feb 14, 2011 at 11:04:13AM -0800, Dmitry Shmidt wrote: > MMC_UNSAFE_RESUME is affecting mmc_sdio_resume() sequence. If it is > not defined then sdio card will be considered > "removable" and on resume mmc_sdio_init_card() will be always called. > > static int mmc_sdio_resume(struct mmc_host *host) > { > ... > if (mmc_card_is_removable(host) || !mmc_card_is_powered_resumed(host)) > err = mmc_sdio_init_card(host, host->ocr, host->card, > (host->pm_flags & MMC_PM_KEEP_POWER)); mmc_sdio_init_card() is supposed to be called if your card is removable, because the card might have changed. It has a fast path that's enabled by MMC_PM_KEEP_POWER. (Nicolas explained this back in October.) You absolutely should not enable MMC_UNSAFE_RESUME if your host has a removable card. It's an awful hack, and you just found an example of where it breaks. If you need mmc_sdio_resume() to have an even faster path for you, we can talk about that and see if it makes sense. Misusing MMC_UNSAFE_RESUME to get a powered SDIO resume is just wrong. Thanks, -- Chris Ball <cjb@xxxxxxxxxx> <http://printf.net/> One Laptop Per Child -- 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