• Ohad Ben-Cohen's avatar
    mmc: sdio: fix runtime PM path during driver removal · 297c7f2f
    Ohad Ben-Cohen authored
    After commit e1866b33 "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: default avatarDaniel Drake <dsd@laptop.org>
    Signed-off-by: default avatarOhad Ben-Cohen <ohad@wizery.com>
    Signed-off-by: default avatarChris Ball <cjb@laptop.org>
    297c7f2f
sdio_bus.c 7.14 KB