[IA64] implement ticket locks for Itanium
authorTony Luck <tony.luck@intel.com>
Fri, 25 Sep 2009 15:42:16 +0000 (08:42 -0700)
committerTony Luck <tony.luck@intel.com>
Fri, 25 Sep 2009 15:42:16 +0000 (08:42 -0700)
commit2c86963b093c1a0887dfc6b32c6e5ea3a80f2922
treed1ed58dd0a644dd670e3724a575112fedd4b4250
parent53cddfcc0e760d2b364878b6dadbd0c6d087cfae
[IA64] implement ticket locks for Itanium

Back in January 2008 Nick Piggin implemented "ticket" spinlocks
for X86 (See commit 314cdbefd1fd0a7acf3780e9628465b77ea6a836).

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>
arch/ia64/Kconfig
arch/ia64/include/asm/spinlock.h
arch/ia64/include/asm/spinlock_types.h
arch/ia64/kernel/head.S
arch/ia64/kernel/ia64_ksyms.c
arch/ia64/oprofile/backtrace.c