[GIT PULL] RCU changes for v4.16

From: Ingo Molnar
Date: Mon Jan 29 2018 - 05:01:03 EST


Linus,

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

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

# HEAD: 475c5ee193fd682c6383b5e418e65e46a477d176 Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu

The main RCU changes in this cycle were:

- Updates to use cond_resched() instead of cond_resched_rcu_qs()
where feasible (currently everywhere except in kernel/rcu and
in kernel/torture.c). Also a couple of fixes to avoid sending
IPIs to offline CPUs.

- Updates to simplify RCU's dyntick-idle handling.

- Updates to remove almost all uses of smp_read_barrier_depends()
and read_barrier_depends().

- Torture-test updates.

- Miscellaneous fixes.

Thanks,

Ingo

------------------>
Davidlohr Bueso (2):
locking/locktorture: Fix rwsem reader_delay
locking/locktorture: Fix num reader/writer corner cases

Paul E. McKenney (58):
rcu: Avoid ->dynticks_nmi_nesting store tearing
rcu: Reduce dyntick-idle state space
rcu: Move rcu_nmi_{enter,exit}() to prepare for consolidation
rcu: Clamp ->dynticks_nmi_nesting at eqs entry/exit
rcu: Define rcu_irq_{enter,exit}() in terms of rcu_nmi_{enter,exit}()
rcu: Make ->dynticks_nesting be a simple counter
rcu: Eliminate rcu_irq_enter_disabled()
rcu: Add tracing to irq/NMI dyntick-idle transitions
rcu: Shrink ->dynticks_{nmi_,}nesting from long long to long
rcu: Add ->dynticks field to rcu_dyntick trace event
rcu: Stop duplicating lockdep checks in RCU's idle-entry code
rcu: Avoid ->dynticks_nesting store tearing
rcu: Fold rcu_eqs_enter_common() into rcu_eqs_enter()
rcu: Fold rcu_eqs_exit_common() into rcu_eqs_exit()
rcu: Simplify rcu_eqs_{enter,exit}() non-idle task debug code
doc: Update dyntick-idle design documentation for NMI/irq consolidation
srcu: Prohibit call_srcu() use under raw spinlocks
torture: Suppress CPU stall warnings during shutdown ftrace dump
torture: Prepare scripting for shift from %p to %pK
sched: Stop resched_cpu() from sending IPIs to offline CPUs
sched: Stop switched_to_rt() from sending IPIs to offline CPUs
netfilter: Eliminate cond_resched_rcu_qs() in favor of cond_resched()
mm: Eliminate cond_resched_rcu_qs() in favor of cond_resched()
workqueue: Eliminate cond_resched_rcu_qs() in favor of cond_resched()
trace: Eliminate cond_resched_rcu_qs() in favor of cond_resched()
softirq: Eliminate cond_resched_rcu_qs() in favor of cond_resched()
fs: Eliminate cond_resched_rcu_qs() in favor of cond_resched()
doc: Eliminate cond_resched_rcu_qs() in favor of cond_resched()
rcu: Account for rcu_all_qs() in cond_resched()
doc: READ_ONCE() now implies smp_barrier_depends()
mn10300: READ_ONCE() now implies smp_read_barrier_depends()
drivers/net/ethernet/qlogic/qed: Fix __qed_spq_block() ordering
fs/dcache: Use release-acquire for name/length update
percpu: READ_ONCE() now implies smp_read_barrier_depends()
rcu: Adjust read-side accessor comments for READ_ONCE()
rtnetlink: Update now-misleading smp_read_barrier_depends() comment
seqlock: Remove now-redundant smp_read_barrier_depends()
uprobes: Remove now-redundant smp_read_barrier_depends()
locking: Remove smp_read_barrier_depends() from queued_spin_lock_slowpath()
tracepoint: Remove smp_read_barrier_depends() from comment
lib/assoc_array: Remove smp_read_barrier_depends()
mm/ksm: Remove now-redundant smp_read_barrier_depends()
netfilter: Remove now-redundant smp_read_barrier_depends()
keyring: Remove now-redundant smp_read_barrier_depends()
drivers/infiniband: Remove now-redundant smp_read_barrier_depends()
drivers/dma/ioat: Remove now-redundant smp_read_barrier_depends()
doc: De-emphasize smp_read_barrier_depends
genetlink: Remove smp_read_barrier_depends() from comment
netlink: Remove smp_read_barrier_depends() from comment
checkpatch: Add warnings for {smp_,}read_barrier_depends()
drivers/vhost: Remove now-redundant read_barrier_depends()
rcu: Add comment giving debug strategy for double call_rcu()
torture: Reduce #ifdefs for preempt_schedule()
rcutorture: Preempt RCU-preempt readers more vigorously
torture: Place all torture-test modules in one MAINTAINERS group
torture: Make stutter less vulnerable to compilers and races
torture: Eliminate torture_runnable and perf_runnable
torture: Save a line in stutter_wait(): while -> for

Rakib Mullick (1):
rcu: Remove have_rcu_nocb_mask from tree_plugin.h

SeongJae Park (9):
rcutorture/configinit: Fix build directory error message
rcutorture: Remove unused script, config2frag.sh
rcutorture/kvm.sh: Remove unused variable, `alldone`
rcutorture/kvm.sh: Use consistent help text for --qemu-args
rcutorture/kvm.sh: Support execution from any directory
rcutorture/kvm-recheck-*: Improve result directory readability check
rcutorture: Simplify logging
rcutorture: Simplify functions.sh include path
rcutorture/kvm-build.sh: Skip build directory check

