Messages in this thread |  | | Date | Mon, 11 Apr 2022 08:40:15 +0530 | From | Viresh Kumar <> | Subject | Re: [PATCH v2 1/3] cpufreq: CPPC: Add cppc_cpufreq_search_cpu_data |
| |
On 07-04-22, 10:16, Pierre Gondois wrote: > From: Pierre Gondois <Pierre.Gondois@arm.com> > > cppc_cpufreq_get_cpu_data() allocates a new struct cppc_cpudata > for the input CPU at each call. > > To search the struct associated with a cpu without allocating > a new one, add cppc_cpufreq_search_cpu_data(). > Also add an early prototype. > > This will be used in a later patch, when generating artificial > performance states to register an artificial Energy Model in the > cppc_cpufreq driver and enable the Energy Aware Scheduler for ACPI > based systems. > > Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com> > --- > drivers/cpufreq/cppc_cpufreq.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c > index 82d370ae6a4a..ffcd9704add2 100644 > --- a/drivers/cpufreq/cppc_cpufreq.c > +++ b/drivers/cpufreq/cppc_cpufreq.c > @@ -41,6 +41,8 @@ > */ > static LIST_HEAD(cpu_data_list); > > +static struct cppc_cpudata *cppc_cpufreq_search_cpu_data(unsigned int cpu); > + > static bool boost_supported; > > struct cppc_workaround_oem_info { > @@ -479,6 +481,19 @@ static void cppc_cpufreq_put_cpu_data(struct cpufreq_policy *policy) > policy->driver_data = NULL; > } > > +static struct cppc_cpudata * > +cppc_cpufreq_search_cpu_data(unsigned int cpu) > +{ > + struct cppc_cpudata *iter, *tmp; > + > + list_for_each_entry_safe(iter, tmp, &cpu_data_list, node) { > + if (cpumask_test_cpu(cpu, iter->shared_cpu_map)) > + return iter; > + } > + > + return NULL; > +}
Did you miss this in cppc_cpufreq_cpu_init() ?
policy->driver_data = cpu_data;
The data is saved inside the policy and it shouldn't be difficult to fetch it from there, instead of going through the list.
-- viresh
|  |