Re: [PATCH 1/2] mmc: mxcmmc: really configure the DMA on demand
From: Ulf Hansson <hidden>
Date: 2021-08-11 11:36:52
Also in:
lkml
On Thu, 29 Jul 2021 at 09:29, Juergen Borleis [off-list ref] 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 <redacted>
It looks like we should add a fixes tag and add a stable tag:
Fixes: f53fbde48ef0 ("mmc: mxcmmc: use dmaengine API")
quoted hunk ↗ jump to hunk
--- 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