All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Wilcox <matthew@wil.cx>
To: Anton Blanchard <anton@samba.org>
Cc: Matthew Wilcox <matthew@wil.cx>,
	David Howells <dhowells@redhat.com>,
	"David S. Miller" <davem@davemloft.net>,
	linux-arch@vger.kernel.org
Subject: Re: [PATCH] ?mb() -> smp_?mb() conversion
Date: Tue, 22 Mar 2005 16:34:28 +0000	[thread overview]
Message-ID: <20050322163428.GD21986@parcelfarce.linux.theplanet.co.uk> (raw)
In-Reply-To: <20050322160324.GA4980@krispykreme>

On Wed, Mar 23, 2005 at 03:03:24AM +1100, Anton Blanchard wrote:
> 
> > > Would it be worth renaming the mb/rmb/wmb to io_mb/io_rmb/io_wmb?
> > > After all, I believe they should only be used to flush I/O memory
> > > accesses. This would, I think, make the distinction between memory
> > > barriers for I/O and memory barriers for SMP more obvious.
> > 
> > Are you joking or genuinely confused?
> 
> To be fair there are a lot of confused people out there. A few examples:

Yep, and I'm one of them.  Never having worked on the alpha or sparc
ports, i'm pretty barrier-uneducated.  Let me recap my understanding
(and thanks to dhowells for our irc chat earlier) ...

 - barrier() is a *compiler* barrier.  It does not affect how the CPU
   reorders instructions.
 - wmb() ensure that other CPUs and devices doing DMA observe writes 
   to memory before the wmb() before the writes after the wmb()
 - rmb() ensures preceeding reads from memory complete before reads that
   come after the rmb()
 - mb() is the same as wmb(); rmb();
 - io_*mb() are equivalent, for io memory.
 - smp_*mb() no barrier on UP and specified barrier on SMP

> 1. My original patch showed there are a number of places we use memory
> barriers on UP when not required. Getting rid of mb/rmb/wmb would help
> this, people are unlikely to sprinkle io_mb in the scheduler code :)
> 
> 2. drivers/net/typhoon.c
> 
>                 INIT_COMMAND_NO_RESPONSE(cmd, TYPHOON_CMD_HELLO_RESP);
>                 smp_wmb();
>                 writel(ring->lastWrite, tp->ioaddr + TYPHOON_REG_CMD_READY);
> 
> it looks a lot like smp_wmb is being used to order IO.

This is a tricky one because I think we're writing to memory, then
writing the address of memory to IO.  So we need to ensure that memory
writes complete before the next IO write, right?

-- 
"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

  reply	other threads:[~2005-03-22 16:34 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 [this message]
2005-03-22 16:48           ` David Howells
2005-03-22 17:13             ` David S. Miller
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=20050322163428.GD21986@parcelfarce.linux.theplanet.co.uk \
    --to=matthew@wil.cx \
    --cc=anton@samba.org \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=linux-arch@vger.kernel.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.