11c27b644SPaul E. McKenney Prior Operation Subsequent Operation 21c27b644SPaul E. McKenney --------------- --------------------------- 3a8391951SPaolo Bonzini C Self R W RMW Self R W DR DW RMW SV 4bd5c0ba2SAlan Stern -- ---- - - --- ---- - - -- -- --- -- 51c27b644SPaul E. McKenney 6*0ce0c78eSPaul E. McKenneyRelaxed store Y Y 7*0ce0c78eSPaul E. McKenneyRelaxed load Y Y Y Y 8*0ce0c78eSPaul E. McKenneyRelaxed RMW operation Y Y Y Y 9bf28ae56SAlan Sternrcu_dereference() Y Y Y Y 101c27b644SPaul E. McKenneySuccessful *_acquire() R Y Y Y Y Y Y 111c27b644SPaul E. McKenneySuccessful *_release() C Y Y Y W Y 121c27b644SPaul E. McKenneysmp_rmb() Y R Y Y R 131c27b644SPaul E. McKenneysmp_wmb() Y W Y Y W 141c27b644SPaul E. McKenneysmp_mb() & synchronize_rcu() CP Y Y Y Y Y Y Y Y 151c27b644SPaul E. McKenneySuccessful full non-void RMW CP Y Y Y Y Y Y Y Y Y Y Y 161c27b644SPaul E. McKenneysmp_mb__before_atomic() CP Y Y Y a a a a Y 17bfd403bbSPaul E. McKenneysmp_mb__after_atomic() CP a a Y Y Y Y Y Y 181c27b644SPaul E. McKenney 191c27b644SPaul E. McKenney 20*0ce0c78eSPaul E. McKenneyKey: Relaxed: A relaxed operation is either READ_ONCE(), WRITE_ONCE(), 21*0ce0c78eSPaul E. McKenney a *_relaxed() RMW operation, an unsuccessful RMW 22*0ce0c78eSPaul E. McKenney operation, a non-value-returning RMW operation such 23*0ce0c78eSPaul E. McKenney as atomic_inc(), or one of the atomic*_read() and 24*0ce0c78eSPaul E. McKenney atomic*_set() family of operations. 25*0ce0c78eSPaul E. McKenney C: Ordering is cumulative 261c27b644SPaul E. McKenney P: Ordering propagates 271c27b644SPaul E. McKenney R: Read, for example, READ_ONCE(), or read portion of RMW 281c27b644SPaul E. McKenney W: Write, for example, WRITE_ONCE(), or write portion of RMW 291c27b644SPaul E. McKenney Y: Provides ordering 301c27b644SPaul E. McKenney a: Provides ordering given intervening RMW atomic operation 311c27b644SPaul E. McKenney DR: Dependent read (address dependency) 321c27b644SPaul E. McKenney DW: Dependent write (address, data, or control dependency) 331c27b644SPaul E. McKenney RMW: Atomic read-modify-write operation 3435bb6ee6SPaul E. McKenney SELF: Orders self, as opposed to accesses before and/or after 3535bb6ee6SPaul E. McKenney SV: Orders later accesses to the same variable 36