| /linux/kernel/sched/ |
| H A D | membarrier.c | 30 * a: smp_mb() 32 * c: smp_mb() 69 * a: smp_mb() 71 * c: smp_mb() 89 * a: smp_mb() 93 * c: smp_mb() 109 * a: smp_mb() 111 * d: smp_mb() 114 * c: smp_mb() 123 * a: smp_mb() [all …]
|
| H A D | wait.c | 423 * smp_mb(); // A try_to_wake_up(): 428 * smp_mb(); // B condition = true; 429 * } smp_mb(); // C 435 * The below executes an smp_mb(), which matches with the full barrier in wait_woken() 446 * The below executes an smp_mb(), which matches with the smp_mb() (C) in wait_woken() 460 smp_mb(); /* C */ in woken_wake_function()
|
| /linux/arch/arc/include/asm/ |
| H A D | spinlock.h | 40 smp_mb(); in arch_spin_lock() 62 smp_mb(); in arch_spin_trylock() 69 smp_mb(); in arch_spin_unlock() 105 smp_mb(); in arch_read_lock() 129 smp_mb(); in arch_read_trylock() 163 smp_mb(); in arch_write_lock() 188 smp_mb(); in arch_write_trylock() 197 smp_mb(); in arch_read_unlock() 215 smp_mb(); in arch_write_unlock() 227 * Per lkmm, smp_mb() is only required after _lock (and before_unlock) in arch_spin_lock() [all …]
|
| H A D | atomic64-arcv2.h | 163 smp_mb(); in arch_atomic64_xchg() 172 : "cc"); /* memory clobber comes from smp_mb() */ in arch_atomic64_xchg() 174 smp_mb(); in arch_atomic64_xchg() 184 smp_mb(); in arch_atomic64_dec_if_positive() 196 : "cc"); /* memory clobber comes from smp_mb() */ in arch_atomic64_dec_if_positive() 198 smp_mb(); in arch_atomic64_dec_if_positive() 208 smp_mb(); in arch_atomic64_fetch_add_unless() 222 : "cc"); /* memory clobber comes from smp_mb() */ in arch_atomic64_fetch_add_unless() 224 smp_mb(); in arch_atomic64_fetch_add_unless()
|
| H A D | futex.h | 20 smp_mb(); \ 42 smp_mb() \ 48 smp_mb(); \ 69 smp_mb() \ 133 smp_mb(); in futex_atomic_cmpxchg_inatomic() 160 smp_mb(); in futex_atomic_cmpxchg_inatomic()
|
| /linux/arch/alpha/include/asm/ |
| H A D | atomic.h | 19 * _release atomics, an smp_mb() is unconditionally inserted into the 72 smp_mb(); \ 90 smp_mb(); \ 126 smp_mb(); \ 145 smp_mb(); \ 206 smp_mb(); in ATOMIC_OPS() 221 smp_mb(); in ATOMIC_OPS() 229 smp_mb(); in arch_atomic64_fetch_add_unless() 244 smp_mb(); in arch_atomic64_fetch_add_unless() 252 smp_mb(); in arch_atomic64_dec_if_positive() [all …]
|
| /linux/arch/arm/include/asm/ |
| H A D | spinlock.h | 78 smp_mb(); in arch_spin_lock() 100 smp_mb(); in arch_spin_trylock() 109 smp_mb(); in arch_spin_unlock() 155 smp_mb(); in arch_write_lock() 175 smp_mb(); in arch_write_trylock() 184 smp_mb(); in arch_write_unlock() 224 smp_mb(); in arch_read_lock() 231 smp_mb(); in arch_read_unlock() 266 smp_mb(); in arch_read_trylock()
|
| H A D | atomic.h | 133 smp_mb(); in arch_atomic_fetch_add_unless() 150 smp_mb(); in arch_atomic_fetch_add_unless() 459 smp_mb(); in arch_atomic64_dec_if_positive() 476 smp_mb(); in arch_atomic64_dec_if_positive() 487 smp_mb(); in arch_atomic64_fetch_add_unless() 506 smp_mb(); in arch_atomic64_fetch_add_unless()
|
| /linux/tools/memory-model/litmus-tests/ |
| H A D | IRIW+fencembonceonces+OnceOnce.litmus | 6 * Test of independent reads from independent writes with smp_mb() 7 * between each pairs of reads. In other words, is smp_mb() sufficient to 26 smp_mb(); 41 smp_mb();
|
| H A D | README | 24 Test of independent reads from independent writes with smp_mb() 25 between each pairs of reads. In other words, is smp_mb() 41 separated by smp_mb(). This addition of an external process to 53 Does a control dependency and an smp_mb() suffice for the 109 This is the fully ordered (via smp_mb()) version of one of 114 As above, but without the smp_mb() invocations. 117 This is the fully ordered (again, via smp_mb() version of store 122 As above, but without the smp_mb() invocations.
|
| H A D | R+fencembonceonces.litmus | 6 * This is the fully ordered (via smp_mb()) version of one of the classic 17 smp_mb(); 26 smp_mb();
|
| H A D | SB+fencembonceonces.litmus | 19 smp_mb(); 28 smp_mb();
|
| /linux/tools/memory-model/Documentation/ |
| H A D | recipes.txt | 153 smp_mb(); 187 smp_mb(); 341 * smp_wmb() (B) smp_mb() (D) 348 Of course, given that smp_mb() is strictly stronger than either smp_wmb() 350 smp_wmb() would also work with smp_mb() replacing either or both of the 378 smp_mb(); 396 * smp_wmb() (B) smp_mb() (D) 461 smp_mb(); 487 smp_mb(); 494 smp_mb(); [all …]
|
| H A D | glossary.txt | 77 smp_mb(); smp_mb(); smp_mb(); 80 CPU 0's smp_mb() interacts with that of CPU 1, which interacts 82 to complete the cycle. Because of the smp_mb() calls between 117 Fully Ordered: An operation such as smp_mb() that orders all of
|
| H A D | ordering.txt | 51 smp_mb(), use mb(). See the "Linux Kernel Device Drivers" book or the 60 o The smp_mb() full memory barrier. 67 First, the smp_mb() full memory barrier orders all of the CPU's prior 74 smp_mb(); // Order store to x before load from y. 116 of magnitude greater overhead than smp_mb(), atomic_xchg(), and so on. 133 all architectures is to add a call to smp_mb(): 137 smp_mb(); // Inefficient on x86!!! 140 This works, but the added smp_mb() adds needless overhead for 279 ordering, and an smp_mb() would be needed instead: 282 smp_mb(); [all …]
|
| /linux/tools/include/asm/ |
| H A D | barrier.h | 46 #ifndef smp_mb 47 # define smp_mb() mb() macro 53 smp_mb(); \ 62 smp_mb(); \
|
| /linux/tools/include/linux/ |
| H A D | ring_buffer.h | 20 * smp_wmb() (B) smp_mb() (D) 42 * resolve into READ_ONCE() + smp_mb() pair for smp_load_acquire(), 43 * and smp_mb() + WRITE_ONCE() pair for smp_store_release(). 55 * READ_ONCE() + smp_mb() pair. in ring_buffer_read_head()
|
| /linux/tools/testing/selftests/bpf/ |
| H A D | bpf_atomic.h | 62 #define smp_mb() \ macro 71 smp_mb(); \ 79 smp_mb(); \ 91 smp_mb(); \ 99 smp_mb(); \
|
| /linux/include/asm-generic/ |
| H A D | barrier.h | 98 #ifndef smp_mb 99 #define smp_mb() do { kcsan_mb(); __smp_mb(); } while (0) macro 112 #ifndef smp_mb 113 #define smp_mb() barrier() macro 298 * Architectures that guarantee an implicit smp_mb() in switch_mm() 302 # define smp_mb__after_switch_mm() smp_mb()
|
| /linux/include/linux/ |
| H A D | swait.h | 100 * with an extra smp_mb() like: 106 * smp_mb(); // smp_mb() from set_current_state() 113 * Because without the explicit smp_mb() it's possible for the 118 * Also note that this 'optimization' trades a spin_lock() for an smp_mb(), 143 smp_mb(); in swq_has_sleeper()
|
| /linux/rust/kernel/sync/ |
| H A D | barrier.rs | 26 pub fn smp_mb() { in smp_mb() function 28 // SAFETY: `smp_mb()` is safe to call. in smp_mb() 29 unsafe { bindings::smp_mb() }; in smp_mb()
|
| /linux/tools/virtio/ringtest/ |
| H A D | main.h | 117 #define smp_mb() asm volatile("lock; addl $0,-132(%%rsp)" ::: "memory", "cc") macro 119 #define smp_mb() asm volatile("dmb ish" ::: "memory") macro 125 #define smp_mb() __sync_synchronize() macro 188 smp_mb(); /* Enforce dependency ordering from x */ \
|
| H A D | ring.c | 183 smp_mb(); in enable_call() 193 smp_mb(); in kick_available() 215 smp_mb(); in enable_kick() 260 smp_mb(); in call_used()
|
| /linux/drivers/comedi/drivers/ |
| H A D | dyna_pci10xx.c | 80 smp_mb(); in dyna_pci10xx_insn_read_ai() 111 smp_mb(); in dyna_pci10xx_insn_write_ao() 130 smp_mb(); in dyna_pci10xx_di_insn_bits() 150 smp_mb(); in dyna_pci10xx_do_insn_bits()
|
| /linux/arch/sh/kernel/ |
| H A D | ftrace.c | 137 smp_mb(); in arch_ftrace_nmi_enter() 143 smp_mb(); in arch_ftrace_nmi_exit() 174 smp_mb(); in do_ftrace_mod_code() 179 smp_mb(); in do_ftrace_mod_code() 184 smp_mb(); in do_ftrace_mod_code()
|