Re: [PATCH] mmc: sdhci: Fix override of timeout clk wrt max_busy_timeout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7 March 2016 at 12:33, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
> Normally the timeout clock frequency is read from the capabilities
> register.  It is also possible to set the value prior to calling
> sdhci_add_host() in which case that value will override the
> capabilities register value.  However that was being done after
> calculating max_busy_timeout so that max_busy_timeout was being
> calculated using the wrong value of timeout_clk.
>
> Fix that by moving the override before max_busy_timeout is
> calculated.
>
> The result is that the max_busy_timeout and max_discard
> increase for BSW devices so that, for example, the time for
> mkfs.ext4 on a 64GB eMMC drops from about 1 minute 40 seconds
> to about 20 seconds.
>
> Note, in the future, the capabilities setting will be tidied up
> and this override won't be used anymore.  However this fix is
> needed for stable.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx # v3.18+

Thanks, applied for next!

Kind regards
Uffe

> ---
>  drivers/mmc/host/sdhci.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index 03fbb36580f7..4ae394e9e560 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -3016,14 +3016,14 @@ int sdhci_add_host(struct sdhci_host *host)
>                 if (caps[0] & SDHCI_TIMEOUT_CLK_UNIT)
>                         host->timeout_clk *= 1000;
>
> +               if (override_timeout_clk)
> +                       host->timeout_clk = override_timeout_clk;
> +
>                 mmc->max_busy_timeout = host->ops->get_max_timeout_count ?
>                         host->ops->get_max_timeout_count(host) : 1 << 27;
>                 mmc->max_busy_timeout /= host->timeout_clk;
>         }
>
> -       if (override_timeout_clk)
> -               host->timeout_clk = override_timeout_clk;
> -
>         mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23;
>         mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD;
>
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux