Hi Viresh,
On 2/18/21 11:00 AM, Viresh Kumar wrote: > On 15-02-21, 07:51, Nicola Mazzucato wrote: >> + /* >> + * Add OPPs only on those CPUs for which we haven't already done so. >> + */ >> nr_opp = dev_pm_opp_get_opp_count(cpu_dev); > > Please add a more detailed comment here explaining why you expect OPPs > to be present here in advance. i.e. you _may_ have policy per CPU even > though OPP core says OPPs are shared.. It is not straight forward to > catch otherwise. Sure, I'll put more details, thanks. > >> if (nr_opp <= 0) { >> - dev_err(cpu_dev, "%s: No OPPs for this device: %d\n", >> - __func__, ret); >> - >> - ret = -ENODEV; >> - goto out_free_priv; >> + ret = handle->perf_ops->device_opps_add(handle, cpu_dev); >> + if (ret) { >> + dev_warn(cpu_dev, "failed to add opps to the device\n"); >> + goto out_free_cpumask; >> + } >> + >> + nr_opp = dev_pm_opp_get_opp_count(cpu_dev); >> + if (nr_opp <= 0) { >> + dev_err(cpu_dev, "%s: No OPPs for this device: %d\n", >> + __func__, ret); >> + >> + ret = -ENODEV; >> + goto out_free_opp; >> + } >> + >> + ret = dev_pm_opp_set_sharing_cpus(cpu_dev, opp_shared_cpus); >> + if (ret) { >> + dev_err(cpu_dev, "%s: failed to mark OPPs as shared: >> %d\n", >> + __func__, ret); >> + >> + goto out_free_opp; >> + } >> + >> + power_scale_mw = handle->perf_ops->power_scale_mw_get(handle); >> + em_dev_register_perf_domain(cpu_dev, nr_opp, &em_cb, >> + opp_shared_cpus, power_scale_mw); >> } >