aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/locking
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2016-05-24 07:17:12 -0400
committerIngo Molnar <mingo@kernel.org>2016-06-14 05:55:14 -0400
commit33ac279677dcc2441cb93d8cb9cf7a74df62814d (patch)
treebcf918587b2425d1294b780b31ab67761e068e26 /kernel/locking
parent1f03e8d2919270bd6ef64f39a45ce8df8a9f012a (diff)
locking/barriers: Introduce smp_acquire__after_ctrl_dep()
Introduce smp_acquire__after_ctrl_dep(), this construct is not uncommon, but the lack of this barrier is. Use it to better express smp_rmb() uses in WRITE_ONCE(), the IPC semaphore code and the qspinlock code. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/locking')
-rw-r--r--kernel/locking/qspinlock.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/locking/qspinlock.c b/kernel/locking/qspinlock.c
index 1b8dda90ebfa..730655533440 100644
--- a/kernel/locking/qspinlock.c
+++ b/kernel/locking/qspinlock.c
@@ -379,7 +379,7 @@ void queued_spin_unlock_wait(struct qspinlock *lock)
379 cpu_relax(); 379 cpu_relax();
380 380
381done: 381done:
382 smp_rmb(); /* CTRL + RMB -> ACQUIRE */ 382 smp_acquire__after_ctrl_dep();
383} 383}
384EXPORT_SYMBOL(queued_spin_unlock_wait); 384EXPORT_SYMBOL(queued_spin_unlock_wait);
385#endif 385#endif