[GIT PULL] locking changes for v5.9

From: Ingo Molnar
Date: Mon Aug 03 2020 - 07:54:42 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-2020-08-03

# HEAD: 992414a18cd4de05fa3f8ff7e1c29af758bdee1a Merge branch 'locking/nmi' into locking/core, to pick up completed topic branch

These were the main changes in this cycle:

- LKMM updates: mostly documentation changes, but also some new litmus tests for atomic ops.

- KCSAN updates: the most important change is that GCC 11 now has all fixes in place
to support KCSAN, so GCC support can be enabled again. Also more annotations.

- futex updates: minor cleanups and simplifications

- seqlock updates: merge preparatory changes/cleanups for the 'associated locks' facilities.

- lockdep updates:
- simplify IRQ trace event handling
- add various new debug checks
- simplify header dependencies, split out <linux/lockdep_types.h>, decouple
lockdep from other low level headers some more
- fix NMI handling

- misc cleanups and smaller fixes

Thanks,

Ingo

------------------>
Ahmed S. Darwish (8):
Documentation: locking: Describe seqlock design and usage
seqlock: Properly format kernel-doc code samples
seqlock: seqcount_t latch: End read sections with read_seqcount_retry()
seqlock: Reorder seqcount_t and seqlock_t API definitions
seqlock: Add kernel-doc for seqcount_t and seqlock_t APIs
seqlock: Implement raw_seqcount_begin() in terms of raw_read_seqcount()
lockdep: Add preemption enabled/disabled assertion APIs
seqlock: lockdep assert non-preemptibility on seqcount_t write

Akira Yokosawa (5):
tools/memory-model: Fix reference to litmus test in recipes.txt
Documentation/litmus-tests: Merge atomic's README into top-level one
tools/memory-model/README: Expand dependency of klitmus7
tools/memory-model/README: Mention herdtools7 7.56 in compatibility table
Documentation/litmus-tests: Add note on herd7 7.56 in atomic litmus test

Alexander A. Klimov (1):
docs: locking: Replace HTTP links with HTTPS ones

Alexey Dobriyan (1):
rwsem: fix commas in initialisation

André Almeida (4):
futex: Remove put_futex_key()
futex: Remove needless goto's
futex: Consistently use fshared as boolean
futex: Remove unused or redundant includes

Andy Lutomirski (1):
x86/entry: Rename idtentry_enter/exit_cond_rcu() to idtentry_enter/exit()

Boqun Feng (4):
tools/memory-model: Add an exception for limitations on _unless() family
Documentation/litmus-tests: Introduce atomic directory
Documentation/litmus-tests/atomic: Add a test for atomic_set()
Documentation/litmus-tests/atomic: Add a test for smp_mb__after_atomic()

Herbert Xu (5):
lockdep: Split header file into lockdep and lockdep_types
lockdep: Move list.h inclusion into lockdep.h
lockdep: Move list.h inclusion into lockdep.h
locking/atomic: Move ATOMIC_INIT into linux/types.h
locking/qspinlock: Do not include atomic.h from qspinlock_types.h

Joel Fernandes (Google) (4):
Documentation: LKMM: Add litmus test for RCU GP guarantee where updater frees object
Documentation: LKMM: Add litmus test for RCU GP guarantee where reader stores
MAINTAINERS: Update maintainers for new Documentation/litmus-tests
Documentation/litmus-tests: Cite an RCU litmus test

Marco Elver (13):
kcsan: Add test suite
kcsan: Prefer '__no_kcsan inline' in test
kcsan: Silence -Wmissing-prototypes warning with W=1
kcsan: Rename test.c to selftest.c
kcsan: Remove existing special atomic rules
kcsan: Add jiffies test to test suite
kcsan: Re-add GCC as a supported compiler
kcsan: Simplify compiler flags
kcsan: Disable branch tracing in core runtime
tools/memory-model: Fix "conflict" definition
kcsan: Make KCSAN compatible with new IRQ state tracking
lockdep: Refactor IRQ trace events fields into struct
kcsan: Improve IRQ state trace reporting

Paul E. McKenney (2):
rculist: Add ASSERT_EXCLUSIVE_ACCESS() to __list_splice_init_rcu()
tools/memory-model: Add recent references

Peter Zijlstra (8):
sparc64: Fix asm/percpu.h build error
lockdep: Prepare for NMI IRQ state tracking
powerpc64: Break asm/percpu.h vs spinlock_types.h dependency
x86/entry: Fix NMI vs IRQ state tracking
s390: Break cyclic percpu include
arm: Break cyclic percpu include
lockdep: Change hardirq{s_enabled,_context} to per-cpu variables
lockdep: Remove lockdep_hardirq{s_enabled,_context}() argument

Qian Cai (3):
fork: Annotate a data race in vm_area_dup()
x86/mm/pat: Mark an intentional data race
locking/osq_lock: Annotate a data race in osq_lock

peterz@xxxxxxxxxxxxx (1):
locking/lockdep: Fix TRACE_IRQFLAGS vs. NMIs


