lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 055/137] memstick: Prevent memstick host from getting runtime suspended during card detection
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit e03e303edf1c63e6dd455ccd568c74e93ef3ba8c ]

    We can use MEMSTICK_POWER_{ON,OFF} along with pm_runtime_{get,put}
    helpers to let memstick host support runtime pm.

    The rpm count may go down to zero before the memstick host powers on, so
    the host can be runtime suspended.

    So before doing card detection, increment the rpm count to avoid the
    host gets runtime suspended. Balance the rpm count after card detection
    is done.

    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/memstick/core/memstick.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/memstick/core/memstick.c b/drivers/memstick/core/memstick.c
    index a0547dbf9806..4d673a626db4 100644
    --- a/drivers/memstick/core/memstick.c
    +++ b/drivers/memstick/core/memstick.c
    @@ -18,6 +18,7 @@
    #include <linux/delay.h>
    #include <linux/slab.h>
    #include <linux/module.h>
    +#include <linux/pm_runtime.h>

    #define DRIVER_NAME "memstick"

    @@ -436,6 +437,7 @@ static void memstick_check(struct work_struct *work)
    struct memstick_dev *card;

    dev_dbg(&host->dev, "memstick_check started\n");
    + pm_runtime_get_noresume(host->dev.parent);
    mutex_lock(&host->lock);
    if (!host->card) {
    if (memstick_power_on(host))
    @@ -479,6 +481,7 @@ out_power_off:
    host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF);

    mutex_unlock(&host->lock);
    + pm_runtime_put(host->dev.parent);
    dev_dbg(&host->dev, "memstick_check finished\n");
    }

    --
    2.19.1


    \
     
     \ /
      Last update: 2019-02-11 16:16    [W:8.347 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site