On 08-12-20, 10:58, Nicola Mazzucato wrote: > > > On 12/8/20 7:26 AM, Viresh Kumar wrote: > > On 08-12-20, 07:22, Nicola Mazzucato wrote: > >> On 12/8/20 5:50 AM, Viresh Kumar wrote: > >>> On 02-12-20, 17:23, Nicola Mazzucato wrote: > >>>> nr_opp = dev_pm_opp_get_opp_count(cpu_dev); > >>>> if (nr_opp <= 0) { > >>>> - dev_dbg(cpu_dev, "OPP table is not ready, deferring probe\n"); > >>>> - ret = -EPROBE_DEFER; > >>>> - goto out_free_opp; > >>>> + 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; > >>>> + } > >>>> + > >>>> + 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_cpumask; > >>>> + } > >>>> + > >>> > >>> Why do we need to call above two after calling > >>> dev_pm_opp_get_opp_count() ? > >> > >> Sorry, I am not sure to understand your question here. If there are no opps for > >> a device we want to add them to it > > > > Earlier we used to call handle->perf_ops->device_opps_add() and > > dev_pm_opp_set_sharing_cpus() before calling dev_pm_opp_get_opp_count(), why is > > the order changed now ? > > True. The order has changed to take into account the fact that when we have > per-cpu + opp-shared, we don't need to add opps for devices which already have them. The opp-shared thing is mostly a dummy thing to get you some information here. What else has changed here ? I still don't understand why the OPPs would get added and so the duplicate OPPs messages. Does this already happen ? -- viresh