From 2957198485d62fe4ef6dabcb10ee537cbde284d4 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 26 Nov 2023 13:36:50 +0000 Subject: [PATCH] Revert "sched/debug: Remove the /proc/sys/kernel/sched_child_runs_first sysctl" This reverts commit 17e7170645e34c519443ba63895264bbdee7beee. There are loads of CTS tests that want to see this proc file present in order to "pass". So, fake them out and just put it back, it's not been hooked up to anything for a long time, so it isn't hurting anything to put it back. Odds are no one will even notice it... Change-Id: If70527d377ffaabaa9e796153e4c735c1cf66de1 Signed-off-by: Greg Kroah-Hartman --- kernel/sched/debug.c | 1 + kernel/sched/fair.c | 13 +++++++++++++ kernel/sched/sched.h | 2 ++ 3 files changed, 16 insertions(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index b9945314b0a4..7c3250042719 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -862,6 +862,7 @@ static void sched_debug_header(struct seq_file *m) #define PN(x) \ SEQ_printf(m, " .%-40s: %Ld.%06ld\n", #x, SPLIT_NS(x)) PN(sysctl_sched_base_slice); + P(sysctl_sched_child_runs_first); P(sysctl_sched_features); #undef PN #undef P diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index f58f82f86f13..04a1b692068a 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -94,6 +94,12 @@ unsigned int sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_LOG; unsigned int sysctl_sched_base_slice = 750000ULL; static unsigned int normalized_sysctl_sched_base_slice = 750000ULL; +/* + * After fork, child runs first. If set to 0 (default) then + * parent will (try to) run first. + */ +unsigned int sysctl_sched_child_runs_first __read_mostly; + const_debug unsigned int sysctl_sched_migration_cost = 500000UL; int sched_thermal_decay_shift; @@ -155,6 +161,13 @@ static unsigned int sysctl_numa_balancing_promote_rate_limit = 65536; #ifdef CONFIG_SYSCTL static struct ctl_table sched_fair_sysctls[] = { + { + .procname = "sched_child_runs_first", + .data = &sysctl_sched_child_runs_first, + .maxlen = sizeof(unsigned int), + .mode = 0644, + .proc_handler = proc_dointvec, + }, #ifdef CONFIG_CFS_BANDWIDTH { .procname = "sched_cfs_bandwidth_slice_us", diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index edd3aeaca398..e581e633eeed 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -102,6 +102,8 @@ extern __read_mostly int scheduler_running; extern unsigned long calc_load_update; extern atomic_long_t calc_load_tasks; +extern unsigned int sysctl_sched_child_runs_first; + extern void calc_global_load_tick(struct rq *this_rq); extern long calc_load_fold_active(struct rq *this_rq, long adjust);