Hello, Ingo, This pull request contains the following changes:
1. Documentation updates. http://lkml.kernel.org/r/20170412163956.ga15...@linux.vnet.ibm.com 2. Miscellaneous fixes. http://lkml.kernel.org/r/20170417232714.ga19...@linux.vnet.ibm.com 3. Parallelize SRCU callback handling (plus overlapping patches). http://lkml.kernel.org/r/20170419165805.gb10...@linux.vnet.ibm.com http://lkml.kernel.org/r/87zifatu3a....@concordia.ellerman.id.au 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 f2094107ac82bf867184efd77cee30b6a98e2e20: Merge branches 'doc.2017.04.12a', 'fixes.2017.04.19a' and 'srcu.2017.04.21a' into HEAD (2017-04-21 06:00:13 -0700) ---------------------------------------------------------------- Dmitry Vyukov (1): rcu: Fix warning in rcu_seq_end() Michael S. Tsirkin (1): hlist_add_tail_rcu disable sparse warning Michalis Kokologiannakis (1): doc: Update the comparisons rule in rcu_dereference.txt Nicholas Mc Guire (2): rcu: Use bool value directly rcu: Use true/false in assignment to bool Paul E. McKenney (56): doc: Synchronous RCU grace periods are now legal throughout boot doc: Add mid-boot operation to expedited grace periods doc: Update stallwarn.txt to make causes more prominent doc: Update RCU data-structure documentation for rcu_segcblist doc: Update requirements based on recent changes doc: Update rcu_assign_pointer() definition in whatisRCU.txt doc: Emphasize that "toy" RCU requires recursive rwlock rcu: Maintain special bits at bottom of ->dynticks counter rcu: Make arch select smp_mb__after_unlock_lock() strength srcu: Consolidate batch checking into rcu_all_batches_empty() srcu: Check for tardy grace-period activity in cleanup_srcu_struct() rcu: Semicolon inside RCU_TRACE() for rcu.h rcu: Semicolon inside RCU_TRACE() for Tiny RCU rcu: Semicolon inside RCU_TRACE() for tree.c rcu: Pull rcu_sched_qs_mask into rcu_dynticks structure rcu: Pull rcu_qs_ctr into rcu_dynticks structure rcu: Eliminate flavor scan in rcu_momentary_dyntick_idle() rcu: Place guard on rcu_all_qs() and rcu_note_context_switch() actions rcu: Default RCU_FANOUT_LEAF to 16 unless explicitly changed srcu: Abstract multi-tail callback list handling srcu: Allow SRCU to access rcu_scheduler_active srcu: Allow early boot use of synchronize_srcu() rcu: Add single-element dequeue functions to rcu_segcblist srcu: Move rcu_seq_start() and friends to rcu.h rcu: Expedited wakeups need to be fully ordered srcu: Push srcu_advance_batches() fastpath into common case srcu: Move to state-based grace-period sequencing srcu: Add grace-period sequence numbers srcu: Use rcu_segcblist to track SRCU callbacks srcu: Move combining-tree definitions for SRCU's benefit srcu: Move rcu_init_levelspread() to rcu_tree_node.h rcu: Remove redundant levelcnt[] array from rcu_init_one() srcu: Move rcu_node traversal macros to rcu.h srcu: Make num_rcu_lvl[] array be external srcu: Fix bogus try_check_zero() comment srcu: Improve rcu_seq grace-period-counter abstraction srcu: Allow a second bit in rcu_seq for SRCU state srcu: Merge ->srcu_state into ->srcu_gp_seq srcu: Crude control of expedited grace periods mm: Use static initialization for "srcu" srcu: Create a tiny SRCU srcutorture: Print Tiny SRCU reader statistics srcu: Introduce CLASSIC_SRCU Kconfig option mm: Rename SLAB_DESTROY_BY_RCU to SLAB_TYPESAFE_BY_RCU lockdep: Use "WARNING" tag on lockdep splats types: Update obsolete callback_head comment rcu: Make RCU_FANOUT_LEAF help text more explicit about skew_tick rcu: Remove obsolete comment from rcu_future_gp_cleanup() header rcu: Improve comments for hotplug/suspend/hibernate functions torture: Use correct path for Kconfig fragment for duplicates rcu: Fix typo in PER_RCU_NODE_PERIOD header comment kvm: Move srcu_struct fields to end of struct kvm srcu: Parallelize callback handling srcu: Expedite srcu_schedule_cbs_snp() callback invocation rcu: Make non-preemptive schedule be Tasks RCU quiescent state Merge branches 'doc.2017.04.12a', 'fixes.2017.04.19a' and 'srcu.2017.04.21a' into HEAD pierre Kuo (1): doc: Update control-dependencies section of memory-barriers.txt Documentation/RCU/00-INDEX | 2 +- .../Design/Data-Structures/Data-Structures.html | 233 +++-- .../RCU/Design/Data-Structures/nxtlist.svg | 34 +- .../Expedited-Grace-Periods.html | 47 +- .../RCU/Design/Requirements/Requirements.html | 195 ++-- Documentation/RCU/rcu_dereference.txt | 9 + Documentation/RCU/rculist_nulls.txt | 6 +- Documentation/RCU/stallwarn.txt | 190 ++-- Documentation/RCU/whatisRCU.txt | 32 +- Documentation/memory-barriers.txt | 2 +- arch/Kconfig | 3 + arch/powerpc/Kconfig | 1 + drivers/gpu/drm/i915/i915_gem.c | 2 +- drivers/gpu/drm/i915/i915_gem_request.h | 2 +- drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c | 2 +- fs/jbd2/journal.c | 2 +- fs/signalfd.c | 2 +- include/linux/dma-fence.h | 4 +- include/linux/kvm_host.h | 4 +- include/linux/rcu_node_tree.h | 99 ++ include/linux/rcu_segcblist.h | 712 +++++++++++++++ include/linux/rculist.h | 3 +- include/linux/rcupdate.h | 17 +- include/linux/rcutiny.h | 24 +- include/linux/rcutree.h | 5 +- include/linux/slab.h | 6 +- include/linux/srcu.h | 84 +- include/linux/srcuclassic.h | 101 +++ include/linux/srcutiny.h | 81 ++ include/linux/srcutree.h | 139 +++ include/linux/types.h | 2 +- include/net/sock.h | 2 +- init/Kconfig | 39 +- kernel/fork.c | 4 +- kernel/locking/lockdep.c | 86 +- kernel/locking/rtmutex-debug.c | 9 +- kernel/rcu/Makefile | 4 +- kernel/rcu/rcu.h | 153 +++- kernel/rcu/rcutorture.c | 35 +- kernel/rcu/srcu.c | 12 +- kernel/rcu/srcutiny.c | 215 +++++ kernel/rcu/srcutree.c | 996 +++++++++++++++++++++ kernel/rcu/tiny.c | 20 +- kernel/rcu/tiny_plugin.h | 13 +- kernel/rcu/tree.c | 696 ++++++-------- kernel/rcu/tree.h | 164 +--- kernel/rcu/tree_exp.h | 25 +- kernel/rcu/tree_plugin.h | 64 +- kernel/rcu/tree_trace.c | 26 +- kernel/rcu/update.c | 53 +- kernel/sched/core.c | 2 +- kernel/signal.c | 2 +- mm/kasan/kasan.c | 6 +- mm/kmemcheck.c | 2 +- mm/mmu_notifier.c | 14 +- mm/rmap.c | 4 +- mm/slab.c | 6 +- mm/slab.h | 4 +- mm/slab_common.c | 6 +- mm/slob.c | 6 +- mm/slub.c | 12 +- net/dccp/ipv4.c | 2 +- net/dccp/ipv6.c | 2 +- net/ipv4/tcp_ipv4.c | 2 +- net/ipv6/tcp_ipv6.c | 2 +- net/llc/af_llc.c | 2 +- net/llc/llc_conn.c | 4 +- net/llc/llc_sap.c | 2 +- net/netfilter/nf_conntrack_core.c | 8 +- net/smc/af_smc.c | 2 +- .../selftests/rcutorture/bin/kvm-test-1-run.sh | 2 +- 71 files changed, 3637 insertions(+), 1116 deletions(-) create mode 100644 include/linux/rcu_node_tree.h create mode 100644 include/linux/rcu_segcblist.h create mode 100644 include/linux/srcuclassic.h create mode 100644 include/linux/srcutiny.h create mode 100644 include/linux/srcutree.h create mode 100644 kernel/rcu/srcutiny.c create mode 100644 kernel/rcu/srcutree.c