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().