diff options
| author | Peter Zijlstra <peterz@infradead.org> | 2014-03-17 13:06:10 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2014-04-18 08:20:48 -0400 |
| commit | 4e857c58efeb99393cba5a5d0d8ec7117183137c (patch) | |
| tree | 3f6fd464e4fddb2fe90374c075c9d06603cf8bbc /kernel | |
| parent | 1b15611e1c30b37abe393d411c316cd659920bf5 (diff) | |
arch: Mass conversion of smp_mb__*()
Mostly scripted conversion of the smp_mb__* barriers.
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/n/tip-55dhyhocezdw1dg7u19hmh1u@git.kernel.org
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-arch@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/debug/debug_core.c | 4 | ||||
| -rw-r--r-- | kernel/futex.c | 4 | ||||
| -rw-r--r-- | kernel/kmod.c | 2 | ||||
| -rw-r--r-- | kernel/rcu/tree.c | 22 | ||||
| -rw-r--r-- | kernel/rcu/tree_plugin.h | 8 | ||||
| -rw-r--r-- | kernel/sched/cpupri.c | 6 | ||||
| -rw-r--r-- | kernel/sched/wait.c | 2 |
7 files changed, 24 insertions, 24 deletions
diff --git a/kernel/debug/debug_core.c b/kernel/debug/debug_core.c index 2956c8da1605..1adf62b39b96 100644 --- a/kernel/debug/debug_core.c +++ b/kernel/debug/debug_core.c | |||
| @@ -534,7 +534,7 @@ return_normal: | |||
| 534 | kgdb_info[cpu].exception_state &= | 534 | kgdb_info[cpu].exception_state &= |
| 535 | ~(DCPU_WANT_MASTER | DCPU_IS_SLAVE); | 535 | ~(DCPU_WANT_MASTER | DCPU_IS_SLAVE); |
| 536 | kgdb_info[cpu].enter_kgdb--; | 536 | kgdb_info[cpu].enter_kgdb--; |
| 537 | smp_mb__before_atomic_dec(); | 537 | smp_mb__before_atomic(); |
| 538 | atomic_dec(&slaves_in_kgdb); | 538 | atomic_dec(&slaves_in_kgdb); |
| 539 | dbg_touch_watchdogs(); | 539 | dbg_touch_watchdogs(); |
| 540 | local_irq_restore(flags); | 540 | local_irq_restore(flags); |
| @@ -662,7 +662,7 @@ kgdb_restore: | |||
| 662 | kgdb_info[cpu].exception_state &= | 662 | kgdb_info[cpu].exception_state &= |
| 663 | ~(DCPU_WANT_MASTER | DCPU_IS_SLAVE); | 663 | ~(DCPU_WANT_MASTER | DCPU_IS_SLAVE); |
| 664 | kgdb_info[cpu].enter_kgdb--; | 664 | kgdb_info[cpu].enter_kgdb--; |
| 665 | smp_mb__before_atomic_dec(); | 665 | smp_mb__before_atomic(); |
| 666 | atomic_dec(&masters_in_kgdb); | 666 | atomic_dec(&masters_in_kgdb); |
| 667 | /* Free kgdb_active */ | 667 | /* Free kgdb_active */ |
| 668 | atomic_set(&kgdb_active, -1); | 668 | atomic_set(&kgdb_active, -1); |
diff --git a/kernel/futex.c b/kernel/futex.c index 5f589279e462..b991ec05b8f9 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
| @@ -267,7 +267,7 @@ static inline void futex_get_mm(union futex_key *key) | |||
| 267 | * get_futex_key() implies a full barrier. This is relied upon | 267 | * get_futex_key() implies a full barrier. This is relied upon |
| 268 | * as full barrier (B), see the ordering comment above. | 268 | * as full barrier (B), see the ordering comment above. |
| 269 | */ | 269 | */ |
| 270 | smp_mb__after_atomic_inc(); | 270 | smp_mb__after_atomic(); |
| 271 | } | 271 | } |
| 272 | 272 | ||
| 273 | /* | 273 | /* |
| @@ -280,7 +280,7 @@ static inline void hb_waiters_inc(struct futex_hash_bucket *hb) | |||
| 280 | /* | 280 | /* |
| 281 | * Full barrier (A), see the ordering comment above. | 281 | * Full barrier (A), see the ordering comment above. |
| 282 | */ | 282 | */ |
| 283 | smp_mb__after_atomic_inc(); | 283 | smp_mb__after_atomic(); |
| 284 | #endif | 284 | #endif |
| 285 | } | 285 | } |
| 286 | 286 | ||
diff --git a/kernel/kmod.c b/kernel/kmod.c index 6b375af4958d..0ac67a5861c5 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c | |||
| @@ -498,7 +498,7 @@ int __usermodehelper_disable(enum umh_disable_depth depth) | |||
| 498 | static void helper_lock(void) | 498 | static void helper_lock(void) |
| 499 | { | 499 | { |
| 500 | atomic_inc(&running_helpers); | 500 | atomic_inc(&running_helpers); |
| 501 | smp_mb__after_atomic_inc(); | 501 | smp_mb__after_atomic(); |
| 502 | } | 502 | } |
| 503 | 503 | ||
| 504 | static void helper_unlock(void) | 504 | static void helper_unlock(void) |
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 0c47e300210a..88b4a1dcb58c 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -387,9 +387,9 @@ static void rcu_eqs_enter_common(struct rcu_dynticks *rdtp, long long oldval, | |||
| 387 | } | 387 | } |
| 388 | rcu_prepare_for_idle(smp_processor_id()); | 388 | rcu_prepare_for_idle(smp_processor_id()); |
| 389 | /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ | 389 | /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ |
| 390 | smp_mb__before_atomic_inc(); /* See above. */ | 390 | smp_mb__before_atomic(); /* See above. */ |
| 391 | atomic_inc(&rdtp->dynticks); | 391 | atomic_inc(&rdtp->dynticks); |
| 392 | smp_mb__after_atomic_inc(); /* Force ordering with next sojourn. */ | 392 | smp_mb__after_atomic(); /* Force ordering with next sojourn. */ |
| 393 | WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1); | 393 | WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1); |
| 394 | 394 | ||
| 395 | /* | 395 | /* |
| @@ -507,10 +507,10 @@ void rcu_irq_exit(void) | |||
| 507 | static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval, | 507 | static void rcu_eqs_exit_common(struct rcu_dynticks *rdtp, long long oldval, |
| 508 | int user) | 508 | int user) |
| 509 | { | 509 | { |
| 510 | smp_mb__before_atomic_inc(); /* Force ordering w/previous sojourn. */ | 510 | smp_mb__before_atomic(); /* Force ordering w/previous sojourn. */ |
| 511 | atomic_inc(&rdtp->dynticks); | 511 | atomic_inc(&rdtp->dynticks); |
| 512 | /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */ | 512 | /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */ |
| 513 | smp_mb__after_atomic_inc(); /* See above. */ | 513 | smp_mb__after_atomic(); /* See above. */ |
| 514 | WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1)); | 514 | WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1)); |
| 515 | rcu_cleanup_after_idle(smp_processor_id()); | 515 | rcu_cleanup_after_idle(smp_processor_id()); |
| 516 | trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting); | 516 | trace_rcu_dyntick(TPS("End"), oldval, rdtp->dynticks_nesting); |
| @@ -635,10 +635,10 @@ void rcu_nmi_enter(void) | |||
| 635 | (atomic_read(&rdtp->dynticks) & 0x1)) | 635 | (atomic_read(&rdtp->dynticks) & 0x1)) |
| 636 | return; | 636 | return; |
| 637 | rdtp->dynticks_nmi_nesting++; | 637 | rdtp->dynticks_nmi_nesting++; |
| 638 | smp_mb__before_atomic_inc(); /* Force delay from prior write. */ | 638 | smp_mb__before_atomic(); /* Force delay from prior write. */ |
| 639 | atomic_inc(&rdtp->dynticks); | 639 | atomic_inc(&rdtp->dynticks); |
| 640 | /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */ | 640 | /* CPUs seeing atomic_inc() must see later RCU read-side crit sects */ |
| 641 | smp_mb__after_atomic_inc(); /* See above. */ | 641 | smp_mb__after_atomic(); /* See above. */ |
| 642 | WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1)); | 642 | WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks) & 0x1)); |
| 643 | } | 643 | } |
| 644 | 644 | ||
| @@ -657,9 +657,9 @@ void rcu_nmi_exit(void) | |||
| 657 | --rdtp->dynticks_nmi_nesting != 0) | 657 | --rdtp->dynticks_nmi_nesting != 0) |
| 658 | return; | 658 | return; |
| 659 | /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ | 659 | /* CPUs seeing atomic_inc() must see prior RCU read-side crit sects */ |
| 660 | smp_mb__before_atomic_inc(); /* See above. */ | 660 | smp_mb__before_atomic(); /* See above. */ |
| 661 | atomic_inc(&rdtp->dynticks); | 661 | atomic_inc(&rdtp->dynticks); |
| 662 | smp_mb__after_atomic_inc(); /* Force delay to next write. */ | 662 | smp_mb__after_atomic(); /* Force delay to next write. */ |
| 663 | WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1); | 663 | WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1); |
| 664 | } | 664 | } |
| 665 | 665 | ||
| @@ -2790,7 +2790,7 @@ void synchronize_sched_expedited(void) | |||
| 2790 | s = atomic_long_read(&rsp->expedited_done); | 2790 | s = atomic_long_read(&rsp->expedited_done); |
| 2791 | if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { | 2791 | if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { |
| 2792 | /* ensure test happens before caller kfree */ | 2792 | /* ensure test happens before caller kfree */ |
| 2793 | smp_mb__before_atomic_inc(); /* ^^^ */ | 2793 | smp_mb__before_atomic(); /* ^^^ */ |
| 2794 | atomic_long_inc(&rsp->expedited_workdone1); | 2794 | atomic_long_inc(&rsp->expedited_workdone1); |
| 2795 | return; | 2795 | return; |
| 2796 | } | 2796 | } |
| @@ -2808,7 +2808,7 @@ void synchronize_sched_expedited(void) | |||
| 2808 | s = atomic_long_read(&rsp->expedited_done); | 2808 | s = atomic_long_read(&rsp->expedited_done); |
| 2809 | if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { | 2809 | if (ULONG_CMP_GE((ulong)s, (ulong)firstsnap)) { |
| 2810 | /* ensure test happens before caller kfree */ | 2810 | /* ensure test happens before caller kfree */ |
| 2811 | smp_mb__before_atomic_inc(); /* ^^^ */ | 2811 | smp_mb__before_atomic(); /* ^^^ */ |
| 2812 | atomic_long_inc(&rsp->expedited_workdone2); | 2812 | atomic_long_inc(&rsp->expedited_workdone2); |
| 2813 | return; | 2813 | return; |
| 2814 | } | 2814 | } |
| @@ -2837,7 +2837,7 @@ void synchronize_sched_expedited(void) | |||
| 2837 | s = atomic_long_read(&rsp->expedited_done); | 2837 | s = atomic_long_read(&rsp->expedited_done); |
| 2838 | if (ULONG_CMP_GE((ulong)s, (ulong)snap)) { | 2838 | if (ULONG_CMP_GE((ulong)s, (ulong)snap)) { |
| 2839 | /* ensure test happens before caller kfree */ | 2839 | /* ensure test happens before caller kfree */ |
| 2840 | smp_mb__before_atomic_inc(); /* ^^^ */ | 2840 | smp_mb__before_atomic(); /* ^^^ */ |
| 2841 | atomic_long_inc(&rsp->expedited_done_lost); | 2841 | atomic_long_inc(&rsp->expedited_done_lost); |
| 2842 | break; | 2842 | break; |
| 2843 | } | 2843 | } |
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 962d1d589929..56db2f853e43 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h | |||
| @@ -2523,9 +2523,9 @@ static void rcu_sysidle_enter(struct rcu_dynticks *rdtp, int irq) | |||
| 2523 | /* Record start of fully idle period. */ | 2523 | /* Record start of fully idle period. */ |
| 2524 | j = jiffies; | 2524 | j = jiffies; |
| 2525 | ACCESS_ONCE(rdtp->dynticks_idle_jiffies) = j; | 2525 | ACCESS_ONCE(rdtp->dynticks_idle_jiffies) = j; |
| 2526 | smp_mb__before_atomic_inc(); | 2526 | smp_mb__before_atomic(); |
| 2527 | atomic_inc(&rdtp->dynticks_idle); | 2527 | atomic_inc(&rdtp->dynticks_idle); |
| 2528 | smp_mb__after_atomic_inc(); | 2528 | smp_mb__after_atomic(); |
| 2529 | WARN_ON_ONCE(atomic_read(&rdtp->dynticks_idle) & 0x1); | 2529 | WARN_ON_ONCE(atomic_read(&rdtp->dynticks_idle) & 0x1); |
| 2530 | } | 2530 | } |
| 2531 | 2531 | ||
| @@ -2590,9 +2590,9 @@ static void rcu_sysidle_exit(struct rcu_dynticks *rdtp, int irq) | |||
| 2590 | } | 2590 | } |
| 2591 | 2591 | ||
| 2592 | /* Record end of idle period. */ | 2592 | /* Record end of idle period. */ |
| 2593 | smp_mb__before_atomic_inc(); | 2593 | smp_mb__before_atomic(); |
| 2594 | atomic_inc(&rdtp->dynticks_idle); | 2594 | atomic_inc(&rdtp->dynticks_idle); |
| 2595 | smp_mb__after_atomic_inc(); | 2595 | smp_mb__after_atomic(); |
| 2596 | WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks_idle) & 0x1)); | 2596 | WARN_ON_ONCE(!(atomic_read(&rdtp->dynticks_idle) & 0x1)); |
| 2597 | 2597 | ||
| 2598 | /* | 2598 | /* |
diff --git a/kernel/sched/cpupri.c b/kernel/sched/cpupri.c index 8b836b376d91..746bc9344969 100644 --- a/kernel/sched/cpupri.c +++ b/kernel/sched/cpupri.c | |||
| @@ -165,7 +165,7 @@ void cpupri_set(struct cpupri *cp, int cpu, int newpri) | |||
| 165 | * do a write memory barrier, and then update the count, to | 165 | * do a write memory barrier, and then update the count, to |
| 166 | * make sure the vector is visible when count is set. | 166 | * make sure the vector is visible when count is set. |
| 167 | */ | 167 | */ |
| 168 | smp_mb__before_atomic_inc(); | 168 | smp_mb__before_atomic(); |
| 169 | atomic_inc(&(vec)->count); | 169 | atomic_inc(&(vec)->count); |
| 170 | do_mb = 1; | 170 | do_mb = 1; |
| 171 | } | 171 | } |
| @@ -185,14 +185,14 @@ void cpupri_set(struct cpupri *cp, int cpu, int newpri) | |||
| 185 | * the new priority vec. | 185 | * the new priority vec. |
| 186 | */ | 186 | */ |
| 187 | if (do_mb) | 187 | if (do_mb) |
| 188 | smp_mb__after_atomic_inc(); | 188 | smp_mb__after_atomic(); |
| 189 | 189 | ||
| 190 | /* | 190 | /* |
| 191 | * When removing from the vector, we decrement the counter first | 191 | * When removing from the vector, we decrement the counter first |
| 192 | * do a memory barrier and then clear the mask. | 192 | * do a memory barrier and then clear the mask. |
| 193 | */ | 193 | */ |
| 194 | atomic_dec(&(vec)->count); | 194 | atomic_dec(&(vec)->count); |
| 195 | smp_mb__after_atomic_inc(); | 195 | smp_mb__after_atomic(); |
| 196 | cpumask_clear_cpu(cpu, vec->mask); | 196 | cpumask_clear_cpu(cpu, vec->mask); |
| 197 | } | 197 | } |
| 198 | 198 | ||
diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c index 7d50f794e248..0ffa20ae657b 100644 --- a/kernel/sched/wait.c +++ b/kernel/sched/wait.c | |||
| @@ -394,7 +394,7 @@ EXPORT_SYMBOL(__wake_up_bit); | |||
| 394 | * | 394 | * |
| 395 | * In order for this to function properly, as it uses waitqueue_active() | 395 | * In order for this to function properly, as it uses waitqueue_active() |
| 396 | * internally, some kind of memory barrier must be done prior to calling | 396 | * internally, some kind of memory barrier must be done prior to calling |
| 397 | * this. Typically, this will be smp_mb__after_clear_bit(), but in some | 397 | * this. Typically, this will be smp_mb__after_atomic(), but in some |
| 398 | * cases where bitflags are manipulated non-atomically under a lock, one | 398 | * cases where bitflags are manipulated non-atomically under a lock, one |
| 399 | * may need to use a less regular barrier, such fs/inode.c's smp_mb(), | 399 | * may need to use a less regular barrier, such fs/inode.c's smp_mb(), |
| 400 | * because spin_unlock() does not guarantee a memory barrier. | 400 | * because spin_unlock() does not guarantee a memory barrier. |
