Re: [PATCH 1/2] mmc: mxcmmc: really configure the DMA on demand

From: Ulf Hansson
Date: Wed Aug 11 2021 - 07:36:53 EST


On Thu, 29 Jul 2021 at 09:29, Juergen Borleis <jbe@xxxxxxxxxxxxxx> wrote:
>
> Calling mxcmci_use_dma(host) is intended for the next transfer only, not
> for generic detection if DMA is possible. Without this change, the DMA gets
> never configured and thus, never used.

Wow, that's an old bug you found there.

>
> Signed-off-by: Juergen Borleis <jbe@xxxxxxxxxxxxxx>

It looks like we should add a fixes tag and add a stable tag:

Fixes: f53fbde48ef0 ("mmc: mxcmmc: use dmaengine API")

> ---
> drivers/mmc/host/mxcmmc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
> index 2fe6fcd..611f827 100644
> --- a/drivers/mmc/host/mxcmmc.c
> +++ b/drivers/mmc/host/mxcmmc.c
> @@ -834,7 +834,8 @@ static void mxcmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
> else
> burstlen = 4;
>
> - if (mxcmci_use_dma(host) && burstlen != host->burstlen) {
> + if (host->dma != NULL && burstlen != host->burstlen) {
> + /* reconfigure DMA on changes only */
> host->burstlen = burstlen;
> ret = mxcmci_setup_dma(mmc);
> if (ret) {

A few lines below here, you should not clear host->do_dma, as it can't
be set at this point (thus clearing it just adds confusion).

Also I wonder if patch2 is really needed to fix the bug, or should be
considered as nice cleanup instead?

Kind regards
Uffe