Message ID | 1365384999.31128.6.camel@fli24-HP-Compaq-8100-Elite-CMT-PC (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Apr 8, 2013 at 4:36 AM, Li Fei <fei.li@intel.com> wrote: > Even in failed case of pm_runtime_get_sync, the usage_count > is incremented. In order to keep the usage_count with correct > value and runtime power management to behave correctly, call > pm_runtime_put_noidle in such case. > > Signed-off-by Liu Chuansheng <chuansheng.liu@intel.com> > Signed-off-by: Li Fei <fei.li@intel.com> Acked-by: Ohad Ben-Cohen <ohad@wizery.com> BTW, Li, could you please move to _noidle in those other places where your previous patch was already applied? I think we have at least the 12xx driver (cc'ing Luca). Thanks! Ohad. -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, On Mon, Apr 08 2013, Ohad Ben-Cohen wrote: > On Mon, Apr 8, 2013 at 4:36 AM, Li Fei <fei.li@intel.com> wrote: >> Even in failed case of pm_runtime_get_sync, the usage_count >> is incremented. In order to keep the usage_count with correct >> value and runtime power management to behave correctly, call >> pm_runtime_put_noidle in such case. >> >> Signed-off-by Liu Chuansheng <chuansheng.liu@intel.com> >> Signed-off-by: Li Fei <fei.li@intel.com> > > Acked-by: Ohad Ben-Cohen <ohad@wizery.com> Thanks, pushed this patch to mmc-next for 3.10. - Chris.
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index aa0719a..6889a82 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -861,8 +861,10 @@ static void mmc_sdio_detect(struct mmc_host *host) /* Make sure card is powered before detecting it */ if (host->caps & MMC_CAP_POWER_OFF_CARD) { err = pm_runtime_get_sync(&host->card->dev); - if (err < 0) + if (err < 0) { + pm_runtime_put_noidle(&host->card->dev); goto out; + } } mmc_claim_host(host); diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c index 5e57048..7bfefb5 100644 --- a/drivers/mmc/core/sdio_bus.c +++ b/drivers/mmc/core/sdio_bus.c @@ -137,7 +137,7 @@ static int sdio_bus_probe(struct device *dev) if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) { ret = pm_runtime_get_sync(dev); if (ret < 0) - goto out; + goto disable_runtimepm; } /* Set the default block size so the driver is sure it's something @@ -157,7 +157,6 @@ static int sdio_bus_probe(struct device *dev) disable_runtimepm: if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) pm_runtime_put_noidle(dev); -out: return ret; }
Even in failed case of pm_runtime_get_sync, the usage_count is incremented. In order to keep the usage_count with correct value and runtime power management to behave correctly, call pm_runtime_put_noidle in such case. Signed-off-by Liu Chuansheng <chuansheng.liu@intel.com> Signed-off-by: Li Fei <fei.li@intel.com> --- drivers/mmc/core/sdio.c | 4 +++- drivers/mmc/core/sdio_bus.c | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-)