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