mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 18:20:25 +02:00 
			
		
		
		
	Documentation/atomic_t: Emphasize that failed atomic operations give no ordering
The ORDERING section of Documentation/atomic_t.txt can easily be read as saying that conditional atomic RMW operations that fail are ordered when those operations have the _acquire() or _release() suffixes. This is not the case, therefore update this section to make it clear that failed conditional atomic RMW operations provide no ordering. Reported-by: Anna-Maria Behnsen <anna-maria@linutronix.de> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Cc: Alan Stern <stern@rowland.harvard.edu> Cc: Will Deacon <will@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Boqun Feng <boqun.feng@gmail.com> Cc: Nicholas Piggin <npiggin@gmail.com> Cc: David Howells <dhowells@redhat.com> Cc: Jade Alglave <j.alglave@ucl.ac.uk> Cc: Luc Maranget <luc.maranget@inria.fr> Cc: "Paul E. McKenney" <paulmck@kernel.org> Cc: Akira Yokosawa <akiyks@gmail.com> Cc: Daniel Lustig <dlustig@nvidia.com> Cc: Joel Fernandes <joel@joelfernandes.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: <linux-arch@vger.kernel.org> Cc: <linux-doc@vger.kernel.org> Acked-by: Andrea Parri <parri.andrea@gmail.com> Acked-by: Mark Rutland <mark.rutland@arm.com>
This commit is contained in:
		
							parent
							
								
									293f5bc271
								
							
						
					
					
						commit
						d372e20433
					
				
					 1 changed files with 2 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -171,14 +171,14 @@ The rule of thumb:
 | 
			
		|||
 - RMW operations that are conditional are unordered on FAILURE,
 | 
			
		||||
   otherwise the above rules apply.
 | 
			
		||||
 | 
			
		||||
Except of course when an operation has an explicit ordering like:
 | 
			
		||||
Except of course when a successful operation has an explicit ordering like:
 | 
			
		||||
 | 
			
		||||
 {}_relaxed: unordered
 | 
			
		||||
 {}_acquire: the R of the RMW (or atomic_read) is an ACQUIRE
 | 
			
		||||
 {}_release: the W of the RMW (or atomic_set)  is a  RELEASE
 | 
			
		||||
 | 
			
		||||
Where 'unordered' is against other memory locations. Address dependencies are
 | 
			
		||||
not defeated.
 | 
			
		||||
not defeated.  Conditional operations are still unordered on FAILURE.
 | 
			
		||||
 | 
			
		||||
Fully ordered primitives are ordered against everything prior and everything
 | 
			
		||||
subsequent. Therefore a fully ordered primitive is like having an smp_mb()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue