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 converting 'shared_opp' to an integer and have an extra
value when its state in undefined. dev_pm_opp_get_sharing_cpus() returns
-EINVAL now in that case, 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-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>
---
Hi Alexandre,
This is untested, can you please confirm if this fixes it for you?