[GIT PULL rcu/next] RCU commits for 4.11

From: Paul E. McKenney
Date: Mon Jan 30 2017 - 12:28:22 EST


Hello, Ingo,

This pull request contains the following changes:

1. Documentation updates.

http://lkml.kernel.org/r/20170114085032.GA18485@xxxxxxxxxxxxxxxxxx

2. Dyntick updates, consolidating open-coded counter accesses
into a well-defined API.

http://lkml.kernel.org/r/20170124214602.GA2269@xxxxxxxxxxxxxxxxxx

3. Miscellaneous fixes.

http://lkml.kernel.org/r/20170124215111.GB2269@xxxxxxxxxxxxxxxxxx

4. SRCU updates: Simplify algorithm, add formal verification.

http://lkml.kernel.org/r/20170124220011.GC2269@xxxxxxxxxxxxxxxxxx

5. Torture-test updates.

http://lkml.kernel.org/r/20170114092533.GA23650@xxxxxxxxxxxxxxxxxx

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 31945aa9f14085c81cb3257e51bb210698b78626:

Merge branches 'doc.2017.01.15b', 'dyntick.2017.01.23a', 'fixes.2017.01.23a', 'srcu.2017.01.25a' and 'torture.2017.01.15b' into HEAD (2017-01-25 12:56:05 -0800)

----------------------------------------------------------------
Byungchul Park (1):
rcu: Only dump stalled-tasks stacks if there was a real stall

Joel Fernandes (1):
llist: Clarify comments about when locking is needed

Lance Roy (2):
srcu: Implement more-efficient reader counts
rcutorture: Add CBMC-based formal verification for SRCU

Mathieu Desnoyers (1):
Fix: Disable sys_membarrier when nohz_full is enabled

Matt Fleming (1):
rcu: Enable RCU tracepoints by default to aid in debugging

Paul E. McKenney (33):
rcu: Design documentation for expedited grace periods
doc: Update control-dependencies section of memory-barriers.txt
doc: Quick-Quiz answers are now inline
doc: Add rcutree.rcu_kick_kthreads to kernel-parameters.txt
torture: Add a check for CONFIG_RCU_STALL_COMMON for TINY01
torture: Add CONFIG_PROVE_RCU_REPEATEDLY=y for TINY02
torture: Add tests without slow grace period setup/cleanup
torture: Run at least one test with CONFIG_DEBUG_OBJECTS_RCU_HEAD
torture: Run one test with DEBUG_LOCK_ALLOC but not PROVE_LOCKING
torture: Run a couple scenarios with CONFIG_RCU_EQS_DEBUG
torture: Update RCU test scenario documentation
torture: Enable DEBUG_OBJECTS_RCU_HEAD for Tiny RCU
rcu: Abstract the dynticks momentary-idle operation
rcu: Abstract the dynticks snapshot operation
lockdep: Make RCU suspicious-access splats use pr_err
rcu: Remove unneeded rcu_process_callbacks() declarations
rcu: Add long-term CPU kicking
rcu: Remove short-term CPU kicking
rcu: Once again use NMI-based stack traces in stall warnings
rcu: Re-enable TASKS_RCU for User Mode Linux
rcu: Don't wake rcuc/X kthreads on NOCB CPUs
rcu: Add comment headers to expedited-grace-period counter functions
rcu: Make rcu_cpu_starting() use its "cpu" argument
rcu: Fix comment in rcu_organize_nocb_kthreads()
rcu: Eliminate unused expedited_normal counter
rcu: Add lockdep checks to synchronous expedited primitives
rcu: Abstract dynticks extended quiescent state enter/exit operations
rcu: Abstract extended quiescent state determination
rcu: Check cond_resched_rcu_qs() state less often to reduce GP overhead
rcu: Adjust FQS offline checks for exact online-CPU detection
srcu: Force full grace-period ordering
srcu: Reduce probability of SRCU ->unlock_count[] counter overflow
Merge branches 'doc.2017.01.15b', 'dyntick.2017.01.23a', 'fixes.2017.01.23a', 'srcu.2017.01.25a' and 'torture.2017.01.15b' into HEAD

