Hi Viresh,
On 02/02/16 16:27, Viresh Kumar wrote:
Hi Rafael,
Sorry for doing this, I know you were also looking to fix this in a possibly different way. But I thought, it would be better if we fix that. We can scrap this version and take yours if that looks better.
The root cause of all the issues we were facing, was that we were taking policy->rwsem while accessing governor sysfs attributes. And that happened because we were sharing the show/store calls present in cpufreq.c.
I thought, perhaps the best way to fix it is to give separate sysfs-ops to governors. And that's what I did.
@Juri: I need your help in testing these. My platform doesn't give me those lockups (even without these patches) and Juno/Tc2 would fit better.
Can you please run some tests on these?
Sure! Will do in the next few days.
Best,
- Juri
They are pushed here for easy access (and auto test by build-bot): git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git cpufreq/governor-kobject
-- viresh
Viresh Kumar (5): cpufreq: governor: Kill declare_show_sampling_rate_min() cpufreq: governor: Create separate sysfs-ops cpufreq: governor: Remove unused sysfs attribute macros cpufreq: Don't drop rwsem before calling CPUFREQ_GOV_POLICY_EXIT cpufreq: Get rid of ->governor_enabled and its lock
drivers/cpufreq/cpufreq.c | 29 ---------- drivers/cpufreq/cpufreq_conservative.c | 77 ++++++++++--------------- drivers/cpufreq/cpufreq_governor.c | 86 ++++++++++++++++++++-------- drivers/cpufreq/cpufreq_governor.h | 101 +++++++-------------------------- drivers/cpufreq/cpufreq_ondemand.c | 77 ++++++++++--------------- include/linux/cpufreq.h | 5 -- 6 files changed, 143 insertions(+), 232 deletions(-)
-- 2.7.0.79.gdc08a19