![Alan Stern](/assets/img/avatar_default.png)
Since commit76ebbe78f7
("locking/barriers: Add implicit smp_read_barrier_depends() to READ_ONCE()") was merged for the 4.15 kernel, it has not been necessary to use smp_read_barrier_depends(). Similarly, commit59ecbbe7b3
("locking/barriers: Kill lockless_dereference()") removed lockless_dereference() from the kernel. Since these primitives are no longer part of the kernel, they do not belong in the Linux Kernel Memory Consistency Model. This patch removes them, along with the internal rb-dep relation, and updates the revelant documentation. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Peter Zijlstra <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: akiyks@gmail.com Cc: boqun.feng@gmail.com Cc: dhowells@redhat.com Cc: j.alglave@ucl.ac.uk Cc: linux-arch@vger.kernel.org Cc: luc.maranget@inria.fr Cc: nborisov@suse.com Cc: npiggin@gmail.com Cc: parri.andrea@gmail.com Cc: will.deacon@arm.com Link: http://lkml.kernel.org/r/1519169112-20593-12-git-send-email-paulmck@linux.vnet.ibm.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
30 lines
1.6 KiB
Plaintext
30 lines
1.6 KiB
Plaintext
Prior Operation Subsequent Operation
|
|
--------------- ---------------------------
|
|
C Self R W RWM Self R W DR DW RMW SV
|
|
__ ---- - - --- ---- - - -- -- --- --
|
|
|
|
Store, e.g., WRITE_ONCE() Y Y
|
|
Load, e.g., READ_ONCE() Y Y Y
|
|
Unsuccessful RMW operation Y Y Y
|
|
rcu_dereference() Y Y Y Y
|
|
Successful *_acquire() R Y Y Y Y Y Y
|
|
Successful *_release() C Y Y Y W Y
|
|
smp_rmb() Y R Y Y R
|
|
smp_wmb() Y W Y Y W
|
|
smp_mb() & synchronize_rcu() CP Y Y Y Y Y Y Y Y
|
|
Successful full non-void RMW CP Y Y Y Y Y Y Y Y Y Y Y
|
|
smp_mb__before_atomic() CP Y Y Y a a a a Y
|
|
smp_mb__after_atomic() CP a a Y Y Y Y Y
|
|
|
|
|
|
Key: C: Ordering is cumulative
|
|
P: Ordering propagates
|
|
R: Read, for example, READ_ONCE(), or read portion of RMW
|
|
W: Write, for example, WRITE_ONCE(), or write portion of RMW
|
|
Y: Provides ordering
|
|
a: Provides ordering given intervening RMW atomic operation
|
|
DR: Dependent read (address dependency)
|
|
DW: Dependent write (address, data, or control dependency)
|
|
RMW: Atomic read-modify-write operation
|
|
SV Same-variable access
|