[GIT PULL] locking changes for v4.12

From: Ingo Molnar
Date: Mon May 01 2017 - 06:22:14 EST


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: 59cd42c29618c45cd3c56da43402b14f611888dd MAINTAINERS: Add FUTEX SUBSYSTEM

( NOTE: due to dependencies this tree relies on the sched/core tree. If you did
not pull that tree then disregard this pull request, I'll rework it all. )

The main changes in this cycle were:

- A big round of FUTEX_UNLOCK_PI improvements, fixes, cleanups and general restructuring

- Lockdep updates such as new checks for lock_downgrade()

- Introduce the new atomic_try_cmpxchg() locking API and use it to optimize
refcount code generation

- ... plus misc fixes, updates and cleanups.

Thanks,

Ingo

------------------>

Chris Wilson (1):
locking/ww-mutex: Limit stress test to 2 seconds

Darren Hart (VMware) (2):
futex: Clarify mark_wake_futex memory barrier usage
MAINTAINERS: Add FUTEX SUBSYSTEM

David Windsor (1):
locking/refcount: Add refcount_t API kernel-doc comments

Ingo Molnar (2):
Merge branch 'locking/urgent' into locking/core, to pick up fixes
Merge branch 'linus' into locking/core, to pick up fixes

J. R. Okajima (3):
locking/lockdep: Factor out the find_held_lock() helper function
locking/lockdep: Factor out the validate_held_lock() helper function
locking/lockdep: Add new check to lock_downgrade()

Mike Galbraith (1):
rtmutex: Plug preempt count leak in rt_mutex_futex_unlock()

Peter Zijlstra (25):
locking/ww_mutex: Improve test to cover acquire context changes
locking/atomic: Introduce atomic_try_cmpxchg()
locking/refcounts: Use atomic_try_cmpxchg()
locking/atomic/x86: Use atomic_try_cmpxchg()
futex: Cleanup variable names for futex_top_waiter()
futex: Use smp_store_release() in mark_wake_futex()
futex: Remove rt_mutex_deadlock_account_*()
futex,rt_mutex: Provide futex specific rt_mutex API
futex: Change locking rules
futex: Cleanup refcounting
futex: Rework inconsistent rt_mutex/futex_q state
futex: Pull rt_mutex_futex_unlock() out from under hb->lock
futex,rt_mutex: Introduce rt_mutex_init_waiter()
futex,rt_mutex: Restructure rt_mutex_finish_proxy_lock()
futex: Rework futex_lock_pi() to use rt_mutex_*_proxy_lock()
futex: Futex_unlock_pi() determinism
futex: Drop hb->lock before enqueueing on the rtmutex
lockdep: Fix per-cpu static objects
locking/atomic: Fix atomic_try_cmpxchg() semantics
rtmutex: Clean up
sched/rtmutex: Refactor rt_mutex_setprio()
sched,tracing: Update trace_sched_pi_setprio()
rtmutex: Fix PI chain order integrity
rtmutex: Fix more prio comparisons
futex: Fix small (and harmless looking) inconsistencies

Thomas Gleixner (3):
locking/lockdep: Handle statically initialized PER_CPU locks properly
Merge branch 'sched/core' into locking/core
futex: Avoid freeing an active timer

Xunlei Pang (3):
rtmutex: Deboost before waking up the top waiter
sched/rtmutex/deadline: Fix a PI crash for deadline tasks
sched/deadline/rtmutex: Dont miss the dl_runtime/dl_period update


MAINTAINERS | 17 +++++
arch/x86/include/asm/atomic.h | 33 ++++-----
arch/x86/include/asm/atomic64_64.h | 46 ++++++-------
arch/x86/include/asm/cmpxchg.h | 70 +++++++++++++++++++
include/linux/atomic.h | 46 +++++++++++++
include/linux/init_task.h | 1 +
include/linux/lockdep.h | 3 +
include/linux/module.h | 6 ++
include/linux/percpu.h | 1 +
include/linux/refcount.h | 19 ++++++
include/linux/sched.h | 2 +
include/linux/sched/rt.h | 23 +++----
include/linux/smp.h | 12 ++++
include/trace/events/sched.h | 16 +++--
kernel/cpu.c | 6 ++
kernel/fork.c | 1 +
kernel/futex.c | 518 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------
kernel/locking/lockdep.c | 242 +++++++++++++++++++++++++++++++++++++++++------------------------
kernel/locking/rtmutex-debug.c | 9 ---
kernel/locking/rtmutex-debug.h | 3 -
kernel/locking/rtmutex.c | 390 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------
kernel/locking/rtmutex.h | 2 -
kernel/locking/rtmutex_common.h | 25 +++++--
kernel/locking/rwsem.c | 6 +-
kernel/locking/test-ww_mutex.c | 29 ++++----
kernel/module.c | 42 ++++++++----
kernel/sched/core.c | 64 +++++++++++++++---
lib/refcount.c | 169 ++++++++++++++++++++++++++++++++++------------
mm/percpu.c | 40 +++++++----
29 files changed, 1231 insertions(+), 610 deletions(-)