• Linus Torvalds's avatar
    Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3478588b
    Linus Torvalds authored
    Pull locking updates from Ingo Molnar:
     "The biggest part of this tree is the new auto-generated atomics API
      wrappers by Mark Rutland.
    
      The primary motivation was to allow instrumentation without uglifying
      the primary source code.
    
      The linecount increase comes from adding the auto-generated files to
      the Git space as well:
    
        include/asm-generic/atomic-instrumented.h     | 1689 ++++++++++++++++--
        include/asm-generic/atomic-long.h             | 1174 ++++++++++---
        include/linux/atomic-fallback.h               | 2295 +++++++++++++++++++++++++
        include/linux/atomic.h                        | 1241 +------------
    
      I preferred this approach, so that the full call stack of the (already
      complex) locking APIs is still fully visible in 'git grep'.
    
      But if this is excessive we could certainly hide them.
    
      There's a separate build-time mechanism to determine whether the
      headers are out of date (they should never be stale if we do our job
      right).
    
      Anyway, nothing from this should be visible to regular kernel
      developers.
    
      Other changes:
    
       - Add support for dynamic keys, which removes a source of false
         positives in the workqueue code, among other things (Bart Van
         Assche)
    
       - Updates to tools/memory-model (Andrea Parri, Paul E. McKenney)
    
       - qspinlock, wake_q and lockdep micro-optimizations (Waiman Long)
    
       - misc other updates and enhancements"
    
    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (48 commits)
      locking/lockdep: Shrink struct lock_class_key
      locking/lockdep: Add module_param to enable consistency checks
      lockdep/lib/tests: Test dynamic key registration
      lockdep/lib/tests: Fix run_tests.sh
      kernel/workqueue: Use dynamic lockdep keys for workqueues
      locking/lockdep: Add support for dynamic keys
      locking/lockdep: Verify whether lock objects are small enough to be used as class keys
      locking/lockdep: Check data structure consistency
      locking/lockdep: Reuse lock chains that have been freed
      locking/lockdep: Fix a comment in add_chain_cache()
      locking/lockdep: Introduce lockdep_next_lockchain() and lock_chain_count()
      locking/lockdep: Reuse list entries that are no longer in use
      locking/lockdep: Free lock classes that are no longer in use
      locking/lockdep: Update two outdated comments
      locking/lockdep: Make it easy to detect whether or not inside a selftest
      locking/lockdep: Split lockdep_free_key_range() and lockdep_reset_lock()
      locking/lockdep: Initialize the locks_before and locks_after lists earlier
      locking/lockdep: Make zap_class() remove all matching lock order entries
      locking/lockdep: Reorder struct lock_class members
      locking/lockdep: Avoid that add_chain_cache() adds an invalid chain to the cache
      ...
    3478588b
core.c 175 KB