[PATCH rcu 0/32] RCU Tasks updates for v5.20

From: Paul E. McKenney
Date: Mon Jun 20 2022 - 18:54:07 EST


Hello!

This series provides updates for the RCU Tasks family, perhaps most
notably reducing the CPU overhead of RCU Tasks Trace grace periods:

1. rcu-tasks: Check for abandoned callbacks.

2. rcu-tasks: Split rcu_tasks_one_gp() from rcu_tasks_kthread().

3. rcu-tasks: Move synchronize_rcu_tasks_generic() down.

4. rcu-tasks: Drive synchronous grace periods from calling task.

5. rcu-tasks: Merge state into .b.need_qs and atomically update.

6. rcu-tasks: Remove rcu_tasks_trace_postgp() wait for counter.

7. rcu-tasks: Make trc_read_check_handler() fetch
->trc_reader_nesting only once.

8. rcu-tasks: Idle tasks on offline CPUs are in quiescent states.

9. rcu-tasks: Handle idle tasks for recently offlined CPUs.

10. rcu-tasks: RCU Tasks Trace grace-period kthread has implicit QS.

11. rcu-tasks: Make rcu_note_context_switch() unconditionally call
rcu_tasks_qs().

12. rcu-tasks: Simplify trc_inspect_reader() QS logic.

13. rcu-tasks: Add slow-IPI indicator to RCU Tasks Trace stall
warnings.

14. rcu-tasks: Flag offline CPUs in RCU Tasks Trace stall warnings.

15. rcu-tasks: Make RCU Tasks Trace stall warnings print full
.b.need_qs field.

16. rcu-tasks: Make RCU Tasks Trace stall warning handle idle
offline tasks.

17. rcu-tasks: Add data structures for lightweight grace periods.

18. rcu-tasks: Track blocked RCU Tasks Trace readers.

19. rcu-tasks: Untrack blocked RCU Tasks Trace at reader end.

20. rcu-tasks: Add blocked-task indicator to RCU Tasks Trace stall
warnings.

21. rcu-tasks: Move rcu_tasks_trace_pertask() before
rcu_tasks_trace_pregp_step().

22. rcu-tasks: Avoid rcu_tasks_trace_pertask() duplicate list
additions.

23. rcu-tasks: Scan running tasks for RCU Tasks Trace readers.

24. rcu-tasks: Pull in tasks blocked within RCU Tasks Trace readers.

25. rcu-tasks: Stop RCU Tasks Trace from scanning idle tasks.

26. rcu-tasks: Stop RCU Tasks Trace from scanning full tasks list.

27. rcu-tasks: Maintain a count of tasks blocking RCU Tasks Trace
grace period.

28. rcu-tasks: Eliminate RCU Tasks Trace IPIs to online CPUs.

29. rcu-tasks: Disable and enable CPU hotplug in same function.

30. rcu-tasks: Update comments.

31. rcu-tasks: Be more patient for RCU Tasks boot-time testing.

32. rcu-tasks: Use delayed_work to delay
rcu_tasks_verify_self_tests(), courtesy of Waiman Long.

Thanx, Paul

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

b/include/linux/rcupdate.h | 18 -
b/include/linux/rcupdate_trace.h | 2
b/include/linux/sched.h | 1
b/init/init_task.c | 1
b/kernel/fork.c | 1
b/kernel/rcu/tasks.h | 5
b/kernel/rcu/tree_plugin.h | 2
b/kernel/sched/core.c | 32 +
include/linux/rcupdate.h | 11
include/linux/sched.h | 3
kernel/rcu/tasks.h | 678 +++++++++++++++++++++++----------------
11 files changed, 466 insertions(+), 288 deletions(-)