diff options
-rw-r--r-- | Documentation/memory-barriers.txt | 11 |
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 | |||
1858 | imply a full memory barrier. If it is necessary for a RELEASE-ACQUIRE | 1858 | imply a full memory barrier. If it is necessary for a RELEASE-ACQUIRE |
1859 | pair to produce a full barrier, the ACQUIRE can be followed by an | 1859 | pair to produce a full barrier, the ACQUIRE can be followed by an |
1860 | smp_mb__after_unlock_lock() invocation. This will produce a full barrier | 1860 | smp_mb__after_unlock_lock() invocation. This will produce a full barrier |
1861 | if either (a) the RELEASE and the ACQUIRE are executed by the same | 1861 | (including transitivity) if either (a) the RELEASE and the ACQUIRE are |
1862 | CPU or task, or (b) the RELEASE and ACQUIRE act on the same variable. | 1862 | executed by the same CPU or task, or (b) the RELEASE and ACQUIRE act on |
1863 | The smp_mb__after_unlock_lock() primitive is free on many architectures. | 1863 | the same variable. The smp_mb__after_unlock_lock() primitive is free |
1864 | Without smp_mb__after_unlock_lock(), the CPU's execution of the critical | 1864 | on many architectures. Without smp_mb__after_unlock_lock(), the CPU's |
1865 | sections corresponding to the RELEASE and the ACQUIRE can cross, so that: | 1865 | execution of the critical sections corresponding to the RELEASE and the |
1866 | ACQUIRE can cross, so that: | ||
1866 | 1867 | ||
1867 | *A = a; | 1868 | *A = a; |
1868 | RELEASE M | 1869 | RELEASE M |