Steven Rostedt (VMware) (2):
tracing, rcu: Remove no longer used trace event rcu_prep_idle
tracing, rcu: Hide trace event rcu_nocb_wake when not used


.../Design/Data-Structures/Data-Structures.html | 49 ++-
.../RCU/Design/Requirements/Requirements.html | 7 +-
Documentation/RCU/rcu_dereference.txt | 6 +-
Documentation/RCU/stallwarn.txt | 10 +-
Documentation/RCU/whatisRCU.txt | 3 +-
Documentation/admin-guide/kernel-parameters.txt | 9 -
Documentation/circular-buffers.txt | 3 +-
Documentation/locking/locktorture.txt | 5 -
Documentation/memory-barriers.txt | 22 +-
MAINTAINERS | 22 +-
arch/mn10300/kernel/mn10300-serial.c | 7 +-
drivers/dma/ioat/dma.c | 2 -
drivers/infiniband/Kconfig | 1 +
drivers/infiniband/hw/hfi1/rc.c | 4 -
drivers/infiniband/hw/hfi1/ruc.c | 1 -
drivers/infiniband/hw/hfi1/sdma.c | 1 -
drivers/infiniband/hw/hfi1/uc.c | 2 -
drivers/infiniband/hw/hfi1/ud.c | 2 -
drivers/infiniband/hw/qib/qib_rc.c | 3 -
drivers/infiniband/hw/qib/qib_ruc.c | 1 -
drivers/infiniband/hw/qib/qib_uc.c | 2 -
drivers/infiniband/hw/qib/qib_ud.c | 2 -
drivers/infiniband/sw/rdmavt/qp.c | 1 -
drivers/net/ethernet/qlogic/qed/qed_spq.c | 4 +-
drivers/vhost/vhost.c | 7 +-
fs/dcache.c | 10 +-
fs/file.c | 2 +-
include/linux/genetlink.h | 3 +-
include/linux/netfilter/nfnetlink.h | 3 +-
include/linux/percpu-refcount.h | 6 +-
include/linux/rcupdate.h | 25 +-
include/linux/rcutiny.h | 1 -
include/linux/rcutree.h | 1 -
include/linux/rtnetlink.h | 3 +-
include/linux/seqlock.h | 3 +-
include/linux/srcutree.h | 8 +-
include/linux/torture.h | 8 +-
include/linux/tracepoint.h | 5 +-
include/trace/events/rcu.h | 75 ++---
kernel/events/uprobes.c | 12 +-
kernel/locking/locktorture.c | 108 +++----
kernel/locking/qspinlock.c | 12 +-
kernel/rcu/rcu.h | 27 +-
kernel/rcu/rcuperf.c | 6 +-
kernel/rcu/rcutorture.c | 12 +-
kernel/rcu/srcutree.c | 109 ++++---
kernel/rcu/tree.c | 355 ++++++++-------------
kernel/rcu/tree.h | 5 +-
kernel/rcu/tree_plugin.h | 13 +-
kernel/sched/core.c | 3 +-
kernel/sched/rt.c | 2 +-
kernel/softirq.c | 2 +-
kernel/torture.c | 39 ++-
kernel/trace/trace.c | 11 -
kernel/trace/trace_benchmark.c | 2 +-
kernel/tracepoint.c | 9 +-
kernel/workqueue.c | 2 +-
lib/assoc_array.c | 37 +--
lib/percpu-refcount.c | 8 +-
mm/ksm.c | 9 +-
mm/mlock.c | 2 +-
net/ipv4/netfilter/arp_tables.c | 7 +-
net/ipv4/netfilter/ip_tables.c | 7 +-
net/ipv6/netfilter/ip6_tables.c | 7 +-
net/netfilter/nf_conntrack_core.c | 2 +-
scripts/checkpatch.pl | 6 +
security/keys/keyring.c | 7 -
.../selftests/rcutorture/bin/config2frag.sh | 25 --
.../testing/selftests/rcutorture/bin/configinit.sh | 2 +-
.../testing/selftests/rcutorture/bin/kvm-build.sh | 5 -
.../selftests/rcutorture/bin/kvm-recheck-lock.sh | 2 +-
.../selftests/rcutorture/bin/kvm-recheck-rcu.sh | 4 +-
.../rcutorture/bin/kvm-recheck-rcuperf-ftrace.sh | 2 +-
.../rcutorture/bin/kvm-recheck-rcuperf.sh | 4 +-
.../selftests/rcutorture/bin/kvm-recheck.sh | 2 +-
.../selftests/rcutorture/bin/kvm-test-1-run.sh | 6 +-
tools/testing/selftests/rcutorture/bin/kvm.sh | 42 +--
.../selftests/rcutorture/bin/parse-torture.sh | 2 +-
.../rcutorture/configs/lock/ver_functions.sh | 1 -
.../rcutorture/configs/rcu/ver_functions.sh | 1 -
.../rcutorture/configs/rcuperf/ver_functions.sh | 1 -
81 files changed, 501 insertions(+), 748 deletions(-)
delete mode 100755 tools/testing/selftests/rcutorture/bin/config2frag.sh