Re: DMA API issues

From: David Brownell
Date: Sat Jun 19 2004 - 13:25:47 EST


James Bottomley wrote:
On Fri, 2004-06-18 at 17:38, David Brownell wrote:

You mentioned ioremap(), which doesn't help here since
the need is for a block of memory, not just address space,
and also memcpy_toio(), which just another tool to implement
the dma bouncing (which is on the "strongly avoid!" list).

As I said, those still don't make dma_alloc_coherent() work.


Right, that's rather the point. The memory you get by doing an ioremap
on this chip area may have to be treated differently from real memory on
some platforms.

And that point/difference would be ... what? It IS real memory.
Not "main memory", so the device's DMA access never consumes
bandwidth on the "main" memory bus, but real nonetheless.

I'm having to guess at your point here, even from other emails.
You've asserted a difference, but not what it is. Maybe it's
something to do with the problem's NUMA nature? Are you for
some reason applying DMA _mapping_ requirements (main-memory
only) to the DMA memory _allocation_ problem?


That's the fundamental problem of trying to treat it as memory obtained
from dma_alloc_coherent().

Well, no other memory in the entire system meets the requirements
for the dma_alloc_coherent() API, since _only that_ chunk of memory
is works with that device's DMA hardware. Which is the fundamental
problem that needs to be solved. It can clearly done at the platform
level, using device- or bus-specific implementations.

- Dave

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/