xref: /linux/kernel/rcu/Kconfig.debug (revision 353b7a55dcaf5fb8758e09ebe2ddf5f3adbac7c5)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
243a0a2a7SPaul E. McKenney#
343a0a2a7SPaul E. McKenney# RCU-related debugging configuration options
443a0a2a7SPaul E. McKenney#
543a0a2a7SPaul E. McKenney
643a0a2a7SPaul E. McKenneymenu "RCU Debugging"
743a0a2a7SPaul E. McKenney
843a0a2a7SPaul E. McKenneyconfig PROVE_RCU
943a0a2a7SPaul E. McKenney	def_bool PROVE_LOCKING
1043a0a2a7SPaul E. McKenney
1128875945SJoel Fernandes (Google)config PROVE_RCU_LIST
1228875945SJoel Fernandes (Google)	bool "RCU list lockdep debugging"
1328875945SJoel Fernandes (Google)	depends on PROVE_RCU && RCU_EXPERT
1428875945SJoel Fernandes (Google)	default n
1528875945SJoel Fernandes (Google)	help
1628875945SJoel Fernandes (Google)	  Enable RCU lockdep checking for list usages. By default it is
1728875945SJoel Fernandes (Google)	  turned off since there are several list RCU users that still
1828875945SJoel Fernandes (Google)	  need to be converted to pass a lockdep expression. To prevent
1928875945SJoel Fernandes (Google)	  false-positive splats, we keep it default disabled but once all
2028875945SJoel Fernandes (Google)	  users are converted, we can remove this config option.
2128875945SJoel Fernandes (Google)
2243a0a2a7SPaul E. McKenneyconfig TORTURE_TEST
2343a0a2a7SPaul E. McKenney	tristate
2443a0a2a7SPaul E. McKenney	default n
2543a0a2a7SPaul E. McKenney
264e88ec4aSPaul E. McKenneyconfig RCU_SCALE_TEST
2743a0a2a7SPaul E. McKenney	tristate "performance tests for RCU"
2843a0a2a7SPaul E. McKenney	depends on DEBUG_KERNEL
2943a0a2a7SPaul E. McKenney	select TORTURE_TEST
3043a0a2a7SPaul E. McKenney	select SRCU
3143a0a2a7SPaul E. McKenney	select TASKS_RCU
323d6e43c7SPaul E. McKenney	select TASKS_RUDE_RCU
33c1a76c0bSPaul E. McKenney	select TASKS_TRACE_RCU
3443a0a2a7SPaul E. McKenney	default n
3543a0a2a7SPaul E. McKenney	help
3643a0a2a7SPaul E. McKenney	  This option provides a kernel module that runs performance
3743a0a2a7SPaul E. McKenney	  tests on the RCU infrastructure.  The kernel module may be built
3843a0a2a7SPaul E. McKenney	  after the fact on the running kernel to be tested, if desired.
3943a0a2a7SPaul E. McKenney
4043a0a2a7SPaul E. McKenney	  Say Y here if you want RCU performance tests to be built into
4143a0a2a7SPaul E. McKenney	  the kernel.
4243a0a2a7SPaul E. McKenney	  Say M if you want the RCU performance tests to build as a module.
4343a0a2a7SPaul E. McKenney	  Say N if you are unsure.
4443a0a2a7SPaul E. McKenney
4543a0a2a7SPaul E. McKenneyconfig RCU_TORTURE_TEST
4643a0a2a7SPaul E. McKenney	tristate "torture tests for RCU"
4743a0a2a7SPaul E. McKenney	depends on DEBUG_KERNEL
4843a0a2a7SPaul E. McKenney	select TORTURE_TEST
4943a0a2a7SPaul E. McKenney	select SRCU
5043a0a2a7SPaul E. McKenney	select TASKS_RCU
513d6e43c7SPaul E. McKenney	select TASKS_RUDE_RCU
52c1a76c0bSPaul E. McKenney	select TASKS_TRACE_RCU
5343a0a2a7SPaul E. McKenney	default n
5443a0a2a7SPaul E. McKenney	help
5543a0a2a7SPaul E. McKenney	  This option provides a kernel module that runs torture tests
5643a0a2a7SPaul E. McKenney	  on the RCU infrastructure.  The kernel module may be built
5743a0a2a7SPaul E. McKenney	  after the fact on the running kernel to be tested, if desired.
5843a0a2a7SPaul E. McKenney
5943a0a2a7SPaul E. McKenney	  Say Y here if you want RCU torture tests to be built into
6043a0a2a7SPaul E. McKenney	  the kernel.
6143a0a2a7SPaul E. McKenney	  Say M if you want the RCU torture tests to build as a module.
6243a0a2a7SPaul E. McKenney	  Say N if you are unsure.
6343a0a2a7SPaul E. McKenney
648e4ec3d0SPaul E. McKenneyconfig RCU_REF_SCALE_TEST
658e4ec3d0SPaul E. McKenney	tristate "Scalability tests for read-side synchronization (RCU and others)"
66653ed64bSJoel Fernandes (Google)	depends on DEBUG_KERNEL
67653ed64bSJoel Fernandes (Google)	select TORTURE_TEST
68653ed64bSJoel Fernandes (Google)	select SRCU
69653ed64bSJoel Fernandes (Google)	select TASKS_RCU
70653ed64bSJoel Fernandes (Google)	select TASKS_RUDE_RCU
71653ed64bSJoel Fernandes (Google)	select TASKS_TRACE_RCU
72653ed64bSJoel Fernandes (Google)	default n
73653ed64bSJoel Fernandes (Google)	help
74653ed64bSJoel Fernandes (Google)	  This option provides a kernel module that runs performance tests
75653ed64bSJoel Fernandes (Google)	  useful comparing RCU with various read-side synchronization mechanisms.
76653ed64bSJoel Fernandes (Google)	  The kernel module may be built after the fact on the running kernel to be
77653ed64bSJoel Fernandes (Google)	  tested, if desired.
78653ed64bSJoel Fernandes (Google)
79653ed64bSJoel Fernandes (Google)	  Say Y here if you want these performance tests built into the kernel.
80653ed64bSJoel Fernandes (Google)	  Say M if you want to build it as a module instead.
81653ed64bSJoel Fernandes (Google)	  Say N if you are unsure.
82653ed64bSJoel Fernandes (Google)
8343a0a2a7SPaul E. McKenneyconfig RCU_CPU_STALL_TIMEOUT
8443a0a2a7SPaul E. McKenney	int "RCU CPU stall timeout in seconds"
8543a0a2a7SPaul E. McKenney	depends on RCU_STALL_COMMON
8643a0a2a7SPaul E. McKenney	range 3 300
8743a0a2a7SPaul E. McKenney	default 21
8843a0a2a7SPaul E. McKenney	help
8943a0a2a7SPaul E. McKenney	  If a given RCU grace period extends more than the specified
9043a0a2a7SPaul E. McKenney	  number of seconds, a CPU stall warning is printed.  If the
9143a0a2a7SPaul E. McKenney	  RCU grace period persists, additional CPU stall warnings are
9243a0a2a7SPaul E. McKenney	  printed at more widely spaced intervals.
9343a0a2a7SPaul E. McKenney
9443a0a2a7SPaul E. McKenneyconfig RCU_TRACE
9543a0a2a7SPaul E. McKenney	bool "Enable tracing for RCU"
9643a0a2a7SPaul E. McKenney	depends on DEBUG_KERNEL
9743a0a2a7SPaul E. McKenney	default y if TREE_RCU
9843a0a2a7SPaul E. McKenney	select TRACE_CLOCK
9943a0a2a7SPaul E. McKenney	help
10043a0a2a7SPaul E. McKenney	  This option enables additional tracepoints for ftrace-style
10143a0a2a7SPaul E. McKenney	  event tracing.
10243a0a2a7SPaul E. McKenney
10343a0a2a7SPaul E. McKenney	  Say Y here if you want to enable RCU tracing
10443a0a2a7SPaul E. McKenney	  Say N if you are unsure.
10543a0a2a7SPaul E. McKenney
10643a0a2a7SPaul E. McKenneyconfig RCU_EQS_DEBUG
10743a0a2a7SPaul E. McKenney	bool "Provide debugging asserts for adding NO_HZ support to an arch"
10843a0a2a7SPaul E. McKenney	depends on DEBUG_KERNEL
10943a0a2a7SPaul E. McKenney	help
11043a0a2a7SPaul E. McKenney	  This option provides consistency checks in RCU's handling of
11143a0a2a7SPaul E. McKenney	  NO_HZ.  These checks have proven quite helpful in detecting
11243a0a2a7SPaul E. McKenney	  bugs in arch-specific NO_HZ code.
11343a0a2a7SPaul E. McKenney
11443a0a2a7SPaul E. McKenney	  Say N here if you need ultimate kernel/user switch latencies
11543a0a2a7SPaul E. McKenney	  Say Y if you are unsure
11643a0a2a7SPaul E. McKenney
1178cbd0e38SPaul E. McKenneyconfig RCU_STRICT_GRACE_PERIOD
1188cbd0e38SPaul E. McKenney	bool "Provide debug RCU implementation with short grace periods"
119*4d80b8e1SPaul E. McKenney	depends on DEBUG_KERNEL && RCU_EXPERT && NR_CPUS <= 4
1208cbd0e38SPaul E. McKenney	default n
1218cbd0e38SPaul E. McKenney	select PREEMPT_COUNT if PREEMPT=n
1228cbd0e38SPaul E. McKenney	help
1238cbd0e38SPaul E. McKenney	  Select this option to build an RCU variant that is strict about
1248cbd0e38SPaul E. McKenney	  grace periods, making them as short as it can.  This limits
1258cbd0e38SPaul E. McKenney	  scalability, destroys real-time response, degrades battery
1268cbd0e38SPaul E. McKenney	  lifetime and kills performance.  Don't try this on large
1278cbd0e38SPaul E. McKenney	  machines, as in systems with more than about 10 or 20 CPUs.
1288cbd0e38SPaul E. McKenney	  But in conjunction with tools like KASAN, it can be helpful
1298cbd0e38SPaul E. McKenney	  when looking for certain types of RCU usage bugs, for example,
1308cbd0e38SPaul E. McKenney	  too-short RCU read-side critical sections.
1318cbd0e38SPaul E. McKenney
13243a0a2a7SPaul E. McKenneyendmenu # "RCU Debugging"
133