Re: [PATCH] mmc: bcm2835: DMA mapping improvements

John Garry <[email protected]> Mon, 13 Jul 2026 13:37:07 +0100
Newsgroups org.kernel.vger.linux-mmc
Organization Oracle Corporation
Message-ID <[email protected]>
On 13/07/2026 13:19, Robin Murphy wrote:
> On 13/07/2026 12:25 pm, Ulf Hansson wrote:
> [...]
>>> @@ -1281,10 +1279,8 @@ static int bcm2835_add_host(struct 
>>> bcm2835_host *host)
>>>
>>>          if (!host->dma_chan_rxtx) {
>>>                  dev_warn(dev, "unable to initialise DMA channel. 
>>> Falling back to PIO\n");
>>> -               host->use_dma = false;
>>> +               host->dma_dev = NULL;
>>>          } else {
>>> -               host->use_dma = true;
>>> -
>>>                  host->dma_cfg_tx.src_addr_width = 
>>> DMA_SLAVE_BUSWIDTH_4_BYTES;
>>>                  host->dma_cfg_tx.dst_addr_width = 
>>> DMA_SLAVE_BUSWIDTH_4_BYTES;
>>>                  host->dma_cfg_tx.direction = DMA_MEM_TO_DEV;
>>> @@ -1300,12 +1296,18 @@ static int bcm2835_add_host(struct 
>>> bcm2835_host *host)
>>>                  if (dmaengine_slave_config(host->dma_chan_rxtx,
>>>                                             &host->dma_cfg_tx) != 0 ||
>>>                      dmaengine_slave_config(host->dma_chan_rxtx,
>>> -                                          &host->dma_cfg_rx) != 0)
>>> -                       host->use_dma = false;
>>> +                                          &host->dma_cfg_rx) != 0) {
> 
> Hang on, doesn't this whole if condition need to be inverted? It's true 
> upon dma config _failure_, thanks to the original use_dma logic being a 
> bit backwards here.

Ah, yes, my mistake. It should be:

if (!dmaengine_slave_config(..., &host->dma_cfg_tx) &&
     !dmaengine_slave_config(..., &host->dma_cfg_rx))
	dma_dev =

And I don't think that the first dmaengine_slave_config() needs to be 
undone in case of failure for the second call.

Ulf, how to handle a fix? should I send an update on top of this patch?

thanks