lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 3 Nov 2017 13:36:42 +0000 From: Chris Redpath <chris.redpath@....com> To: linux-kernel@...r.kernel.org, linux-pm@...r.kernel.org Cc: Morten Rasmussen <morten.rasmussen@....com>, Dietmar Eggemann <dietmar.eggemann@....com>, Chris Redpath <chris.redpath@....com>, "Rafael J . Wysocki" <rjw@...ysocki.net>, Viresh Kumar <viresh.kumar@...aro.org>, Ingo Molnar <mingo@...hat.com>, Peter Zijlstra <peterz@...radead.org> Subject: [PATCH v3] cpufreq: schedutil: Examine the correct CPU when we update util After 674e75411fc2 ("sched: cpufreq: Allow remote cpufreq callbacks") We stopped always reading utilization for the cpu we are running the governor on, and instead read it for the cpu which we've been told has updated utilization. This is stored in sugov_cpu->cpu. The value is set in sugov_register but we clear it in sugov_start which leads to always looking at the utilization of CPU0 instead of the correct one. Let's fix this by consolidating the initialization code into sugov_start(). Fixes: 674e75411fc2 ("sched: cpufreq: Allow remote cpufreq callbacks") Signed-off-by: Chris Redpath <chris.redpath@....com> Reviewed-by: Patrick Bellasi <patrick.bellasi@....com> Reviewed-by: Brendan Jackman <brendan.jackman@....com> Cc: Rafael J. Wysocki <rjw@...ysocki.net> Cc: Viresh Kumar <viresh.kumar@...aro.org> Cc: Ingo Molnar <mingo@...hat.com> Cc: Peter Zijlstra <peterz@...radead.org> --- kernel/sched/cpufreq_schedutil.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c index 6c1a7fcfa2a7..dc68a1ccdb33 100644 --- a/kernel/sched/cpufreq_schedutil.c +++ b/kernel/sched/cpufreq_schedutil.c @@ -728,6 +728,7 @@ static int sugov_start(struct cpufreq_policy *policy) struct sugov_cpu *sg_cpu = &per_cpu(sugov_cpu, cpu); memset(sg_cpu, 0, sizeof(*sg_cpu)); + sg_cpu->cpu = cpu; sg_cpu->sg_policy = sg_policy; sg_cpu->flags = SCHED_CPUFREQ_RT; sg_cpu->iowait_boost_max = policy->cpuinfo.max_freq; @@ -793,11 +794,6 @@ struct cpufreq_governor *cpufreq_default_governor(void) static int __init sugov_register(void) { - int cpu; - - for_each_possible_cpu(cpu) - per_cpu(sugov_cpu, cpu).cpu = cpu; - return cpufreq_register_governor(&schedutil_gov); } fs_initcall(sugov_register); -- 2.13.1.449.g02a2850
Powered by blists - more mailing lists