[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <580ea2de-799a-4ddc-bde9-c16f3fb1e6e7@paulmck-laptop>
Date: Tue, 23 Sep 2025 07:20:27 -0700
From: "Paul E. McKenney" <paulmck@...nel.org>
To: rcu@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, kernel-team@...a.com, rostedt@...dmis.org,
andrii@...nel.org, ast@...nel.org, peterz@...radead.org,
bpf@...r.kernel.org
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(-)
Powered by blists - more mailing lists