From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Cc: David Howells <dhowells@redhat.com>,
Will Deacon <Will.Deacon@arm.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"c++std-parallel@accu.org" <c++std-parallel@accu.org>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
"gcc@gcc.gnu.org" <gcc@gcc.gnu.org>,
p796231 <Peter.Sewell@cl.cam.ac.uk>,
"mark.batty@cl.cam.ac.uk" <Mark.Batty@cl.cam.ac.uk>,
Peter Zijlstra <peterz@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
Ingo Molnar <mingo@kernel.org>,
"michaelw@ca.ibm.com" <michaelw@ca.ibm.com>
Subject: Re: Compilers and RCU readers: Once more unto the breach!
Date: Wed, 20 May 2015 08:12:00 -0700 [thread overview]
Message-ID: <20150520151200.GS6776@linux.vnet.ibm.com> (raw)
In-Reply-To: <555C9714.6020001@arm.com>
On Wed, May 20, 2015 at 03:15:48PM +0100, Ramana Radhakrishnan wrote:
>
>
> On 20/05/15 15:03, Paul E. McKenney wrote:
> >On Wed, May 20, 2015 at 02:44:30PM +0100, Ramana Radhakrishnan wrote:
> >>
> >>
> >>On 20/05/15 14:37, David Howells wrote:
> >>>Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote:
> >>>
> >>>>I was thinking of "y" as a simple variable, but if it is something more
> >>>>complex, then the compiler could do this, right?
> >>>>
> >>>> char *x;
> >>>>
> >>>> y;
> >>>> x = z;
> >>>
> >>>Yeah. I presume it has to maintain the ordering, though.
> >>
> >>The scheduler for e.g. is free to reorder if it can prove there is
> >>no dependence (or indeed side-effects for y) between insns produced
> >>for y and `x = z'.
> >
> >So for example, if y is independent of z, the compiler can do the
> >following:
> >
> > char *x;
> >
> > x = z;
> > y;
> >
> >But the dependency ordering is still maintained from z to x, so this
> >is not a problem.
>
>
> Well, reads if any of x (assuming x was initialized elsewhere) would
> need to happen before x got assigned to z.
Agreed, there needs to be a memory_order_consume load up there somewhere.
(AKA rcu_dereference().)
> I understood the original "maintain the ordering" as between the
> statements `x = z' and `y'.
Ah, I was assuming between x and z. David, what was your intent? ;-)
> >Or am I missing something subtle here?
>
> No, it sounds like we are on the same page here.
Whew! ;-)
Thanx, Paul
next prev parent reply other threads:[~2015-05-20 15:18 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-20 0:55 Compilers and RCU readers: Once more unto the breach! Paul E. McKenney
2015-05-20 1:57 ` Linus Torvalds
2015-05-20 1:57 ` Linus Torvalds
2015-05-20 1:57 ` Linus Torvalds
2015-05-20 2:10 ` Linus Torvalds
2015-05-20 2:41 ` Paul E. McKenney
2015-05-20 11:47 ` Will Deacon
2015-05-20 12:15 ` Paul E. McKenney
2015-05-20 13:18 ` David Howells
2015-05-20 13:30 ` Paul E. McKenney
2015-05-20 13:37 ` David Howells
2015-05-20 13:44 ` Ramana Radhakrishnan
2015-05-20 14:03 ` Paul E. McKenney
2015-05-20 14:15 ` Ramana Radhakrishnan
2015-05-20 15:12 ` Paul E. McKenney [this message]
2015-05-20 15:46 ` David Howells
2015-05-20 14:02 ` [c++std-parallel-1624] " Paul E. McKenney
2015-05-20 15:46 ` Will Deacon
2015-05-20 15:54 ` Andrew Haley
2015-05-20 18:16 ` [c++std-parallel-1632] " Paul E. McKenney
2015-05-21 14:22 ` Michael Matz
2015-05-21 15:10 ` Paul E. McKenney
2015-05-21 16:17 ` Michael Matz
2015-05-21 18:37 ` Paul E. McKenney
2015-05-20 18:16 ` Paul E. McKenney
2015-05-21 19:24 ` Will Deacon
2015-05-21 20:02 ` Paul E. McKenney
2015-05-21 20:42 ` Linus Torvalds
2015-05-21 22:02 ` Paul E. McKenney
2015-05-22 6:43 ` Ingo Molnar
2015-05-22 10:43 ` Richard Kenner
2015-05-22 13:11 ` Paul E. McKenney
2015-05-22 13:12 ` Paul E. McKenney
2015-05-26 17:37 ` [c++std-parallel-1641] " Torvald Riegel
2015-05-22 17:30 ` Will Deacon
2015-05-22 18:55 ` Paul E. McKenney
2015-05-20 2:34 ` Paul E. McKenney
2015-05-20 7:34 ` [c++std-parallel-1614] " Jens Maurer
2015-05-20 7:34 ` Jens Maurer
2015-05-20 7:34 ` Jens Maurer
2015-05-20 9:03 ` Richard Biener
2015-05-20 12:02 ` Paul E. McKenney
2015-05-20 12:01 ` [c++std-parallel-1616] " Paul E. McKenney
2015-05-26 17:08 ` [c++std-parallel-1611] " Torvald Riegel
2015-05-27 1:41 ` [c++std-parallel-1651] " Paul E. McKenney
2015-07-14 0:44 ` Paul E. McKenney
2015-09-22 17:00 ` Paul E. McKenney
[not found] ` <CAPUmR1aqV_cQWjE8qC9x2sfmW-1ocKKMtCgNbjZH0cJ-AO2WTg@mail.gmail.com>
2015-09-23 23:26 ` [c++std-parallel-2008] " Paul E. McKenney
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=20150520151200.GS6776@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=Mark.Batty@cl.cam.ac.uk \
--cc=Peter.Sewell@cl.cam.ac.uk \
--cc=Will.Deacon@arm.com \
--cc=akpm@linux-foundation.org \
--cc=c++std-parallel@accu.org \
--cc=dhowells@redhat.com \
--cc=gcc@gcc.gnu.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michaelw@ca.ibm.com \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=ramana.radhakrishnan@arm.com \
--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.