Sebastian Andrzej Siewior (1):
rcu: update: Make RCU_EXPEDITE_BOOT be the default

Tetsuo Handa (1):
doc: Fix RCU requirements typos

Tobias Klauser (1):
rcu: Remove unused but set variable

Yang Shi (1):
locktorture: Fix potential memory leak with rw lock test

.../Design/Data-Structures/Data-Structures.html | 5 +-
.../Design/Expedited-Grace-Periods/ExpRCUFlow.svg | 830 +++++++++++++++++++++
.../Expedited-Grace-Periods/ExpSchedFlow.svg | 826 ++++++++++++++++++++
.../Expedited-Grace-Periods.html | 626 ++++++++++++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel0.svg | 275 +++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel1.svg | 275 +++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel2.svg | 287 +++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel3.svg | 323 ++++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel4.svg | 323 ++++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel5.svg | 335 +++++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel6.svg | 335 +++++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel7.svg | 347 +++++++++
.../RCU/Design/Expedited-Grace-Periods/Funnel8.svg | 311 ++++++++
.../RCU/Design/Requirements/Requirements.html | 12 +-
Documentation/RCU/trace.txt | 5 +-
Documentation/admin-guide/kernel-parameters.txt | 7 +
Documentation/memory-barriers.txt | 70 +-
include/linux/llist.h | 37 +-
include/linux/rcupdate.h | 12 +
include/linux/rcutiny.h | 6 +
include/linux/srcu.h | 10 +-
include/trace/events/rcu.h | 10 +-
init/Kconfig | 14 -
kernel/locking/lockdep.c | 12 +-
kernel/locking/locktorture.c | 6 +
kernel/membarrier.c | 4 +
kernel/rcu/rcutorture.c | 19 +-
kernel/rcu/srcu.c | 143 ++--
kernel/rcu/tiny.c | 2 -
kernel/rcu/tree.c | 262 ++++---
kernel/rcu/tree.h | 15 +-
kernel/rcu/tree_exp.h | 38 +-
kernel/rcu/tree_plugin.h | 7 +-
kernel/rcu/tree_trace.c | 5 +-
kernel/rcu/update.c | 6 +-
lib/Kconfig.debug | 1 +
.../selftests/rcutorture/configs/rcu/CFcommon | 3 -
.../selftests/rcutorture/configs/rcu/TINY01 | 1 +
.../selftests/rcutorture/configs/rcu/TINY02 | 3 +-
.../selftests/rcutorture/configs/rcu/TREE01 | 3 +
.../selftests/rcutorture/configs/rcu/TREE02 | 4 +
.../selftests/rcutorture/configs/rcu/TREE03 | 3 +
.../selftests/rcutorture/configs/rcu/TREE04 | 4 +
.../selftests/rcutorture/configs/rcu/TREE05 | 3 +
.../selftests/rcutorture/configs/rcu/TREE06 | 3 +
.../selftests/rcutorture/configs/rcu/TREE07 | 3 +
.../selftests/rcutorture/configs/rcu/TREE08 | 4 +-
.../selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 33 +-
.../rcutorture/formal/srcu-cbmc/.gitignore | 1 +
.../selftests/rcutorture/formal/srcu-cbmc/Makefile | 16 +
.../formal/srcu-cbmc/empty_includes/linux/delay.h | 0
.../formal/srcu-cbmc/empty_includes/linux/export.h | 0
.../formal/srcu-cbmc/empty_includes/linux/mutex.h | 0
.../formal/srcu-cbmc/empty_includes/linux/percpu.h | 0
.../srcu-cbmc/empty_includes/linux/preempt.h | 0
.../srcu-cbmc/empty_includes/linux/rcupdate.h | 0
.../formal/srcu-cbmc/empty_includes/linux/sched.h | 0
.../formal/srcu-cbmc/empty_includes/linux/smp.h | 0
.../srcu-cbmc/empty_includes/linux/workqueue.h | 0
.../srcu-cbmc/empty_includes/uapi/linux/types.h | 0
.../formal/srcu-cbmc/include/linux/.gitignore | 1 +
.../formal/srcu-cbmc/include/linux/kconfig.h | 1 +
.../formal/srcu-cbmc/include/linux/types.h | 155 ++++
.../rcutorture/formal/srcu-cbmc/modify_srcu.awk | 375 ++++++++++
.../rcutorture/formal/srcu-cbmc/src/assume.h | 16 +
.../rcutorture/formal/srcu-cbmc/src/barriers.h | 41 +
.../rcutorture/formal/srcu-cbmc/src/bug_on.h | 13 +
.../formal/srcu-cbmc/src/combined_source.c | 13 +
.../rcutorture/formal/srcu-cbmc/src/config.h | 27 +
.../rcutorture/formal/srcu-cbmc/src/include_srcu.c | 31 +
.../rcutorture/formal/srcu-cbmc/src/int_typedefs.h | 33 +
.../rcutorture/formal/srcu-cbmc/src/locks.h | 220 ++++++
.../rcutorture/formal/srcu-cbmc/src/misc.c | 11 +
.../rcutorture/formal/srcu-cbmc/src/misc.h | 58 ++
.../rcutorture/formal/srcu-cbmc/src/percpu.h | 92 +++
.../rcutorture/formal/srcu-cbmc/src/preempt.c | 78 ++
.../rcutorture/formal/srcu-cbmc/src/preempt.h | 58 ++
.../formal/srcu-cbmc/src/simple_sync_srcu.c | 50 ++
.../rcutorture/formal/srcu-cbmc/src/workqueues.h | 102 +++
.../srcu-cbmc/tests/store_buffering/.gitignore | 1 +
.../srcu-cbmc/tests/store_buffering/Makefile | 11 +
.../tests/store_buffering/assert_end.fail | 1 +
.../srcu-cbmc/tests/store_buffering/force.fail | 1 +
.../srcu-cbmc/tests/store_buffering/force2.fail | 1 +
.../srcu-cbmc/tests/store_buffering/force3.fail | 1 +
.../srcu-cbmc/tests/store_buffering/main.pass | 0
.../formal/srcu-cbmc/tests/store_buffering/test.c | 72 ++
.../formal/srcu-cbmc/tests/test_script.sh | 102 +++
88 files changed, 7150 insertions(+), 300 deletions(-)
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/ExpRCUFlow.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/ExpSchedFlow.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Expedited-Grace-Periods.html
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel0.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel1.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel2.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel3.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel4.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel5.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel6.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel7.svg
create mode 100644 Documentation/RCU/Design/Expedited-Grace-Periods/Funnel8.svg
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/.gitignore
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/Makefile
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/delay.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/export.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/mutex.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/percpu.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/preempt.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/rcupdate.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/sched.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/smp.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/linux/workqueue.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/empty_includes/uapi/linux/types.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/include/linux/.gitignore
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/include/linux/kconfig.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/include/linux/types.h
create mode 100755 tools/testing/selftests/rcutorture/formal/srcu-cbmc/modify_srcu.awk
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/assume.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/barriers.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/bug_on.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/combined_source.c
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/config.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/include_srcu.c
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/int_typedefs.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/locks.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/misc.c
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/misc.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/percpu.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/preempt.c
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/preempt.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/simple_sync_srcu.c
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/src/workqueues.h
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/.gitignore
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/Makefile
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/assert_end.fail
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/force.fail
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/force2.fail
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/force3.fail
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/main.pass
create mode 100644 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/store_buffering/test.c
create mode 100755 tools/testing/selftests/rcutorture/formal/srcu-cbmc/tests/test_script.sh