mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy@arm.com>
To: Christoph Hellwig <hch@infradead.org>,
	Vladimir Murzin <vladimir.murzin@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux@armlinux.org.uk, sza@esh.hu,
	arnd@arndb.de, gregkh@linuxfoundation.org,
	akpm@linux-foundation.org, alexandre.torgue@st.com,
	benjamin.gaignard@linaro.org, kbuild-all@01.org,
	Michal Nazarewicz <mina86@mina86.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>
Subject: Re: [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool
Date: Tue, 20 Jun 2017 15:24:21 +0100	[thread overview]
Message-ID: <3d5ea779-90a3-f0b5-b9aa-161d4c0855e7@arm.com> (raw)
In-Reply-To: <20170620134932.GB31496@infradead.org>

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's in rmem_dma_setup() (line 325) currently enforcing no-map for ARM.

> 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.

True, but the case here is where we need a special piece of coherent
memory for *all* devices, and it was more complicated *not* to reuse the
existing infrastructure. This would already be achievable by specifying
a separate rmem carveout per device, but the shared pool just makes life
easier, and mirrors the functionality dma-contiguous already supports.

> 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)

The context here is noMMU but with caches - the problem being that the
normal allocator will give back kernel memory, and there's no way to
make that coherent with devices short of not enabling the caches in the
first place, which is obviously undesirable. The trick is that RAM is
aliased (in hardware) at two addresses, one of which makes CPU accesses
non-cacheable, so by only ever accessing the RAM set aside for the
coherent DMA pool using the non-cacheable alias (represented by the
dma_pfn_offset) we can achieve DMA coherency.

It perhaps seems a bit backwards, but we do actually end up honouring
DMA_ATTR_NON_CONSISTENT to a degree in patch #5, as such requests are
the only ones allowed to fall back to the normal dma_ops allocator.

Robin.

  reply	other threads:[~2017-06-20 14:24 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-24 10:24 [PATCH v5 0/7] ARM: Fix dma_alloc_coherent() and friends for NOMMU Vladimir Murzin
2017-05-24 10:24 ` [PATCH v5 1/7] dma: Take into account dma_pfn_offset Vladimir Murzin
2017-06-20 13:24   ` Christoph Hellwig
2017-06-22 12:47     ` Vladimir Murzin
2017-05-24 10:24 ` [PATCH v5 2/7] dma: Add simple dma_noop_mmap Vladimir Murzin
2017-06-20 13:23   ` Christoph Hellwig
2017-06-22 12:46     ` Vladimir Murzin
2017-06-26  9:45       ` Christoph Hellwig
2017-05-24 10:24 ` [PATCH v5 3/7] drivers: dma-coherent: Account dma_pfn_offset when used with device tree Vladimir Murzin
2017-06-20 13:42   ` Christoph Hellwig
2017-06-20 13:50     ` Robin Murphy
2017-06-26  9:37       ` Christoph Hellwig
2017-06-22 12:59     ` Vladimir Murzin
2017-05-24 10:24 ` [PATCH v5 4/7] drivers: dma-coherent: Introduce default DMA pool Vladimir Murzin
2017-06-20 13:49   ` Christoph Hellwig
2017-06-20 14:24     ` Robin Murphy [this message]
2017-06-26  9:42       ` Christoph Hellwig
2017-06-26 14:08         ` Vladimir Murzin
2017-06-27 14:36         ` Robin Murphy
2017-06-27 15:22           ` Christoph Hellwig
2017-06-22 13:18     ` Vladimir Murzin
2017-06-26  9:44       ` Christoph Hellwig
2017-05-24 10:24 ` [PATCH v5 5/7] ARM: NOMMU: Introduce dma operations for noMMU Vladimir Murzin
2017-05-24 10:24 ` [PATCH v5 6/7] ARM: NOMMU: Set ARM_DMA_MEM_BUFFERABLE for M-class cpus Vladimir Murzin
2017-05-24 10:24 ` [PATCH v5 7/7] ARM: dma-mapping: Remove traces of NOMMU code Vladimir Murzin
2017-06-08  8:28 ` [PATCH v5 0/7] ARM: Fix dma_alloc_coherent() and friends for NOMMU Vladimir Murzin
2017-06-08 16:25   ` Russell King - ARM Linux
2017-06-15  7:25     ` Vladimir Murzin
2017-06-20 12:59       ` Vladimir Murzin
2017-06-20 13:00         ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3d5ea779-90a3-f0b5-b9aa-161d4c0855e7@arm.com \
    --to=robin.murphy@arm.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexandre.torgue@st.com \
    --cc=arnd@arndb.de \
    --cc=benjamin.gaignard@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@infradead.org \
    --cc=kbuild-all@01.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=m.szyprowski@samsung.com \
    --cc=mark.rutland@arm.com \
    --cc=mina86@mina86.com \
    --cc=robh+dt@kernel.org \
    --cc=sza@esh.hu \
    --cc=vladimir.murzin@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®