On 5/9/2025 8:54 AM, Joel Granados wrote: > Move sysctl_panic_on_rcu_stall and sysctl_max_rcu_stall_to_panic into > the kernel/rcu subdirectory. Make these static in tree_stall.h and > removed them as extern from panic.h as their scope is now confined into > one file. > > This is part of a greater effort to move ctl tables into their > respective subsystems which will reduce the merge conflicts in > kernel/sysctl.c. > > Signed-off-by: Joel Granados <joel.granados@xxxxxxxxxx> For RCU: Reviewed-by: Joel Fernandes <joelagnelf@xxxxxxxxxx> thanks, - Joel > --- > include/linux/panic.h | 2 -- > kernel/rcu/tree_stall.h | 33 +++++++++++++++++++++++++++++++-- > kernel/sysctl.c | 20 -------------------- > 3 files changed, 31 insertions(+), 24 deletions(-) > > diff --git a/include/linux/panic.h b/include/linux/panic.h > index 2494d51707ef422dfe191e484c0676e428a2de09..33ecead16b7c1af46aac07fb10b88beed5074b18 100644 > --- a/include/linux/panic.h > +++ b/include/linux/panic.h > @@ -27,8 +27,6 @@ extern int panic_on_warn; > extern unsigned long panic_on_taint; > extern bool panic_on_taint_nousertaint; > > -extern int sysctl_panic_on_rcu_stall; > -extern int sysctl_max_rcu_stall_to_panic; > extern int sysctl_panic_on_stackoverflow; > > extern bool crash_kexec_post_notifiers; > diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h > index 925fcdad5dea22cfc8b0648546b78870cee485a6..5a0009b7e30b5a057856a3544f841712625699ce 100644 > --- a/kernel/rcu/tree_stall.h > +++ b/kernel/rcu/tree_stall.h > @@ -17,8 +17,37 @@ > // Controlling CPU stall warnings, including delay calculation. > > /* panic() on RCU Stall sysctl. */ > -int sysctl_panic_on_rcu_stall __read_mostly; > -int sysctl_max_rcu_stall_to_panic __read_mostly; > +static int sysctl_panic_on_rcu_stall __read_mostly; > +static int sysctl_max_rcu_stall_to_panic __read_mostly; > + > +static const struct ctl_table rcu_stall_sysctl_table[] = { > + { > + .procname = "panic_on_rcu_stall", > + .data = &sysctl_panic_on_rcu_stall, > + .maxlen = sizeof(sysctl_panic_on_rcu_stall), > + .mode = 0644, > + .proc_handler = proc_dointvec_minmax, > + .extra1 = SYSCTL_ZERO, > + .extra2 = SYSCTL_ONE, > + }, > + { > + .procname = "max_rcu_stall_to_panic", > + .data = &sysctl_max_rcu_stall_to_panic, > + .maxlen = sizeof(sysctl_max_rcu_stall_to_panic), > + .mode = 0644, > + .proc_handler = proc_dointvec_minmax, > + .extra1 = SYSCTL_ONE, > + .extra2 = SYSCTL_INT_MAX, > + }, > +}; > + > +static int __init init_rcu_stall_sysctl(void) > +{ > + register_sysctl_init("kernel", rcu_stall_sysctl_table); > + return 0; > +} > + > +subsys_initcall(init_rcu_stall_sysctl); > > #ifdef CONFIG_PROVE_RCU > #define RCU_STALL_DELAY_DELTA (5 * HZ) > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > index a22f35013da0d838ef421fc5d192f00d1e70fb0f..fd76f0e1d490940a67d72403d72d204ff13d888a 100644 > --- a/kernel/sysctl.c > +++ b/kernel/sysctl.c > @@ -1706,26 +1706,6 @@ static const struct ctl_table kern_table[] = { > .proc_handler = proc_dointvec, > }, > #endif > -#ifdef CONFIG_TREE_RCU > - { > - .procname = "panic_on_rcu_stall", > - .data = &sysctl_panic_on_rcu_stall, > - .maxlen = sizeof(sysctl_panic_on_rcu_stall), > - .mode = 0644, > - .proc_handler = proc_dointvec_minmax, > - .extra1 = SYSCTL_ZERO, > - .extra2 = SYSCTL_ONE, > - }, > - { > - .procname = "max_rcu_stall_to_panic", > - .data = &sysctl_max_rcu_stall_to_panic, > - .maxlen = sizeof(sysctl_max_rcu_stall_to_panic), > - .mode = 0644, > - .proc_handler = proc_dointvec_minmax, > - .extra1 = SYSCTL_ONE, > - .extra2 = SYSCTL_INT_MAX, > - }, > -#endif > }; > > int __init sysctl_init_bases(void) >