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