Skip to content
  • Linus Torvalds's avatar
    Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 701f3b31
    Linus Torvalds authored
    Pull locking updates from Ingo Molnar:
     "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 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"
    
    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (31 commits)
      locking/Kconfig: Restructure the lock debugging menu
      locking/Kconfig: Add LOCK_DEBUGGING_SUPPORT to make it more readable
      locking/rwsem: Add DEBUG_RWSEMS to look for lock/unlock mismatches
      lockdep: Make the lock debug output more useful
      locking/rtmutex: Handle non enqueued waiters gracefully in remove_waiter()
      locking/atomic, asm-generic, x86: Add comments for atomic instrumentation
      locking/atomic, asm-generic: Add KASAN instrumentation to atomic operations
      locking/atomic/x86: Switch atomic.h to use atomic-instrumented.h
      locking/atomic, asm-generic: Add asm-generic/atomic-instrumented.h
      locking/xchg/alpha: Remove superfluous memory barriers from the _local() variants
      tools/memory-model: Finish the removal of rb-dep, smp_read_barrier_depends(), and lockless_dereference()
      tools/memory-model: Add documentation of new litmus test
      tools/memory-model: Remove mention of docker/gentoo image
      locking/memory-barriers: De-emphasize smp_read_barrier_depends() some more
      locking/lockdep: Show unadorned pointers
      mutex: Drop linkage.h from mutex.h
      tools/memory-model: Remove rb-dep, smp_read_barrier_depends, and lockless_dereference
      tools/memory-model: Convert underscores to hyphens
      tools/memory-model: Add a S lock-based external-view litmus test
      tools/memory-model: Add required herd7 version to README file
      ...
    701f3b31