RCU commits for 4.5
Hello, Ingo,
The changes in this series include the following:
1. Adding transitivity uniformly to rcu_node structure ->lock
acquisitions. (This is implemented by the first two commits on top of v4.4-rc2 due to the pervasive nature of this change.)
http://article.gmane.org/gmane.linux.kernel/2100835
2. Documentation updates, including RCU requirements.
http://article.gmane.org/gmane.linux.kernel/2104628
3. Expedited grace-period changes.
http://article.gmane.org/gmane.linux.kernel/2104595
4. Miscellaneous fixes.
http://article.gmane.org/gmane.linux.kernel/2104612
5. Linked-list fixes, courtesy of KTSAN.
http://article.gmane.org/gmane.linux.kernel/2100875
6. Torture-test updates.
http://article.gmane.org/gmane.linux.kernel/2104652
7. Late-breaking fix to sysrq-generated crash.
http://article.gmane.org/gmane.linux.kernel/2111676
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 984cf355aeaa8f2eda3861b50d0e8d3e3f77e83b:
sysrq: Fix warning in sysrq generated crash. (2015-12-29 16:29:18 -0800)
----------------------------------------------------------------
Alexey Kardashevskiy (2):
rcu: Fix comment for rcu_dereference_raw_notrace
list: Add lockless list traversal primitives
Ani Sinha (1):
sysrq: Fix warning in sysrq generated crash.
Chris Metcalf (1):
Documentation/memory-barriers.txt: Fix ACCESS_ONCE thinko
Paul E. McKenney (41):
list: Use WRITE_ONCE() when adding to lists and hlists
list: Use READ_ONCE() when testing for empty lists
rcu: Add transitivity to remaining rcu_node ->lock acquisitions
rcu: Short-circuit synchronize_sched_expedited() if only one CPU
rcu: Clarify role of ->expmaskinitnext
rcu: Move smp_mb() from rcu_seq_snap() to rcu_exp_gp_seq_snap()
rcu: Invert sync_rcu_exp_select_cpus() "if" statement
rcu: Reduce expedited GP memory contention via per-CPU variables
rcu: Make expedited grace periods resolve stall-warning ties
rcu: Add more diagnostics to expedited stall warning messages.
rcu: Add rcu_normal kernel parameter to suppress expediting
rcu: Wire up rcu_end_inkernel_boot()
rcu: Allow expedited grace periods to be disabled at init
rcu: Move lock_class_key to local scope
rcu: Simplify rcu_sched_qs() control flow
rcu: Remove lock-acquisition loop from rcu_read_unlock_special()
rcu: Fix obsolete rcu_bootup_announce_oddness() comment
rcu: Avoid tick_nohz_active checks on NOCBs CPUs
rcu: Stop disabling interrupts in scheduler fastpaths
list: Use WRITE_ONCE() when initializing list_head structures
documentation: Record RCU requirements
Documentation: Record bottom-bit-zero guarantee for ->next
documentation: Cover requirements controlling stall warnings
documentation: Composability analogies
documentation: Expand on scheduler/RCU deadlock requirements
documentation: Clarify RCU memory barriers and requirements
documentation: Update RCU requirements based on expedited changes
rcutorture: Add batch number to script printout
rcutorture: Flag nonexistent RCU GP kthread
rcutorture: Dump stack when GP kthread stalls
rcutorture: Default grace period to three minutes, allow override
rcutorture: Print symbolic name for rcu_torture_writer_state
rcutorture: Print symbolic name for ->gp_state
torture: Abbreviate console error dump
torture: Place console.log files correctly from the get-go
rcu: Remove TINY_RCU bloat from pointless boot parameters
rcu: Eliminate unused rcu_init_one() argument
rcu: Make cpu_needs_another_gp() be bool
rcu: Don't redundantly disable irqs in rcu_irq_{enter,exit}()
rcu: Make rcu_gp_init() be bool rather than int
Merge branches 'doc.2015.12.05a', 'exp.2015.12.07a', 'fixes.2015.12.07a', 'list.2015.12.04b' and 'torture.2015.12.05a' into HEAD
Paul Gortmaker (1):
kernel: Make rcu/tree_trace.c explicitly non-modular
Peter Zijlstra (2):
rcu: Create transitive rnp->lock acquisition functions
rcu: Move wakeup out from under rnp->lockPetko Manolov (1):
list: Introduces generic list_splice_tail_init_rcu()
Yang Shi (1):
rcutorture: Remove CONFIG_RCU_USER_QS from rcutorture selftest doc
.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytes .../Design/Requirements/GPpartitionReaders1.svg | 374 +++ .../RCU/Design/Requirements/RCUApplicability.svg | 237 ++ .../Design/Requirements/ReadersPartitionGP1.svg | 639 +++++ .../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++ Documentation/RCU/Design/htmlqqz.sh | 108 + Documentation/kernel-parameters.txt | 29 +- Documentation/memory-barriers.txt | 8 +- drivers/tty/sysrq.c | 6 + include/linux/list.h | 14 +- include/linux/list_bl.h | 2 +- include/linux/list_nulls.h | 2 +- include/linux/rculist.h | 105 +- include/linux/rcupdate.h | 21 +- include/linux/rcutiny.h | 8 + include/linux/rcutree.h | 4 +- include/linux/tracepoint.h | 4 +- init/main.c | 2 + kernel/ksysfs.c | 26 +- kernel/rcu/rcutorture.c | 24 +- kernel/rcu/srcu.c | 2 +- kernel/rcu/tree.c | 313 ++- kernel/rcu/tree.h | 61 +- kernel/rcu/tree_plugin.h | 66 +- kernel/rcu/tree_trace.c | 39 +- kernel/rcu/update.c | 22 +- kernel/sched/core.c | 6 +- lib/list_debug.c | 2 +- .../selftests/rcutorture/bin/kvm-test-1-run.sh | 9 +- tools/testing/selftests/rcutorture/bin/kvm.sh | 22 +- .../selftests/rcutorture/bin/parse-console.sh | 41 +- .../testing/selftests/rcutorture/doc/TINY_RCU.txt | 1 - .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 4 - 34 files changed, 7552 insertions(+), 287 deletions(-) create mode 100644 Documentation/RCU/Design/Requirements/2013-08-is-it-dead.png create mode 100644 Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg create mode 100644 Documentation/RCU/Design/Requirements/RCUApplicability.svg create mode 100644 Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg create mode 100644 Documentation/RCU/Design/Requirements/Requirements.html create mode 100644 Documentation/RCU/Design/Requirements/Requirements.htmlx create mode 100755 Documentation/RCU/Design/htmlqqz.sh
Quoted 144 lines · Paul E. McKenney
Hello, Ingo,
The changes in this series include the following:
1. Adding transitivity uniformly to
rcu_nodestructure ->lock
acquisitions. (This is implemented by the first two commits on top of v4.4-rc2 due to the pervasive nature of this change.)http://article.gmane.org/gmane.linux.kernel/2100835
2. Documentation updates, including RCU requirements.
http://article.gmane.org/gmane.linux.kernel/21046283. Expedited grace-period changes.
http://article.gmane.org/gmane.linux.kernel/21045954. Miscellaneous fixes.
http://article.gmane.org/gmane.linux.kernel/21046125. Linked-list fixes, courtesy of KTSAN.
http://article.gmane.org/gmane.linux.kernel/21008756. Torture-test updates.
http://article.gmane.org/gmane.linux.kernel/21046527. Late-breaking fix to sysrq-generated crash.
http://article.gmane.org/gmane.linux.kernel/2111676All 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.gitfor-mingofor you to fetch changes up to
984cf355aeaa8f2eda3861b50d0e8d3e3f77e83b:sysrq: Fix warning in sysrq generated crash. (2015-12-29 16:29:18 -0800)
----------------------------------------------------------------
Alexey Kardashevskiy (2):
rcu: Fix comment forrcu_dereference_raw_notrace
list: Add lockless list traversal primitivesAni Sinha (1):
sysrq: Fix warning in sysrq generated crash.Chris Metcalf (1):
Documentation/memory-barriers.txt: FixACCESS_ONCEthinkoPaul E. McKenney (41):
list: UseWRITE_ONCE()when adding to lists and hlists
list: UseREAD_ONCE()when testing for empty lists
rcu: Add transitivity to remainingrcu_node->lock acquisitions
rcu: Short-circuitsynchronize_sched_expedited()if only one CPU
rcu: Clarify role of ->expmaskinitnext
rcu: Movesmp_mb()fromrcu_seq_snap()torcu_exp_gp_seq_snap()
rcu: Invertsync_rcu_exp_select_cpus()"if" statement
rcu: Reduce expedited GP memory contention via per-CPU variables
rcu: Make expedited grace periods resolve stall-warning ties
rcu: Add more diagnostics to expedited stall warning messages.
rcu: Addrcu_normalkernel parameter to suppress expediting
rcu: Wire uprcu_end_inkernel_boot()
rcu: Allow expedited grace periods to be disabled at init
rcu: Movelock_class_keyto local scope
rcu: Simplifyrcu_sched_qs()control flow
rcu: Remove lock-acquisition loop fromrcu_read_unlock_special()
rcu: Fix obsoletercu_bootup_announce_oddness()comment
rcu: Avoidtick_nohz_activechecks on NOCBs CPUs
rcu: Stop disabling interrupts in scheduler fastpaths
list: UseWRITE_ONCE()when initializinglist_headstructures
documentation: Record RCU requirements
Documentation: Record bottom-bit-zero guarantee for ->next
documentation: Cover requirements controlling stall warnings
documentation: Composability analogies
documentation: Expand on scheduler/RCU deadlock requirements
documentation: Clarify RCU memory barriers and requirements
documentation: Update RCU requirements based on expedited changes
rcutorture: Add batch number to script printout
rcutorture: Flag nonexistent RCU GP kthread
rcutorture: Dump stack when GP kthread stalls
rcutorture: Default grace period to three minutes, allow override
rcutorture: Print symbolic name forrcu_torture_writer_state
rcutorture: Print symbolic name for ->gp_state
torture: Abbreviate console error dump
torture: Place console.log files correctly from the get-go
rcu: RemoveTINY_RCUbloat from pointless boot parameters
rcu: Eliminate unusedrcu_init_one()argument
rcu: Makecpu_needs_another_gp()be bool
rcu: Don't redundantly disable irqs in rcu_irq_{enter,exit}()
rcu: Makercu_gp_init()be bool rather than int
Merge branches 'doc.2015.12.05a', 'exp.2015.12.07a', 'fixes.2015.12.07a', 'list.2015.12.04b' and 'torture.2015.12.05a' into HEADPaul Gortmaker (1):
kernel: Makercu/tree_trace.cexplicitly non-modularPeter Zijlstra (2):
rcu: Create transitive rnp->lock acquisition functions rcu: Move wakeup out from under rnp->lockPetko Manolov (1):
list: Introduces genericlist_splice_tail_init_rcu()Yang Shi (1):
rcutorture: RemoveCONFIG_RCU_USER_QSfrom rcutorture selftest doc.../RCU/Design/Requirements/2013-08-is-it-dead.png | Bin 0 -> 100825 bytes .../Design/Requirements/GPpartitionReaders1.svg | 374 +++ .../RCU/Design/Requirements/RCUApplicability.svg | 237 ++ .../Design/Requirements/ReadersPartitionGP1.svg | 639 +++++ .../RCU/Design/Requirements/Requirements.html | 2897 ++++++++++++++++++++ .../RCU/Design/Requirements/Requirements.htmlx | 2741 ++++++++++++++++++ Documentation/RCU/Design/htmlqqz.sh | 108 + Documentation/kernel-parameters.txt | 29 +- Documentation/memory-barriers.txt | 8 +- drivers/tty/sysrq.c | 6 + include/linux/list.h | 14 +- include/linux/list_bl.h | 2 +- include/linux/list_nulls.h | 2 +- include/linux/rculist.h | 105 +- include/linux/rcupdate.h | 21 +- include/linux/rcutiny.h | 8 + include/linux/rcutree.h | 4 +- include/linux/tracepoint.h | 4 +- init/main.c | 2 + kernel/ksysfs.c | 26 +- kernel/rcu/rcutorture.c | 24 +- kernel/rcu/srcu.c | 2 +- kernel/rcu/tree.c | 313 ++- kernel/rcu/tree.h | 61 +- kernel/rcu/tree_plugin.h | 66 +- kernel/rcu/tree_trace.c | 39 +- kernel/rcu/update.c | 22 +- kernel/sched/core.c | 6 +- lib/list_debug.c | 2 +- .../selftests/rcutorture/bin/kvm-test-1-run.sh | 9 +- tools/testing/selftests/rcutorture/bin/kvm.sh | 22 +- .../selftests/rcutorture/bin/parse-console.sh | 41 +- .../testing/selftests/rcutorture/doc/TINY_RCU.txt | 1 - .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 4 -
Quoted 8 lines
34 files changed, 7552 insertions(+), 287 deletions(-) create mode 100644 Documentation/RCU/Design/Requirements/2013-08-is-it-dead.png create mode 100644 Documentation/RCU/Design/Requirements/GPpartitionReaders1.svg create mode 100644 Documentation/RCU/Design/Requirements/RCUApplicability.svg create mode 100644 Documentation/RCU/Design/Requirements/ReadersPartitionGP1.svg create mode 100644 Documentation/RCU/Design/Requirements/Requirements.html create mode 100644 Documentation/RCU/Design/Requirements/Requirements.htmlx create mode 100755 Documentation/RCU/Design/htmlqqz.sh
Pulled into tip:core/rcu, thanks a lot Paul!
Ingo