[GIT PULL] locking changes for v5.14

Ingo Molnar
2021-06-28T06:15:06Z

Linus,

Please pull the latest locking/core git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking-core-2021-06-28

# HEAD: 0e8a89d49d45197770f2e57fb15f1bc9ded96eb0 locking/lockdep: Correct the description error for check_redundant()

Locking changes for this cycle:

- Core locking & atomics:

- Convert all architectures to ARCH_ATOMIC: move every
architecture to ARCH_ATOMIC, then get rid of ARCH_ATOMIC
and all the transitory facilities and #ifdefs.

Much reduction in complexity from that series:

63 files changed, 756 insertions(+), 4094 deletions(-)

- Self-test enhancements

- Futexes:

- Add the new FUTEX_LOCK_PI2 ABI, which is a variant that
doesn't set FLAGS_CLOCKRT (.e. uses CLOCK_MONOTONIC).

[ The temptation to repurpose FUTEX_LOCK_PI's implicit
setting of FLAGS_CLOCKRT & invert the flag's meaning
to avoid having to introduce a new variant was
resisted successfully. ]

- Enhance futex self-tests

- Lockdep:

- Fix dependency path printouts
- Optimize trace saving
- Broaden & fix wait-context checks

- Misc cleanups and fixes.

Thanks,

Ingo

------------------>
André Almeida (4):
selftests: futex: Correctly include headers dirs
selftests: futex: Expand timeout test
selftests: futex: Add futex wait test
selftests: futex: Add futex compare requeue test

Boqun Feng (4):
locking/lockdep: Fix the dep path printing for backwards BFS
locking/lockdep: Remove the unnecessary trace saving
lockding/lockdep: Avoid to find wrong lock dep path in check_irq_usage()
locking/selftests: Add a selftest for check_irq_usage()

Huilong Deng (1):
seqlock: Remove trailing semicolon in macros

Ingo Molnar (1):
locking: Fix comment typos

Mark Rutland (33):
locking/atomic: make ARCH_ATOMIC a Kconfig symbol
locking/atomic: net: use linux/atomic.h for xchg & cmpxchg
locking/atomic: h8300: use asm-generic exclusively
locking/atomic: microblaze: use asm-generic exclusively
locking/atomic: openrisc: avoid asm-generic/atomic.h
locking/atomic: atomic: remove stale comments
locking/atomic: atomic: remove redundant include
locking/atomic: atomic: simplify ifdeffery
locking/atomic: atomic: support ARCH_ATOMIC
locking/atomic: atomic64: support ARCH_ATOMIC
locking/atomic: cmpxchg: make `generic` a prefix
locking/atomic: cmpxchg: support ARCH_ATOMIC
locking/atomic: alpha: move to ARCH_ATOMIC
locking/atomic: arc: move to ARCH_ATOMIC
locking/atomic: arm: move to ARCH_ATOMIC
locking/atomic: csky: move to ARCH_ATOMIC
locking/atomic: h8300: move to ARCH_ATOMIC
locking/atomic: hexagon: move to ARCH_ATOMIC
locking/atomic: ia64: move to ARCH_ATOMIC
locking/atomic: m68k: move to ARCH_ATOMIC
locking/atomic: microblaze: move to ARCH_ATOMIC
locking/atomic: mips: move to ARCH_ATOMIC
locking/atomic: nds32: move to ARCH_ATOMIC
locking/atomic: nios2: move to ARCH_ATOMIC
locking/atomic: openrisc: move to ARCH_ATOMIC
locking/atomic: parisc: move to ARCH_ATOMIC
locking/atomic: powerpc: move to ARCH_ATOMIC
locking/atomic: riscv: move to ARCH_ATOMIC
locking/atomic: sh: move to ARCH_ATOMIC
locking/atomic: sparc: move to ARCH_ATOMIC
locking/atomic: xtensa: move to ARCH_ATOMIC
locking/atomic: delete !ARCH_ATOMIC remnants
locking/atomics: atomic-instrumented: simplify ifdeffery

Pavel Begunkov (1):
futex: Deduplicate cond_resched() invocation in futex_wake_op()

Peter Zijlstra (3):
lockdep: Fix wait-type for empty stack
lockdep/selftests: Fix selftests vs PROVE_RAW_LOCK_NESTING
lockdep/selftest: Remove wait-type RCU_CALLBACK tests

Randy Dunlap (1):
locking/lockdep: Reduce LOCKDEP dependency list

Thomas Gleixner (2):
futex: Prepare futex_lock_pi() for runtime clock selection
futex: Provide FUTEX_LOCK_PI2 to support clock selection

Xiongwei Song (2):
locking/lockdep,doc: Improve readability of the block matrix
locking/lockdep: Correct the description error for check_redundant()

