lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAPDyKFqK7CwGF2CitFtHUE_8hRxMr92KmWQzdO4kWRa7kYqHuQ@mail.gmail.com>
Date: Thu, 1 Aug 2024 13:01:11 +0200
From: Ulf Hansson <ulf.hansson@...aro.org>
To: Mengqi Zhang <mengqi.zhang@...iatek.com>
Cc: chaotian.jing@...iatek.com, matthias.bgg@...il.com, 
	angelogioacchino.delregno@...labora.com, wenbin.mei@...iatek.com, 
	linux-mmc@...r.kernel.org, linux-arm-kernel@...ts.infradead.org, 
	linux-mediatek@...ts.infradead.org, linux-kernel@...r.kernel.org, 
	stable@...r.stable.com
Subject: Re: [v1, 1/1] mmc: mtk-sd: receive cmd8 data when hs400 tuning fail

On Tue, 16 Jul 2024 at 03:37, Mengqi Zhang <mengqi.zhang@...iatek.com> wrote:
>
> When we use cmd8 as the tuning command in hs400 mode, the command
> response sent back by some eMMC devices cannot be correctly sampled
> by MTK eMMC controller at some weak sample timing. In this case,
> command timeout error may occur. So we must receive the following
> data to make sure the next cmd8 send correctly.
>
> Signed-off-by: Mengqi Zhang <mengqi.zhang@...iatek.com>
> Fixes: c4ac38c6539b ("mmc: mtk-sd: Add HS400 online tuning support")
> Cc: stable@...r.stable.com

Applied for fixes, thanks!

Kind regards
Uffe


> ---
>  drivers/mmc/host/mtk-sd.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
> index a94835b8ab93..e386f78e3267 100644
> --- a/drivers/mmc/host/mtk-sd.c
> +++ b/drivers/mmc/host/mtk-sd.c
> @@ -1230,7 +1230,7 @@ static bool msdc_cmd_done(struct msdc_host *host, int events,
>         }
>
>         if (!sbc_error && !(events & MSDC_INT_CMDRDY)) {
> -               if (events & MSDC_INT_CMDTMO ||
> +               if ((events & MSDC_INT_CMDTMO && !host->hs400_tuning) ||
>                     (!mmc_op_tuning(cmd->opcode) && !host->hs400_tuning))
>                         /*
>                          * should not clear fifo/interrupt as the tune data
> @@ -1323,9 +1323,9 @@ static void msdc_start_command(struct msdc_host *host,
>  static void msdc_cmd_next(struct msdc_host *host,
>                 struct mmc_request *mrq, struct mmc_command *cmd)
>  {
> -       if ((cmd->error &&
> -           !(cmd->error == -EILSEQ &&
> -             (mmc_op_tuning(cmd->opcode) || host->hs400_tuning))) ||
> +       if ((cmd->error && !host->hs400_tuning &&
> +            !(cmd->error == -EILSEQ &&
> +            mmc_op_tuning(cmd->opcode))) ||
>             (mrq->sbc && mrq->sbc->error))
>                 msdc_request_done(host, mrq);
>         else if (cmd == mrq->sbc)
> --
> 2.25.1
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