locking/csd_lock: Use smp_cond_acquire() in csd_lock_wait()
We can micro-optimize this call and mildly relax the barrier requirements by relying on ctrl + rmb, keeping the acquire semantics. In addition, this is pretty much the now standard for busy-waiting under such restraints. Signed-off-by: Davidlohr Bueso <dbueso@suse.de> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: dave@stgolabs.net Link: http://lkml.kernel.org/r/1457574936-19065-3-git-send-email-dbueso@suse.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
90d1098478
commit
38460a2178
|
@ -107,8 +107,7 @@ void __init call_function_init(void)
|
|||
*/
|
||||
static __always_inline void csd_lock_wait(struct call_single_data *csd)
|
||||
{
|
||||
while (smp_load_acquire(&csd->flags) & CSD_FLAG_LOCK)
|
||||
cpu_relax();
|
||||
smp_cond_acquire(!(csd->flags & CSD_FLAG_LOCK));
|
||||
}
|
||||
|
||||
static __always_inline void csd_lock(struct call_single_data *csd)
|
||||
|
|
Loading…
Reference in New Issue