From: Peter Zijlstra <peterz@infradead.org>
To: "stern@rowland.harvard.edu" <stern@rowland.harvard.edu>
Cc: David Laight <David.Laight@aculab.com>,
"linux-toolchains@vger.kernel.org"
<linux-toolchains@vger.kernel.org>, Will Deacon <will@kernel.org>,
Paul McKenney <paulmck@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"parri.andrea@gmail.com" <parri.andrea@gmail.com>,
"boqun.feng@gmail.com" <boqun.feng@gmail.com>,
"npiggin@gmail.com" <npiggin@gmail.com>,
"dhowells@redhat.com" <dhowells@redhat.com>,
"j.alglave@ucl.ac.uk" <j.alglave@ucl.ac.uk>,
"luc.maranget@inria.fr" <luc.maranget@inria.fr>,
"akiyks@gmail.com" <akiyks@gmail.com>,
"dlustig@nvidia.com" <dlustig@nvidia.com>,
"joel@joelfernandes.org" <joel@joelfernandes.org>,
"torvalds@linux-foundation.org" <torvalds@linux-foundation.org>
Subject: Re: Control Dependencies vs C Compilers
Date: Tue, 6 Oct 2020 16:43:02 +0200 [thread overview]
Message-ID: <20201006144302.GY2628@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <20201006142324.GB416765@rowland.harvard.edu>
On Tue, Oct 06, 2020 at 10:23:24AM -0400, stern@rowland.harvard.edu wrote:
> On Tue, Oct 06, 2020 at 03:31:15PM +0200, Peter Zijlstra wrote:
> > Only if we get the compiler people on board and have them provide means
> > are we guaranteed safe from the optimizer. Otherwise we'll just keep
> > playing whack-a-mole with fancy new optimization techniques. And given
> > how horridly painful it is to debug memory ordering problems, I feel it
> > is best to make sure we're not going to have to more than necessary.
>
> Given that you would have to add a compiler annotation, isn't it just as
> easy to use READ_ONCE and WRITE_ONCE?
>
> Or are you worried that even with READ_ONCE and WRITE_ONCE, the compiler
> might still somehow defeat the control dependency?
Yes.
Also, not all instances actually have the WRITE_ONCE() on. The one in
the perf ringbuffer for example uses local_read() for the load (which is
basically READ_ONCE()), but doesn't have WRITE_ONCE() on the inside.
Also, afaiu WRITE_ONCE() also doesn't stop the compiler from lifting it
if it thinks it can get away with it -- memory-barriers.txt has
examples.
And then there's the case where the common branch has a store, I know
ARM64 ARM isn't clear on that, but I'm thinking any actual hardware will
still have to respect it, and it's a matter of 'fixing' the ARM.
Mostly I just want the compiler people to say they'll guarantee the
behaviour if we do 'X'. If 'X' happens to be 'any dynamic branch headed
by a volatile load' that's fine by me.
If they want a new keyword or attribute, that's also fine. But I want to
have the compiler people tell me what they want and guarantee they'll
not come and wreck things.
next prev parent reply other threads:[~2020-10-06 14:43 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-06 11:47 Control Dependencies vs C Compilers Peter Zijlstra
2020-10-06 12:37 ` David Laight
2020-10-06 12:49 ` Willy Tarreau
2020-10-06 13:31 ` Peter Zijlstra
2020-10-06 14:23 ` stern
2020-10-06 14:43 ` Peter Zijlstra [this message]
2020-10-06 15:16 ` Nick Clifton
2020-10-06 15:37 ` David Laight
2020-10-06 15:50 ` Paul E. McKenney
2020-10-06 16:10 ` Willy Tarreau
2020-10-06 16:22 ` David Laight
2020-10-06 16:31 ` Paul E. McKenney
2020-10-06 15:07 ` David Laight
2020-10-06 21:20 ` Florian Weimer
2020-10-07 9:32 ` Peter Zijlstra
2020-10-07 10:20 ` Florian Weimer
2020-10-07 11:50 ` Peter Zijlstra
2020-10-07 17:11 ` Paul E. McKenney
2020-10-07 21:07 ` Peter Zijlstra
2020-10-07 21:20 ` Paul E. McKenney
2020-10-07 10:30 ` Willy Tarreau
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=20201006144302.GY2628@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=David.Laight@aculab.com \
--cc=akiyks@gmail.com \
--cc=boqun.feng@gmail.com \
--cc=dhowells@redhat.com \
--cc=dlustig@nvidia.com \
--cc=j.alglave@ucl.ac.uk \
--cc=joel@joelfernandes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-toolchains@vger.kernel.org \
--cc=luc.maranget@inria.fr \
--cc=npiggin@gmail.com \
--cc=parri.andrea@gmail.com \
--cc=paulmck@kernel.org \
--cc=stern@rowland.harvard.edu \
--cc=torvalds@linux-foundation.org \
--cc=will@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.