Hello, Ingo, This pull request contains the following changes:
1. Documentation updates. http://lkml.kernel.org/r/20170114085032.ga18...@linux.vnet.ibm.com 2. Dyntick updates, consolidating open-coded counter accesses into a well-defined API. http://lkml.kernel.org/r/20170124214602.ga2...@linux.vnet.ibm.com 3. Miscellaneous fixes. http://lkml.kernel.org/r/20170124215111.gb2...@linux.vnet.ibm.com 4. SRCU updates: Simplify algorithm, add formal verification. http://lkml.kernel.org/r/20170124220011.gc2...@linux.vnet.ibm.com 5. Torture-test updates. http://lkml.kernel.org/r/20170114092533.ga23...@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 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