Documentation/locking/lockdep-design.rst | 4 +-
arch/alpha/include/asm/atomic.h | 88 +-
arch/alpha/include/asm/cmpxchg.h | 12 +-
arch/arc/include/asm/atomic.h | 60 +-
arch/arc/include/asm/cmpxchg.h | 10 +-
arch/arm/include/asm/atomic.h | 96 +-
arch/arm/include/asm/cmpxchg.h | 20 +-
arch/arm/include/asm/sync_bitops.h | 2 +-
arch/arm64/include/asm/atomic.h | 2 -
arch/csky/include/asm/cmpxchg.h | 8 +-
arch/h8300/include/asm/Kbuild | 1 +
arch/h8300/include/asm/atomic.h | 97 -
arch/h8300/include/asm/cmpxchg.h | 66 -
arch/hexagon/include/asm/atomic.h | 28 +-
arch/hexagon/include/asm/cmpxchg.h | 4 +-
arch/ia64/include/asm/atomic.h | 74 +-
arch/ia64/include/asm/cmpxchg.h | 16 +
arch/ia64/include/uapi/asm/cmpxchg.h | 10 +-
arch/m68k/include/asm/atomic.h | 60 +-
arch/m68k/include/asm/cmpxchg.h | 10 +-
arch/m68k/include/asm/mmu_context.h | 2 +-
arch/microblaze/include/asm/Kbuild | 1 +
arch/microblaze/include/asm/atomic.h | 28 -
arch/microblaze/include/asm/cmpxchg.h | 9 -
arch/mips/include/asm/atomic.h | 55 +-
arch/mips/include/asm/cmpxchg.h | 22 +-
arch/mips/kernel/cmpxchg.c | 4 +-
arch/openrisc/include/asm/atomic.h | 42 +-
arch/openrisc/include/asm/cmpxchg.h | 4 +-
arch/parisc/include/asm/atomic.h | 34 +-
arch/parisc/include/asm/cmpxchg.h | 14 +-
arch/powerpc/include/asm/atomic.h | 140 +-
arch/powerpc/include/asm/cmpxchg.h | 30 +-
arch/powerpc/include/asm/qspinlock.h | 2 +-
arch/riscv/include/asm/atomic.h | 128 +-
arch/riscv/include/asm/cmpxchg.h | 34 +-
arch/s390/include/asm/atomic.h | 2 -
arch/sh/include/asm/atomic-grb.h | 6 +-
arch/sh/include/asm/atomic-irq.h | 6 +-
arch/sh/include/asm/atomic-llsc.h | 6 +-
arch/sh/include/asm/atomic.h | 8 +-
arch/sh/include/asm/cmpxchg.h | 4 +-
arch/sparc/include/asm/atomic_32.h | 38 +-
arch/sparc/include/asm/atomic_64.h | 36 +-
arch/sparc/include/asm/cmpxchg_32.h | 12 +-
arch/sparc/include/asm/cmpxchg_64.h | 12 +-
arch/sparc/lib/atomic32.c | 24 +-
arch/sparc/lib/atomic_64.S | 42 +-
arch/x86/include/asm/atomic.h | 2 -
arch/xtensa/include/asm/atomic.h | 26 +-
arch/xtensa/include/asm/cmpxchg.h | 14 +-
include/asm-generic/atomic-instrumented.h | 498 +---
include/asm-generic/atomic.h | 118 +-
include/asm-generic/atomic64.h | 45 +-
include/asm-generic/cmpxchg-local.h | 4 +-
include/asm-generic/cmpxchg.h | 42 +-
include/linux/atomic-fallback.h | 2595 --------------------
include/linux/atomic.h | 4 -
include/linux/lockdep_types.h | 2 +-
include/linux/seqlock.h | 6 +-
include/uapi/linux/futex.h | 2 +
kernel/futex.c | 29 +-
kernel/locking/lockdep.c | 127 +-
lib/Kconfig.debug | 1 -
lib/atomic64.c | 36 +-
lib/locking-selftest.c | 83 +-
net/core/filter.c | 2 +-
net/sunrpc/xprtmultipath.c | 2 +-
scripts/atomic/check-atomics.sh | 1 -
scripts/atomic/gen-atomic-instrumented.sh | 51 +-
scripts/atomic/gen-atomics.sh | 1 -
.../testing/selftests/futex/functional/.gitignore | 2 +
tools/testing/selftests/futex/functional/Makefile | 7 +-
.../selftests/futex/functional/futex_requeue.c | 136 +
.../selftests/futex/functional/futex_wait.c | 171 ++
.../futex/functional/futex_wait_timeout.c | 126 +-
tools/testing/selftests/futex/functional/run.sh | 6 +
77 files changed, 1395 insertions(+), 4157 deletions(-)
delete mode 100644 arch/h8300/include/asm/atomic.h
delete mode 100644 arch/h8300/include/asm/cmpxchg.h
create mode 100644 arch/ia64/include/asm/cmpxchg.h
delete mode 100644 arch/microblaze/include/asm/atomic.h
delete mode 100644 arch/microblaze/include/asm/cmpxchg.h
delete mode 100644 include/linux/atomic-fallback.h
create mode 100644 tools/testing/selftests/futex/functional/futex_requeue.c
create mode 100644 tools/testing/selftests/futex/functional/futex_wait.c