On 11/21/2018 11:36 AM, Viresh Kumar wrote:
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.

Yes, I do seem to be hitting this.


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


Reply via email to