Re: [GIT PULL rcu/next] RCU commits for 4.11

From: Ingo Molnar
Date: Tue Jan 31 2017 - 01:48:27 EST



* Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> wrote:

> 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

Pulled into tip:core/rcu, thanks a lot Paul!

Ingo