Hello, Ingo, and Happy New Year! This pull request contains the following changes:
1. 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. http://lkml.kernel.org/r/20171201192122.ga19...@linux.vnet.ibm.com 2. Updates to simplify RCU's dyntick-idle handling. http://lkml.kernel.org/r/20171201193625.ga20...@linux.vnet.ibm.com 3. Miscellaneous fixes. http://lkml.kernel.org/r/20171201194139.ga22...@linux.vnet.ibm.com 4. Updates to remove almost all uses of smp_read_barrier_depends() and read_barrier_depends(). http://lkml.kernel.org/r/20171201195053.ga23...@linux.vnet.ibm.com 5. Torture-test updates. http://lkml.kernel.org/r/20171201200819.ga25...@linux.vnet.ibm.com All of these changes have been subjected to 0day Test Robot and -next testing, and are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git for-mingo for you to fetch changes up to 1dfa55e01987288d847220b8c027204871440ed1: Merge branches 'cond_resched.2017.12.04a', 'dyntick.2017.11.28a', 'fixes.2017.12.11a', 'srbd.2017.12.05a' and 'torture.2017.12.11a' into HEAD (2017-12-11 09:21:58 -0800) ---------------------------------------------------------------- Davidlohr Bueso (2): locking/locktorture: Fix rwsem reader_delay locking/locktorture: Fix num reader/writer corner cases Paul E. McKenney (59): 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 Merge branches 'cond_resched.2017.12.04a', 'dyntick.2017.11.28a', 'fixes.2017.12.11a', 'srbd.2017.12.05a' and 'torture.2017.12.11a' into HEAD 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