/openbmc/linux/Documentation/core-api/ |
H A D | refcount-vs-atomic.rst | 14 ``atomic_*()`` functions with regards to the memory ordering guarantees. 17 these memory ordering guarantees. 23 memory ordering in general and for atomic operations specifically. 25 Relevant types of memory ordering 29 ordering types that are relevant for the atomics and reference 33 In the absence of any memory ordering guarantees (i.e. fully unordered) 41 A strong (full) memory ordering guarantees that all prior loads and 49 A RELEASE memory ordering guarantees that all prior loads and 57 An ACQUIRE memory ordering guarantees that all post loads and 84 Memory ordering guarantee changes: [all …]
|
/openbmc/linux/tools/memory-model/Documentation/ |
H A D | ordering.txt | 1 This document gives an overview of the categories of memory-ordering 8 This section lists LKMM's three top-level categories of memory-ordering 20 3. Unordered accesses, as the name indicates, have no ordering 23 some of these "unordered" operations provide limited ordering 38 b. Read-modify-write (RMW) ordering augmentation barriers. 50 ordering primitives provided for that purpose. For example, instead of 58 The Linux-kernel primitives that provide full ordering include: 79 memory-ordering primitives. It is surprisingly hard to remember their 82 Second, some RMW atomic operations provide full ordering. These 87 as cmpxchg() are only guaranteed to provide ordering when they succeed. [all …]
|
H A D | control-dependencies.txt | 12 Therefore, a load-load control dependency will not preserve ordering 19 This is not guaranteed to provide any ordering because some types of CPUs 31 However, stores are not speculated. This means that ordering is 40 of ordering. But please note that neither the READ_ONCE() nor the 59 It is tempting to try use control dependencies to enforce ordering on 78 WRITE_ONCE(b, 1); /* BUG: No ordering vs. load from a!!! */ 91 have been applied. Therefore, if you need ordering in this example, 92 you must use explicit memory ordering, for example, smp_store_release(): 103 Without explicit memory ordering, control-dependency-based ordering is 121 preserve ordering. For example: [all …]
|
H A D | simple.txt | 2 memory-ordering lives simple, as is necessary for those whose domain 3 is complex. After all, there are bugs other than memory-ordering bugs, 4 and the time spent gaining memory-ordering knowledge is not available 139 memory ordering. 175 2. Operations that did not return a value and provided no ordering, 178 3. Operations that returned a value and provided full ordering, such as 180 value-returning operations provide full ordering only conditionally. 181 For example, cmpxchg() provides ordering only upon success. 184 provide full ordering. These are flagged with either a _relaxed() 185 suffix (providing no ordering), or an _acquire() or _release() suffix [all …]
|
/openbmc/linux/scripts/atomic/kerneldoc/ |
H A D | dec | 3 * ${class}${atomicname}() - atomic decrement with ${desc_order} ordering 6 * Atomically updates @v to (@v - 1) with ${desc_order} ordering.
|
H A D | inc | 3 * ${class}${atomicname}() - atomic increment with ${desc_order} ordering 6 * Atomically updates @v to (@v + 1) with ${desc_order} ordering.
|
H A D | or | 3 * ${class}${atomicname}() - atomic bitwise OR with ${desc_order} ordering 7 * Atomically updates @v to (@v | @i) with ${desc_order} ordering.
|
H A D | xor | 3 * ${class}${atomicname}() - atomic bitwise XOR with ${desc_order} ordering 7 * Atomically updates @v to (@v ^ @i) with ${desc_order} ordering.
|
H A D | and | 3 * ${class}${atomicname}() - atomic bitwise AND with ${desc_order} ordering 7 * Atomically updates @v to (@v & @i) with ${desc_order} ordering.
|
H A D | andnot | 3 * ${class}${atomicname}() - atomic bitwise AND NOT with ${desc_order} ordering 7 * Atomically updates @v to (@v & ~@i) with ${desc_order} ordering.
|
H A D | sub | 3 * ${class}${atomicname}() - atomic subtract with ${desc_order} ordering 7 * Atomically updates @v to (@v - @i) with ${desc_order} ordering.
|
H A D | set | 3 * ${class}${atomicname}() - atomic set with ${desc_order} ordering 7 * Atomically sets @v to @i with ${desc_order} ordering.
|
H A D | read | 3 * ${class}${atomicname}() - atomic load with ${desc_order} ordering 6 * Atomically loads the value of @v with ${desc_order} ordering.
|
H A D | add | 3 * ${class}${atomicname}() - atomic add with ${desc_order} ordering 7 * Atomically updates @v to (@v + @i) with ${desc_order} ordering.
|
H A D | xchg | 3 * ${class}${atomicname}() - atomic exchange with ${desc_order} ordering 7 * Atomically updates @v to @new with ${desc_order} ordering.
|
H A D | inc_unless_negative | 3 * ${class}${atomicname}() - atomic increment unless negative with ${desc_order} ordering 6 * If (@v >= 0), atomically updates @v to (@v + 1) with ${desc_order} ordering.
|
H A D | inc_not_zero | 3 * ${class}${atomicname}() - atomic increment unless zero with ${desc_order} ordering 6 * If (@v != 0), atomically updates @v to (@v + 1) with ${desc_order} ordering.
|
H A D | dec_unless_positive | 3 * ${class}${atomicname}() - atomic decrement unless positive with ${desc_order} ordering 6 * If (@v <= 0), atomically updates @v to (@v - 1) with ${desc_order} ordering.
|
H A D | inc_and_test | 3 * ${class}${atomicname}() - atomic increment and test if zero with ${desc_order} ordering 6 * Atomically updates @v to (@v + 1) with ${desc_order} ordering.
|
H A D | dec_if_positive | 3 * ${class}${atomicname}() - atomic decrement if positive with ${desc_order} ordering 6 * If (@v > 0), atomically updates @v to (@v - 1) with ${desc_order} ordering.
|
H A D | dec_and_test | 3 * ${class}${atomicname}() - atomic decrement and test if zero with ${desc_order} ordering 6 * Atomically updates @v to (@v - 1) with ${desc_order} ordering.
|
H A D | cmpxchg | 3 * ${class}${atomicname}() - atomic compare and exchange with ${desc_order} ordering 8 * If (@v == @old), atomically updates @v to @new with ${desc_order} ordering.
|
H A D | sub_and_test | 3 * ${class}${atomicname}() - atomic subtract and test if zero with ${desc_order} ordering 7 * Atomically updates @v to (@v - @i) with ${desc_order} ordering.
|
H A D | add_negative | 3 * ${class}${atomicname}() - atomic add and test if negative with ${desc_order} ordering 7 * Atomically updates @v to (@v + @i) with ${desc_order} ordering.
|
/openbmc/linux/Documentation/RCU/Design/Memory-Ordering/ |
H A D | Tree-RCU-Memory-Ordering.rst | 13 grace-period memory ordering guarantee is provided. 18 RCU grace periods provide extremely strong memory-ordering guarantees 49 The workhorse for RCU's grace-period memory ordering is the 72 Tree RCU uses these two ordering guarantees to form an ordering 77 The following litmus test exhibits the ordering effects of these 126 | Because we must provide ordering for RCU's polling grace-period | 145 RCU's grace-period memory ordering guarantee to extend to any 173 might not yet be subject to the grace period's memory ordering. 193 Tree RCU's grace--period memory-ordering guarantees rely most heavily on 197 shown below, which is one of several functions that enforce ordering of [all …]
|