documentation: Add alternative release-acquire outcome
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 26 Jan 2016 06:12:34 +0000 (22:12 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 14 Mar 2016 22:52:18 +0000 (15:52 -0700)
The memory-barriers.txt discussion of local transitivity and
release-acquire chains leaves out discussion of the outcome of
the read from "u".  This commit therefore adds an outcome showing
that you can get a "1" from this read even if the release-acquire
pairs don't line up.

Reported-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Documentation/memory-barriers.txt

index ae9d306725bad6f1e9ad48c271d0b5aad141ebc5..57e4a4b053c5b02e4dfe537e1879d9a86bceaf7b 100644 (file)
@@ -1372,6 +1372,10 @@ is possible:
 
        r0 == 0 && r1 == 1 && r2 == 1 && r3 == 0 && r4 == 0
 
+As an aside, the following outcome is also possible:
+
+       r0 == 0 && r1 == 1 && r2 == 1 && r3 == 0 && r4 == 0 && r5 == 1
+
 Although cpu0(), cpu1(), and cpu2() will see their respective reads and
 writes in order, CPUs not involved in the release-acquire chain might
 well disagree on the order.  This disagreement stems from the fact that