aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/memory-barriers.txt11
1 files changed, 6 insertions, 5 deletions
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
index 470c07c868e4..318523872db5 100644
--- a/Documentation/memory-barriers.txt
+++ b/Documentation/memory-barriers.txt
@@ -1858,11 +1858,12 @@ Similarly, the reverse case of a RELEASE followed by an ACQUIRE does not
1858imply a full memory barrier. If it is necessary for a RELEASE-ACQUIRE 1858imply a full memory barrier. If it is necessary for a RELEASE-ACQUIRE
1859pair to produce a full barrier, the ACQUIRE can be followed by an 1859pair to produce a full barrier, the ACQUIRE can be followed by an
1860smp_mb__after_unlock_lock() invocation. This will produce a full barrier 1860smp_mb__after_unlock_lock() invocation. This will produce a full barrier
1861if either (a) the RELEASE and the ACQUIRE are executed by the same 1861(including transitivity) if either (a) the RELEASE and the ACQUIRE are
1862CPU or task, or (b) the RELEASE and ACQUIRE act on the same variable. 1862executed by the same CPU or task, or (b) the RELEASE and ACQUIRE act on
1863The smp_mb__after_unlock_lock() primitive is free on many architectures. 1863the same variable. The smp_mb__after_unlock_lock() primitive is free
1864Without smp_mb__after_unlock_lock(), the CPU's execution of the critical 1864on many architectures. Without smp_mb__after_unlock_lock(), the CPU's
1865sections corresponding to the RELEASE and the ACQUIRE can cross, so that: 1865execution of the critical sections corresponding to the RELEASE and the
1866ACQUIRE can cross, so that:
1866 1867
1867 *A = a; 1868 *A = a;
1868 RELEASE M 1869 RELEASE M