Re: [PATCH v3 1/2] mmc: core: Pass down user specified timeout value to sanitize
From: Ulf Hansson
Date: Mon Apr 12 2021 - 03:52:37 EST
On Fri, 2 Apr 2021 at 11:24, Bean Huo <huobean@xxxxxxxxx> wrote:
>
> From: Bean Huo <beanhuo@xxxxxxxxxx>
>
> 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@xxxxxxxxxx>
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
>