lkml.org 
[lkml]   [2025]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
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(-)

\
 
 \ /
  Last update: 2025-09-23 16:31    [from the cache]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and my Meterkast|Read the blog