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-10-12

   # HEAD: 2116d708b0580c0048fc80b82ec4b53f4ddaa166 Merge branch 'lkmm' of 
git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into 
locking/core

These are the locking updates for v5.10:

 - Add deadlock detection for recursive read-locks. The rationale is outlined
   in:

     224ec489d3cd: ("lockdep/Documention: Recursive read lock detection 
reasoning")

   The main deadlock pattern we want to detect is:

           TASK A:                 TASK B:

           read_lock(X);
                                   write_lock(X);
           read_lock_2(X);

 - Add "latch sequence counters" (seqcount_latch_t):

      A sequence counter variant where the counter even/odd value is used to
      switch between two copies of protected data. This allows the read path,
      typically NMIs, to safely interrupt the write side critical section.

   We utilize this new variant for sched-clock, and to make x86 TSC handling 
safer.

 - Other seqlock cleanups, fixes and enhancements

 - KCSAN updates

 - LKMM updates

 - Misc updates, cleanups and fixes.

Note that there's a pending bugreport against:

   4d004099a668: ("lockdep: Fix lockdep recursion")

this fix triggers a non-fatal RCU warning on some systems - but that looks 
like a real bug which was masked by a lockdep bug, with fixes being worked 
on and tested. The new boot time warning does not appear to be widespread 
(read: we couldn't reproduce it locally).

 Thanks,

        Ingo

------------------>
Ahmed S. Darwish (13):
      time/sched_clock: Use raw_read_seqcount_latch() during suspend
      mm/swap: Do not abuse the seqcount_t latching API
      seqlock: Introduce seqcount_latch_t
      time/sched_clock: Use seqcount_latch_t
      timekeeping: Use seqcount_latch_t
      x86/tsc: Use seqcount_latch_t
      rbtree_latch: Use seqcount_latch_t
      seqlock: seqcount latch APIs: Only allow seqcount_latch_t
      seqlock: seqcount_LOCKNAME_t: Standardize naming convention
      seqlock: Use unique prefix for seqcount_t property accessors
      seqlock: seqcount_t: Implement all read APIs as statement expressions
      seqlock: seqcount_LOCKNAME_t: Introduce PREEMPT_RT support
      seqlock: PREEMPT_RT: Do not starve seqlock_t writers

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

Boqun Feng (20):
      locking: More accurate annotations for read_lock()
      lockdep/Documention: Recursive read lock detection reasoning
      lockdep: Demagic the return value of BFS
      lockdep: Make __bfs() visit every dependency until a match
      lockdep: Reduce the size of lock_list::distance
      lockdep: Introduce lock_list::dep
      lockdep: Extend __bfs() to work with multiple types of dependencies
      lockdep: Make __bfs(.match) return bool
      lockdep: Support deadlock detection for recursive read locks in 
check_noncircular()
      lockdep: Adjust check_redundant() for recursive read change
      lockdep: Fix recursive read lock related safe->unsafe detection
      lockdep: Add recursive read locks into dependency graph
      lockdep/selftest: Add a R-L/L-W test case specific to chain cache behavior
      lockdep: Take read/write status in consideration when generate chainkey
      lockdep/selftest: Unleash irq_read_recursion2 and add more
      lockdep/selftest: Add more recursive read related test cases
      Revert "locking/lockdep/selftests: Fix mixed read-write ABBA tests"
      locking/selftest: Add test cases for queued_read_lock()
      lockdep/selftest: Introduce recursion3
      lockdep: Optimize the memory usage of circular queue

Marco Elver (19):
      kcsan: Add support for atomic builtins
      objtool: Add atomic builtin TSAN instrumentation to uaccess whitelist
      kcsan: Add atomic builtin test case
      kcsan: Support compounded read-write instrumentation
      objtool, kcsan: Add __tsan_read_write to uaccess whitelist
      kcsan: Skew delay to be longer for certain access types
      kcsan: Add missing CONFIG_KCSAN_IGNORE_ATOMICS checks
      kcsan: Test support for compound instrumentation
      instrumented.h: Introduce read-write instrumentation hooks
      asm-generic/bitops: Use instrument_read_write() where appropriate
      locking/atomics: Use read-write instrumentation for atomic RMWs
      kcsan: Simplify debugfs counter to name mapping
      kcsan: Simplify constant string handling
      kcsan: Remove debugfs test command
      kcsan: Show message if enabled early
      kcsan: Use pr_fmt for consistency
      kcsan: Optimize debugfs stats counters
      bitops, kcsan: Partially revert instrumentation for non-atomic bitops
      kcsan: Use tracing-safe version of prandom

Marta Rybczynska (1):
      Documentation/locking/locktypes: Fix local_locks documentation

Paul Bolle (1):
      locking/atomics: Check atomic-arch-fallback.h too

Paul E. McKenney (4):
      tools/memory-model: Update recipes.txt prime_numbers.c path
      tools/memory-model: Improve litmus-test documentation
      tools/memory-model: Add a simple entry point document
      tools/memory-model: Expand the cheatsheet.txt notion of relaxed

Peter Zijlstra (5):
      seqlock,tags: Add support for SEQCOUNT_LOCKTYPE()
      locking/refcount: Provide __refcount API to obtain the old value
      lockdep: Fix usage_traceoverflow
      lockdep: Fix lockdep recursion
      lockdep: Revert "lockdep: Use raw_cpu_*() for per-cpu variables"

Randy Dunlap (1):
      seqlock: Fix multiple kernel-doc warnings

Sebastian Andrzej Siewior (1):
      locking/seqlock: Tweak DEFINE_SEQLOCK() kernel doc

pet...@infradead.org (1):
      seqlock: Unbreak lockdep


 Documentation/locking/lockdep-design.rst           |  258 +++++
 Documentation/locking/seqlock.rst                  |   18 +
 arch/x86/kernel/tsc.c                              |   10 +-
 include/asm-generic/atomic-instrumented.h          |  330 +++---
 include/asm-generic/bitops/instrumented-atomic.h   |    6 +-
 include/asm-generic/bitops/instrumented-lock.h     |    2 +-
 .../asm-generic/bitops/instrumented-non-atomic.h   |   30 +-
 include/linux/instrumented.h                       |   30 +
 include/linux/kcsan-checks.h                       |   45 +-
 include/linux/lockdep.h                            |   58 +-
 include/linux/lockdep_types.h                      |    8 +-
 include/linux/rbtree_latch.h                       |    6 +-
 include/linux/refcount.h                           |   65 +-
 include/linux/seqlock.h                            |  388 ++++---
 kernel/kcsan/core.c                                |  210 +++-
 kernel/kcsan/debugfs.c                             |  130 +--
 kernel/kcsan/kcsan-test.c                          |  128 ++-
 kernel/kcsan/kcsan.h                               |   12 +-
 kernel/kcsan/report.c                              |   10 +-
 kernel/kcsan/selftest.c                            |    8 +-
 kernel/locking/lockdep.c                           |  977 ++++++++++++------
 kernel/locking/lockdep_internals.h                 |    7 +-
 kernel/time/sched_clock.c                          |    6 +-
 kernel/time/timekeeping.c                          |   10 +-
 lib/Kconfig.kcsan                                  |    5 +
 lib/locking-selftest.c                             |  445 +++++++-
 mm/swap.c                                          |   65 +-
 scripts/Makefile.kcsan                             |    2 +-
 scripts/atomic/check-atomics.sh                    |    1 +
 scripts/atomic/gen-atomic-instrumented.sh          |   21 +-
 scripts/tags.sh                                    |    2 +
 tools/memory-model/Documentation/cheatsheet.txt    |   33 +-
 tools/memory-model/Documentation/litmus-tests.txt  | 1074 ++++++++++++++++++++
 tools/memory-model/Documentation/recipes.txt       |    4 +-
 tools/memory-model/Documentation/references.txt    |    2 +-
 tools/memory-model/Documentation/simple.txt        |  271 +++++
 tools/memory-model/README                          |  160 +--
 tools/objtool/check.c                              |   55 +
 38 files changed, 3900 insertions(+), 992 deletions(-)
 create mode 100644 tools/memory-model/Documentation/litmus-tests.txt
 create mode 100644 tools/memory-model/Documentation/simple.txt

Reply via email to