From patchwork Fri Sep 13 09:40:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 173743 Delivered-To: patches@linaro.org Received: by 2002:ac9:19ad:0:0:0:0:0 with SMTP id d45csp464469oce; Fri, 13 Sep 2019 02:40:58 -0700 (PDT) X-Received: by 2002:a19:c3d3:: with SMTP id t202mr31678454lff.48.1568367658550; Fri, 13 Sep 2019 02:40:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568367658; cv=none; d=google.com; s=arc-20160816; b=EularVPc8nPlwlg9RktzSXzMHtpv3IY8fpiLPcwH3lCp7ioMNSHwFOLuQYOnRKQS5O KnlGkTTrWDvnCCrMX1f3REvc0xLKY6TC8xYcENGyvk/sHVrftloaDHIhJyZi3NldjGi6 26VhIFpXRjxnWFhnvSc5j9sqGLjUge8m7h9/FKAn94zIcIesY24dupB59OaiHO6wTOYZ XG5CUrzgploqzj3Dji+lqAPKlr0wcEYsfaGZIwYxndidZwlXUC6n+7JMyRfNgQWFmWIq pUz0jbeIuaG0Ca3Acv/L/dsCRDn4GxtZDmrc9iM0QErjiUa2mxQ1alIDmHwMNcPX3vWb d5oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature; bh=cnHaKGcMzTZrMV9+DycpQtbjSI9gqCpzF+WM5KDAOYI=; b=PullthgP+6pbPJa1Fh11YD+D4H4onpqrRz8DLN2gKHh8vGB9H3xLzV477Kgh/5MR6g EdN1inG9QGRuKrOLlI2/6IH+kHpOmEqYflObIs8+7/5Uc+eQ8tM5Ov+bECbJRp14S8Fq PwPFeuAf9Ne8BClNoIpo7plNLp0GAkEENBiWgTXW85cSOLGsOyLfe73rAnyybsPafTta LicO4A6/5ZAqT99+9OdVODnpsL7YGiucMKyHt94zSdDQ3dJdwNWYJubplJyKVoRVd/O9 44JfZUIrn8sJv5eh44PPzIzkbanbXKxS1cvGu+2BTxuHkNzYffS4bD/bf3qB2YRRmrUm 03TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=mdidwElC; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id w7sor8808138lfn.2.2019.09.13.02.40.58 for (Google Transport Security); Fri, 13 Sep 2019 02:40:58 -0700 (PDT) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=mdidwElC; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=cnHaKGcMzTZrMV9+DycpQtbjSI9gqCpzF+WM5KDAOYI=; b=mdidwElC8ipcbQxW/mPtNfu0vZY4TgHVrd3CNdL05yVYt9Lu77V+SZgbcEh87oEj7t gkLldHdYEKEK06Fc+cZqP2I5MK7PrKHFf900QCERYDJNbKvModF4UfEzyA9/RkDX0WaI SJHrbh0A/ebWMzJzgdAL/7wS7xRVVjYng9uolBqjzY+4IgDkI+iApBGAKRoU+g7BTgHP oXflWjRSzo7cjca5l98vN4G5cmz8MUZGpy2viBXMqx+fHTLL+NECNr+yfj0nN+yFBwXb TZxJCjC6I7KpNKLSNhb/hcD6L7Vo3PS3c8Yu/ndzVGYexUP+v1YOD+w5D8Dz96F1gL5m 1m0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=cnHaKGcMzTZrMV9+DycpQtbjSI9gqCpzF+WM5KDAOYI=; b=dRRUw4XTfYP9jEFI3J7tOE5AjTL0XClW1lSpfRJVizz7pceex0OC9VeA6K1kRxDFP0 NYp1Og4zp21nER2Sd5S/UaJroDlTY/C8Sx/1MQvWI2Lno4RH3W96eS2V/1bzGrH+Fh6l ZQbdbBcQ2J+TJLviU8M/29kfPnr5rdV/VpV3paw+9q1GsugfAkm84a80sVNGr8llSGbi c6ml9M+h1FRgdRqjKUgCQRzIAVcIOMvbrqIyvhG5H+OzSzn8Q97ODNFUJRbKbV2v2+dI egR5ZZgsp/yclaV+x2YtgPhySTOA4YqlD99xe3rrLUGmIK/Z4Oq+keefc51yPI1IrMmv 3DrQ== X-Gm-Message-State: APjAAAXccfgHEYigYMfuwkg4hP6/7BCAe9nwzvik8r6aeFC84eDA7zuD 6Orm/pCIyKe0XABHi4S3Z6QwtcB4 X-Google-Smtp-Source: APXvYqwEiWp/yNjzuQzjQoTmrkabJNoCTsTHyjiRt4f7PpRE9siDiHU3jHYq2MuhjIpOrvFqdSrDzw== X-Received: by 2002:a19:2207:: with SMTP id i7mr30863016lfi.185.1568367658137; Fri, 13 Sep 2019 02:40:58 -0700 (PDT) Return-Path: Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id l9sm6183358ljg.79.2019.09.13.02.40.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Sep 2019 02:40:57 -0700 (PDT) From: Ulf Hansson To: linux-mmc@vger.kernel.org, Ulf Hansson , Masahiro Yamada , Wolfram Sang Cc: Ulrich Hecht , Simon Horman , Niklas Soderlund , Geert Uytterhoeven Subject: [PATCH 1/3] Revert "mmc: tmio: move runtime PM enablement to the driver implementations" Date: Fri, 13 Sep 2019 11:40:53 +0200 Message-Id: <20190913094053.20753-1-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.17.1 This reverts commit 7ff213193310ef8d0ee5f04f79d791210787ac2c. It turns out that the above commit introduces other problems. For example, calling pm_runtime_set_active() must not be done prior calling pm_runtime_enable() as that makes it fail. This leads to additional problems, such as clock enables being wrongly balanced. Rather than fixing the problem on top, let's start over by doing a revert. Fixes: 7ff213193310 ("mmc: tmio: move runtime PM enablement to the driver implementations") Signed-off-by: Ulf Hansson --- drivers/mmc/host/renesas_sdhi_core.c | 6 ------ drivers/mmc/host/tmio_mmc.c | 5 ----- drivers/mmc/host/tmio_mmc_core.c | 11 ++--------- drivers/mmc/host/uniphier-sd.c | 3 --- 4 files changed, 2 insertions(+), 23 deletions(-) -- 2.17.1 Tested-by: Wolfram Sang diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c index 64d3b5fb7fe5..4a2872f49a60 100644 --- a/drivers/mmc/host/renesas_sdhi_core.c +++ b/drivers/mmc/host/renesas_sdhi_core.c @@ -774,8 +774,6 @@ int renesas_sdhi_probe(struct platform_device *pdev, /* All SDHI have SDIO status bits which must be 1 */ mmc_data->flags |= TMIO_MMC_SDIO_STATUS_SETBITS; - pm_runtime_enable(&pdev->dev); - ret = renesas_sdhi_clk_enable(host); if (ret) goto efree; @@ -856,8 +854,6 @@ int renesas_sdhi_probe(struct platform_device *pdev, efree: tmio_mmc_host_free(host); - pm_runtime_disable(&pdev->dev); - return ret; } EXPORT_SYMBOL_GPL(renesas_sdhi_probe); @@ -869,8 +865,6 @@ int renesas_sdhi_remove(struct platform_device *pdev) tmio_mmc_host_remove(host); renesas_sdhi_clk_disable(host); - pm_runtime_disable(&pdev->dev); - return 0; } EXPORT_SYMBOL_GPL(renesas_sdhi_remove); diff --git a/drivers/mmc/host/tmio_mmc.c b/drivers/mmc/host/tmio_mmc.c index 8539e10784b4..93e83ad25976 100644 --- a/drivers/mmc/host/tmio_mmc.c +++ b/drivers/mmc/host/tmio_mmc.c @@ -172,8 +172,6 @@ static int tmio_mmc_probe(struct platform_device *pdev) host->mmc->f_max = pdata->hclk; host->mmc->f_min = pdata->hclk / 512; - pm_runtime_enable(&pdev->dev); - ret = tmio_mmc_host_probe(host); if (ret) goto host_free; @@ -193,7 +191,6 @@ static int tmio_mmc_probe(struct platform_device *pdev) tmio_mmc_host_remove(host); host_free: tmio_mmc_host_free(host); - pm_runtime_disable(&pdev->dev); cell_disable: if (cell->disable) cell->disable(pdev); @@ -210,8 +207,6 @@ static int tmio_mmc_remove(struct platform_device *pdev) if (cell->disable) cell->disable(pdev); - pm_runtime_disable(&pdev->dev); - return 0; } diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c index 2cb3f951c3e2..8b299c1f0069 100644 --- a/drivers/mmc/host/tmio_mmc_core.c +++ b/drivers/mmc/host/tmio_mmc_core.c @@ -1153,15 +1153,6 @@ void tmio_mmc_host_free(struct tmio_mmc_host *host) } EXPORT_SYMBOL_GPL(tmio_mmc_host_free); -/** - * tmio_mmc_host_probe() - Common probe for all implementations - * @_host: Host to probe - * - * Perform tasks common to all implementations probe functions. - * - * The caller should have called pm_runtime_enable() prior to calling - * the common probe function. - */ int tmio_mmc_host_probe(struct tmio_mmc_host *_host) { struct platform_device *pdev = _host->pdev; @@ -1260,6 +1251,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host) pm_runtime_set_active(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, 50); pm_runtime_use_autosuspend(&pdev->dev); + pm_runtime_enable(&pdev->dev); ret = mmc_add_host(mmc); if (ret) @@ -1295,6 +1287,7 @@ void tmio_mmc_host_remove(struct tmio_mmc_host *host) pm_runtime_dont_use_autosuspend(&pdev->dev); pm_runtime_put_sync(&pdev->dev); + pm_runtime_disable(&pdev->dev); } EXPORT_SYMBOL_GPL(tmio_mmc_host_remove); diff --git a/drivers/mmc/host/uniphier-sd.c b/drivers/mmc/host/uniphier-sd.c index 49aad9a79c18..91a2be41edf6 100644 --- a/drivers/mmc/host/uniphier-sd.c +++ b/drivers/mmc/host/uniphier-sd.c @@ -631,7 +631,6 @@ static int uniphier_sd_probe(struct platform_device *pdev) host->clk_disable = uniphier_sd_clk_disable; host->set_clock = uniphier_sd_set_clock; - pm_runtime_enable(&pdev->dev); ret = uniphier_sd_clk_enable(host); if (ret) goto free_host; @@ -653,7 +652,6 @@ static int uniphier_sd_probe(struct platform_device *pdev) free_host: tmio_mmc_host_free(host); - pm_runtime_disable(&pdev->dev); return ret; } @@ -664,7 +662,6 @@ static int uniphier_sd_remove(struct platform_device *pdev) tmio_mmc_host_remove(host); uniphier_sd_clk_disable(host); - pm_runtime_disable(&pdev->dev); return 0; } From patchwork Fri Sep 13 09:41:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 173744 Delivered-To: patches@linaro.org Received: by 2002:ac9:19ad:0:0:0:0:0 with SMTP id d45csp464705oce; Fri, 13 Sep 2019 02:41:13 -0700 (PDT) X-Received: by 2002:a2e:9081:: with SMTP id l1mr10353905ljg.33.1568367672916; Fri, 13 Sep 2019 02:41:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568367672; cv=none; d=google.com; s=arc-20160816; b=JnDoG6loA+Tyin6BbHrqjQyCTxZT3/imEIFohxQYQ9JtsWO4efKC+GrpFRkVTPzvrf 8zl+oKID+stV67IvRQTgpND7vQbBQd/AA0wzUHMTZWxJGhCzIS+RgTMlkUquVfniP4XG Flz7XB+n6/BIJYWXYGE9CRriF+ltXMlTwOxJmN0rY4XY5yCoVKPLYBd1q1ntBuEv/0ct gzkpq+Anbu1Kzwc11Nmg0jpIesxMSvMhtLWOOu6FnkRqCVPyiOWwoIrUo4N5TjoRqIdG GGvEl+jr+nFqcsiG6Wk2kZFNkT1HEzUeIxliCcMCcwOHW7k3kjrV39VBRzCgjevc1FTE u3OA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature; bh=x+Ss15MNzRVyX67MkdlgMEH//XbsQfFeOYqwwe3OaKg=; b=lSO4lQqcJILsUwhtZBySbMpj+wbOAOKtDglq9TBAiuFCtC4SFsjhcgvMevcCr6/AXa Bl/dAqLQAnWQHfZ/HspCMbG9Hl7G+/N0ccOUkYGYZYcUXaKEyhXu3KKNz8OKJTvQPG0w WSuCr/qmtybXoMq3AZoC47JaR4dOeHqsWtH1c7oTB/3T9p323O+F0wKfSZ3+vKzXdPJw cvUwgDMLyYH0omooXxRbapGws6FrrzBdPNTesWcIDIpWud6ZnBptNU9FWVfIdoN4hbGq AJpjNQBWSXR0GydlWvD21B+B8e+0483fCTGKo8c7qq08N+thYxal+sau0ZoQb0bJxOFx oKyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="p/zm/sxh"; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id g20sor13565016ljk.20.2019.09.13.02.41.12 for (Google Transport Security); Fri, 13 Sep 2019 02:41:12 -0700 (PDT) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="p/zm/sxh"; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=x+Ss15MNzRVyX67MkdlgMEH//XbsQfFeOYqwwe3OaKg=; b=p/zm/sxhH+yLyUYDxLlnKOtmXMLDat12pljG16ezcFFV2KVT9H7TvPLYzzcEKGU2iB Z+dzvPI+7dE3RFBNzp/y7eGYsldxMGXYmuG7IYacFQKsCM1ylejcxJGHxx2OTzbFfnkT BqdQwuGj5/CbTerzQCU6qZvWQBILgMVtCpoDN5XSDon6/bxtY6T7VRbAB7JtI/0NrYI6 Vn9J6utyHjJKTYBt7OlZ0x9CPXDc2P7gu27ihhbaJMBJ1/ZbbFN1neura7JTS7w8z6YL xggY00OLA/9jd0FpdjdpHR0JQJKZMFvVHzv3V7+rfkBuzAfIqSHeHFnQvC5xN7izRC4g jBpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=x+Ss15MNzRVyX67MkdlgMEH//XbsQfFeOYqwwe3OaKg=; b=mfoALrKkhCZ97k64ejgQJHMWM/QRCX0eep+jw7UFxu6X5qu0ue+2E5LmcupyxJo/g+ tY9RV1nubBE0N94PTDF4VunHjB6/AvyGLQyReB7lFlD77MfjxZQT+KBS4R+zcWnbzydD bqlk2NPH8wgd9z5x5vn01tY7Iy6NtYeFcdPPwpElmt7wbRRrxeshxhngEilLKs6P/Ch1 O+j10KkOL1QhxAUQQ9kLXOtqBUJBFHSryLlU0QOvpOYSYVkreJyFQGqMdf6VqlBXwlIz MCpAlYKBQ3zYD3mZ1NzKUhysjm1H8cAa9jkVxoXLC87JdI7YO9FosUSTrqrJemyNilyv KulA== X-Gm-Message-State: APjAAAU8PIkr9CMIiUmUD5cwdNeVuhqpmTXYYB/NP5JBX2AnKxYyKm5I lKMib/7nScBnc3Fd+RABduFzpzLt X-Google-Smtp-Source: APXvYqzJYGbaNDMizQgqIGnU19xD8dzBy4o+0P+OIYwEEFFswZEvh81y8WZHPl493WfWx8/7DXCddw== X-Received: by 2002:a2e:8e8c:: with SMTP id z12mr28888323ljk.204.1568367672562; Fri, 13 Sep 2019 02:41:12 -0700 (PDT) Return-Path: Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id t29sm116607lfb.85.2019.09.13.02.41.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Sep 2019 02:41:11 -0700 (PDT) From: Ulf Hansson To: linux-mmc@vger.kernel.org, Ulf Hansson , Masahiro Yamada , Wolfram Sang Cc: Ulrich Hecht , Simon Horman , Niklas Soderlund , Geert Uytterhoeven , stable@vger.kernel.org Subject: [PATCH 2/3] mmc: tmio: Fixup runtime PM management during probe Date: Fri, 13 Sep 2019 11:41:09 +0200 Message-Id: <20190913094109.21192-1-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.17.1 The tmio_mmc_host_probe() calls pm_runtime_set_active() to update the runtime PM status of the device, as to make it reflect the current status of the HW. This works fine for most cases, but unfortunate not for all. Especially, there is a generic problem when the device has a genpd attached and that genpd have the ->start|stop() callbacks assigned. More precisely, if the driver calls pm_runtime_set_active() during ->probe(), genpd does not get to invoke the ->start() callback for it, which means the HW isn't really fully powered on. Furthermore, in the next phase, when the device becomes runtime suspended, genpd will invoke the ->stop() callback for it, potentially leading to usage count imbalance problems, depending on what's implemented behind the callbacks of course. To fix this problem, convert to call pm_runtime_get_sync() from tmio_mmc_host_probe() rather than pm_runtime_set_active(). Additionally, to avoid bumping usage counters and unnecessary re-initializing the HW the first time the tmio driver's ->runtime_resume() callback is called, introduce a state flag to keeping track of this. Cc: stable@vger.kernel.org Signed-off-by: Ulf Hansson --- drivers/mmc/host/tmio_mmc.h | 1 + drivers/mmc/host/tmio_mmc_core.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) -- 2.17.1 diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h index c5ba13fae399..2f0b092d6dcc 100644 --- a/drivers/mmc/host/tmio_mmc.h +++ b/drivers/mmc/host/tmio_mmc.h @@ -163,6 +163,7 @@ struct tmio_mmc_host { unsigned long last_req_ts; struct mutex ios_lock; /* protect set_ios() context */ bool native_hotplug; + bool runtime_synced; bool sdio_irq_enabled; /* Mandatory callback */ diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c index 8b299c1f0069..32f9679ec42e 100644 --- a/drivers/mmc/host/tmio_mmc_core.c +++ b/drivers/mmc/host/tmio_mmc_core.c @@ -1248,20 +1248,22 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host) /* See if we also get DMA */ tmio_mmc_request_dma(_host, pdata); - pm_runtime_set_active(&pdev->dev); pm_runtime_set_autosuspend_delay(&pdev->dev, 50); pm_runtime_use_autosuspend(&pdev->dev); pm_runtime_enable(&pdev->dev); + pm_runtime_get_sync(&pdev->dev); ret = mmc_add_host(mmc); if (ret) goto remove_host; dev_pm_qos_expose_latency_limit(&pdev->dev, 100); + pm_runtime_put(&pdev->dev); return 0; remove_host: + pm_runtime_put_noidle(&pdev->dev); tmio_mmc_host_remove(_host); return ret; } @@ -1330,6 +1332,11 @@ int tmio_mmc_host_runtime_resume(struct device *dev) { struct tmio_mmc_host *host = dev_get_drvdata(dev); + if (!host->runtime_synced) { + host->runtime_synced = true; + return 0; + } + tmio_mmc_clk_enable(host); tmio_mmc_hw_reset(host->mmc); From patchwork Fri Sep 13 09:41:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ulf Hansson X-Patchwork-Id: 173745 Delivered-To: patches@linaro.org Received: by 2002:ac9:19ad:0:0:0:0:0 with SMTP id d45csp464845oce; Fri, 13 Sep 2019 02:41:23 -0700 (PDT) X-Received: by 2002:a2e:8594:: with SMTP id b20mr28275150lji.232.1568367683025; Fri, 13 Sep 2019 02:41:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568367683; cv=none; d=google.com; s=arc-20160816; b=uY1NCV6FhOkE+EjE8yXMsB/ur5vH7jTZoiuqqM7RO2C7Y7LnnoQdPT4tCkz3ClqESh twRh3EwFXEkqqnaUUnIHXlfQ3Noj3ErAKh/Wbc8vXsd4RW3TxQpCfkIc/e3gDS0LHCqf qs48xE/bre1S14Ls/aP4fsezpEEJ9J8HAHNiYE/vnQwh6i8BHe9Z3K92KG6Mt00eDGFP ngQTFl/h5SBQVixN0MBzwsiqS5atvIhMQgCz9WNsq8mZR2Nk97CoZqBO7d/vnYsWGV9o v64er3cwAt7/m2Y5yosAFnzXSwEmU9MNA1uNXhyc1TW664VPrdx4f47GxPo89UGOQTyI 2n+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature; bh=QS5aLvWZAGl2qy1uqqrDaZesBLdCRvn2tS/IES0IrhM=; b=ECbnySvosfsH6BFOX30P5285mWXRc8KFakvU6PRm2FBkMBUan+mg6hBFBkuwgB+mC6 xhYNwyUmRWHBlLZvB/DZQr5zUr6sszhxoXiLf28h1mSUuFjT7OKiBXE1X0PySTMpkVNp j5LffA/Fg0KslrPQWhvEv7ek3aA5gFet/o3wY+HNxVfEkyrp/txZnGOLsw1IKoKgrfvd 1qVXBSobXcnr7sdiOypBKWSTg51n2r740GDtV/3O6piQpx7ddq2K4SvFlgl7ByPclTez Nn29vYcVssWkComNYPENQx13+Oryc7ze4EyQDSuAl3Simst5OZpHamV4N21ng/PG8VBj Ohbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yZ5hsC3w; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id d27sor8615540lfn.30.2019.09.13.02.41.22 for (Google Transport Security); Fri, 13 Sep 2019 02:41:23 -0700 (PDT) Received-SPF: pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yZ5hsC3w; spf=pass (google.com: domain of ulf.hansson@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=ulf.hansson@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=QS5aLvWZAGl2qy1uqqrDaZesBLdCRvn2tS/IES0IrhM=; b=yZ5hsC3wpKS6si95BrlMuHu1YR8h/0bTMI9DXnxjZWspdHqN1NRmsaGxp+nAxstv92 1fzPPu9jEAL6CNzjvzEjLp3g5hmREbhMnxAnZKOVckJvwdCAu+bJxIyKdlR0Qi6YVo4b 5OLcr7zH3kOTDBXAfUWTiPfaKSQrrO/oIeQuBf8qX8wUaMyVk37vlWX27hoxlGuF/+UY ZAyTx1v2oq1OSd8OlcaHIAtDfN5ElolhZyhFTyFLrygAk9maOIMXSQWY49hELJZBT2Tn Jp6rEBMG+D8e4yy7qTe/q2oOWmRdxz+x5Puswfi2iho4OcCIWM+ZDvDq2hc0/0gOrJiz qung== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=QS5aLvWZAGl2qy1uqqrDaZesBLdCRvn2tS/IES0IrhM=; b=RUZAb6VKXktffvFDbUN/ERPy7v2zwo9HuzOZ9VmPVR/lGm+pU+3fmFdAzSfXHidCf5 uKilH9uf3zSEK+9nZ+mwX8t5TNoZv0B0yyA6tRQQcaR2bO/nY3oqeunpYNoVAikg3gx5 81jXZWlTU7YRzQGH2qSxk1ut147XXXQZUJZrbTHFDsYHY3vv01HONAyQFjc20yjgyUBs zYYGDNkxEwit8+d4mat5Ih1xROa64A0TryzOLYR8pdeJeN2moskqpEYZirvm4Nkdtetr ZrXN539tfZWUNJ2OkMLnR9dWONzVtlhpKE1QpEjSv0l9AgqEAo3MdwIJXZdjySwIKVDq S+mw== X-Gm-Message-State: APjAAAViKx8WgyeNV3QmOw0LPJIoe6CsbglfVajarL5j524BNhwnW4mA UxqmVQsbDYWhx3jhH8Z/7pnb4RVc X-Google-Smtp-Source: APXvYqyUxASV7kYcJEmZaWXICNtRekMjOPkhAQ78JgYbxBn5y94tN6W9C5mpRNzDqz1V5ckldlf5eg== X-Received: by 2002:ac2:51cd:: with SMTP id u13mr8658216lfm.135.1568367682684; Fri, 13 Sep 2019 02:41:22 -0700 (PDT) Return-Path: Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id h21sm6198268ljg.34.2019.09.13.02.41.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Sep 2019 02:41:22 -0700 (PDT) From: Ulf Hansson To: linux-mmc@vger.kernel.org, Ulf Hansson , Masahiro Yamada , Wolfram Sang Cc: Ulrich Hecht , Simon Horman , Niklas Soderlund , Geert Uytterhoeven , stable@vger.kernel.org Subject: [PATCH 3/3] mmc: tmio: Fixup runtime PM management during remove Date: Fri, 13 Sep 2019 11:41:18 +0200 Message-Id: <20190913094118.21243-1-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.17.1 Accessing the device when it may be runtime suspended is a bug, which is the case in tmio_mmc_host_remove(). Let's fix the behaviour. Cc: stable@vger.kernel.org Signed-off-by: Ulf Hansson --- drivers/mmc/host/tmio_mmc_core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) -- 2.17.1 diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c index 32f9679ec42e..9b6e1001e77c 100644 --- a/drivers/mmc/host/tmio_mmc_core.c +++ b/drivers/mmc/host/tmio_mmc_core.c @@ -1274,12 +1274,11 @@ void tmio_mmc_host_remove(struct tmio_mmc_host *host) struct platform_device *pdev = host->pdev; struct mmc_host *mmc = host->mmc; + pm_runtime_get_sync(&pdev->dev); + if (host->pdata->flags & TMIO_MMC_SDIO_IRQ) sd_ctrl_write16(host, CTL_TRANSACTION_CTL, 0x0000); - if (!host->native_hotplug) - pm_runtime_get_sync(&pdev->dev); - dev_pm_qos_hide_latency_limit(&pdev->dev); mmc_remove_host(mmc); @@ -1288,6 +1287,8 @@ void tmio_mmc_host_remove(struct tmio_mmc_host *host) tmio_mmc_release_dma(host); pm_runtime_dont_use_autosuspend(&pdev->dev); + if (host->native_hotplug) + pm_runtime_put_noidle(&pdev->dev); pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); }