cpufreq: schedutil: Always process remote callback with slow switching
authorViresh Kumar <viresh.kumar@linaro.org>
Mon, 14 Aug 2017 09:20:16 +0000 (14:50 +0530)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 17 Aug 2017 23:35:19 +0000 (01:35 +0200)
commitc49cbc19b31e069cb344921c7286d7549767d10e
tree17619f692f3bea27eabe3155fefe92d9ed9e9383
parente2cabe48c20efb174ce0c01190f8b9c5f3ea1d13
cpufreq: schedutil: Always process remote callback with slow switching

The frequency update from the utilization update handlers can be divided
into two parts:

(A) Finding the next frequency
(B) Updating the frequency

While any CPU can do (A), (B) can be restricted to a group of CPUs only,
depending on the current platform.

For platforms where fast cpufreq switching is possible, both (A) and (B)
are always done from the same CPU and that CPU should be capable of
changing the frequency of the target CPU.

But for platforms where fast cpufreq switching isn't possible, after
doing (A) we wake up a kthread which will eventually do (B). This
kthread is already bound to the right set of CPUs, i.e. only those which
can change the frequency of CPUs of a cpufreq policy. And so any CPU
can actually do (A) in this case, as the frequency is updated from the
right set of CPUs only.

Check cpufreq_can_do_remote_dvfs() only for the fast switching case.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
kernel/sched/cpufreq_schedutil.c