Generic DMA Core

3 messages, 3 authors, 2004-04-01 · open the first message on its own page

Generic DMA Core

From: John Whitney <hidden>
Date: 2004-03-31 17:44:08

I have written a generic DMA core driver (drivers/dma/) that accepts
registrations from low-level DMA hardware drivers (providers).  I've
also written a provider driver for the MPC10x dual-channel DMA
controller.

Effectively, the DMA core accepts requests to transfer data from one
address to another, with the ability to request things like
source-address-holding, destination-address-holding, etc.  It then
matches a request to a provider that can support it, and queues the
request to the provider.  After completion, the DMA core calls a
provided callback for the client.  The core also handles
cache-coherency with explicit flushes and invalidates, not making
assumptions that the addresses are in cache-coherent regions.

Is there any interest in this code, and if so, what would be the best
way for going about getting it included in the kernel?

John


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: Generic DMA Core

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2004-04-01 02:56:45

Is there any interest in this code, and if so, what would be the best
way for going about getting it included in the kernel?
If it's really generic, post the code to the linux-kernel mailing
list.

Ben.


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: Generic DMA Core

From: Adrian Cox <hidden>
Date: 2004-04-01 07:01:44

On Wed, 2004-03-31 at 18:44, John Whitney wrote:
I have written a generic DMA core driver (drivers/dma/) that accepts
registrations from low-level DMA hardware drivers (providers).  I've
also written a provider driver for the MPC10x dual-channel DMA
controller.
[...]
Is there any interest in this code, and if so, what would be the best
way for going about getting it included in the kernel?
I'd be interested in seeing it. I experimented with something similar
for Linux 2.4.

As for getting into the kernel, the main problem I see is that currently
nothing else uses it. You may need to do a couple of things: write a
dummy provider for machines without DMA engines, and use it to
accelerate an existing process.

The main use of these DMA engines is to transfer data to PCI cards which
lack built-in DMA. So you probably need to find some examples and modify
them to use your API.

- Adrian Cox
http://www.humboldt.co.uk/


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help