summaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq
diff options
context:
space:
mode:
authorThomas Renninger <trenn@suse.de>2006-01-26 18:46:33 +0100
committerDave Jones <davej@redhat.com>2006-01-26 10:49:39 -0800
commit0961dd0d217d072df736d964f47c2b6600931e19 (patch)
tree4f90dfb0f93608cd331a8e0b61f849bc9946451b /drivers/cpufreq
parentc70ca00f77eb1bb69c5a2d029b3a911bc88eac1b (diff)
downloadlinux-0961dd0d217d072df736d964f47c2b6600931e19.tar.gz
linux-0961dd0d217d072df736d964f47c2b6600931e19.tar.bz2
linux-0961dd0d217d072df736d964f47c2b6600931e19.zip
[CPUFREQ] _PPC frequency change issues
BIOS might change frequency behind our back when BIOS changes allowed frequencies via _PPC. In this case cpufreq core got out of sync. Ask driver for current freq and notify governors about a change Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Signed-off-by: Dave Jones <davej@redhat.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r--drivers/cpufreq/cpufreq.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 0a6c4c8642e7..7a511479ae29 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1429,6 +1429,14 @@ int cpufreq_update_policy(unsigned int cpu)
policy.policy = data->user_policy.policy;
policy.governor = data->user_policy.governor;
+ /* BIOS might change freq behind our back
+ -> ask driver for current freq and notify governors about a change */
+ if (cpufreq_driver->get) {
+ policy.cur = cpufreq_driver->get(cpu);
+ if (data->cur != policy.cur)
+ cpufreq_out_of_sync(cpu, data->cur, policy.cur);
+ }
+
ret = __cpufreq_set_policy(data, &policy);
mutex_unlock(&data->lock);