[GIT PULL] locking changes for v5.19

From: Ingo Molnar
Date: Mon May 23 2022 - 12:18:02 EST


Linus,

Please pull the latest locking/core git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking-core-2022-05-23

# HEAD: 8491d1bdf5de152f27fc941e2dcdc4e66c950542 sched/clock: Use try_cmpxchg64 in sched_clock_{local,remote}

Locking changes in this cycle were:

- rwsem cleanups & optimizations/fixes:
- Conditionally wake waiters in reader/writer slowpaths
- Always try to wake waiters in out_nolock path

- Add try_cmpxchg64() implementation, with arch optimizations - and use it to
micro-optimize sched_clock_{local,remote}()

- Various force-inlining fixes to address objdump instrumentation-check warnings

- Add lock contention tracepoints:

lock:contention_begin
lock:contention_end

- Misc smaller fixes & cleanups

Thanks,

Ingo

------------------>
Borislav Petkov (3):
task_stack, x86/cea: Force-inline stack helpers
x86/kvm/svm: Force-inline GHCB accessors
x86/mm: Force-inline __phys_addr_nodebug()

Namhyung Kim (2):
locking: Add lock contention tracepoints
locking: Apply contention tracepoints in the slow path

Nick Desaulniers (1):
lockdep: Fix -Wunused-parameter for _THIS_IP_

Peter Zijlstra (1):
locking/mutex: Make contention tracepoints more consistent wrt adaptive spinning

Sebastian Andrzej Siewior (1):
futex: Remove a PREEMPT_RT_FULL reference.

Thomas Gleixner (1):
lockdep: Delete local_irq_enable_in_hardirq()

Uros Bizjak (3):
locking/atomic: Add generic try_cmpxchg64 support
locking/atomic/x86: Introduce arch_try_cmpxchg64
sched/clock: Use try_cmpxchg64 in sched_clock_{local,remote}

Waiman Long (4):
locking/rwsem: No need to check for handoff bit if wait queue empty
locking/rwsem: Conditionally wake waiters in reader/writer slowpaths
locking/rwsem: Always try to wake waiters in out_nolock path
locking/qrwlock: Change "queue rwlock" to "queued rwlock"


arch/arm64/kernel/entry-common.c | 8 +-
arch/x86/include/asm/cmpxchg_32.h | 21 +++++
arch/x86/include/asm/cmpxchg_64.h | 6 ++
arch/x86/include/asm/cpu_entry_area.h | 2 +-
arch/x86/include/asm/page_64.h | 2 +-
arch/x86/include/asm/svm.h | 8 +-
include/asm-generic/qrwlock.h | 28 +++---
include/asm-generic/qrwlock_types.h | 2 +-
include/linux/atomic/atomic-arch-fallback.h | 72 ++++++++++++++-
include/linux/atomic/atomic-instrumented.h | 40 ++++++++-
include/linux/interrupt.h | 18 ----
include/linux/irqflags.h | 4 +-
include/linux/kvm_host.h | 2 +-
include/linux/sched/task_stack.h | 2 +-
include/trace/events/lock.h | 63 +++++++++++++-
kernel/entry/common.c | 6 +-
kernel/futex/pi.c | 2 +-
kernel/locking/lockdep.c | 23 ++---
kernel/locking/mutex.c | 18 +++-
kernel/locking/percpu-rwsem.c | 5 ++
kernel/locking/qrwlock.c | 17 +++-
kernel/locking/qspinlock.c | 5 ++
kernel/locking/rtmutex.c | 11 +++
kernel/locking/rwbase_rt.c | 7 ++
kernel/locking/rwsem.c | 130 +++++++++++++++++-----------
kernel/locking/semaphore.c | 15 +++-
kernel/sched/clock.c | 4 +-
kernel/sched/idle.c | 2 +-
kernel/trace/trace_preemptirq.c | 4 +-
scripts/atomic/gen-atomic-fallback.sh | 31 ++++---
scripts/atomic/gen-atomic-instrumented.sh | 2 +-
31 files changed, 412 insertions(+), 148 deletions(-)