Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf67fd31 authored by Will Deacon's avatar Will Deacon Committed by Russell King
Browse files

ARM: 8098/1: mcs lock: implement wfe-based polling for MCS locking



This patch introduces a wfe-based polling loop for spinning on contended
MCS locks and waking up corresponding waiters when the lock is released.

Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent e38361d0
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
#ifndef __ASM_MCS_LOCK_H
#define __ASM_MCS_LOCK_H

#ifdef CONFIG_SMP
#include <asm/spinlock.h>

/* MCS spin-locking. */
#define arch_mcs_spin_lock_contended(lock)				\
do {									\
	/* Ensure prior stores are observed before we enter wfe. */	\
	smp_mb();							\
	while (!(smp_load_acquire(lock)))				\
		wfe();							\
} while (0)								\

#define arch_mcs_spin_unlock_contended(lock)				\
do {									\
	smp_store_release(lock, 1);					\
	dsb_sev();							\
} while (0)

#endif	/* CONFIG_SMP */
#endif	/* __ASM_MCS_LOCK_H */