[GIT PULL v2] locking changes for v4.11
From: Ingo Molnar
Date: Mon Feb 20 2017 - 05:33:03 EST
* Ingo Molnar <mingo@xxxxxxxxxx> wrote:
> 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: bc88c10d7e6900916f5e1ba3829d66a9de92b633 locking/spinlock/debug: Remove spinlock lockup detection code
Hm, Peter just reminded me that I forgot to apply a fix that squashes a boot time
warning on some x86 CPUs.
I've pushed a new version with that single commit (95cb64c1fe6) appended, the
updated diffstat and shortlog is below:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking-core-for-linus
# HEAD: 95cb64c1fe61e70685a95f6260c8e9cd219fe08c fork: Fix task_struct alignment
... sorry about this!
Thanks,
Ingo
------------------>
Andy Shevchenko (1):
locking/jump_labels: Update bug_at() boot message
Byungchul Park (1):
lockdep: Fix incorrect condition to print bug msgs for MAX_LOCKDEP_CHAIN_HLOCKS
Chris Wilson (8):
locking/ww_mutex: Fix compilation of __WW_MUTEX_INITIALIZER
locking/ww_mutex: Add ww_mutex to locktorture test
locking/ww_mutex: Begin kselftests for ww_mutex
locking/ww_mutex: Add kselftests for ww_mutex AA deadlock detection
locking/ww_mutex: Add kselftests for ww_mutex ABBA deadlock detection
locking/ww_mutex: Add kselftests for resolving ww_mutex cyclic deadlocks
locking/ww_mutex: Add kselftests for ww_mutex stress
locking/ww_mutex: Add ww_mutex to tools/testing/selftests
Davidlohr Bueso (8):
kernel/exit: Compute 'current' directly
drivers/tty: Compute 'current' directly
kernel/locking: Compute 'current' directly
sched/core: Remove set_task_state()
sched/wait, RCU: Introduce rcuwait machinery
locking/percpu-rwsem: Replace waitqueue with rcuwait
sched/wait, rcuwait: Fix typo in comment
sched/wake_q: Clarify queue reinit comment
Ingo Molnar (1):
locking/ww_mutex: Turn off __must_check for now
Kees Cook (1):
lkdtm: Convert to refcount_t testing
Luis R. Rodriguez (1):
jump_labels: Move header guard #endif down where it belongs
Nicolai Hähnle (10):
locking/ww_mutex: Extract stamp comparison to __ww_mutex_stamp_after()
locking/ww_mutex: Set use_ww_ctx even when locking without a context
locking/ww_mutex: Remove the __ww_mutex_lock*() inline wrappers
locking/ww_mutex: Add waiters in stamp order
locking/ww_mutex: Notify waiters that have to back off while adding tasks to wait list
locking/ww_mutex: Optimize ww-mutexes by waking at most one waiter for backoff when acquiring the lock
locking/ww_mutex: Re-check ww->ctx in the inner optimistic spin loop
locking/ww_mutex: Optimize ww-mutexes by yielding to other waiters from optimistic spin
locking/mutex: Initialize mutex_waiter::ww_ctx with poison when debugging
locking/ww_mutex/Documentation: Update the design document
Pan Xinhui (1):
locking/pvqspinlock: Don't wait if vCPU is preempted
Peter Zijlstra (12):
locking/mutex: Fix mutex handoff
locking/mutex: Improve inlining
locking/atomic, kref: Add KREF_INIT()
locking/atomic, kref: Add kref_read()
locking/atomic, kref: Kill kref_sub()
locking/atomic, kref: Use kref_get_unless_zero() more
locking/atomic, kref: Avoid more abuse
locking/atomic, kref: Implement kref_put_lock()
locking/mutex: Fix lockdep_assert_held() fail
refcount_t: Introduce a special purpose refcount type
kref: Implement 'struct kref' using refcount_t
fork: Fix task_struct alignment
Steven Rostedt (VMware) (1):
locking/rtmutex: Flip unlikely() branch to likely() in __rt_mutex_slowlock()
Waiman Long (5):
locking/spinlocks: Remove the unused spin_lock_bh_nested() API
locking/spinlocks/x86, paravirt: Remove paravirt_ticketlocks_enabled
locking/rwsem: Remove unnecessary atomic_long_t casts
locking/rwsem: Reinit wake_q after use
locking/spinlock/debug: Remove spinlock lockup detection code
Documentation/locking/ww-mutex-design.txt | 12 +-
arch/um/drivers/random.c | 2 +-
arch/x86/include/asm/spinlock.h | 3 -
arch/x86/kernel/jump_label.c | 3 +-
arch/x86/kernel/kvm.c | 14 -
arch/x86/kernel/paravirt-spinlocks.c | 3 -
arch/x86/xen/spinlock.c | 19 -
drivers/block/drbd/drbd_bitmap.c | 2 +-
drivers/block/drbd/drbd_main.c | 7 +-
drivers/block/drbd/drbd_req.c | 31 +-
drivers/block/rbd.c | 8 +-
drivers/block/virtio_blk.c | 2 +-
drivers/gpu/drm/drm_gem_cma_helper.c | 2 +-
drivers/gpu/drm/drm_info.c | 2 +-
drivers/gpu/drm/drm_mode_object.c | 4 +-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 2 +-
drivers/gpu/drm/i915/i915_gem_object.h | 2 +-
drivers/gpu/drm/msm/msm_gem.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_fence.c | 2 +-
drivers/gpu/drm/omapdrm/omap_gem.c | 2 +-
drivers/gpu/drm/ttm/ttm_bo.c | 63 +-
drivers/gpu/drm/ttm/ttm_execbuf_util.c | 4 +-
drivers/gpu/drm/ttm/ttm_object.c | 2 +-
drivers/infiniband/hw/cxgb3/iwch_cm.h | 6 +-
drivers/infiniband/hw/cxgb3/iwch_qp.c | 2 +-
drivers/infiniband/hw/cxgb4/iw_cxgb4.h | 6 +-
drivers/infiniband/hw/cxgb4/qp.c | 2 +-
drivers/infiniband/hw/usnic/usnic_ib_sysfs.c | 6 +-
drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 4 +-
drivers/md/dm-bufio.c | 2 +-
drivers/md/dm-crypt.c | 4 +-
drivers/md/persistent-data/dm-block-manager.c | 4 +-
drivers/misc/genwqe/card_dev.c | 2 +-
drivers/misc/lkdtm.h | 8 +-
drivers/misc/lkdtm_bugs.c | 87 ++-
drivers/misc/lkdtm_core.c | 8 +-
drivers/misc/mei/debugfs.c | 2 +-
drivers/pci/hotplug/pnv_php.c | 2 +-
drivers/pci/slot.c | 2 +-
drivers/scsi/bnx2fc/bnx2fc_io.c | 8 +-
drivers/scsi/cxgbi/libcxgbi.h | 4 +-
drivers/scsi/lpfc/lpfc_debugfs.c | 2 +-
drivers/scsi/lpfc/lpfc_els.c | 2 +-
drivers/scsi/lpfc/lpfc_hbadisc.c | 40 +-
drivers/scsi/lpfc/lpfc_init.c | 3 +-
drivers/scsi/qla2xxx/tcm_qla2xxx.c | 4 +-
drivers/staging/android/ion/ion.c | 2 +-
drivers/staging/comedi/comedi_buf.c | 2 +-
.../staging/lustre/lnet/libcfs/linux/linux-debug.c | 2 +-
drivers/target/target_core_pr.c | 10 +-
drivers/target/tcm_fc/tfc_sess.c | 2 +-
drivers/tty/tty_ldsem.c | 18 +-
drivers/usb/gadget/function/f_fs.c | 2 +-
drivers/usb/mon/mon_main.c | 2 +-
fs/exofs/sys.c | 2 +-
fs/fuse/fuse_i.h | 2 +-
fs/ocfs2/cluster/netdebug.c | 2 +-
fs/ocfs2/cluster/tcp.c | 2 +-
fs/ocfs2/dlm/dlmdebug.c | 12 +-
fs/ocfs2/dlm/dlmdomain.c | 2 +-
fs/ocfs2/dlm/dlmmaster.c | 8 +-
fs/ocfs2/dlm/dlmunlock.c | 2 +-
include/asm-generic/rwsem.h | 13 +-
include/drm/drm_framebuffer.h | 2 +-
include/drm/ttm/ttm_bo_api.h | 15 +-
include/drm/ttm/ttm_bo_driver.h | 4 +-
include/linux/jump_label.h | 4 +-
include/linux/kref.h | 78 +--
include/linux/mutex.h | 5 +-
include/linux/percpu-rwsem.h | 8 +-
include/linux/poison.h | 1 +
include/linux/rcuwait.h | 63 ++
include/linux/refcount.h | 294 ++++++++++
include/linux/sched.h | 37 +-
include/linux/spinlock.h | 8 -
include/linux/spinlock_api_smp.h | 2 -
include/linux/spinlock_api_up.h | 1 -
include/linux/sunrpc/cache.h | 2 +-
include/linux/ww_mutex.h | 32 +-
include/net/bluetooth/hci_core.h | 4 +-
init/version.c | 4 +-
kernel/exit.c | 52 +-
kernel/fork.c | 6 +-
kernel/locking/Makefile | 1 +
kernel/locking/lockdep.c | 2 +-
kernel/locking/locktorture.c | 73 +++
kernel/locking/mutex-debug.h | 17 -
kernel/locking/mutex.c | 516 ++++++++++------
kernel/locking/mutex.h | 4 -
kernel/locking/percpu-rwsem.c | 7 +-
kernel/locking/qspinlock_paravirt.h | 2 +-
kernel/locking/rtmutex.c | 2 +-
kernel/locking/rwsem-spinlock.c | 18 +-
kernel/locking/rwsem-xadd.c | 14 +-
kernel/locking/semaphore.c | 7 +-
kernel/locking/spinlock.c | 8 -
kernel/locking/spinlock_debug.c | 86 +--
kernel/locking/test-ww_mutex.c | 646 +++++++++++++++++++++
kernel/pid.c | 4 +-
lib/Kconfig.debug | 25 +
net/bluetooth/6lowpan.c | 2 +-
net/bluetooth/a2mp.c | 4 +-
net/bluetooth/amp.c | 4 +-
net/bluetooth/l2cap_core.c | 4 +-
net/ceph/messenger.c | 4 +-
net/ceph/osd_client.c | 10 +-
net/sunrpc/cache.c | 2 +-
net/sunrpc/svc_xprt.c | 6 +-
net/sunrpc/svcauth.c | 15 +-
net/sunrpc/xprtrdma/svc_rdma_transport.c | 4 +-
security/apparmor/include/apparmor.h | 6 -
security/apparmor/include/policy.h | 4 +-
tools/testing/selftests/locking/ww_mutex.sh | 10 +
.../selftests/rcutorture/configs/lock/CFLIST | 1 +
.../selftests/rcutorture/configs/lock/LOCK07 | 6 +
.../selftests/rcutorture/configs/lock/LOCK07.boot | 1 +
116 files changed, 1864 insertions(+), 761 deletions(-)
create mode 100644 include/linux/rcuwait.h
create mode 100644 include/linux/refcount.h
create mode 100644 kernel/locking/test-ww_mutex.c
create mode 100644 tools/testing/selftests/locking/ww_mutex.sh
create mode 100644 tools/testing/selftests/rcutorture/configs/lock/LOCK07
create mode 100644 tools/testing/selftests/rcutorture/configs/lock/LOCK07.boot
[ ... ]