On Tue, Feb 17, 2015 at 10:01:54AM -0800, Paul E. McKenney wrote:
> > > The blob under SMP BARRIER PAIRING does not mention pairing with control
> > > dependencies; and I'm rather sure I've done so.
> 
> And here is a patch for the control-dependency pairing.  Thoughts?

The proposed patch does not change the blub under SMP BARRIER PAIRING,
which would be the first place I would look for this.

> @@ -850,6 +853,19 @@ Or:
>                             <data dependency barrier>
>                             y = *x;
>  
> +Or even:
> +
> +     CPU 1                 CPU 2
> +     ===============       ===============================
> +     r1 = ACCESS_ONCE(y);
> +     <write barrier>
> +     ACCESS_ONCE(y) = 1;   if (r2 = ACCESS_ONCE(x)) {
> +                              <implicit control dependency>
> +                              ACCESS_ONCE(y) = 1;
> +                           }
> +
> +     assert(r1 == 0 || r2 == 0);
> +
>  Basically, the read barrier always has to be there, even though it can be of
>  the "weaker" type.

Does that want to be a <general barrier>; CPU1 looks to do a LOAD
followed by a STORE, separated by a WMB, which is of course odd.

To me the pairing with a general barrier is also the most intuitive,
since the control dependency is a LOAD -> STORE order.

Then again, I'm rather tired and maybe I'm missing the obvious :-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to