From: "David S. Miller" <davem@davemloft.net>
To: David Howells <dhowells@redhat.com>
Cc: matthew@wil.cx, anton@samba.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH] ?mb() -> smp_?mb() conversion
Date: Tue, 22 Mar 2005 09:13:31 -0800 [thread overview]
Message-ID: <20050322091331.7b2967a1.davem@davemloft.net> (raw)
In-Reply-To: <11333.1111510094@redhat.com>
On Tue, 22 Mar 2005 16:48:14 +0000
David Howells <dhowells@redhat.com> wrote:
> Matthew Wilcox <matthew@wil.cx> wrote:
>
> > - io_*mb() are equivalent, for io memory.
>
> I don't think these actually exist at the moment. My suggestion was that we
> rename {r,w,}mb() to io_{r,w,}mb().
This is the first time I've seen that ?mb() should order I/O
accesses. My sparc64 versions certainly don't handle that
correctly. :-) That being said, I think we're all being
educated to so me extent in this thread.
On sparc64, we have a "membar" instruction. It takes a bitmask,
and each bit says what ordering constraint is desired. So, for
example, there is a bit that says "complete all previous loads
before executing any future stores", it looks like:
membar #LoadStore
if you wanted to order previous stores with future stores as well,
you'd do something like:
membar #LoadStore | #StoreStore
Anyways, there is a special bit called "#Sync" which usually sits
by itself and it causes all previous memory operations (even deferred
ones) to complete before that membar finishes execution. This is
the only way to get deferred errors and traps (f.e. deferred store
causes memory bus error) to get signalled synchronously.
Finally, there is the #Lookaside bit which is the only way to order
cacheable vs. non-cacheable accesses. I would need to add this bit
to the ?mb() macros if I/O ordering is really required.
next prev parent reply other threads:[~2005-03-22 17:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-21 22:59 [PATCH] ?mb() -> smp_?mb() conversion Anton Blanchard
2005-03-21 23:06 ` David S. Miller
2005-03-22 10:43 ` David Howells
2005-03-22 13:13 ` Matthew Wilcox
2005-03-22 14:27 ` David Howells
2005-03-22 16:03 ` Anton Blanchard
2005-03-22 16:34 ` Matthew Wilcox
2005-03-22 16:48 ` David Howells
2005-03-22 17:13 ` David S. Miller [this message]
2005-03-22 17:44 ` James Bottomley
2005-03-22 18:09 ` Jesse Barnes
2005-03-22 18:00 ` David Howells
2005-03-22 21:59 ` Paul Mackerras
2005-03-22 18:15 ` Jesse Barnes
2005-03-22 18:24 ` Jesse Barnes
2005-03-23 6:23 ` 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=20050322091331.7b2967a1.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=anton@samba.org \
--cc=dhowells@redhat.com \
--cc=linux-arch@vger.kernel.org \
--cc=matthew@wil.cx \
/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