Hi, The power management team at Linaro has had a look at the cpufreq updates since the v3.10 LTS and identified a few patches that look like they should be in there. The most recent of these is from v3.12 so they won't apply to any of the more recent stable kernels. - 59a6342203a7a cpufreq: Fix governor start/stop race condition This looks like a straight race condition fix. - 19c763031acb8 cpufreq: serialize calls to __cpufreq_governor() The commit message here outlines a scenario where this change fixes a crash which seems like stable material to me. There is a context change that needs a fixup but it's fairly trivial: diff --cc drivers/cpufreq/cpufreq.c index c34d4423f298,7e6baa58a7f2..000000000000 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@@ -1586,8 -1692,10 +1586,9 @@@ static int __cpufreq_governor(struct cp policy->cpu, event); mutex_lock(&cpufreq_governor_lock); - if ((!policy->governor_enabled && (event == CPUFREQ_GOV_STOP)) || - if (policy->governor_busy - || (policy->governor_enabled && event == CPUFREQ_GOV_START) - || (!policy->governor_enabled - && (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) { ++ if (policy->governor_busy || ++ (!policy->governor_enabled && (event == CPUFREQ_GOV_STOP)) || + (policy->governor_enabled && (event == CPUFREQ_GOV_START))) { mutex_unlock(&cpufreq_governor_lock); return -EBUSY; } - a857c0b9e24e3 cpufreq: Fix wrong time unit conversion As noted in the changelog this is a bugfix for non-tick based systems like full dynticks ones. There's also this: - dfa5bb622555d cpufreq: ondemand: Change the calculation of target frequency This is a small patch which delivers a useful performance improvement but it's not a bug fix and it does touch the cpufreq core so it doesn't seem to really fit. On the other hand I've got user reports that it fixes problems with some multicluster systems that can scale cluster frequencies independently (the additional stability in the frequencies selected avoids poor interaction with scheduler as cpufreq ramps the frequency while the scheduler moves load away from the cluster), it's simple and it's quite well isolated so I wanted to mention it. Thanks, Mark
Attachment:
signature.asc
Description: Digital signature