Messages in this thread | | | Date | Tue, 20 Nov 2018 11:49:25 +0530 | From | Viresh Kumar <> | Subject | Re: [PATCH v9 15/15] OPTIONAL: cpufreq: dt: Register an Energy Model |
| |
On 19-11-18, 14:18, Quentin Perret wrote: > static int cpufreq_init(struct cpufreq_policy *policy) > { > + struct em_data_callback em_cb = EM_DATA_CB(of_est_power); > struct cpufreq_frequency_table *freq_table; > struct opp_table *opp_table = NULL; > struct private_data *priv; > @@ -160,7 +203,7 @@ static int cpufreq_init(struct cpufreq_policy *policy) > unsigned int transition_latency; > bool fallback = false; > const char *name; > - int ret; > + int ret, nr_opp; > > cpu_dev = get_cpu_device(policy->cpu); > if (!cpu_dev) { > @@ -237,6 +280,7 @@ static int cpufreq_init(struct cpufreq_policy *policy) > ret = -EPROBE_DEFER; > goto out_free_opp; > } > + nr_opp = ret; > > if (fallback) { > cpumask_setall(policy->cpus); > @@ -280,6 +324,8 @@ static int cpufreq_init(struct cpufreq_policy *policy) > policy->cpuinfo.transition_latency = transition_latency; > policy->dvfs_possible_from_any_cpu = true; > > + em_register_perf_domain(policy->cpus, nr_opp, &em_cb); > + > return 0; > > out_free_cpufreq_table:
I haven't gone deep into the series, but why don't we need something like em_unregister_perf_domain()? That can be used if the cpufreq driver goes away. Else loading/unloading/loading the cpufreq driver may register the perf-domain callback again.
-- viresh
| |