From: Grant Grundler <grundler@parisc-linux.org>
To: akepner@sgi.com
Cc: Grant Grundler <grundler@parisc-linux.org>,
Jesse Barnes <jbarnes@virtuousgeek.org>,
Jes Sorensen <jes@sgi.com>,
Randy Dunlap <randy.dunlap@oracle.com>,
David Miller <davem@davemloft.net>,
Roland Dreier <rdreier@cisco.com>,
linux-kernel@vger.kernel.org,
James Bottomley <James.Bottomley@steeleye.com>
Subject: Re: [PATCH 0/4] allow drivers to flush in-flight DMA
Date: Wed, 26 Sep 2007 00:49:50 -0600 [thread overview]
Message-ID: <20070926064950.GB30430@colo.lackof.org> (raw)
In-Reply-To: <20070925235843.GK30013@sgi.com>
[+jejb to cc]
On Tue, Sep 25, 2007 at 04:58:43PM -0700, akepner@sgi.com wrote:
> This is a followup to http://lkml.org/lkml/2007/8/24/280
>
> Despite Grant's desire for a more elegant solution, there's
> not much new here. I moved the API change from pci.h to
> dma-mapping.h and removed the pci_ prefix from the name.
Thanks - but I don't have a better idea either.
I think you are right to just move forward with this until
someone provides a better API.
> Problem Description
> -------------------
> On Altix, DMA may be reordered within the NUMA interconnect.
> This can be a problem with Infiniband, where DMA to Completion Queues
> allocated in user-space can race with data DMA. This patchset allows
> a driver to associate a user-space memory region with a "dmaflush"
> attribute, so that writes to the memory region flush in-flight DMA,
> preventing the CQ/data race.
Can we define this API to provide the same semantics as the memory
that dma_alloc_coherent() returns?
Did I summarize this correctly?
Defining it terms of completion queues won't mean much to most folks.
Better to add a description of completion queues to the DMA-API.txt if
necessary. dma_alloc_coherent() API is pretty well understood.
> There are four patches in this set:
>
> [1/4] dma: add dma_flags_set_dmaflush() to dma interface
Sorry - this feels like a "color of the shed" argument, but isn't
this about DMA ordering attribute?
"dmaflush" is an action and not an attribute to me.
Is dma_flags_set_coherent() better since it's doing the same thing
as dma_alloc_coherent()?
> [2/4] dma: redefine dma_flags_set_dmaflush() for sn-ia64
> [3/4] dma: document dma_flags_set_dmaflush()
This patch updates Documentation/DMA-mapping.txt. But it's a change to
the generic (not PCI specific) API described in DMA-API.txt.
Can you update that as well please?
Upon reading the "2) Platforms that permit DMA reordering", I think I
have been confusing coherency with ordering. I think I have because DMA
is leaving the "PCI domain", crossing an "unordered domain" (NUMA,
interconnect), and then finally hitting the cache coherency "domain"
when it reaches a "far away" memory controller. That's why I've
been thinking of this as a coherency problem.
The description and API uses the word "flush" (which is ok I guess) instead
of describing this in terms of enforcing DMA ordering. Any DMA write to the
"strongly ordered" region will cause _all_ inflight DMA to be visible
to cache coherency, thus preserving the illusion of strong DMA ordering.
Does that sound right/better to you too?
I don't have chipset docs and some of this is just trying to rephrase
what I've heard before from former SGI employees.
> [4/4] mthca: allow setting "dmaflush" attribute on user-allocated memory
Besides calling the parameter "dmaflush", it looks fine to me.
(It's either a DMA ordering or coherency attribute depending on how
you want to look at it.)
thanks,
grant
next prev parent reply other threads:[~2007-09-26 6:50 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-25 23:58 [PATCH 0/4] allow drivers to flush in-flight DMA akepner
2007-09-26 6:49 ` Grant Grundler [this message]
2007-09-26 15:17 ` Jesse Barnes
2007-09-26 19:29 ` Roland Dreier
2007-09-28 0:27 ` akepner
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=20070926064950.GB30430@colo.lackof.org \
--to=grundler@parisc-linux.org \
--cc=James.Bottomley@steeleye.com \
--cc=akepner@sgi.com \
--cc=davem@davemloft.net \
--cc=jbarnes@virtuousgeek.org \
--cc=jes@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=randy.dunlap@oracle.com \
--cc=rdreier@cisco.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.