[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180405073204.GP4043@hirez.programming.kicks-ass.net>
Date: Thu, 5 Apr 2018 09:32:04 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Alan Stern <stern@...land.harvard.edu>
Cc: Daniel Jordan <daniel.m.jordan@...cle.com>, parri.andrea@...il.com,
will.deacon@....com, boqun.feng@...il.com, npiggin@...il.com,
dhowells@...hat.com, j.alglave@....ac.uk, luc.maranget@...ia.fr,
paulmck@...ux.vnet.ibm.com, akiyks@...il.com,
linux-kernel@...r.kernel.org,
Steven Sistare <steven.sistare@...cle.com>,
Pasha Tatashin <pasha.tatashin@...cle.com>
Subject: Re: Control dependency between prior load in while condition and
later store?
On Wed, Apr 04, 2018 at 04:35:32PM -0400, Alan Stern wrote:
> On Wed, 4 Apr 2018, Daniel Jordan wrote:
>
> > A question for memory-barriers.txt aficionados.
> >
> > Is there a control dependency between the prior load of 'a' and the
> > later store of 'c'?:
> >
> > while (READ_ONCE(a));
> > WRITE_ONCE(c, 1);
>
> I would say that yes, there is.
Indeed.
> Yes, except that a more accurate view of the object code would be
> something like this:
>
> Loop: r1 = READ_ONCE(a);
> if (r1)
> goto Loop;
> else
> ; // Do nothing
> WRITE_ONCE(c, 1);
>
> Here you can see that one path branches backward, so everything
> following the "if" is dependent on the READ_ONCE.
Agreed, and I think I even have code that relies on such a pattern
somewhere.. Ah.. yes, see smp_cond_load_acquire().
Powered by blists - more mailing lists