From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/3] RFC: addition to DMA API
Date: Thu, 1 Sep 2011 18:31:49 +0100 [thread overview]
Message-ID: <20110901173149.GE2803@e102144-lin.cambridge.arm.com> (raw)
In-Reply-To: <20110901160429.GA15814@n2100.arm.linux.org.uk>
Hi Russell,
On Thu, Sep 01, 2011 at 05:04:29PM +0100, Russell King - ARM Linux wrote:
> DMA coherent memory on ARM is implemented on ARMv5 and below by using
> 'noncacheable nonbufferable' memory. There is no weak memory model to
> worry about, and this memory type is seen as 'strongly ordered' - the
> CPU stalls until the read or write has completed. So no problem there.
>
> On ARMv6 and above, the attributes change:
>
> 1. Memory type: [Normal, Device, Strongly ordered]
> All mappings of a physical address space are absolutely required to be
> of the same memory type, otherwise the result is unpredictable. There
> is no mitigation against this.
>
> 2. For "normal memory", a variety of options are available to adjust the
> hints to the cache and memory subsystem - the options here are
> [Non-cacheable, write-back write alloc, write-through non-write alloc,
> write-back, non-write alloc.]
>
> Strictly to the ARM ARM, all mappings must, again, have the same
> attributes to avoid unpredictable behaviour. There is a _temporary_
> architectural relaxation of this requirement provided certain conditions
> are met - which may become permanent.
This looks set to appear in revision C of the ARM ARM.
> It _is_ possible that "unpredictable" means that we may hit cache lines in
> the [VP]IPT cache via the non-cacheable mapping which have been created
> by speculative loads via the cacheable mapping - and this is something
> that has been worrying me for a long time.
Whilst this can happen, this will only cause problems for reads performed
by the CPU (as these may hit a line speculatively loaded via the cacheable
alias). Setting bit 22 in the auxillary control register gets arounds this:
http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=6529/1
Given that I believe our coherent DMA memory is `cacheable, bufferable, do
not allocate' in terms of AXI attributes, then writes will go straight to
the write buffer on the PL310.
> So, in summary what I'm saying is that _in theory_ our DMA coherent memory
> on ARMv6+ should have nothing more than write buffering to contend with,
> but that doesn't stop this being the first real concrete report proving
> that what I've been going on about regarding the architectural requirements
> over the last few years is actually very real and valid.
I don't think what we're seeing in this case is caused by mismatched memory
attributes, especially as passing `nosmp' on the command-line makes the
performance issue disappear.
Will
next prev parent reply other threads:[~2011-09-01 17:31 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-31 21:30 [PATCH 0/3] RFC: addition to DMA API Mark Salter
2011-08-31 21:30 ` [PATCH 1/3] add dma_coherent_write_sync " Mark Salter
2011-09-01 2:59 ` Josh Cartwright
2011-09-01 9:57 ` Michał Mirosław
2011-09-01 12:36 ` Mark Salter
2011-09-06 14:30 ` Catalin Marinas
2011-08-31 21:30 ` [PATCH 2/3] define ARM-specific dma_coherent_write_sync Mark Salter
2011-09-06 14:32 ` Catalin Marinas
2011-09-06 14:37 ` Mark Salter
2011-09-06 14:48 ` Catalin Marinas
2011-09-06 15:02 ` Mark Salter
2011-10-03 1:40 ` Jon Masters
2011-10-03 8:44 ` Catalin Marinas
2011-10-03 9:24 ` Jon Masters
2011-08-31 21:30 ` [PATCH 3/3] add dma_coherent_write_sync calls to USB EHCI driver Mark Salter
2011-09-01 2:33 ` Ming Lei
2011-09-01 2:09 ` [PATCH 0/3] RFC: addition to DMA API Ming Lei
2011-09-01 3:09 ` Alan Stern
2011-09-01 3:41 ` Ming Lei
2011-09-01 8:45 ` Will Deacon
2011-09-01 9:14 ` Ming Lei
2011-09-01 15:42 ` Alan Stern
2011-09-01 16:04 ` Russell King - ARM Linux
2011-09-01 17:31 ` Will Deacon [this message]
2011-09-01 18:07 ` Russell King - ARM Linux
2011-09-01 19:14 ` Mark Salter
2011-09-01 15:22 ` Alan Stern
2011-09-01 15:56 ` Ming Lei
2011-09-01 16:48 ` Alan Stern
2011-09-02 0:59 ` Ming Lei
2011-09-02 13:53 ` Alan Stern
2011-09-01 9:11 ` Will Deacon
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=20110901173149.GE2803@e102144-lin.cambridge.arm.com \
--to=will.deacon@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).