On 21-11-18, 10:47, Viresh Kumar wrote: > On 21-11-18, 10:34, Rajendra Nayak wrote: > > > > > > On 11/5/2018 12:06 PM, Viresh Kumar wrote: > > > Introduce a new helper dev_pm_opp_xlate_performance_state() which will > > > be used to translate from pstate of a device to another one. > > > > > > Initially this will be used by genpd to find pstate of a master domain > > > using its sub-domain's pstate. > > > > > > Signed-off-by: Viresh Kumar <viresh.ku...@linaro.org> > > > --- > > > drivers/opp/core.c | 49 ++++++++++++++++++++++++++++++++++++++++++ > > > include/linux/pm_opp.h | 7 ++++++ > > > 2 files changed, 56 insertions(+) > > > > > > diff --git a/drivers/opp/core.c b/drivers/opp/core.c > > > index 0eaa954b3f6c..010a4268e8dd 100644 > > > --- a/drivers/opp/core.c > > > +++ b/drivers/opp/core.c > > > @@ -1707,6 +1707,55 @@ void dev_pm_opp_put_genpd_virt_dev(struct > > > opp_table *opp_table, > > > dev_err(virt_dev, "Failed to find required device > > > entry\n"); > > > } > > > +/** > > > + * dev_pm_opp_xlate_performance_state() - Find required OPP's pstate for > > > src_table. > > > + * @src_table: OPP table which has dst_table as one of its required OPP > > > table. > > > > So I have a case where the src_table and dst_table are shared/same. Can you > > explain how would > > it work in such a case? > > Can you give the example, as I am finding some issues with such shared > tables. Though the code may work just fine btw.
I may have found the problem you are facing here. Please try this diff and tell me if you hitting it, check this in dmesg. diff --git a/drivers/opp/of.c b/drivers/opp/of.c index 3740822b4197..6c45774306b0 100644 --- a/drivers/opp/of.c +++ b/drivers/opp/of.c @@ -225,6 +225,7 @@ static void _opp_table_alloc_required_tables(struct opp_table *opp_table, free_required_tables: _opp_table_free_required_tables(opp_table); put_np: + dev_err(dev, "Failed to allocate required OPP tables\n"); of_node_put(np); } -- viresh