From: Matthew Wilcox <matthew@wil.cx>
To: Jeremy Higdon <jeremy@sgi.com>
Cc: Grant Grundler <grundler@parisc-linux.org>,
Matthew Wilcox <matthew@wil.cx>,
Jesse Barnes <jbarnes@engr.sgi.com>,
James Bottomley <James.Bottomley@steeleye.com>,
Matthew Wilcox <willy@debian.org>,
Andrew Vasquez <andrew.vasquez@qlogic.com>,
pj@sgi.com, SCSI Mailing List <linux-scsi@vger.kernel.org>,
mdr@cthulhu.engr.sgi.com, jeremy@cthulhu.engr.sgi.com,
djh@cthulhu.engr.sgi.com, Andrew Morton <akpm@osdl.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Richard Henderson <rth@twiddle.net>,
Paul Mackerras <paulus@samba.org>
Subject: I/O write ordering
Date: Wed, 22 Sep 2004 15:32:08 +0100 [thread overview]
Message-ID: <20040922143208.GL16153@parcelfarce.linux.theplanet.co.uk> (raw)
In-Reply-To: <20040922025805.GA148414@sgi.com>
On Tue, Sep 21, 2004 at 07:58:05PM -0700, Jeremy Higdon wrote:
> I think I'm convinced that we want separate solutions for
> write ordering and (I'll call it) write flushing.
Yes, I think we have consensus on that.
> I'd define write posting as: a store instruction completing
> before the write is completed. Write ordering is a problem
> if posted writes from two CPUs can complete to the device
> out of order. Write flushing would be the process of
> assuring that a posted write has indeed been completed.
> A write flush takes care of write ordering.
Clear, succinct, understandable and correct.
> I think the only way to perform a write flush is to issue
> a register read to the card in question. This makes it
> very heavy weight when all you need is ordering, especially
> since ordering is apparently not a problem for many (most?)
> platforms that do write posting.
Yes, the PCI specs make it clear that bridges can hang on to the
posted write until a read request goes through the bridge, not
just to the bridge.
> So I think we need one solution for write ordering, and
> a separate heavier-weight solution for write flushing. For
> platforms in which write posting does not create ordering problems
> the write ordering primitive would be a no-op.
Yes.
> The solution for write ordering on the two arches I know about
> is processor/CPU chipset specific (SGI MIPS is a "sync" instruction,
> Altix is a read of a SHub register).
>
> Whether we call it io_mwb() or mmiob() is not important to me.
> Does io_mwb stand for I/O Memory-mapped Write Barrier?
I think the only disagreement is whether we have it implicit or explicit.
I see three potential solutions:
1. iomb() [we have mb(), rmb(), wmb() already. Does mb() imply iomb()?
Vice versa?]
2. io_spin_unlock() which is an io barrier as well as a memory barrier.
3. Make spin_unlock an io barrier. Expensive.
I'd quite like to hear opinions from the PPC and Alpha people, they seem to
be the most out-of-order architectures.
--
"Next the statesmen will invent cheap lies, putting the blame upon
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince
himself that the war is just, and will thank God for the better sleep
he enjoys after this process of grotesque self-deception." -- Mark Twain
next prev parent reply other threads:[~2004-09-22 14:32 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <B179AE41C1147041AA1121F44614F0B060EF48@AVEXCH02.qlogic.org>
[not found] ` <20040916121235.5e4f9c32.pj@sgi.com>
[not found] ` <1095362263.16326.12.camel@praka>
2004-09-16 19:56 ` SCSI QLA not working on latest *-mm SN2 Paul Jackson
2004-09-16 20:05 ` Jesse Barnes
2004-09-16 20:56 ` Andrew Vasquez
2004-09-16 21:09 ` Jesse Barnes
2004-09-16 21:40 ` Andrew Vasquez
2004-09-16 22:25 ` Andrew Morton
2004-09-16 22:29 ` Jesse Barnes
2004-09-17 17:21 ` Jesse Barnes
2004-09-18 6:10 ` Grant Grundler
2004-09-18 17:57 ` Documentation/io_ordering.txt is wrong Matthew Wilcox
2004-09-20 23:39 ` Jesse Barnes
2004-09-21 0:38 ` Jesse Barnes
2004-09-20 22:40 ` SCSI QLA not working on latest *-mm SN2 Jesse Barnes
2004-09-20 23:27 ` Grant Grundler
2004-09-21 0:09 ` Jesse Barnes
2004-09-21 5:46 ` Grant Grundler
2004-09-21 6:45 ` Jeremy Higdon
2004-09-21 13:29 ` Jesse Barnes
2004-09-21 13:25 ` Jesse Barnes
2004-09-21 15:13 ` Jesse Barnes
2004-09-21 15:41 ` James Bottomley
2004-09-21 15:58 ` Jesse Barnes
2004-09-21 16:01 ` Matthew Wilcox
2004-09-21 16:05 ` Jesse Barnes
2004-09-21 16:11 ` James Bottomley
2004-09-21 16:18 ` Jesse Barnes
2004-09-21 16:24 ` James Bottomley
2004-09-21 17:03 ` Jesse Barnes
2004-09-21 17:15 ` Matthew Wilcox
2004-09-21 17:24 ` Jesse Barnes
2004-09-21 17:20 ` James Bottomley
2004-09-21 17:46 ` Jesse Barnes
2004-09-21 17:56 ` James Bottomley
2004-09-21 18:09 ` Jesse Barnes
2004-09-21 19:06 ` Grant Grundler
2004-09-21 19:40 ` Jesse Barnes
2004-09-21 22:44 ` Grant Grundler
2004-09-21 21:03 ` Jeremy Higdon
2004-09-21 21:11 ` Matthew Wilcox
2004-09-21 21:43 ` Jeremy Higdon
2004-09-21 22:33 ` Jesse Barnes
2004-09-22 0:02 ` Matthew Wilcox
2004-09-22 1:16 ` Jeremy Higdon
2004-09-22 1:44 ` Grant Grundler
2004-09-22 2:58 ` Jeremy Higdon
2004-09-22 14:32 ` Matthew Wilcox [this message]
2004-09-22 14:40 ` I/O write ordering Benjamin Herrenschmidt
2004-09-22 14:50 ` Jesse Barnes
2004-09-22 14:47 ` James Bottomley
2004-09-22 14:51 ` Benjamin Herrenschmidt
2004-09-22 15:11 ` James Bottomley
2004-09-22 15:11 ` Benjamin Herrenschmidt
2004-09-22 15:22 ` James Bottomley
2004-09-22 15:28 ` Benjamin Herrenschmidt
2004-09-22 15:43 ` James Bottomley
2004-09-23 0:19 ` Benjamin Herrenschmidt
2004-09-23 1:58 ` Matthew Wilcox
2004-09-23 3:01 ` James Bottomley
2004-09-23 3:40 ` Benjamin Herrenschmidt
2004-09-23 4:26 ` Grant Grundler
2004-09-21 23:03 ` SCSI QLA not working on latest *-mm SN2 Guennadi Liakhovetski
2004-09-16 23:14 ` Jeremy Higdon
2004-09-16 20:11 ` Andrew Morton
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=20040922143208.GL16153@parcelfarce.linux.theplanet.co.uk \
--to=matthew@wil.cx \
--cc=James.Bottomley@steeleye.com \
--cc=akpm@osdl.org \
--cc=andrew.vasquez@qlogic.com \
--cc=benh@kernel.crashing.org \
--cc=djh@cthulhu.engr.sgi.com \
--cc=grundler@parisc-linux.org \
--cc=jbarnes@engr.sgi.com \
--cc=jeremy@cthulhu.engr.sgi.com \
--cc=jeremy@sgi.com \
--cc=linux-scsi@vger.kernel.org \
--cc=mdr@cthulhu.engr.sgi.com \
--cc=paulus@samba.org \
--cc=pj@sgi.com \
--cc=rth@twiddle.net \
--cc=willy@debian.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.