diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h index 150db62ae104..82fd187bb282 100644 --- a/include/linux/sched/sysctl.h +++ b/include/linux/sched/sysctl.h @@ -52,6 +52,7 @@ extern unsigned int __weak sysctl_sched_coloc_busy_hyst_max_ms; extern unsigned int __weak sysctl_sched_window_stats_policy; extern unsigned int __weak sysctl_sched_ravg_window_nr_ticks; extern unsigned int __weak sysctl_sched_many_wakeup_threshold; +extern unsigned int __weak sysctl_sched_dynamic_ravg_window_enable; extern int __weak walt_proc_group_thresholds_handler(struct ctl_table *table, int write, diff --git a/kernel/sysctl.c b/kernel/sysctl.c index f38bae0fc9b4..ac0e200b3a91 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -532,6 +532,15 @@ static struct ctl_table kern_table[] = { .mode = 0644, .proc_handler = sched_ravg_window_handler, }, + { + .procname = "sched_dynamic_ravg_window_enable", + .data = &sysctl_sched_dynamic_ravg_window_enable, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ZERO, + .extra2 = SYSCTL_ONE, + }, { .procname = "sched_upmigrate", .data = &sysctl_sched_capacity_margin_up, @@ -3614,7 +3623,8 @@ static int do_proc_douintvec_rwin(bool *negp, unsigned long *lvalp, int *valp, int write, void *data) { if (write) { - if (*lvalp == 0 || *lvalp == 2 || *lvalp == 5) + if (*lvalp == 2 || *lvalp == 3 || *lvalp == 4 || *lvalp == 5 || + *lvalp == 8) *valp = *lvalp; else return -EINVAL;