public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@steeleye.com>
To: Ian Molton <spyro@f2s.com>
Cc: rmk+lkml@arm.linux.org.uk, david-b@pacbell.net,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	greg@kroah.com, tony@atomide.com, jamey.hicks@hp.com,
	joshua@joshuawise.com
Subject: Re: DMA API issues
Date: 20 Jun 2004 11:46:53 -0500	[thread overview]
Message-ID: <1087750024.11222.81.camel@mulgrave> (raw)
In-Reply-To: <20040620165042.393f2756.spyro@f2s.com>

On Sun, 2004-06-20 at 10:50, Ian Molton wrote:
> Those two statements are contradictory. clearly the iseries cant use the
> DMA API *now* so I dont see how that makes any difference. We're talking
> about adding propper support for *addresssable* memory mapped devices
> with limited size DMA-able windows to the DMA API, not adding support
> for a whole new weird way of talking to devices. These devices work the
> same way as all the other devices that use the DMA API but are simply
> restricted in the range of addresses they can DMA from. they require no
> special 'accessors'.
> 
> iseries cant work the usual way now and wont with these modifications -
> so nothing is made worse.

OK, let's try and make this as simple as I know how.  The system looks
like this


       +-----+
       | CPU |
       +--+--+
          |
    <-----+-----+----------------------+-----> Central Bus
                |                      |
          +-----+------+        +------+-----+
          |   Memory   |        |    I/O     |
          | Controller |        | Controller |
          +-----+------+        +------+-----+
                |                      |
            +---+-----+             +--+---+    +--------+
            | Memory  |             | OHCI |----| Memory |
            +---------+             +------+    +--------+

In order to access this OHCI memory, both the I/O controller and the
OHCI have to respond to the memory access cycles, rather than the memory
controller.  This is why such memory is termed "bus remote".

Even though ARM can programm the I/O controller and the OHCI device to
access this memory as though it were behind the memory controller (i.e.
using normal CPU memory cycles), you'll find that even on ARM there's
probably special page table trickery involved (probably to do with cache
coherency issues).  Next, you'll find that no other device can see this
memory without some type of i2o support, so it can't be the target of a
DMA transaction. So even on ARM, you can't treat it as "normal" memory.

On iSeries, the I/O controller sits behind the hypervisor and can't be
the target of normal memory cycles, that's why the CPU can't address
this bus remote memory normally. As I've explained.

The DMA API is about allowing devices to transact directly with memory
behind the memory controller, it's an API that essentially allows the
I/O controller and memory controller to communicate without CPU
intervention.  This is still possible through the hypervisor, so the
iSeries currently fully implements the DMA API.

James



  parent reply	other threads:[~2004-06-20 16:47 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-18 18:20 DMA API issues James Bottomley
2004-06-18 18:35 ` Ian Molton
2004-06-18 18:52   ` James Bottomley
2004-06-18 18:57     ` Ian Molton
2004-06-18 19:20       ` David Brownell
2004-06-18 19:44         ` Ian Molton
2004-06-18 19:57           ` James Bottomley
2004-06-18 21:08             ` David Brownell
2004-06-18 21:14               ` James Bottomley
2004-06-18 22:38                 ` David Brownell
2004-06-18 23:07                   ` James Bottomley
2004-06-18 23:31                     ` Ian Molton
2004-06-19 18:23                     ` David Brownell
2004-06-19 20:41                       ` Russell King
2004-06-19 21:46                         ` James Bottomley
2004-06-19 22:49                           ` Ian Molton
2004-06-20 13:37                             ` James Bottomley
2004-06-20 15:50                               ` Ian Molton
2004-06-20 16:26                                 ` Jeff Garzik
2004-06-20 16:57                                   ` Ian Molton
2004-06-20 20:15                                   ` David Brownell
2004-06-20 16:46                                 ` James Bottomley [this message]
2004-06-20 18:02                                   ` Oliver Neukum
2004-06-20 19:27                                     ` James Bottomley
2004-06-20 19:34                                       ` Oliver Neukum
2004-06-20 20:07                                   ` David Brownell
2004-06-20 20:18                               ` David Brownell
2004-06-20 20:02                         ` David Brownell
2004-06-18 23:25             ` Ian Molton
2004-06-18 23:29               ` James Bottomley
2004-06-18 23:51                 ` Ian Molton
2004-06-19  0:04                   ` James Bottomley
2004-06-19  0:14                     ` Ian Molton
2004-06-19  3:49                       ` James Bottomley
2004-06-20 20:59                         ` Jamey Hicks
2004-06-19 15:11                     ` DMA API issues... summary Ian Molton
2004-06-20 20:49                       ` Joshua Wise
2004-06-18 19:30       ` DMA API issues James Bottomley
2004-06-18 19:56         ` Ian Molton
2004-06-18 19:22     ` Jamey Hicks
2004-06-18 19:41       ` James Bottomley
2004-06-18 20:02         ` Oliver Neukum
2004-06-18 20:07           ` James Bottomley
2004-06-18 20:14       ` Benjamin Herrenschmidt
2004-06-18 20:24         ` James Bottomley
2004-06-18 21:20           ` Russell King
2004-06-18 23:20             ` Ian Molton
2004-06-20 18:25               ` Deepak Saxena
  -- strict thread matches above, loose matches on Subject: below --
2004-06-18 16:59 Ian Molton
2004-06-18 18:07 ` Matt Porter
2004-06-18 18:19   ` Ian Molton
2004-06-18 18:58     ` Matt Porter
2004-06-18 18:33   ` Jamey Hicks
2004-06-18 19:21     ` Matt Porter
2004-06-18 19:43       ` Russell King
2004-06-21 13:35         ` Takashi Iwai
2004-06-21 23:08           ` Russell King
2004-06-22  2:06             ` Jeff Garzik
2004-06-22  3:18               ` Linus Torvalds
2004-06-22  3:26                 ` Linus Torvalds
2004-06-22 10:40                   ` Takashi Iwai
2004-06-23 12:34                     ` Russell King
2004-06-23 15:36                       ` Takashi Iwai
2004-06-23 15:44                         ` Russell King
2004-06-23 16:01                           ` Takashi Iwai
2004-06-23 16:10                             ` Russell King
2004-06-22 10:48             ` Takashi Iwai
2004-06-18 19:48       ` Jamey Hicks
2004-06-18 21:08 ` Jeff Garzik
2004-06-18 22:12   ` Richard B. Johnson
2004-06-18 23:27     ` Ian Molton
2004-06-18 23:26   ` Ian Molton
2004-06-18 23:30     ` James Bottomley
2004-06-18 23:32       ` Jeff Garzik
     [not found]         ` <20040619005714.37b68453.spyro@f2s.com>
     [not found]           ` <40D3838B.2070608@pobox.com>
     [not found]             ` <20040619011621.4491600a.spyro@f2s.com>
     [not found]               ` <40D3872F.5010007@pobox.com>
2004-06-19  0:34                 ` Ian Molton
2004-06-19 21:15                   ` Tony Lindgren

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=1087750024.11222.81.camel@mulgrave \
    --to=james.bottomley@steeleye.com \
    --cc=david-b@pacbell.net \
    --cc=greg@kroah.com \
    --cc=jamey.hicks@hp.com \
    --cc=joshua@joshuawise.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rmk+lkml@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