diff options
author | Ohad Ben-Cohen <ohad@wizery.com> | 2011-06-10 03:40:27 +0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2011-06-26 02:49:55 +0400 |
commit | 297c7f2f158f7dfa9ab5813260ff954f9c2f83d2 (patch) | |
tree | 463c7dbb914337e1c47e1840ea86c29457dbf3bb /drivers/mmc/core/sdio_bus.c | |
parent | be98ca652faa6468916a9b7608befff215a8ca70 (diff) | |
download | linux-297c7f2f158f7dfa9ab5813260ff954f9c2f83d2.tar.xz |
mmc: sdio: fix runtime PM path during driver removal
After commit e1866b3 "PM / Runtime: Rework runtime PM handling
during driver removal" was introduced, the driver core stopped
incrementing the runtime PM usage counter of the device during
the invocation of the ->remove() callback.
This indirectly broke SDIO's runtime PM path during driver removal,
because no one calls _put_sync() anymore after ->remove() completes.
This means that the power of runtime-PM-managed SDIO cards is kept
high after their driver is removed (even if it was powered down
beforehand).
Fix that by directly calling _put_sync() when the last usage
counter is downref'ed by the SDIO bus.
Reported-and-tested-by: Daniel Drake <dsd@laptop.org>
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/core/sdio_bus.c')
-rw-r--r-- | drivers/mmc/core/sdio_bus.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/mmc/core/sdio_bus.c b/drivers/mmc/core/sdio_bus.c index d29b9c36919a..d2565df8a7fb 100644 --- a/drivers/mmc/core/sdio_bus.c +++ b/drivers/mmc/core/sdio_bus.c @@ -189,7 +189,7 @@ static int sdio_bus_remove(struct device *dev) /* Then undo the runtime PM settings in sdio_bus_probe() */ if (func->card->host->caps & MMC_CAP_POWER_OFF_CARD) - pm_runtime_put_noidle(dev); + pm_runtime_put_sync(dev); out: return ret; |