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.

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

-- 
viresh

Reply via email to