Skip to content

Commit

Permalink
cpufreq: schedutil: Examine the correct CPU when we update util
Browse files Browse the repository at this point in the history
After commit 674e754 (sched: cpufreq: Allow remote cpufreq
callbacks) we stopped to always read the utilization for the CPU we
are running the governor on, and instead we 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.

Fix this by consolidating the initialization code into sugov_start().

Fixes: 674e754 (sched: cpufreq: Allow remote cpufreq callbacks)
Signed-off-by: Chris Redpath <chris.redpath@arm.com>
Reviewed-by: Patrick Bellasi <patrick.bellasi@arm.com>
Reviewed-by: Brendan Jackman <brendan.jackman@arm.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Chris Redpath authored and Rafael J. Wysocki committed Nov 4, 2017
1 parent 0b07194 commit d62d813
Showing 1 changed file with 1 addition and 5 deletions.
6 changes: 1 addition & 5 deletions kernel/sched/cpufreq_schedutil.c
Original file line number Diff line number Diff line change
Expand Up @@ -649,6 +649,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;
Expand Down Expand Up @@ -714,11 +715,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);

0 comments on commit d62d813

Please sign in to comment.