[GIT PULL rcu/next] RCU commits for 4.12

From: Paul E. McKenney
Date: Fri Apr 21 2017 - 12:49:42 EST


Hello, Ingo,

This pull request contains the following changes:

1. Documentation updates.

http://lkml.kernel.org/r/20170412163956.GA15691@xxxxxxxxxxxxxxxxxx

2. Miscellaneous fixes.

http://lkml.kernel.org/r/20170417232714.GA19013@xxxxxxxxxxxxxxxxxx

3. Parallelize SRCU callback handling (plus overlapping patches).

http://lkml.kernel.org/r/20170419165805.GB10874@xxxxxxxxxxxxxxxxxx

http://lkml.kernel.org/r/87zifatu3a.fsf@xxxxxxxxxxxxxxxxxxxxxxxx

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