diff mbox series

[v3,1/2] mmc: core: Pass down user specified timeout value to sanitize

Message ID 20210402092432.25069-2-huobean@gmail.com
State New
Headers show
Series [v3,1/2] mmc: core: Pass down user specified timeout value to sanitize | expand

Commit Message

Bean Huo April 2, 2021, 9:24 a.m. UTC
From: Bean Huo <beanhuo@micron.com>

As the density increases, the 4-minute timeout value for
sanitize is no longer feasible. At the same time, devices
of different densities have different timeout values, and it is
difficult to obtain a unified standard timeout value. Therefore,
it is better to pass down user-specified sanitize timeout value.

Signed-off-by: Bean Huo <beanhuo@micron.com>
---
 drivers/mmc/core/block.c   | 2 +-
 drivers/mmc/core/mmc_ops.c | 7 +++++--
 drivers/mmc/core/mmc_ops.h | 2 +-
 3 files changed, 7 insertions(+), 4 deletions(-)

Comments

Ulf Hansson April 12, 2021, 7:51 a.m. UTC | #1
On Fri, 2 Apr 2021 at 11:24, Bean Huo <huobean@gmail.com> wrote:
>

> From: Bean Huo <beanhuo@micron.com>

>

> As the density increases, the 4-minute timeout value for

> sanitize is no longer feasible. At the same time, devices

> of different densities have different timeout values, and it is

> difficult to obtain a unified standard timeout value. Therefore,

> it is better to pass down user-specified sanitize timeout value.

>

> Signed-off-by: Bean Huo <beanhuo@micron.com>


Applied for next, thanks!

Kind regards
Uffe


> ---

>  drivers/mmc/core/block.c   | 2 +-

>  drivers/mmc/core/mmc_ops.c | 7 +++++--

>  drivers/mmc/core/mmc_ops.h | 2 +-

>  3 files changed, 7 insertions(+), 4 deletions(-)

>

> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c

> index fe5892d30778..8bfd4d95b386 100644

> --- a/drivers/mmc/core/block.c

> +++ b/drivers/mmc/core/block.c

> @@ -539,7 +539,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,

>

>         if ((MMC_EXTRACT_INDEX_FROM_ARG(cmd.arg) == EXT_CSD_SANITIZE_START) &&

>             (cmd.opcode == MMC_SWITCH))

> -               return mmc_sanitize(card);

> +               return mmc_sanitize(card, idata->ic.cmd_timeout_ms);

>

>         mmc_wait_for_req(card->host, &mrq);

>

> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c

> index f413474f0f80..ccca067db993 100644

> --- a/drivers/mmc/core/mmc_ops.c

> +++ b/drivers/mmc/core/mmc_ops.c

> @@ -1010,7 +1010,7 @@ int mmc_cmdq_disable(struct mmc_card *card)

>  }

>  EXPORT_SYMBOL_GPL(mmc_cmdq_disable);

>

> -int mmc_sanitize(struct mmc_card *card)

> +int mmc_sanitize(struct mmc_card *card, unsigned int timeout_ms)

>  {

>         struct mmc_host *host = card->host;

>         int err;

> @@ -1020,12 +1020,15 @@ int mmc_sanitize(struct mmc_card *card)

>                 return -EOPNOTSUPP;

>         }

>

> +       if (!timeout_ms)

> +               timeout_ms = MMC_SANITIZE_TIMEOUT_MS;

> +

>         pr_debug("%s: Sanitize in progress...\n", mmc_hostname(host));

>

>         mmc_retune_hold(host);

>

>         err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_SANITIZE_START,

> -                        1, MMC_SANITIZE_TIMEOUT_MS);

> +                        1, timeout_ms);

>         if (err)

>                 pr_err("%s: Sanitize failed err=%d\n", mmc_hostname(host), err);

>

> diff --git a/drivers/mmc/core/mmc_ops.h b/drivers/mmc/core/mmc_ops.h

> index 632009260e51..1ed0d0375780 100644

> --- a/drivers/mmc/core/mmc_ops.h

> +++ b/drivers/mmc/core/mmc_ops.h

> @@ -46,7 +46,7 @@ void mmc_run_bkops(struct mmc_card *card);

>  int mmc_flush_cache(struct mmc_card *card);

>  int mmc_cmdq_enable(struct mmc_card *card);

>  int mmc_cmdq_disable(struct mmc_card *card);

> -int mmc_sanitize(struct mmc_card *card);

> +int mmc_sanitize(struct mmc_card *card, unsigned int timeout_ms);

>

>  #endif

>

> --

> 2.25.1

>
diff mbox series

Patch

diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index fe5892d30778..8bfd4d95b386 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -539,7 +539,7 @@  static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
 
 	if ((MMC_EXTRACT_INDEX_FROM_ARG(cmd.arg) == EXT_CSD_SANITIZE_START) &&
 	    (cmd.opcode == MMC_SWITCH))
-		return mmc_sanitize(card);
+		return mmc_sanitize(card, idata->ic.cmd_timeout_ms);
 
 	mmc_wait_for_req(card->host, &mrq);
 
diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
index f413474f0f80..ccca067db993 100644
--- a/drivers/mmc/core/mmc_ops.c
+++ b/drivers/mmc/core/mmc_ops.c
@@ -1010,7 +1010,7 @@  int mmc_cmdq_disable(struct mmc_card *card)
 }
 EXPORT_SYMBOL_GPL(mmc_cmdq_disable);
 
-int mmc_sanitize(struct mmc_card *card)
+int mmc_sanitize(struct mmc_card *card, unsigned int timeout_ms)
 {
 	struct mmc_host *host = card->host;
 	int err;
@@ -1020,12 +1020,15 @@  int mmc_sanitize(struct mmc_card *card)
 		return -EOPNOTSUPP;
 	}
 
+	if (!timeout_ms)
+		timeout_ms = MMC_SANITIZE_TIMEOUT_MS;
+
 	pr_debug("%s: Sanitize in progress...\n", mmc_hostname(host));
 
 	mmc_retune_hold(host);
 
 	err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_SANITIZE_START,
-			 1, MMC_SANITIZE_TIMEOUT_MS);
+			 1, timeout_ms);
 	if (err)
 		pr_err("%s: Sanitize failed err=%d\n", mmc_hostname(host), err);
 
diff --git a/drivers/mmc/core/mmc_ops.h b/drivers/mmc/core/mmc_ops.h
index 632009260e51..1ed0d0375780 100644
--- a/drivers/mmc/core/mmc_ops.h
+++ b/drivers/mmc/core/mmc_ops.h
@@ -46,7 +46,7 @@  void mmc_run_bkops(struct mmc_card *card);
 int mmc_flush_cache(struct mmc_card *card);
 int mmc_cmdq_enable(struct mmc_card *card);
 int mmc_cmdq_disable(struct mmc_card *card);
-int mmc_sanitize(struct mmc_card *card);
+int mmc_sanitize(struct mmc_card *card, unsigned int timeout_ms);
 
 #endif