On Thu, Jun 16, 2016 at 3:33 PM, Viresh Kumar viresh.kumar@linaro.org wrote:
dev_pm_opp_get_sharing_cpus() returns 0 even in the case where the OPP core doesn't know if the table is shared or not. It is working for most of the platforms, as the OPP table was never created and we returned -ENODEV then.
But in case of one of the platforms (Jetson TK1) at least, the situation is a bit different. The OPP table is created (somehow) before dev_pm_opp_get_sharing_cpus() is called and so we returned 0. The caller of this routine treated that as 'CPUs don't share OPPs' and that had bad consequences on performance.
Fix this by creating a converting 'shared_opp' to an enum. dev_pm_opp_get_sharing_cpus() returns -EINVAL now in case the status in access-unknown, so that the caller can handle it accordingly (cpufreq-dt considers that as 'all CPUs share the table').
Fixes: 6f707daa3833 ("PM / OPP: Add dev_pm_opp_get_sharing_cpus()") Reported-and-tested-by: Alexandre Courbot acourbot@nvidia.com Signed-off-by: Viresh Kumar viresh.kumar@linaro.org
I've queued it up, but I rewrote the changelog.
Please check in bleeding-edge.
Thanks!