| # 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 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" |