[PATCH tip/core/rcu 0/18] Expedited grace-period improvements for 4.4

From: Paul E. McKenney
Date: Tue Oct 06 2015 - 12:29:19 EST


Hello!

This commit continues the effort to reduce the OS jitter from RCU's
expedited grace-period primitives, while also loosening the coupling
between CPU hotplug and RCU's expedited grace-period primitives:

1. Use rsp->expedited_wq instead of sync_rcu_preempt_exp_wq to
enable later code consolidation.

2. Move rcu_report_exp_rnp() to allow later code consolidation.

3. Consolidate combining-tree bitmaks setup for the initialization
portion of synchronize_rcu_expedited().

4. Use single-stage IPI algorithm for preemptible-RCU expedited
grace periods.

5. Make synchronize_sched_expedited() use the combining tree
to reduce memory contention when waiting for quiescent states.

6. Rename ->qs_pending to ->core_needs_qs to better match this
field's use.

7. Invert ->passed_quiesce and rename to ->cpu_no_qs in order to
enable later aggregate-OR for requests for normal and expedited
grace periods.

8. Make ->cpu_no_qs be a union for aggregate OR.

9. Switch synchronize_sched_expedited() from stop-CPUs to IPI.

10. Stop silencing lockdep false positive for expedited grace periods,
given that synchronize_rcu_expedited() no longer invokes
synchronize_sched_expedited(), eliminating the apparent deadlock.
(Just for the record, there never was a real deadlock.)

11. Stop excluding CPU hotplug in synchronize_sched_expedited().

12. Remove try_get_online_cpus(), which is now no longer used.

13. Bring sync_sched_exp_select_cpus() into alignment with
sync_rcu_exp_select_cpus() as a first step towards consolidating
them into one function.

14. Consolidate expedited CPU selection, now that #13 enabled it.

15. Add online/offline information to expedited stall warning message.

16. Dump blocking tasks in expedited stall-warning messages.

17. Enable stall warnings for synchronize_rcu_expedited().

18. Improve synchronize_sched_expedited() CPU-hotplug handling.

Thanx, Paul

------------------------------------------------------------------------

b/Documentation/RCU/trace.txt | 32 +-
b/include/linux/cpu.h | 2
b/include/linux/sched.h | 10
b/kernel/cpu.c | 13
b/kernel/rcu/tree.c | 561 ++++++++++++++++++++++++++++++----------
b/kernel/rcu/tree.h | 50 ++-
b/kernel/rcu/tree_plugin.h | 579 ++++++++++++++++++++++--------------------
b/kernel/rcu/tree_trace.c | 10
8 files changed, 782 insertions(+), 475 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/