diff --git a/kernel/rcu/Kconfig.debug b/kernel/rcu/Kconfig.debug index e078e988773d..35218ba74eb5 100644 --- a/kernel/rcu/Kconfig.debug +++ b/kernel/rcu/Kconfig.debug @@ -175,6 +175,30 @@ config RCU_CPU_STALL_NOTIFIER Say Y here if you want RCU CPU stall notifiers (you don't want them) Say N if you are unsure. +config BOOTPARAM_RCU_STALL_PANIC + bool "Panic (reboot) on RCU CPU stall" + depends on RCU_STALL_COMMON + default n + help + Say Y here to enable the kernel to panic when an RCU CPU stall + is detected. + + The panic can be used in combination with panic_timeout, + to cause the system to reboot automatically after an + RCU CPU stall has been detected. This feature is useful for + high-availability systems that have uptime guarantees and + where a CPU stall must be resolved ASAP. + + The kernel.max_rcu_stall_to_panic sysctl can be used to set + a minimum number of stalls before panicking, allowing the + system to tolerate a given number of RCU CPU stalls before + triggering a panic. + + This setting can be overridden at runtime via the + kernel.panic_on_rcu_stall sysctl parameter. + + Say N if unsure. + config RCU_TRACE bool "Enable tracing for RCU" depends on DEBUG_KERNEL diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index b67532cb8770..43ddabf46b5e 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -17,7 +17,7 @@ // Controlling CPU stall warnings, including delay calculation. /* panic() on RCU Stall sysctl. */ -static int sysctl_panic_on_rcu_stall __read_mostly; +static int sysctl_panic_on_rcu_stall __read_mostly = IS_ENABLED(CONFIG_BOOTPARAM_RCU_STALL_PANIC); static int sysctl_max_rcu_stall_to_panic __read_mostly; static const struct ctl_table rcu_stall_sysctl_table[] = {