* Paul E. McKenney <paul...@linux.vnet.ibm.com> wrote: > 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
Pulled into tip:core/rcu, thanks a lot Paul! Ingo