[PATCH 8/8] cpufreq: vexpress: Use auto-registration for energy model
Lukasz Luba
lukasz.luba at arm.com
Tue Aug 10 03:05:00 PDT 2021
On 8/10/21 8:36 AM, Viresh Kumar wrote:
> Use the CPUFREQ_REGISTER_WITH_EM flag to allow cpufreq core to
> automatically register with the energy model.
>
> This allows removal of boiler plate code from the driver and fixes the
> unregistration part as well.
>
> Signed-off-by: Viresh Kumar <viresh.kumar at linaro.org>
> ---
> drivers/cpufreq/vexpress-spc-cpufreq.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/cpufreq/vexpress-spc-cpufreq.c b/drivers/cpufreq/vexpress-spc-cpufreq.c
> index 51dfa9ae6cf5..28c4c3254337 100644
> --- a/drivers/cpufreq/vexpress-spc-cpufreq.c
> +++ b/drivers/cpufreq/vexpress-spc-cpufreq.c
> @@ -442,8 +442,6 @@ static int ve_spc_cpufreq_init(struct cpufreq_policy *policy)
> policy->freq_table = freq_table[cur_cluster];
> policy->cpuinfo.transition_latency = 1000000; /* 1 ms */
>
> - dev_pm_opp_of_register_em(cpu_dev, policy->cpus);
> -
> if (is_bL_switching_enabled())
> per_cpu(cpu_last_req_freq, policy->cpu) =
> clk_get_cpu_rate(policy->cpu);
> @@ -487,7 +485,8 @@ static void ve_spc_cpufreq_ready(struct cpufreq_policy *policy)
> static struct cpufreq_driver ve_spc_cpufreq_driver = {
> .name = "vexpress-spc",
> .flags = CPUFREQ_HAVE_GOVERNOR_PER_POLICY |
> - CPUFREQ_NEED_INITIAL_FREQ_CHECK,
> + CPUFREQ_NEED_INITIAL_FREQ_CHECK |
> + CPUFREQ_REGISTER_WITH_EM,
> .verify = cpufreq_generic_frequency_table_verify,
> .target_index = ve_spc_cpufreq_set_target,
> .get = ve_spc_cpufreq_get_rate,
>
I can see that this driver calls explicitly the
of_cpufreq_cooling_register()
It does this in the cpufreq_driver->ready() callback
implementation: ve_spc_cpufreq_ready()
With that in mind, the new code in the patch 1/8, which
registers the EM, should be called even earlier, above:
---------------------8<---------------------------------
/* Callback for handling stuff after policy is ready */
if (cpufreq_driver->ready)
cpufreq_driver->ready(policy);
------------------->8----------------------------------
This also triggered a question:
If this new flag can be set in the cpufreq driver which hasn't set
CPUFREQ_IS_COOLING_DEV
?
I can only see one driver (this one in the patch) which has such
configuration.
More information about the linux-arm-kernel
mailing list