All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] locking changes for v4.17
@ 2018-04-02  6:57 Ingo Molnar
  0 siblings, 0 replies; only message in thread
From: Ingo Molnar @ 2018-04-02  6:57 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: linux-kernel, Paul E. McKenney, Thomas Gleixner, Peter Zijlstra,
	Andrew Morton

Linus,

Please pull the latest locking-core-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking-core-for-linus

   # HEAD: 19193bcad8dced863f2f720b1a76110bda07c970 locking/Kconfig: Restructure the lock debugging menu

The main changes in the locking subsystem in this cycle were:

 - Add the Linux Kernel Memory Consistency Model (LKMM) subsystem, which is an
   an array of tools in tools/memory-model/ that formally describe the Linux
   memory coherency model (a.k.a. Documentation/memory-barriers.txt), and also 
   produce 'litmus tests' in form of kernel code which can be directly executed 
   and tested.

   Here's a high level background article about an earlier version of this work on 
   LWN.net:

      https://lwn.net/Articles/718628/

   The design principles:

    "There is some reason to believe that Documentation/memory-barriers.txt
     could use some help, and a major purpose of this patch is to provide
     that help in the form of a design-time tool that can produce all valid
     executions of a small fragment of concurrent Linux-kernel code, which is
     called a "litmus test".  This tool's functionality is roughly similar to
     a full state-space search.  Please note that this is a design-time tool,
     not useful for regression testing.  However, we hope that the underlying
     Linux-kernel memory model will be incorporated into other tools capable
     of analyzing large bodies of code for regression-testing purposes."

     [...]

    "A second tool is klitmus7, which converts litmus tests to loadable
     kernel modules for direct testing.  As with herd7, the klitmus7
     code is freely available from http://diy.inria.fr/sources/index.html
     (and via "git" at https://github.com/herd/herdtools7)."

    [...]

    Credits go to:

    "This patch was the result of a most excellent collaboration founded
     by Jade Alglave and also including Alan Stern, Andrea Parri, and Luc Maranget."

    ... and to the gents listed in the MAINTAINERS entry:

        LINUX KERNEL MEMORY CONSISTENCY MODEL (LKMM)
        M:      Alan Stern <stern@rowland.harvard.edu>
        M:      Andrea Parri <parri.andrea@gmail.com>
        M:      Will Deacon <will.deacon@arm.com>
        M:      Peter Zijlstra <peterz@infradead.org>
        M:      Boqun Feng <boqun.feng@gmail.com>
        M:      Nicholas Piggin <npiggin@gmail.com>
        M:      David Howells <dhowells@redhat.com>
        M:      Jade Alglave <j.alglave@ucl.ac.uk>
        M:      Luc Maranget <luc.maranget@inria.fr>
        M:      "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>

   The LKMM project already found several bugs in Linux locking primitives and 
   improved the understanding and the documentation of the Linux memory model all 
   around.

 - Add KASAN instrumentation to atomic APIs (Dmitry Vyukov)

 - Add RWSEM API debugging and reorganize the lock debugging Kconfig (Waiman Long)

 - ... misc cleanups and other smaller changes.

 Thanks,

	Ingo

------------------>
Alan Stern (3):
      tools/memory-model: Add a S lock-based external-view litmus test
      tools/memory-model: Remove rb-dep, smp_read_barrier_depends, and lockless_dereference
      tools/memory-model: Finish the removal of rb-dep, smp_read_barrier_depends(), and lockless_dereference()

Andrea Parri (5):
      tools/memory-model: Clarify the origin/scope of the tool name
      MAINTAINERS: Add the Memory Consistency Model subsystem
      MAINTAINERS: List file memory-barriers.txt within the LKMM entry
      Documentation/memory-barriers.txt: Cross-reference "tools/memory-model/"
      locking/xchg/alpha: Remove superfluous memory barriers from the _local() variants

Borislav Petkov (1):
      locking/lockdep: Show unadorned pointers

Dmitry Vyukov (4):
      locking/atomic, asm-generic: Add asm-generic/atomic-instrumented.h
      locking/atomic/x86: Switch atomic.h to use atomic-instrumented.h
      locking/atomic, asm-generic: Add KASAN instrumentation to atomic operations
      locking/atomic, asm-generic, x86: Add comments for atomic instrumentation

Juri Lelli (2):
      Documentation/locking/lockdep: Update info about states
      Documentation/locking/lockdep: Add section about available annotations

Nikolay Borisov (1):
      memory-barriers: Fix description of data dependency barriers

Paul E. McKenney (9):
      Automate memory-barriers.txt; provide Linux-kernel memory model
      EXP litmus_tests: Add comments explaining tests' purposes
      README: Fix a couple of punctuation errors
      MAINTAINERS: Add Akira Yokosawa as an LKMM reviewer
      tools/memory-model: Add required herd7 version to README file
      tools/memory-model: Convert underscores to hyphens
      locking/memory-barriers: De-emphasize smp_read_barrier_depends() some more
      tools/memory-model: Remove mention of docker/gentoo image
      tools/memory-model: Add documentation of new litmus test

Peter Zijlstra (1):
      locking/rtmutex: Handle non enqueued waiters gracefully in remove_waiter()

Randy Dunlap (1):
      mutex: Drop linkage.h from mutex.h

Tetsuo Handa (1):
      lockdep: Make the lock debug output more useful

Waiman Long (3):
      locking/rwsem: Add DEBUG_RWSEMS to look for lock/unlock mismatches
      locking/Kconfig: Add LOCK_DEBUGGING_SUPPORT to make it more readable
      locking/Kconfig: Restructure the lock debugging menu


 Documentation/locking/lockdep-design.txt           |   51 +-
 Documentation/memory-barriers.txt                  |   34 +-
 MAINTAINERS                                        |   18 +
 arch/alpha/include/asm/cmpxchg.h                   |   20 +-
 arch/alpha/include/asm/xchg.h                      |   27 -
 arch/x86/include/asm/atomic.h                      |  106 +-
 arch/x86/include/asm/atomic64_32.h                 |  106 +-
 arch/x86/include/asm/atomic64_64.h                 |  108 +-
 arch/x86/include/asm/cmpxchg.h                     |   12 +-
 arch/x86/include/asm/cmpxchg_32.h                  |    8 +-
 arch/x86/include/asm/cmpxchg_64.h                  |    4 +-
 include/asm-generic/atomic-instrumented.h          |  476 +++++
 include/linux/mutex.h                              |    1 -
 kernel/locking/lockdep.c                           |   26 +-
 kernel/locking/rtmutex.c                           |    3 +-
 kernel/locking/rtmutex_common.h                    |   11 +-
 kernel/locking/rwsem.c                             |    4 +
 kernel/locking/rwsem.h                             |    8 +-
 lib/Kconfig.debug                                  |  150 +-
 tools/memory-model/Documentation/cheatsheet.txt    |   29 +
 tools/memory-model/Documentation/explanation.txt   | 1845 ++++++++++++++++++++
 tools/memory-model/Documentation/recipes.txt       |  570 ++++++
 tools/memory-model/Documentation/references.txt    |  107 ++
 tools/memory-model/README                          |  206 +++
 tools/memory-model/linux-kernel.bell               |   52 +
 tools/memory-model/linux-kernel.cat                |  121 ++
 tools/memory-model/linux-kernel.cfg                |   21 +
 tools/memory-model/linux-kernel.def                |  106 ++
 .../litmus-tests/CoRR+poonceonce+Once.litmus       |   26 +
 .../litmus-tests/CoRW+poonceonce+Once.litmus       |   25 +
 .../litmus-tests/CoWR+poonceonce+Once.litmus       |   25 +
 .../litmus-tests/CoWW+poonceonce.litmus            |   18 +
 .../litmus-tests/IRIW+mbonceonces+OnceOnce.litmus  |   45 +
 .../litmus-tests/IRIW+poonceonces+OnceOnce.litmus  |   43 +
 .../ISA2+pooncelock+pooncelock+pombonce.litmus     |   41 +
 .../litmus-tests/ISA2+poonceonces.litmus           |   37 +
 ...cerelease+poacquirerelease+poacquireonce.litmus |   39 +
 .../litmus-tests/LB+ctrlonceonce+mbonceonce.litmus |   34 +
 .../LB+poacquireonce+pooncerelease.litmus          |   29 +
 .../litmus-tests/LB+poonceonces.litmus             |   28 +
 .../litmus-tests/MP+onceassign+derefonce.litmus    |   34 +
 tools/memory-model/litmus-tests/MP+polocks.litmus  |   35 +
 .../litmus-tests/MP+poonceonces.litmus             |   27 +
 .../MP+pooncerelease+poacquireonce.litmus          |   28 +
 .../memory-model/litmus-tests/MP+porevlocks.litmus |   35 +
 .../litmus-tests/MP+wmbonceonce+rmbonceonce.litmus |   30 +
 .../memory-model/litmus-tests/R+mbonceonces.litmus |   30 +
 .../memory-model/litmus-tests/R+poonceonces.litmus |   27 +
 tools/memory-model/litmus-tests/README             |  131 ++
 .../memory-model/litmus-tests/S+poonceonces.litmus |   28 +
 .../S+wmbonceonce+poacquireonce.litmus             |   27 +
 .../litmus-tests/SB+mbonceonces.litmus             |   32 +
 .../litmus-tests/SB+poonceonces.litmus             |   29 +
 .../litmus-tests/WRC+poonceonces+Once.litmus       |   35 +
 .../WRC+pooncerelease+rmbonceonce+Once.litmus      |   36 +
 .../Z6.0+pooncelock+poonceLock+pombonce.litmus     |   42 +
 .../Z6.0+pooncelock+pooncelock+pombonce.litmus     |   40 +
 ...ooncerelease+poacquirerelease+mbonceonce.litmus |   42 +
 tools/memory-model/lock.cat                        |   99 ++
 59 files changed, 5106 insertions(+), 301 deletions(-)
 create mode 100644 include/asm-generic/atomic-instrumented.h
 create mode 100644 tools/memory-model/Documentation/cheatsheet.txt
 create mode 100644 tools/memory-model/Documentation/explanation.txt
 create mode 100644 tools/memory-model/Documentation/recipes.txt
 create mode 100644 tools/memory-model/Documentation/references.txt
 create mode 100644 tools/memory-model/README
 create mode 100644 tools/memory-model/linux-kernel.bell
 create mode 100644 tools/memory-model/linux-kernel.cat
 create mode 100644 tools/memory-model/linux-kernel.cfg
 create mode 100644 tools/memory-model/linux-kernel.def
 create mode 100644 tools/memory-model/litmus-tests/CoRR+poonceonce+Once.litmus
 create mode 100644 tools/memory-model/litmus-tests/CoRW+poonceonce+Once.litmus
 create mode 100644 tools/memory-model/litmus-tests/CoWR+poonceonce+Once.litmus
 create mode 100644 tools/memory-model/litmus-tests/CoWW+poonceonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/IRIW+mbonceonces+OnceOnce.litmus
 create mode 100644 tools/memory-model/litmus-tests/IRIW+poonceonces+OnceOnce.litmus
 create mode 100644 tools/memory-model/litmus-tests/ISA2+pooncelock+pooncelock+pombonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/ISA2+poonceonces.litmus
 create mode 100644 tools/memory-model/litmus-tests/ISA2+pooncerelease+poacquirerelease+poacquireonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/LB+ctrlonceonce+mbonceonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/LB+poacquireonce+pooncerelease.litmus
 create mode 100644 tools/memory-model/litmus-tests/LB+poonceonces.litmus
 create mode 100644 tools/memory-model/litmus-tests/MP+onceassign+derefonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/MP+polocks.litmus
 create mode 100644 tools/memory-model/litmus-tests/MP+poonceonces.litmus
 create mode 100644 tools/memory-model/litmus-tests/MP+pooncerelease+poacquireonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/MP+porevlocks.litmus
 create mode 100644 tools/memory-model/litmus-tests/MP+wmbonceonce+rmbonceonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/R+mbonceonces.litmus
 create mode 100644 tools/memory-model/litmus-tests/R+poonceonces.litmus
 create mode 100644 tools/memory-model/litmus-tests/README
 create mode 100644 tools/memory-model/litmus-tests/S+poonceonces.litmus
 create mode 100644 tools/memory-model/litmus-tests/S+wmbonceonce+poacquireonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/SB+mbonceonces.litmus
 create mode 100644 tools/memory-model/litmus-tests/SB+poonceonces.litmus
 create mode 100644 tools/memory-model/litmus-tests/WRC+poonceonces+Once.litmus
 create mode 100644 tools/memory-model/litmus-tests/WRC+pooncerelease+rmbonceonce+Once.litmus
 create mode 100644 tools/memory-model/litmus-tests/Z6.0+pooncelock+poonceLock+pombonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/Z6.0+pooncelock+pooncelock+pombonce.litmus
 create mode 100644 tools/memory-model/litmus-tests/Z6.0+pooncerelease+poacquirerelease+mbonceonce.litmus
 create mode 100644 tools/memory-model/lock.cat

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-04-02  6:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-02  6:57 [GIT PULL] locking changes for v4.17 Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.