Documentation/atomic_t.txt | 24 +-
Documentation/dev-tools/kcsan.rst | 3 +-
Documentation/litmus-tests/README | 35 +
...b__after_atomic-is-stronger-than-acquire.litmus | 32 +
...Atomic-RMW-ops-are-atomic-WRT-atomic_set.litmus | 25 +
.../litmus-tests/rcu/RCU+sync+free.litmus | 42 +
.../litmus-tests/rcu/RCU+sync+read.litmus | 37 +
Documentation/locking/index.rst | 1 +
Documentation/locking/mutex-design.rst | 2 +-
Documentation/locking/seqlock.rst | 170 +++
MAINTAINERS | 2 +
arch/alpha/include/asm/atomic.h | 1 -
arch/arc/include/asm/atomic.h | 2 -
arch/arm/include/asm/atomic.h | 2 -
arch/arm/include/asm/percpu.h | 2 +-
arch/arm/include/asm/thread_info.h | 5 -
arch/arm64/include/asm/atomic.h | 2 -
arch/h8300/include/asm/atomic.h | 2 -
arch/hexagon/include/asm/atomic.h | 2 -
arch/ia64/include/asm/atomic.h | 1 -
arch/m68k/include/asm/atomic.h | 2 -
arch/mips/include/asm/atomic.h | 1 -
arch/parisc/include/asm/atomic.h | 2 -
arch/powerpc/include/asm/atomic.h | 2 -
arch/powerpc/include/asm/dtl.h | 52 +
arch/powerpc/include/asm/lppaca.h | 44 -
arch/powerpc/include/asm/paca.h | 2 +-
arch/powerpc/kernel/time.c | 2 +
arch/powerpc/kvm/book3s_hv.c | 1 +
arch/powerpc/platforms/pseries/dtl.c | 1 +
arch/powerpc/platforms/pseries/lpar.c | 1 +
arch/powerpc/platforms/pseries/setup.c | 1 +
arch/powerpc/platforms/pseries/svm.c | 1 +
arch/riscv/include/asm/atomic.h | 2 -
arch/s390/include/asm/atomic.h | 2 -
arch/s390/include/asm/smp.h | 1 +
arch/s390/include/asm/thread_info.h | 1 -
arch/sh/include/asm/atomic.h | 2 -
arch/sparc/include/asm/atomic_32.h | 2 -
arch/sparc/include/asm/atomic_64.h | 1 -
arch/sparc/include/asm/percpu_64.h | 2 +
arch/sparc/include/asm/trap_block.h | 2 +
arch/x86/Kconfig.debug | 3 +
arch/x86/entry/common.c | 88 +-
arch/x86/include/asm/atomic.h | 2 -
arch/x86/include/asm/idtentry.h | 31 +-
arch/x86/kernel/kvm.c | 6 +-
arch/x86/kernel/nmi.c | 9 +-
arch/x86/kernel/traps.c | 23 +-
arch/x86/mm/fault.c | 6 +-
arch/x86/mm/pat/set_memory.c | 2 +-
arch/xtensa/include/asm/atomic.h | 2 -
include/asm-generic/atomic.h | 2 -
include/asm-generic/qspinlock.h | 1 +
include/asm-generic/qspinlock_types.h | 8 -
include/linux/hardirq.h | 28 +-
include/linux/irqflags.h | 36 +-
include/linux/lockdep.h | 230 +---
include/linux/lockdep_types.h | 194 ++++
include/linux/rculist.h | 2 +
include/linux/rwsem.h | 20 +-
include/linux/sched.h | 17 +-
include/linux/seqlock.h | 756 ++++++++-----
include/linux/spinlock.h | 1 +
include/linux/spinlock_types.h | 2 +-
include/linux/types.h | 2 +
kernel/fork.c | 28 +-
kernel/futex.c | 114 +-
kernel/kcsan/Makefile | 9 +-
kernel/kcsan/atomic.h | 6 +-
kernel/kcsan/core.c | 37 +-
kernel/kcsan/kcsan-test.c | 1107 ++++++++++++++++++++
kernel/kcsan/kcsan.h | 7 +
kernel/kcsan/report.c | 12 +-
kernel/kcsan/{test.c => selftest.c} | 0
kernel/locking/lockdep.c | 142 ++-
kernel/locking/osq_lock.c | 6 +-
kernel/softirq.c | 8 +-
lib/Kconfig.debug | 7 +
lib/Kconfig.kcsan | 26 +-
scripts/Makefile.kcsan | 2 +-
tools/include/linux/irqflags.h | 4 +-
tools/memory-model/Documentation/explanation.txt | 83 +-
tools/memory-model/Documentation/recipes.txt | 2 +-
tools/memory-model/Documentation/references.txt | 21 +-
tools/memory-model/README | 40 +-
86 files changed, 2797 insertions(+), 854 deletions(-)
create mode 100644 Documentation/litmus-tests/README
create mode 100644 Documentation/litmus-tests/atomic/Atomic-RMW+mb__after_atomic-is-stronger-than-acquire.litmus
create mode 100644 Documentation/litmus-tests/atomic/Atomic-RMW-ops-are-atomic-WRT-atomic_set.litmus
create mode 100644 Documentation/litmus-tests/rcu/RCU+sync+free.litmus
create mode 100644 Documentation/litmus-tests/rcu/RCU+sync+read.litmus
create mode 100644 Documentation/locking/seqlock.rst
create mode 100644 arch/powerpc/include/asm/dtl.h
create mode 100644 include/linux/lockdep_types.h
create mode 100644 kernel/kcsan/kcsan-test.c
rename kernel/kcsan/{test.c => selftest.c} (100%)