On Tue, Sep 4, 2012 at 6:38 PM, Hebbar, Gururaja <gururaja.hebbar@xxxxxx> wrote: > From: Vaibhav Bedia <vaibhav.bedia@xxxxxx> > > In some cases mmc_suspend_host() is not able to claim the > host and proceed with the suspend process. The core returns > -EBUSY to the host controller driver. Unfortunately, the > host controller driver does not pass on this information > to the PM core and hence the system suspend process continues. > > In these cases the MMC core gets to an unexpected state > during resume and multiple issues related to MMC crop up. > 1. Host controller driver starts accessing the device registers > before the clocks are enabled which leads to a prefetch abort. > 2. A file copy thread which was launched before suspend gets > stuck due to the host not being reclaimed during resume. > > To avoid such problems pass on the -EBUSY status to the PM core > from the host controller driver. With this change, MMC core > suspend might still fail but it does not end up making the > system unusable. Suspend gets aborted and the user can try > suspending the system again. > The last time we discussed this, didn't we plan to fix this differently ? Holding the return code of mmc_suspend_host in a separate variable and passing it to the caller of omap_hsmmc_suspend looks more sane to me. -- 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