Messages in this thread |  | | Date | Tue, 23 Sep 2025 07:20:27 -0700 | | From | "Paul E. McKenney" <> | | Subject | [PATCH 0/34] Implement RCU Tasks Trace in terms of SRCU-fast and optimize |
| |
Hello!
This series re-implements RCU Tasks Trace in terms of SRCU-fast, reducing the size of the Linux-kernel RCU implementation by several hundred lines of code. It also removes a conditional branch from the srcu_read_lock_fast() implementation in order to make SRCU-fast a bit more fastpath-friendly. The patches are as follows:
1. Re-implement RCU Tasks Trace in terms of SRCU-fast.
2. Remove unused ->trc_ipi_to_cpu and ->trc_blkd_cpu from task_struct.
3. Remove ->trc_blkd_node from task_struct.
4. Remove ->trc_holdout_list from task_struct.
5. Remove rcu_tasks_trace_qs() and the functions that it calls.
6. context_tracking: Remove rcu_task_trace_heavyweight_{enter,exit}().
7. Remove ->trc_reader_special from task_struct.
8. Remove now-empty RCU Tasks Trace functions and calls to them.
9. Remove unused rcu_tasks_trace_lazy_ms and trc_stall_chk_rdr struct.
10. Remove now-empty show_rcu_tasks_trace_gp_kthread() function.
11. Remove now-empty rcu_tasks_trace_get_gp_data() function.
12. Remove now-empty rcu_tasks_trace_torture_stats_print() function.
13. Remove now-empty get_rcu_tasks_trace_gp_kthread() function.
14. Move rcu_tasks_trace_srcu_struct out of #ifdef CONFIG_TASKS_RCU_GENERIC.
15. Add noinstr-fast rcu_read_{,un}lock_tasks_trace() APIs.
16. Remove now-unused rcu_task_ipi_delay and TASKS_TRACE_RCU_READ_MB.
17. Create a DEFINE_SRCU_FAST().
18. Use smp_mb() only when necessary in RCU Tasks Trace readers.
19. Update Requirements.rst for RCU Tasks Trace.
20. Deprecate rcu_read_{,un}lock_trace().
21. Mark diagnostic functions as notrace.
22. Guard __DECLARE_TRACE() use of __DO_TRACE_CALL() with SRCU-fast.
23. Create an srcu_expedite_current() function.
24. Test srcu_expedite_current().
25. Create an rcu_tasks_trace_expedite_current() function.
26. Test rcu_tasks_trace_expedite_current().
27. Make DEFINE_SRCU_FAST() available to modules.
28. Make SRCU-fast available to heap srcu_struct structures.
29. Make grace-period determination use ssp->srcu_reader_flavor.
30. Exercise DEFINE_STATIC_SRCU_FAST() and init_srcu_struct_fast().
31. Exercise DEFINE_STATIC_SRCU_FAST() and init_srcu_struct_fast().
32. Require special srcu_struct define/init for SRCU-fast readers.
33. Make SRCU-fast readers enforce use of SRCU-fast definition/init.
34. Update for SRCU-fast definitions and initialization.
Thanx, Paul
------------------------------------------------------------------------
Documentation/RCU/Design/Requirements/Requirements.rst | 33 Documentation/admin-guide/kernel-parameters.txt | 7 b/Documentation/RCU/Design/Requirements/Requirements.rst | 12 b/Documentation/RCU/checklist.rst | 12 b/Documentation/RCU/whatisRCU.rst | 3 b/Documentation/admin-guide/kernel-parameters.txt | 8 b/include/linux/notifier.h | 2 b/include/linux/rcupdate.h | 26 b/include/linux/rcupdate_trace.h | 107 +- b/include/linux/sched.h | 1 b/include/linux/srcu.h | 16 b/include/linux/srcutiny.h | 1 b/include/linux/srcutree.h | 20 b/include/linux/tracepoint.h | 45 - b/include/trace/perf.h | 4 b/include/trace/trace_events.h | 4 b/init/init_task.c | 1 b/kernel/context_tracking.c | 20 b/kernel/fork.c | 1 b/kernel/rcu/Kconfig | 2 b/kernel/rcu/rcu.h | 5 b/kernel/rcu/rcuscale.c | 6 b/kernel/rcu/rcutorture.c | 1 b/kernel/rcu/refscale.c | 9 b/kernel/rcu/srcutiny.c | 13 b/kernel/rcu/srcutree.c | 58 + b/kernel/rcu/tasks.h | 617 --------------- b/kernel/rcu/tree.c | 2 b/kernel/rcu/update.c | 8 b/kernel/tracepoint.c | 21 b/scripts/checkpatch.pl | 2 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE01 | 1 b/tools/testing/selftests/rcutorture/configs/rcu/TRACE02 | 1 include/linux/rcupdate.h | 5 include/linux/rcupdate_trace.h | 85 +- include/linux/sched.h | 5 include/linux/srcu.h | 40 include/linux/srcutiny.h | 16 include/linux/srcutree.h | 48 - init/init_task.c | 2 kernel/fork.c | 2 kernel/rcu/Kconfig | 41 kernel/rcu/rcu.h | 4 kernel/rcu/rcuscale.c | 1 kernel/rcu/rcutorture.c | 33 kernel/rcu/srcutree.c | 39 kernel/rcu/tasks.h | 129 --- 47 files changed, 529 insertions(+), 990 deletions(-)
|  |