From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Joe Perches <joe@perches.com>, Ingo Molnar <mingo@kernel.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Jason Low <jason.low2@hp.com>, Davidlohr Bueso <davidlohr@hp.com>,
Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Alex Shi <alex.shi@linaro.org>, Andi Kleen <andi@firstfloor.org>,
Michel Lespinasse <walken@google.com>,
Davidlohr Bueso <davidlohr.bueso@hp.com>,
Matthew R Wilcox <matthew.r.wilcox@intel.com>,
Dave Hansen <dave.hansen@intel.com>,
Rik van Riel <riel@redhat.com>,
Peter Hurley <peter@hurleysoftware.com>,
linux-kernel@vger.kernel.org, linux-mm <linux-mm@kvack.org>,
tony.luck@intel.com, fenghua.yu@intel.com,
linux-ia64@vger.kernel.org
Subject: Re: [PATCH] checkpatch: Make the memory barrier test noisier
Date: Fri, 27 Sep 2013 16:04:06 +0000 [thread overview]
Message-ID: <20130927160406.GY9093@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130927153434.GG15690@laptop.programming.kicks-ass.net>
On Fri, Sep 27, 2013 at 05:34:34PM +0200, Peter Zijlstra wrote:
> On Fri, Sep 27, 2013 at 08:17:50AM -0700, Paul E. McKenney wrote:
> > > Barriers are fundamentally about order; and order only makes sense if
> > > there's more than 1 party to the game.
> >
> > Oddly enough, there is one exception that proves the rule... On Itanium,
> > suppose we have the following code, with x initially equal to zero:
> >
> > CPU 1: ACCESS_ONCE(x) = 1;
> >
> > CPU 2: r1 = ACCESS_ONCE(x); r2 = ACCESS_ONCE(x);
> >
> > Itanium architects have told me that it really is possible for CPU 2 to
> > see r1=1 and r2=0. Placing a memory barrier between CPU 2's pair of
> > fetches prevents this, but without any other memory barrier to pair with.
>
> Oh man.. its really past time to sink that itanic already.
>
> I suppose it allows the cpu to reorder the reads in its pipeline and the
> memory barrier disallows this. Curious.. does our memory-barriers.txt
> file mention this 'fun' fact?
Probably not. I was recently reminded of it by some people on the C++
standards committee. I had first heard of it about 5 years ago, but
hadn't heard definitively until quite recently.
I defer to the Itanium maintainers to actually make the required changes,
should they choose to do so. I suppose that one way to handle it in the
Linux kernel would be to make ACCESS_ONCE() be architecture specific,
with Itanium placing a memory barrier either before or after --- either
would work. But since Itanium seems to run Linux reliably, I am guessing
that the probability of misordering is quite low. But again, the ball
is firmly in the Itanium maintainers' courts, and I have added them on CC.
Thanx, Paul
WARNING: multiple messages have this Message-ID (diff)
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Joe Perches <joe@perches.com>, Ingo Molnar <mingo@kernel.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Jason Low <jason.low2@hp.com>, Davidlohr Bueso <davidlohr@hp.com>,
Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Alex Shi <alex.shi@linaro.org>, Andi Kleen <andi@firstfloor.org>,
Michel Lespinasse <walken@google.com>,
Davidlohr Bueso <davidlohr.bueso@hp.com>,
Matthew R Wilcox <matthew.r.wilcox@intel.com>,
Dave Hansen <dave.hansen@intel.com>,
Rik van Riel <riel@redhat.com>,
Peter Hurley <peter@hurleysoftware.com>,
linux-kernel@vger.kernel.org, linux-mm <linux-mm@kvack.org>,
tony.luck@intel.com, fenghua.yu@intel.com,
linux-ia64@vger.kernel.org
Subject: Re: [PATCH] checkpatch: Make the memory barrier test noisier
Date: Fri, 27 Sep 2013 09:04:06 -0700 [thread overview]
Message-ID: <20130927160406.GY9093@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130927153434.GG15690@laptop.programming.kicks-ass.net>
On Fri, Sep 27, 2013 at 05:34:34PM +0200, Peter Zijlstra wrote:
> On Fri, Sep 27, 2013 at 08:17:50AM -0700, Paul E. McKenney wrote:
> > > Barriers are fundamentally about order; and order only makes sense if
> > > there's more than 1 party to the game.
> >
> > Oddly enough, there is one exception that proves the rule... On Itanium,
> > suppose we have the following code, with x initially equal to zero:
> >
> > CPU 1: ACCESS_ONCE(x) = 1;
> >
> > CPU 2: r1 = ACCESS_ONCE(x); r2 = ACCESS_ONCE(x);
> >
> > Itanium architects have told me that it really is possible for CPU 2 to
> > see r1==1 and r2==0. Placing a memory barrier between CPU 2's pair of
> > fetches prevents this, but without any other memory barrier to pair with.
>
> Oh man.. its really past time to sink that itanic already.
>
> I suppose it allows the cpu to reorder the reads in its pipeline and the
> memory barrier disallows this. Curious.. does our memory-barriers.txt
> file mention this 'fun' fact?
Probably not. I was recently reminded of it by some people on the C++
standards committee. I had first heard of it about 5 years ago, but
hadn't heard definitively until quite recently.
I defer to the Itanium maintainers to actually make the required changes,
should they choose to do so. I suppose that one way to handle it in the
Linux kernel would be to make ACCESS_ONCE() be architecture specific,
with Itanium placing a memory barrier either before or after --- either
would work. But since Itanium seems to run Linux reliably, I am guessing
that the probability of misordering is quite low. But again, the ball
is firmly in the Itanium maintainers' courts, and I have added them on CC.
Thanx, Paul
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Joe Perches <joe@perches.com>, Ingo Molnar <mingo@kernel.org>,
Tim Chen <tim.c.chen@linux.intel.com>,
Jason Low <jason.low2@hp.com>, Davidlohr Bueso <davidlohr@hp.com>,
Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Alex Shi <alex.shi@linaro.org>, Andi Kleen <andi@firstfloor.org>,
Michel Lespinasse <walken@google.com>,
Davidlohr Bueso <davidlohr.bueso@hp.com>,
Matthew R Wilcox <matthew.r.wilcox@intel.com>,
Dave Hansen <dave.hansen@intel.com>,
Rik van Riel <riel@redhat.com>,
Peter Hurley <peter@hurleysoftware.com>,
linux-kernel@vger.kernel.org, linux-mm <linux-mm@kvack.org>,
tony.luck@intel.com, fenghua.yu@intel.com,
linux-ia64@vger.kernel.org
Subject: Re: [PATCH] checkpatch: Make the memory barrier test noisier
Date: Fri, 27 Sep 2013 09:04:06 -0700 [thread overview]
Message-ID: <20130927160406.GY9093@linux.vnet.ibm.com> (raw)
In-Reply-To: <20130927153434.GG15690@laptop.programming.kicks-ass.net>
On Fri, Sep 27, 2013 at 05:34:34PM +0200, Peter Zijlstra wrote:
> On Fri, Sep 27, 2013 at 08:17:50AM -0700, Paul E. McKenney wrote:
> > > Barriers are fundamentally about order; and order only makes sense if
> > > there's more than 1 party to the game.
> >
> > Oddly enough, there is one exception that proves the rule... On Itanium,
> > suppose we have the following code, with x initially equal to zero:
> >
> > CPU 1: ACCESS_ONCE(x) = 1;
> >
> > CPU 2: r1 = ACCESS_ONCE(x); r2 = ACCESS_ONCE(x);
> >
> > Itanium architects have told me that it really is possible for CPU 2 to
> > see r1==1 and r2==0. Placing a memory barrier between CPU 2's pair of
> > fetches prevents this, but without any other memory barrier to pair with.
>
> Oh man.. its really past time to sink that itanic already.
>
> I suppose it allows the cpu to reorder the reads in its pipeline and the
> memory barrier disallows this. Curious.. does our memory-barriers.txt
> file mention this 'fun' fact?
Probably not. I was recently reminded of it by some people on the C++
standards committee. I had first heard of it about 5 years ago, but
hadn't heard definitively until quite recently.
I defer to the Itanium maintainers to actually make the required changes,
should they choose to do so. I suppose that one way to handle it in the
Linux kernel would be to make ACCESS_ONCE() be architecture specific,
with Itanium placing a memory barrier either before or after --- either
would work. But since Itanium seems to run Linux reliably, I am guessing
that the probability of misordering is quite low. But again, the ball
is firmly in the Itanium maintainers' courts, and I have added them on CC.
Thanx, Paul
next prev parent reply other threads:[~2013-09-27 16:04 UTC|newest]
Thread overview: 129+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1380144003.git.tim.c.chen@linux.intel.com>
2013-09-25 22:10 ` [PATCH v6 0/6] rwsem: performance optimizations Tim Chen
2013-09-25 22:10 ` Tim Chen
2013-09-25 22:10 ` [PATCH v6 1/6] rwsem: check the lock before cpmxchg in down_write_trylock Tim Chen
2013-09-25 22:10 ` Tim Chen
2013-09-25 22:10 ` [PATCH v6 2/6] rwsem: remove 'out' label in do_wake Tim Chen
2013-09-25 22:10 ` Tim Chen
2013-09-25 22:10 ` [PATCH v6 3/6] rwsem: remove try_reader_grant label do_wake Tim Chen
2013-09-25 22:10 ` Tim Chen
2013-09-25 22:10 ` [PATCH v6 4/6] rwsem/wake: check lock before do atomic update Tim Chen
2013-09-25 22:10 ` Tim Chen
2013-09-25 22:10 ` [PATCH v6 5/6] MCS Lock: Restructure the MCS lock defines and locking code into its own file Tim Chen
2013-09-25 22:10 ` Tim Chen
2013-09-26 6:46 ` Ingo Molnar
2013-09-26 6:46 ` Ingo Molnar
2013-09-26 8:40 ` Peter Zijlstra
2013-09-26 8:40 ` Peter Zijlstra
2013-09-26 9:37 ` Ingo Molnar
2013-09-26 9:37 ` Ingo Molnar
2013-09-26 18:18 ` Tim Chen
2013-09-26 18:18 ` Tim Chen
2013-09-26 19:27 ` Jason Low
2013-09-26 19:27 ` Jason Low
2013-09-26 20:06 ` Davidlohr Bueso
2013-09-26 20:06 ` Davidlohr Bueso
2013-09-26 20:23 ` Jason Low
2013-09-26 20:23 ` Jason Low
2013-09-26 20:40 ` Davidlohr Bueso
2013-09-26 20:40 ` Davidlohr Bueso
2013-09-26 21:09 ` Jason Low
2013-09-26 21:09 ` Jason Low
2013-09-26 21:41 ` Tim Chen
2013-09-26 21:41 ` Tim Chen
2013-09-26 22:42 ` Jason Low
2013-09-26 22:42 ` Jason Low
2013-09-26 22:57 ` Tim Chen
2013-09-26 22:57 ` Tim Chen
2013-09-27 6:02 ` Ingo Molnar
2013-09-27 6:02 ` Ingo Molnar
2013-09-27 6:26 ` Jason Low
2013-09-27 6:26 ` Jason Low
2013-09-27 11:23 ` Peter Zijlstra
2013-09-27 11:23 ` Peter Zijlstra
2013-09-27 13:44 ` Joe Perches
2013-09-27 13:44 ` Joe Perches
2013-09-27 13:48 ` Peter Zijlstra
2013-09-27 13:48 ` Peter Zijlstra
2013-09-27 14:05 ` Joe Perches
2013-09-27 14:05 ` Joe Perches
2013-09-27 14:18 ` Peter Zijlstra
2013-09-27 14:18 ` Peter Zijlstra
2013-09-27 14:14 ` [PATCH] checkpatch: Make the memory barrier test noisier Joe Perches
2013-09-27 14:14 ` Joe Perches
2013-09-27 14:26 ` Peter Zijlstra
2013-09-27 14:26 ` Peter Zijlstra
2013-09-27 14:34 ` Joe Perches
2013-09-27 14:34 ` Joe Perches
2013-09-27 14:50 ` Peter Zijlstra
2013-09-27 14:50 ` Peter Zijlstra
2013-09-27 15:17 ` Paul E. McKenney
2013-09-27 15:17 ` Paul E. McKenney
2013-09-27 15:34 ` Peter Zijlstra
2013-09-27 15:34 ` Peter Zijlstra
2013-09-27 16:04 ` Paul E. McKenney [this message]
2013-09-27 16:04 ` Paul E. McKenney
2013-09-27 16:04 ` Paul E. McKenney
2013-09-27 23:40 ` Oliver Neukum
2013-09-27 23:40 ` Oliver Neukum
2013-09-28 7:54 ` Peter Zijlstra
2013-09-28 7:54 ` Peter Zijlstra
2013-09-27 16:12 ` [PATCH v6 5/6] MCS Lock: Restructure the MCS lock defines and locking code into its own file Jason Low
2013-09-27 16:12 ` Jason Low
2013-09-27 16:19 ` Tim Chen
2013-09-27 16:19 ` Tim Chen
2013-10-02 19:19 ` Waiman Long
2013-10-02 19:19 ` Waiman Long
2013-10-02 19:30 ` Jason Low
2013-10-02 19:30 ` Jason Low
2013-10-02 19:37 ` Waiman Long
2013-10-02 19:37 ` Waiman Long
2013-09-26 22:22 ` Davidlohr Bueso
2013-09-26 22:22 ` Davidlohr Bueso
2013-09-27 15:29 ` Paul E. McKenney
2013-09-27 15:29 ` Paul E. McKenney
2013-09-27 18:09 ` Tim Chen
2013-09-27 18:09 ` Tim Chen
2013-09-28 2:58 ` Waiman Long
2013-09-28 2:58 ` Waiman Long
2013-09-27 19:38 ` Tim Chen
2013-09-27 19:38 ` Tim Chen
2013-09-27 20:16 ` Jason Low
2013-09-27 20:16 ` Jason Low
2013-09-27 20:38 ` Paul E. McKenney
2013-09-27 20:38 ` Paul E. McKenney
2013-09-27 22:46 ` Tim Chen
2013-09-27 22:46 ` Tim Chen
2013-09-27 23:01 ` Paul E. McKenney
2013-09-27 23:01 ` Paul E. McKenney
2013-09-27 23:54 ` Jason Low
2013-09-27 23:54 ` Jason Low
2013-09-28 0:02 ` Davidlohr Bueso
2013-09-28 0:02 ` Davidlohr Bueso
2013-09-28 2:19 ` Paul E. McKenney
2013-09-28 2:19 ` Paul E. McKenney
2013-09-28 4:34 ` Jason Low
2013-09-28 4:34 ` Jason Low
2013-09-30 15:51 ` Waiman Long
2013-09-30 15:51 ` Waiman Long
2013-09-30 16:10 ` Jason Low
2013-09-30 16:10 ` Jason Low
2013-09-30 16:36 ` Waiman Long
2013-09-30 16:36 ` Waiman Long
2013-10-01 16:48 ` Tim Chen
2013-10-01 16:48 ` Tim Chen
2013-10-01 20:01 ` Waiman Long
2013-10-01 20:01 ` Waiman Long
2013-10-01 21:16 ` Tim Chen
2013-10-01 21:16 ` Tim Chen
2013-10-02 1:25 ` Waiman Long
2013-10-02 1:25 ` Waiman Long
2013-10-02 18:43 ` Tim Chen
2013-10-02 18:43 ` Tim Chen
2013-10-02 19:32 ` Waiman Long
2013-10-02 19:32 ` Waiman Long
2013-09-30 16:28 ` Tim Chen
2013-09-30 16:28 ` Tim Chen
2013-09-25 22:10 ` [PATCH v6 6/6] rwsem: do optimistic spinning for writer lock acquisition Tim Chen
2013-09-25 22:10 ` Tim Chen
2013-09-26 6:53 ` Ingo Molnar
2013-09-26 6:53 ` Ingo Molnar
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=20130927160406.GY9093@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alex.shi@linaro.org \
--cc=andi@firstfloor.org \
--cc=dave.hansen@intel.com \
--cc=davidlohr.bueso@hp.com \
--cc=davidlohr@hp.com \
--cc=fenghua.yu@intel.com \
--cc=jason.low2@hp.com \
--cc=joe@perches.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=matthew.r.wilcox@intel.com \
--cc=mingo@elte.hu \
--cc=mingo@kernel.org \
--cc=peter@hurleysoftware.com \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=tim.c.chen@linux.intel.com \
--cc=tony.luck@intel.com \
--cc=walken@google.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.