From: jbarnes@virtuousgeek.org (Jesse Barnes)
To: linux-arm-kernel@lists.infradead.org
Subject: [Linaro-mm-sig] [RFC] ARM DMA mapping TODO, v1
Date: Fri, 29 Apr 2011 09:32:09 -0700 [thread overview]
Message-ID: <20110429093209.1926c732@jbarnes-desktop> (raw)
In-Reply-To: <20110429075958.GV17290@n2100.arm.linux.org.uk>
On Fri, 29 Apr 2011 08:59:58 +0100
Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
> On Fri, Apr 29, 2011 at 07:50:12AM +0200, Thomas Hellstrom wrote:
> > However, we should be able to construct a completely generic api around
> > these operations, and for architectures that don't support them we need
> > to determine
> >
> > a) Whether we want to support them anyway (IIRC the problem with PPC is
> > that the linear kernel map has huge tlb entries that are very
> > inefficient to break up?)
>
> That same issue applies to ARM too - you'd need to stop the entire
> machine, rewrite all processes page tables, flush tlbs, and only
> then restart. Otherwise there's the possibility of ending up with
> conflicting types of TLB entries, and I'm not sure what the effect
> of having two matching TLB entries for the same address would be.
Right, I don't think anyone wants to see this sort of thing happen with
any frequency. So either a large, uncached region can be set up a boot
time for allocations, or infrequent, large requests and conversions can
be made on demand, with memory being freed back to the main, coherent
pool under pressure.
> > b) Whether they are needed at all on the particular architecture. The
> > Intel x86 spec is, (according to AMD), supposed to forbid conflicting
> > caching attributes, but the Intel graphics guys use them for GEM. PPC
> > appears not to need it.
>
> Some versions of the architecture manual say that having multiple
> mappings with differing attributes is unpredictable.
Yes, there's a bit of abuse going on there. We've received a guarantee
that if the CPU speculates a line into the cache, as long as it's not
modified through the cacheable mapping the CPU won't write it back to
memory; it'll discard the line as needed instead (iirc AMD CPUs will
actually write back clean lines, so GEM wouldn't work the same way
there).
But even with GEM, there is a large performance penalty for having to
allocate a new buffer object the first time. Even though we don't have
to change mappings by stopping the machine etc, we still have to flush
out everything from the CPU relating to the object (since some lines
may be dirty), and then flush the memory controller buffers before
accessing it through the uncached mapping. So at least currently,
we're all in the same boat when it comes to new object allocations:
they will be expensive unless you already have some uncached mappings
you can re-use.
--
Jesse Barnes, Intel Open Source Technology Center
next prev parent reply other threads:[~2011-04-29 16:32 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-21 19:29 [RFC] ARM DMA mapping TODO, v1 Arnd Bergmann
2011-04-21 20:09 ` [Linaro-mm-sig] " Jesse Barnes
2011-04-21 21:52 ` Zach Pfeffer
2011-04-22 0:34 ` KyongHo Cho
2011-04-26 14:29 ` Arnd Bergmann
2011-04-26 14:28 ` Arnd Bergmann
2011-04-26 14:26 ` Arnd Bergmann
2011-04-26 15:39 ` Jesse Barnes
2011-04-27 7:35 ` Russell King - ARM Linux
2011-04-27 8:56 ` Arnd Bergmann
2011-04-27 9:09 ` Russell King - ARM Linux
2011-04-27 11:02 ` Arnd Bergmann
2011-04-27 16:16 ` [Linaro-mm-sig] " Alex Deucher
2011-04-27 17:44 ` Anca Emanuel
2011-04-27 20:27 ` Russell King - ARM Linux
2011-04-27 20:16 ` Russell King - ARM Linux
2011-04-27 20:21 ` Arnd Bergmann
2011-04-27 20:26 ` Russell King - ARM Linux
2011-04-27 20:48 ` Arnd Bergmann
2011-04-27 21:41 ` Benjamin Herrenschmidt
2011-04-28 9:30 ` Russell King - ARM Linux
2011-04-28 21:07 ` Benjamin Herrenschmidt
2011-04-29 11:26 ` Arnd Bergmann
2011-04-29 11:47 ` Benjamin Herrenschmidt
2011-04-29 11:56 ` Alan Cox
2011-04-29 22:51 ` Benjamin Herrenschmidt
2011-04-29 12:06 ` [Linaro-mm-sig] " Thomas Hellstrom
2011-04-29 13:34 ` Jerome Glisse
2011-04-29 22:55 ` Benjamin Herrenschmidt
2011-04-29 22:53 ` Benjamin Herrenschmidt
2011-04-27 10:51 ` Marek Szyprowski
2011-04-27 21:37 ` Benjamin Herrenschmidt
2011-04-28 6:40 ` [Linaro-mm-sig] " Arnd Bergmann
2011-04-28 6:46 ` FUJITA Tomonori
2011-04-28 9:37 ` Russell King - ARM Linux
2011-04-28 10:32 ` [Linaro-mm-sig] " Marek Szyprowski
2011-04-28 10:51 ` Russell King - ARM Linux
2011-04-28 12:28 ` Arnd Bergmann
2011-04-28 13:15 ` Russell King - ARM Linux
2011-04-28 14:29 ` Arnd Bergmann
2011-04-28 14:34 ` Russell King - ARM Linux
2011-04-28 14:39 ` Arnd Bergmann
2011-04-28 14:58 ` Russell King - ARM Linux
2011-04-28 19:37 ` Jerome Glisse
2011-04-29 0:29 ` Benjamin Herrenschmidt
2011-04-29 5:50 ` Thomas Hellstrom
2011-04-29 7:35 ` Benjamin Herrenschmidt
2011-04-29 10:55 ` Thomas Hellstrom
2011-04-29 22:50 ` Benjamin Herrenschmidt
2011-04-29 16:27 ` Jesse Barnes
2011-04-29 22:46 ` Benjamin Herrenschmidt
2011-04-30 2:45 ` Jesse Barnes
2011-04-29 7:59 ` Russell King - ARM Linux
2011-04-29 16:32 ` Jesse Barnes [this message]
2011-04-29 18:29 ` Arnd Bergmann
2011-04-29 22:15 ` Russell King - ARM Linux
2011-05-02 4:42 ` David Brown
2011-05-02 11:26 ` Arnd Bergmann
2011-04-29 22:37 ` Benjamin Herrenschmidt
2011-04-29 13:42 ` Joerg Roedel
2011-04-29 14:19 ` Jerome Glisse
2011-04-29 15:37 ` Jordan Crouse
2011-04-28 14:38 ` FUJITA Tomonori
2011-04-29 0:25 ` Benjamin Herrenschmidt
2011-04-29 11:21 ` Arnd Bergmann
2011-04-28 10:41 ` Joerg Roedel
2011-04-28 11:01 ` Russell King - ARM Linux
2011-04-28 12:25 ` Joerg Roedel
2011-04-28 12:42 ` Russell King - ARM Linux
2011-04-28 12:59 ` Joerg Roedel
2011-04-28 13:02 ` Arnd Bergmann
2011-04-28 13:19 ` Russell King - ARM Linux
2011-04-28 13:56 ` Joerg Roedel
2011-04-28 14:30 ` Russell King - ARM Linux
2011-04-27 9:52 ` Catalin Marinas
2011-04-27 10:43 ` Arnd Bergmann
2011-04-27 11:08 ` Catalin Marinas
2011-04-28 0:15 ` Valdis.Kletnieks at vt.edu
2011-04-28 8:27 ` Catalin Marinas
2011-04-28 12:12 ` Arnd Bergmann
2011-04-28 12:36 ` Russell King - ARM Linux
2011-04-28 12:48 ` Arnd Bergmann
2011-05-03 14:45 ` Dave Martin
2011-04-29 15:41 ` [Linaro-mm-sig] " Arnd Bergmann
2011-04-29 16:42 ` Catalin Marinas
2011-05-03 15:05 ` [Linaro-mm-sig] " Laurent Pinchart
2011-05-03 15:31 ` Arnd Bergmann
2011-04-27 14:06 ` FUJITA Tomonori
2011-04-27 14:29 ` Catalin Marinas
2011-04-27 14:34 ` FUJITA Tomonori
2011-04-27 20:29 ` Russell King - ARM Linux
2011-04-27 21:45 ` Benjamin Herrenschmidt
2011-04-28 7:24 ` [Linaro-mm-sig] " KyongHo Cho
2011-04-28 8:31 ` Catalin Marinas
2011-04-27 21:31 ` Benjamin Herrenschmidt
2011-04-28 9:42 ` Russell King - ARM Linux
2011-04-28 10:27 ` Joerg Roedel
2011-04-28 12:15 ` Arnd Bergmann
-- strict thread matches above, loose matches on Subject: below --
2011-05-03 14:35 [Linaro-mm-sig] " Laurent Pinchart
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=20110429093209.1926c732@jbarnes-desktop \
--to=jbarnes@virtuousgeek.org \
--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).