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);
>>      }
> 

Reply via email to