public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Clemens Koller <clemens.koller@anagramm•de>
To: Matt Sealey <matt@genesi-usa•com>
Cc: Arnd Bergmann <arnd@arndb•de>, linuxppc-embedded@ozlabs•org
Subject: Re: Mem-2-Mem DMA - Generalized API
Date: Mon, 25 Jun 2007 14:53:17 +0200	[thread overview]
Message-ID: <467FBABD.9040103@anagramm.de> (raw)
In-Reply-To: <467FA0EA.3000607@genesi-usa.com>

Hello, Matt!

Matt Sealey schrieb:
> IOAT and Intel's DMA engine driver is very IOAT specific in places..
> 
> I had a peek at it as I have a little interest in the concept; at least the
> two platforms Genesi has been supporting (Pegasos and Efika) have quite
> competant DMA engines which are woefully underused (i.e. not at all).

True.

> There exists a Marvell DMA driver somewhere (I have a copy, someone on
> this list posted it about a year ago) and while the MPC5200B doesn't have
> explicit support for DMA from memory to memory (although memory to SRAM
> might work in chunks, or memory to a FIFO wired as a loopback like in
> the docs..??)
 >
> There is so much you can do with most SoC DMA controllers, and it's not
> even limited to PowerPC (most ARM/XScale SoCs have very capable devices
> inside too). I can only imagine that nobody got excited over IOAT because
> the entire programming interface stinks of "offloading gigabit ethernet"
> and not much else.

The main question remains: Is it possible to have a flexible cross platform
DMA API which handles even complex requests and does scheduling, prioritizing,
queuing, locking, (re-)building/caching of SG lists... automagically.

It could fall back to CPU's memcpy if the hardware doesn't have
the ability to use the DMA machine because all channels are already busy,
or the requested memory isn't DMAable or the request is just too small
that it doesn't make sense to setup a DMA channel.
Filling memory with zero is also a simple task for a DMA engine.
(Thinking about malloc() and memset())

The problem is IMHO similar to video acceleration. Within the
Xorg's XAA/EXA/whatever framework, the drivers accelerate certain
calls if the hardware has the capability to do so. Other calls fall back
to some default non accelerated memcpy() & friends.

Sounds like a lot of fun... replacing kernel's and libc's memcpy() with
memcpy_with_dma_if_possible(). :-)

Best regards,
-- 
Clemens Koller
__________________________________
R&D Imaging Devices
Anagramm GmbH
Rupert-Mayer-Straße 45/1
Linhof Werksgelände
D-81379 München
Tel.089-741518-50
Fax 089-741518-19
http://www.anagramm-technology.com

  reply	other threads:[~2007-06-25 12:53 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-24 19:39 Mem-2-Mem DMA - Generalized API Clifford Wolf
2007-06-24 20:21 ` Arnd Bergmann
2007-06-25  8:03   ` Clifford Wolf
2007-06-25 11:03   ` Matt Sealey
2007-06-25 12:53     ` Clemens Koller [this message]
2007-06-25 14:31       ` Matt Sealey
2007-06-25 17:00         ` Olof Johansson
2007-06-25 17:48           ` Clifford Wolf
2007-06-25 18:01         ` Clifford Wolf
2007-06-25 21:20           ` Matt Sealey
2007-07-04  9:05           ` Clifford Wolf
2007-07-04 10:11             ` Clemens Koller
2007-07-07  5:24             ` Timur Tabi
2007-07-07  8:41               ` Clifford Wolf
2007-07-07 13:08             ` Arnd Bergmann
2007-07-07 13:27               ` Clifford Wolf
2007-07-07 13:28                 ` Arnd Bergmann
2007-07-07 13:34               ` Clifford Wolf
2007-07-11  9:35               ` Clifford Wolf

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=467FBABD.9040103@anagramm.de \
    --to=clemens.koller@anagramm$(echo .)de \
    --cc=arnd@arndb$(echo .)de \
    --cc=linuxppc-embedded@ozlabs$(echo .)org \
    --cc=matt@genesi-usa$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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