On Tue, Dec 08, 2020 at 04:31:48PM +0530, Viresh Kumar wrote: > 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 ? > Yes, details in my earlier response. -- Regards, Sudeep