[GIT PULL] locking changes for v6.4

From: Ingo Molnar
Date: Thu Apr 27 2023 - 15:58:11 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-2023-04-27

# HEAD: 93eff603d6a2bc1895eeb7063dbd0661bb760b74 locking/atomic: Correct (cmp)xhcg instrumentation

Locking changes in v6.4:

- Introduce local{,64}_try_cmpxchg() - a slightly more optimal
primitive, which will be used in perf events ring-buffer code.

- Add more atomic_add_negative() variants, used by rcuref:

- Add rcuref - A scalable reference count implementation for RCU managed objects

- Add non-atomic __xchg() variant, use it in a couple of places

- Misc cleanups and fixes.


NOTE: the internal merge commit of locking/rcuref [1afa833d607b6] merging
two commits from a WIP branch has no explanation. I noticed this too
late, and we can re-do this tree if it's an issue.

Thanks,

Ingo

------------------>
Andrzej Hajda (5):
arch: rename all internal names __xchg to __arch_xchg
linux/include: add non-atomic version of xchg
arch/*/uprobes: simplify arch_uretprobe_hijack_return_addr
llist: simplify __llist_del_all
drm/i915/gt: use __xchg instead of internal helper

Mark Rutland (1):
locking/atomic: Correct (cmp)xhcg instrumentation

Sebastian Andrzej Siewior (1):
locking/rwbase: Mitigate indefinite writer starvation.

Thomas Gleixner (2):
atomics: Provide atomic_add_negative() variants
atomics: Provide rcuref - scalable reference counting

Uros Bizjak (4):
locking/atomic: Add generic try_cmpxchg{,64}_local support
locking/generic: Wire up local{,64}_try_cmpxchg
locking/arch: Wire up local_try_cmpxchg
locking/x86: Define arch_try_cmpxchg_local


arch/alpha/include/asm/cmpxchg.h | 10 +-
arch/alpha/include/asm/local.h | 12 +-
arch/arc/include/asm/cmpxchg.h | 4 +-
arch/arm/include/asm/cmpxchg.h | 7 +-
arch/arm/probes/uprobes/core.c | 8 +-
arch/arm64/include/asm/cmpxchg.h | 7 +-
arch/arm64/kernel/probes/uprobes.c | 9 +-
arch/csky/kernel/probes/uprobes.c | 9 +-
arch/hexagon/include/asm/cmpxchg.h | 10 +-
arch/ia64/include/asm/cmpxchg.h | 2 +-
arch/ia64/include/uapi/asm/cmpxchg.h | 4 +-
arch/loongarch/include/asm/cmpxchg.h | 4 +-
arch/loongarch/include/asm/local.h | 13 +-
arch/m68k/include/asm/cmpxchg.h | 6 +-
arch/mips/include/asm/cmpxchg.h | 4 +-
arch/mips/include/asm/local.h | 13 +-
arch/mips/kernel/uprobes.c | 10 +-
arch/openrisc/include/asm/cmpxchg.h | 10 +-
arch/parisc/include/asm/cmpxchg.h | 4 +-
arch/powerpc/include/asm/cmpxchg.h | 4 +-
arch/powerpc/include/asm/local.h | 11 +
arch/powerpc/kernel/uprobes.c | 10 +-
arch/riscv/include/asm/atomic.h | 2 +-
arch/riscv/include/asm/cmpxchg.h | 4 +-
arch/riscv/kernel/probes/uprobes.c | 9 +-
arch/s390/include/asm/cmpxchg.h | 8 +-
arch/s390/kernel/uprobes.c | 7 +-
arch/sh/include/asm/cmpxchg.h | 4 +-
arch/sparc/include/asm/cmpxchg_32.h | 4 +-
arch/sparc/include/asm/cmpxchg_64.h | 6 +-
arch/sparc/kernel/uprobes.c | 7 +-
arch/x86/include/asm/cmpxchg.h | 6 +
arch/x86/include/asm/local.h | 13 +-
arch/xtensa/include/asm/cmpxchg.h | 4 +-
drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 +-
drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c | 4 +-
.../gpu/drm/i915/gt/intel_execlists_submission.c | 4 +-
drivers/gpu/drm/i915/gt/intel_ggtt.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gsc.c | 2 +-
drivers/gpu/drm/i915/gt/intel_gt.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt_pm.c | 2 +-
drivers/gpu/drm/i915/gt/intel_lrc.c | 6 +-
drivers/gpu/drm/i915/gt/intel_migrate.c | 2 +-
drivers/gpu/drm/i915/gt/intel_rc6.c | 2 +-
drivers/gpu/drm/i915/gt/intel_rps.c | 2 +-
drivers/gpu/drm/i915/gt/selftest_context.c | 2 +-
drivers/gpu/drm/i915/gt/selftest_ring_submission.c | 2 +-
drivers/gpu/drm/i915/gt/selftest_timeline.c | 2 +-
drivers/gpu/drm/i915/gt/uc/intel_uc.c | 2 +-
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 2 +-
drivers/gpu/drm/i915/i915_utils.h | 1 +
include/asm-generic/local.h | 1 +
include/asm-generic/local64.h | 12 +-
include/linux/atomic/atomic-arch-fallback.h | 230 ++++++++++++++++-
include/linux/atomic/atomic-instrumented.h | 152 ++++++++---
include/linux/atomic/atomic-long.h | 38 ++-
include/linux/llist.h | 6 +-
include/linux/non-atomic/xchg.h | 19 ++
include/linux/rcuref.h | 155 ++++++++++++
include/linux/types.h | 6 +
kernel/locking/rwbase_rt.c | 9 -
lib/Makefile | 2 +-
lib/rcuref.c | 281 +++++++++++++++++++++
scripts/atomic/atomics.tbl | 2 +-
scripts/atomic/fallbacks/add_negative | 11 +-
scripts/atomic/gen-atomic-fallback.sh | 4 +
scripts/atomic/gen-atomic-instrumented.sh | 8 +-
67 files changed, 1019 insertions(+), 207 deletions(-)
create mode 100644 include/linux/non-atomic/xchg.h
create mode 100644 include/linux/rcuref.h
create mode 100644 lib/rcuref.c