[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d3629cc7-d9db-0e54-94e9-278e308b7e8e@arm.com>
Date: Tue, 10 Aug 2021 11:05:00 +0100
From: Lukasz Luba <lukasz.luba@....com>
To: Viresh Kumar <viresh.kumar@...aro.org>
Cc: Rafael Wysocki <rjw@...ysocki.net>,
Vincent Donnefort <vincent.donnefort@....com>,
Sudeep Holla <sudeep.holla@....com>, linux-pm@...r.kernel.org,
Vincent Guittot <vincent.guittot@...aro.org>,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH 8/8] cpufreq: vexpress: Use auto-registration for energy
model
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@...aro.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.
Powered by blists - more mailing lists