[PATCH 0/5] cpufreq: governors: Solve the ABBA lockups

Viresh Kumar
2016-02-02T10:57:44Z

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?

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