hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# SPDX-License-Identifier: GPL-2.0-only
#
# RCU-related debugging configuration options
#
 
menu "RCU Debugging"
 
config PROVE_RCU
   def_bool PROVE_LOCKING
 
config PROVE_RCU_LIST
   bool "RCU list lockdep debugging"
   depends on PROVE_RCU && RCU_EXPERT
   default n
   help
     Enable RCU lockdep checking for list usages. By default it is
     turned off since there are several list RCU users that still
     need to be converted to pass a lockdep expression. To prevent
     false-positive splats, we keep it default disabled but once all
     users are converted, we can remove this config option.
 
config TORTURE_TEST
   tristate
   default n
 
config RCU_SCALE_TEST
   tristate "performance tests for RCU"
   depends on DEBUG_KERNEL
   select TORTURE_TEST
   select SRCU
   select TASKS_RCU
   select TASKS_RUDE_RCU
   select TASKS_TRACE_RCU
   default n
   help
     This option provides a kernel module that runs performance
     tests on the RCU infrastructure.  The kernel module may be built
     after the fact on the running kernel to be tested, if desired.
 
     Say Y here if you want RCU performance tests to be built into
     the kernel.
     Say M if you want the RCU performance tests to build as a module.
     Say N if you are unsure.
 
config RCU_TORTURE_TEST
   tristate "torture tests for RCU"
   depends on DEBUG_KERNEL
   select TORTURE_TEST
   select SRCU
   select TASKS_RCU
   select TASKS_RUDE_RCU
   select TASKS_TRACE_RCU
   default n
   help
     This option provides a kernel module that runs torture tests
     on the RCU infrastructure.  The kernel module may be built
     after the fact on the running kernel to be tested, if desired.
 
     Say Y here if you want RCU torture tests to be built into
     the kernel.
     Say M if you want the RCU torture tests to build as a module.
     Say N if you are unsure.
 
config RCU_REF_SCALE_TEST
   tristate "Scalability tests for read-side synchronization (RCU and others)"
   depends on DEBUG_KERNEL
   select TORTURE_TEST
   select SRCU
   select TASKS_RCU
   select TASKS_RUDE_RCU
   select TASKS_TRACE_RCU
   default n
   help
     This option provides a kernel module that runs performance tests
     useful comparing RCU with various read-side synchronization mechanisms.
     The kernel module may be built after the fact on the running kernel to be
     tested, if desired.
 
     Say Y here if you want these performance tests built into the kernel.
     Say M if you want to build it as a module instead.
     Say N if you are unsure.
 
config RCU_CPU_STALL_TIMEOUT
   int "RCU CPU stall timeout in seconds"
   depends on RCU_STALL_COMMON
   range 3 300
   default 21
   help
     If a given RCU grace period extends more than the specified
     number of seconds, a CPU stall warning is printed.  If the
     RCU grace period persists, additional CPU stall warnings are
     printed at more widely spaced intervals.
 
config BOOTPARAM_RCU_STALL_PANIC
   bool "Panic (Reboot) On RCU CPU stall timeout"
   depends on RCU_STALL_COMMON
   help
     Say Y here to enable the kernel to panic on "rcu stall timeout",
     which are bugs that RCU grace period extends more than 21 seconds
     (configurable using the RCU_CPU_STALL_TIMEOUT).
 
     The panic can be used in combination with panic_timeout,
     to cause the system to reboot automatically after a
     stall timeout. This feature is useful for high-availability
     systems that have uptime guarantees and where a stall timeout
     must be resolved ASAP.
 
     Say N if unsure.
 
config BOOTPARAM_RCU_STALL_PANIC_VALUE
   int
   depends on RCU_STALL_COMMON
   range 0 1
   default 0 if !BOOTPARAM_RCU_STALL_PANIC
   default 1 if BOOTPARAM_RCU_STALL_PANIC
 
config RCU_TRACE
   bool "Enable tracing for RCU"
   depends on DEBUG_KERNEL
   default y if TREE_RCU
   select TRACE_CLOCK
   help
     This option enables additional tracepoints for ftrace-style
     event tracing.
 
     Say Y here if you want to enable RCU tracing
     Say N if you are unsure.
 
config RCU_EQS_DEBUG
   bool "Provide debugging asserts for adding NO_HZ support to an arch"
   depends on DEBUG_KERNEL
   help
     This option provides consistency checks in RCU's handling of
     NO_HZ.  These checks have proven quite helpful in detecting
     bugs in arch-specific NO_HZ code.
 
     Say N here if you need ultimate kernel/user switch latencies
     Say Y if you are unsure
 
config RCU_STRICT_GRACE_PERIOD
   bool "Provide debug RCU implementation with short grace periods"
   depends on DEBUG_KERNEL && RCU_EXPERT
   default n
   select PREEMPT_COUNT if PREEMPT=n
   help
     Select this option to build an RCU variant that is strict about
     grace periods, making them as short as it can.  This limits
     scalability, destroys real-time response, degrades battery
     lifetime and kills performance.  Don't try this on large
     machines, as in systems with more than about 10 or 20 CPUs.
     But in conjunction with tools like KASAN, it can be helpful
     when looking for certain types of RCU usage bugs, for example,
     too-short RCU read-side critical sections.
 
endmenu # "RCU Debugging"