From 652a7f2c7ec82db3fd1542d725590eed2d8c9f9c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 20 Jun 2023 11:17:10 +0000 Subject: [PATCH] Revert "sched/uclamp: Fix a uninitialized variable warnings" This reverts commit 89ad8a672f57fb119e1743901ed129d4b0a2dc2b. It breaks the Android kernel abi, so revert it. If it needs to come back later, it can do so in an abi-safe way. Bug: 161946584 Cc: Qais Yousef Change-Id: I5e23eb845f1e2558992cdfe828e9ebcf32055a52 Signed-off-by: Greg Kroah-Hartman --- kernel/sched/fair.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 71a493bdeacd..074d8f5b655b 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6913,9 +6913,9 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, int sy target_cap = boosted ? 0 : ULONG_MAX; for (; pd; pd = pd->next) { - unsigned long util_min = p_util_min, util_max = p_util_max; unsigned long cur_delta, spare_cap, max_spare_cap = 0; unsigned long rq_util_min, rq_util_max; + unsigned long util_min, util_max; unsigned long base_energy_pd; int max_spare_cap_cpu = -1; @@ -6924,8 +6924,6 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, int sy base_energy += base_energy_pd; for_each_cpu_and(cpu, perf_domain_span(pd), sched_domain_span(sd)) { - struct rq *rq = cpu_rq(cpu); - if (!cpumask_test_cpu(cpu, p->cpus_ptr)) continue; @@ -6941,19 +6939,24 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu, int sy * much capacity we can get out of the CPU; this is * aligned with schedutil_cpu_util(). */ - if (uclamp_is_used() && !uclamp_rq_is_idle(rq)) { - /* - * Open code uclamp_rq_util_with() except for - * the clamp() part. Ie: apply max aggregation - * only. util_fits_cpu() logic requires to - * operate on non clamped util but must use the - * max-aggregated uclamp_{min, max}. - */ - rq_util_min = uclamp_rq_get(rq, UCLAMP_MIN); - rq_util_max = uclamp_rq_get(rq, UCLAMP_MAX); + if (uclamp_is_used()) { + if (uclamp_rq_is_idle(cpu_rq(cpu))) { + util_min = p_util_min; + util_max = p_util_max; + } else { + /* + * Open code uclamp_rq_util_with() except for + * the clamp() part. Ie: apply max aggregation + * only. util_fits_cpu() logic requires to + * operate on non clamped util but must use the + * max-aggregated uclamp_{min, max}. + */ + rq_util_min = uclamp_rq_get(cpu_rq(cpu), UCLAMP_MIN); + rq_util_max = uclamp_rq_get(cpu_rq(cpu), UCLAMP_MAX); - util_min = max(rq_util_min, p_util_min); - util_max = max(rq_util_max, p_util_max); + util_min = max(rq_util_min, p_util_min); + util_max = max(rq_util_max, p_util_max); + } } if (!util_fits_cpu(util, util_min, util_max, cpu)) continue;