linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ulf Hansson <ulf.hansson@linaro.org>
To: linux-mmc@vger.kernel.org, Ulf Hansson <ulf.hansson@linaro.org>
Cc: "Adrian Hunter" <adrian.hunter@intel.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Rui Miguel Silva" <rmfrfs@gmail.com>,
	"Johan Hovold" <johan@kernel.org>,
	"Alex Elder" <elder@kernel.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Jonathan Neuschäfer" <j.neuschaefer@gmx.net>,
	"Bruce Chang" <brucechang@via.com.tw>,
	"Harald Welte" <HaraldWelte@viatech.com>,
	"Alex Dubov" <oakad@yahoo.com>,
	"Sascha Sommer" <saschasommer@freenet.de>,
	"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
	mirq-linux@rere.qmqm.pl,
	"Jesper Nilsson" <jesper.nilsson@axis.com>,
	"Lars Persson" <lars.persson@axis.com>,
	"Paul Cercueil" <paul@crapouillou.net>,
	"Ludovic Desroches" <ludovic.desroches@microchip.com>,
	"Nicolas Ferre" <nicolas.ferre@microchip.com>
Subject: [PATCH 07/19] mmc: owl-mmc: Respect the cmd->busy_timeout from the mmc core
Date: Tue, 14 Apr 2020 18:14:01 +0200	[thread overview]
Message-ID: <20200414161413.3036-8-ulf.hansson@linaro.org> (raw)
In-Reply-To: <20200414161413.3036-1-ulf.hansson@linaro.org>

For commands that doesn't involve to prepare a data transfer, owl-mmc is
using a fixed 30s response timeout. This is a bit problematic.

For some commands it means waiting longer than needed for the completion to
expire, which may not a big issue, but still. For other commands, like for
an erase (CMD38) that uses a R1B response, may require longer timeouts than
30s. In these cases, we may end up treating the command as it failed, while
it just needed some more time to complete successfully.

Fix the problem by respecting the cmd->busy_timeout, which is provided by
the mmc core.

Cc: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
 drivers/mmc/host/owl-mmc.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/owl-mmc.c b/drivers/mmc/host/owl-mmc.c
index 01ffe51f413d..5e20c099fe03 100644
--- a/drivers/mmc/host/owl-mmc.c
+++ b/drivers/mmc/host/owl-mmc.c
@@ -92,6 +92,8 @@
 #define OWL_SD_STATE_RC16ER		BIT(1)
 #define OWL_SD_STATE_CRC7ER		BIT(0)
 
