Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1672616

Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool

From Vladimir Murzin <vladimir.murzin@arm.com>
Newsgroups linux.kernel
Subject Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool
Date 2017-06-22 15:20 +0200
Message-ID <tVabE-5es-5@gated-at.bofh.it> (permalink)
References <tKBIe-15d-7@gated-at.bofh.it> <tKCkV-1Ap-7@gated-at.bofh.it> <tUrHz-Q2-9@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On 20/06/17 14:49, Christoph Hellwig wrote:
> On Wed, May 24, 2017 at 11:24:29AM +0100, Vladimir Murzin wrote:
>> This patch introduces default coherent DMA pool similar to default CMA
>> area concept. To keep other users safe code kept under CONFIG_ARM.
> 
> I don't see a CONFIG_ARM in the code, although parts of it are added
> under CONFIG_OF_RESERVED_MEM.

It should look like that:

#ifdef CONFIG_ARM
	if (!of_get_flat_dt_prop(node, "no-map", NULL)) {
		pr_err("Reserved memory: regions without no-map are not yet supported\n");
		return -EINVAL;
	}
+
+	if (of_get_flat_dt_prop(node, "linux,dma-default", NULL)) {
+		WARN(dma_reserved_default_memory,
+		     "Reserved memory: region for default DMA coherent area is redefined\n");
+		dma_reserved_default_memory = rmem;
+	}
#endif


> 
> But overall this code look a bit odd to me.  As far as I can tell
> the dma-coherent.c code is for the case where we have a special
> piece of coherent memory close to a device.
> 
> If you're allocating out of the global allocator the memory should
> come from the normal dma_ops ->alloc allocator - and also take
> the attrs into account (e.g. for DMA_ATTR_NON_CONSISTENT or
> DMA_ATTR_NO_KERNEL_MAPPING requests you don't need coherent memory)
> 

It is how it has been started [1] - defining memory which is not cacheable
(i.e. suitable for coherent allocations) and building custom allocator on top
of it, like it was done for c6x and blackfin. The annoying thing was that we
needed to advertise such memory via command line parameter plus some "mem="
adjustment to hide coherent memory from buddy allocator. So it was suggested
to use reserved memory and this makes things look much better, but on the
other hand require changes on dts side to "bind" devices with reserved memory
- default DMA pool removes such drawback.

[1] https://marc.info/?l=linux-arm-kernel&m=148163694824475&w=2

Cheers
Vladimir

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Christoph Hellwig <hch@infradead.org> - 2017-06-20 15:50 +0200
  Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Robin Murphy <robin.murphy@arm.com> - 2017-06-20 16:30 +0200
    Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Christoph Hellwig <hch@infradead.org> - 2017-06-26 11:50 +0200
      Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Vladimir Murzin <vladimir.murzin@arm.com> - 2017-06-26 16:10 +0200
      Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Robin Murphy <robin.murphy@arm.com> - 2017-06-27 16:40 +0200
        Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Christoph Hellwig <hch@infradead.org> - 2017-06-27 17:30 +0200
  Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Vladimir Murzin <vladimir.murzin@arm.com> - 2017-06-22 15:20 +0200
    Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Christoph Hellwig <hch@infradead.org> - 2017-06-26 11:50 +0200

csiph-web