2023-06-28 11:15:28

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: Should dma_map_single take the dma controller or its consumer as an argument?

On Wed, Jun 28, 2023 at 06:57:35PM +0800, Li Chen wrote:
> Hi all,
>
> I recently encountered an issue where the dma_mask was set in the DMA controller's driver, but the consumer peripheral driver didn't set its own dma_mask.

It should always take the device that is *actually* performing the DMA,
since that is the device that has restrictions on what addresses can be
accessed, etc.

Devices that "consume" the data from a DMA controller don't access
memory - they are merely the targets, and they can't on their own access
host memory. Therefore, their dma mask _should_ be irrelevant.

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!


2023-06-28 11:37:58

by Li Chen

[permalink] [raw]
Subject: Re: Should dma_map_single take the dma controller or its consumer as an argument?

Hi Russell,

---- On Wed, 28 Jun 2023 19:02:47 +0800 Russell King (Oracle) wrote ---
> On Wed, Jun 28, 2023 at 06:57:35PM +0800, Li Chen wrote:
> > Hi all,
> >
> > I recently encountered an issue where the dma_mask was set in the DMA controller's driver, but the consumer peripheral driver didn't set its own dma_mask.
>
> It should always take the device that is *actually* performing the DMA,
> since that is the device that has restrictions on what addresses can be
> accessed, etc.
>
> Devices that "consume" the data from a DMA controller don't access
> memory - they are merely the targets, and they can't on their own access
> host memory. Therefore, their dma mask _should_ be irrelevant.

Thanks for your quick response. Therefore, I just need to use chan->device->dev in my dma_map_single and there is no need to configure the dma_mask for my consumer peripherals.

Regards,
Li