+#define OWL_CMD_TIMEOUT_MS		30000
+
 struct owl_mmc_host {
 	struct device *dev;
 	struct reset_control *reset;
@@ -172,6 +174,7 @@ static void owl_mmc_send_cmd(struct owl_mmc_host *owl_host,
 			     struct mmc_command *cmd,
 			     struct mmc_data *data)
 {
+	unsigned long timeout;
 	u32 mode, state, resp[2];
 	u32 cmd_rsp_mask = 0;
 
@@ -239,7 +242,10 @@ static void owl_mmc_send_cmd(struct owl_mmc_host *owl_host,
 	if (data)
 		return;
 
-	if (!wait_for_completion_timeout(&owl_host->sdc_complete, 30 * HZ)) {
+	timeout = msecs_to_jiffies(cmd->busy_timeout ? cmd->busy_timeout :
+		OWL_CMD_TIMEOUT_MS);
+
+	if (!wait_for_completion_timeout(&owl_host->sdc_complete, timeout)) {
 		dev_err(owl_host->dev, "CMD interrupt timeout\n");
 		cmd->error = -ETIMEDOUT;
 		return;
-- 
2.20.1


  parent reply	other threads:[~2020-04-14 16:14 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-14 16:13 [PATCH 00/19] mmc: Improve host driver's support for R1B responses Ulf Hansson
2020-04-14 16:13 ` [PATCH 01/19] mmc: atmel-mci: Keep timer enabled when queuing a next request Ulf Hansson
2020-04-17 20:39   ` ludovic.desroches
2020-04-14 16:13 ` [PATCH 02/19] mmc: atmel-mci: Set the timer per command rather than per request Ulf Hansson
2020-04-17 20:40   ` ludovic.desroches
2020-04-14 16:13 ` [PATCH 03/19] mmc: atmel-mci: Respect the cmd->busy_timeout from the mmc core Ulf Hansson
2020-04-17 20:44   ` ludovic.desroches
2020-04-14 16:13 ` [PATCH 04/19] mmc: jz4740: Inform the mmc core about the maximum busy timeout Ulf Hansson
2020-04-14 16:13 ` [PATCH 05/19] mmc: usdhi6rol0: " Ulf Hansson
2020-04-15  6:34   ` Jesper Nilsson
2020-04-14 16:14 ` [PATCH 06/19] mmc: cb710: " Ulf Hansson
2020-04-14 18:39   ` Michał Mirosław
2020-04-15  7:41     ` Ulf Hansson
2020-05-08  8:38       ` Ulf Hansson
2020-04-14 16:14 ` Ulf Hansson [this message]
2020-04-14 16:14 ` [PATCH 08/19] mmc: sdricoh_cs: Drop unused defines Ulf Hansson
2020-04-14 16:14 ` [PATCH 09/19] mmc: sdricoh_cs: Use MMC_APP_CMD rather than a hardcoded number Ulf Hansson
2020-04-14 16:14 ` [PATCH 10/19] mmc: sdricoh_cs: Move MMC_APP_CMD handling to sdricoh_mmc_cmd() Ulf Hansson
2020-04-14 16:14 ` [PATCH 11/19] mmc: sdricoh_cs: Drop redundant in-parameter to sdricoh_query_status() Ulf Hansson
2020-04-14 16:14 ` [PATCH 12/19] mmc: sdricoh_cs: Throttle polling rate for data transfers Ulf Hansson
2020-04-14 16:14 ` [PATCH 13/19] mmc: sdricoh_cs: Throttle polling rate for commands Ulf Hansson
2020-04-14 16:14 ` [PATCH 14/19] mmc: sdricoh_cs: Respect the cmd->busy_timeout from the mmc core Ulf Hansson
2020-04-14 16:14 ` [PATCH 15/19] mmc: tifm_sd: Inform the mmc core about the maximum busy timeout Ulf Hansson
2020-04-14 16:14 ` [PATCH 16/19] mmc: via-sdmmc: Respect the cmd->busy_timeout from the mmc core Ulf Hansson
2020-04-14 16:14 ` [PATCH 17/19] mmc: mmc_spi: Add/rename defines for timeouts Ulf Hansson
2020-04-14 16:14 ` [PATCH 18/19] mmc: mmc_spi: Respect the cmd->busy_timeout from the mmc core Ulf Hansson
2020-04-14 16:14 ` [PATCH 19/19] staging: greybus: sdio: " Ulf Hansson
2020-04-15  8:30   ` Rui Miguel Silva
2020-04-16 10:25   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200414161413.3036-8-ulf.hansson@linaro.org \
    --to=ulf.hansson@linaro.org \
    --cc=HaraldWelte@viatech.com \
    --cc=adrian.hunter@intel.com \
    --cc=brucechang@via.com.tw \
    --cc=elder@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=j.neuschaefer@gmx.net \
    --cc=jesper.nilsson@axis.com \
    --cc=johan@kernel.org \
    --cc=lars.persson@axis.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=ludovic.desroches@microchip.com \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=mirq-linux@rere.qmqm.pl \
    --cc=nicolas.ferre@microchip.com \
    --cc=oakad@yahoo.com \
    --cc=paul@crapouillou.net \
    --cc=rmfrfs@gmail.com \
    --cc=saschasommer@freenet.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).