From: James Bottomley <James.Bottomley@steeleye.com>
To: David Brownell <david-b@pacbell.net>
Cc: Ian Molton <spyro@f2s.com>,
Linux Kernel <linux-kernel@vger.kernel.org>,
tony@atomide.com, jamey.hicks@hp.com, joshua@joshuawise.com,
Russell King <rmk@arm.linux.org.uk>
Subject: Re: [RFC] on-chip coherent memory API for DMA
Date: 01 Jul 2004 09:26:42 -0500 [thread overview]
Message-ID: <1088692004.1887.8.camel@mulgrave> (raw)
In-Reply-To: <40E41BE1.1010003@pacbell.net>
On Thu, 2004-07-01 at 09:12, David Brownell wrote:
> The API looked OK except this part didn't make sense to me, since
> as I understand things dma_alloc_coherent() is guaranteed to have
> the DMA_MEMORY_MAP semantics at all times ... the CPU virtual address
> returned may always be directly written. That's certainly how all
> the code I've seen using dma_alloc_coherent() works.
> It'd make more sense if the routine were "dma_declare_memory()", and
> DMA_MEMORY_MAP meant it was OK to return from dma_alloc_coherent(),
> while DMA_MEMORY_IO meant the dma_alloc_coherent() would always fail.
You need an allocator paired with IO memory. If the driver allows for
DMA_MEMORY_IO then it's not unreasonable to expect it to have such
memory returned by dma_alloc_coherent() rather than adding yet another
allocator API.
> If I understand what you're trying to do, DMA_MEMORY_IO supports a
> new kind of DMA memory, and is necessary to work on those IBM boxes
> you were talking about ... where dma_alloc_coherent() can't work,
> and the "indirectly accessible" memory would need to be allocated
> using some new alloc/free API. Or were you maybe trying to get at
> that "can be mmapped to userspace" distinction?
No, this IO vs MAP thing is can be mapped directly to *kernel* space.
i.e. whether the driver can use it via ordinary dereferencing or has to
use the I/O memory accessor functions.
> Also in terms of implementation, I noticed that if there's a
> dev->dma_mem, the GFP_* flags are ignored. For __GFP_NOFAIL
> that seems buglike, but not critical. (Just looked at x86.)
> Might be worth just passing the flags down so that behavior
> can be upgraded later.
Actually, there's no point respecting the flags for the on chip region.
Either the memory is there or it isn't. If it isn't there, then you
either fall through to the ordinary allocator (where the flags are
respected) or fail if the DMA_MEMORY_EXCLUSIVE flag was specified.
James
next prev parent reply other threads:[~2004-07-01 14:28 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-29 14:21 [RFC] on-chip coherent memory API for DMA James Bottomley
2004-07-01 12:43 ` Jamey Hicks
2004-07-01 14:12 ` David Brownell
2004-07-01 14:26 ` James Bottomley [this message]
2004-07-01 14:45 ` David Brownell
2004-07-01 18:04 ` James Bottomley
2004-07-01 20:14 ` David Brownell
2004-07-01 20:48 ` James Bottomley
2004-07-02 3:07 ` David Brownell
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=1088692004.1887.8.camel@mulgrave \
--to=james.bottomley@steeleye.com \
--cc=david-b@pacbell.net \
--cc=jamey.hicks@hp.com \
--cc=joshua@joshuawise.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rmk@arm.linux.org.uk \
--cc=spyro@f2s.com \
--cc=tony@atomide.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