From: David Brownell <david-b@pacbell.net>
To: James Bottomley <James.Bottomley@steeleye.com>
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: Thu, 01 Jul 2004 07:45:08 -0700 [thread overview]
Message-ID: <40E42374.8060407@pacbell.net> (raw)
In-Reply-To: <1088692004.1887.8.camel@mulgrave>
James Bottomley wrote:
> 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.
Seems unreasonable to me, unless there's also an API to change
the mode of the dma_alloc_coherent() memory from the normal
"CPU can read/write as usual" to the exotic "need to use special
memory accessors". (And another to report what mode the API is
in at the current moment.)
And I don't like modal APIs like that, which is why it'd make
more sense to me to have a new allocator API for this new
kind of DMA memory. (Which IS for that IBM processor, yes?)
Alternatively, modify dma_alloc_coherent() to say what kind
of address it must return. Since this is a "generic" DMA
API, the caller of dma_alloc_coherent() shouldn't need to be
guessing how they may actually use the memory returned.
That new "must guess" requirement will break some code...
>>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.
So -- you're saying it's not a bug that a __GFP_NOFAIL|__GFP_WAIT
allocation be able to fail? Curious. I'd have thought the API
was clear about that. Allocating 128 MB from a 1 MB region must
of course fail, but allocating one page just needs a wait/wakeup.
- Dave
next prev parent reply other threads:[~2004-07-01 14:48 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
2004-07-01 14:45 ` David Brownell [this message]
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=40E42374.8060407@pacbell.net \
--to=david-b@pacbell.net \
--cc=James.Bottomley@steeleye.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.