[IA64] implement ticket locks for Itanium
Back in January 2008 Nick Piggin implemented "ticket" spinlocks
for X86 (See commit 314cdbefd1
).
IA64 implementation has a couple of differences because of the
available atomic operations ... e.g. we have no fetchadd2 instruction
that operates on a 16-bit quantity so we make ticket locks use
a 32-bit word for each of the current ticket and now-serving values.
Performance on uncontended locks is about 8% worse than the previous
implementation, but this seems a good trade for determinism in the
contended case. Performance impact on macro-level benchmarks is in
the noise.
Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
@ -84,26 +84,6 @@ EXPORT_SYMBOL(ia64_save_scratch_fpregs);
|
||||
#include <asm/unwind.h>
|
||||
EXPORT_SYMBOL(unw_init_running);
|
||||
|
||||
#ifdef ASM_SUPPORTED
|
||||
# ifdef CONFIG_SMP
|
||||
# if (__GNUC__ == 3 && __GNUC_MINOR__ < 3)
|
||||
/*
|
||||
* This is not a normal routine and we don't want a function descriptor for it, so we use
|
||||
* a fake declaration here.
|
||||
*/
|
||||
extern char ia64_spinlock_contention_pre3_4;
|
||||
EXPORT_SYMBOL(ia64_spinlock_contention_pre3_4);
|
||||
# else
|
||||
/*
|
||||
* This is not a normal routine and we don't want a function descriptor for it, so we use
|
||||
* a fake declaration here.
|
||||
*/
|
||||
extern char ia64_spinlock_contention;
|
||||
EXPORT_SYMBOL(ia64_spinlock_contention);
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_IA64_ESI) || defined(CONFIG_IA64_ESI_MODULE)
|
||||
extern void esi_call_phys (void);
|
||||
EXPORT_SYMBOL_GPL(esi_call_phys);
|
||||
|
Reference in New Issue
Block a user