From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96AA5C282C8 for ; Mon, 28 Jan 2019 16:16:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5C0E620879 for ; Mon, 28 Jan 2019 16:16:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548692191; bh=1lo/rXqcyk+Uvm7ySNkdnHLfIbMaG7qc5NVc1MfvC7k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=Ar+7Pkd5VfxmZ9z374PpMPjllMkuBX9x3t/ZsSsSaeZRowz7dX8kP9PCXWQQD3MXM UPLSLz9OvQkct6SUXTHljGNEwpqoQbkWsMz9zzJRU3aN2cQttnBNNaBlAIaL/0rjfB ibs3dphhLM088JI7tqi4/W57pO7IRLg4gxyrhiN0= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387971AbfA1QQa (ORCPT ); Mon, 28 Jan 2019 11:16:30 -0500 Received: from mail.kernel.org ([198.145.29.99]:48674 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733160AbfA1QQ0 (ORCPT ); Mon, 28 Jan 2019 11:16:26 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C00F52147A; Mon, 28 Jan 2019 16:16:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548692185; bh=1lo/rXqcyk+Uvm7ySNkdnHLfIbMaG7qc5NVc1MfvC7k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FS5xKRfnyXT4BNLxx0WDf4DaD+gSbGHPTJ4a6/Vt3M6PMO1cnvYNoI6WKPDeuq2tb 8CW51XYmwjg1N2inzwiXOfpiMHc/L9G0/y8aaOEzW5JvCUkM/ndeWuur0JhebRvWXG JVtebrEWrbrbrY1ZqQAkWYM9ikD8QGs1hJm2DvKo= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Kai-Heng Feng , Ulf Hansson , Sasha Levin Subject: [PATCH AUTOSEL 4.14 101/170] memstick: Prevent memstick host from getting runtime suspended during card detection Date: Mon, 28 Jan 2019 11:10:51 -0500 Message-Id: <20190128161200.55107-101-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190128161200.55107-1-sashal@kernel.org> References: <20190128161200.55107-1-sashal@kernel.org> MIME-Version: 1.0 X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kai-Heng Feng [ 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 Tested-by: Oleksandr Natalenko Signed-off-by: Ulf Hansson Signed-off-by: Sasha Levin --- 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 76382c858c35..1246d69ba187 100644 --- a/drivers/memstick/core/memstick.c +++ b/drivers/memstick/core/memstick.c @@ -18,6 +18,7 @@ #include #include #include +#include #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 @@ static void memstick_check(struct work_struct *work) 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