From: Nick Piggin <npiggin@suse.de>
To: Jes Sorensen <jes@sgi.com>
Cc: linux-arch@vger.kernel.org, jbarnes@virtuousgeek.org,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [rfc] add io barriers, remove mmiowb
Date: Thu, 22 May 2008 11:51:21 +0200 [thread overview]
Message-ID: <20080522095121.GA18012@wotan.suse.de> (raw)
In-Reply-To: <yq0fxsaivo4.fsf@jaguar.mkp.net>
On Thu, May 22, 2008 at 04:34:51AM -0400, Jes Sorensen wrote:
> >>>>> "Nick" == Nick Piggin <npiggin@suse.de> writes:
>
> Nick> mb and wmb are now no longer guaranteed to order system memory
> Nick> operations with device memory stores. mmiowb has been introduced
> Nick> to provide this ordering (when combined with a mb, wmb, or
> Nick> spin_unlock). Unfortunately, it appears to be rather less well
> Nick> understood among both users and implementors than even the old
> Nick> memory barrier scheme. It also subtly breaks existing code that
> Nick> uses mb or wmb (if only on sn2). I really think it is not a good
> Nick> solution.
>
> Nick> The alternative I propose is to restore mb and wmb to their full
> Nick> strength. This does mean that sn2 has to do the equivalent of
> Nick> mb+mmiowb, wmb+mmiowb respectively, but that's the price you pay
> Nick> for weak memory ordering.
>
> Nick,
>
> Introducing this constraint would make me less than pleased I have to
> admit. It's a very expensive operation to do since it requires going
> out talking to the PCI bridge, doing that on every wmb() is going to
> really hurt :-(
Right, but probably the large majority of wmb() callers actually
just want io_wmb(). This would relieve much of the performance
problem, I'd say.
Of those that really want a wmb() and cannot be converted to
io_wmb(), I don't think it is a good option to actually just weaken
wmb() because we deem that doing what the caller asked for is too
expensive.
I guess with the ia64_mf(), Altix probably does not reorder PCI
stores past earlier cacheable stores, so _some_ wmb()s actually
do not require the full mmiowb case (if we only need to order
an earlier RAM store with a later PCI store). However, again,
weakening wmb() is not a good option because it really requires
an audit of the entire tree to do that.
We _could_ introduce partial barriers like store/iostore iostore/store,
but really, I think the io_wmb is a pretty good first step, and I
haven't actually seen any numbers indicating it would be a performance
problem.
next prev parent reply other threads:[~2008-05-22 9:51 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-21 15:28 [rfc] add io barriers, remove mmiowb Nick Piggin
2008-05-22 8:34 ` Jes Sorensen
2008-05-22 9:51 ` Nick Piggin [this message]
2008-05-22 12:28 ` Jes Sorensen
2008-05-22 16:34 ` Jesse Barnes
2008-05-23 1:44 ` Nick Piggin
2008-05-22 23:59 ` Paul Mackerras
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=20080522095121.GA18012@wotan.suse.de \
--to=npiggin@suse.de \
--cc=jbarnes@virtuousgeek.org \
--cc=jes@sgi.com \
--cc=linux-arch@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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.