[PATCH 00/17] powerpc: alternate queued spinlock implementation
Nicholas Piggin
npiggin at gmail.com
Thu Jul 28 16:31:02 AEST 2022
This replaces the generic queued spinlock code (like s390 does) with
our own implementation. There is an extra shim patch 1a here to get the
series to apply.
So far the microbenchmarks look okay, haven't really had time to write
up a good set of results. I hope to get some significant bigger
workloads some testing time in the next week or so so if those turn
out positive I may resubmit with any tweaks and some more details of
numbers.
Thanks,
Nick
Nicholas Piggin (17):
powerpc/qspinlock: powerpc qspinlock implementation
powerpc/qspinlock: add mcs queueing for contended waiters
powerpc/qspinlock: use a half-word store to unlock to avoid larx/stcx.
powerpc/qspinlock: convert atomic operations to assembly
powerpc/qspinlock: allow new waiters to steal the lock before queueing
powerpc/qspinlock: theft prevention to control latency
powerpc/qspinlock: store owner CPU in lock word
powerpc/qspinlock: paravirt yield to lock owner
powerpc/qspinlock: implement option to yield to previous node
powerpc/qspinlock: allow stealing when head of queue yields
powerpc/qspinlock: allow propagation of yield CPU down the queue
powerpc/qspinlock: add ability to prod new queue head CPU
powerpc/qspinlock: trylock and initial lock attempt may steal
powerpc/qspinlock: use spin_begin/end API
powerpc/qspinlock: reduce remote node steal spins
powerpc/qspinlock: allow indefinite spinning on a preempted owner
powerpc/qspinlock: provide accounting and options for sleepy locks
arch/powerpc/Kconfig | 1 -
arch/powerpc/include/asm/qspinlock.h | 130 ++-
arch/powerpc/include/asm/qspinlock_types.h | 70 ++
arch/powerpc/include/asm/spinlock_types.h | 2 +-
arch/powerpc/lib/Makefile | 4 +-
arch/powerpc/lib/qspinlock.c | 1009 ++++++++++++++++++++
6 files changed, 1172 insertions(+), 44 deletions(-)
create mode 100644 arch/powerpc/include/asm/qspinlock_types.h
create mode 100644 arch/powerpc/lib/qspinlock.c
--
2.35.1
More information about the Linuxppc-dev
mailing list