Skip to contentSkip to conversation

Fix limited cpufreq when booted on battery

PATCH New Thomas Renninger 1 participant 1 message Apr 19, 2007 CPU frequency scaling framework

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 Fix limited cpufreq when booted on battery

Hi,

References:
https://bugzilla.novell.com/show_bug.cgi?id=231107
https://bugzilla.novell.com/show_bug.cgi?id=264077

I already posted this a while ago..., hopefully it's picked up for 2.6.22 now.

Thanks,

Thomas

Fix limited cpufreq when booted on battery

If booted on battery:
cpufreq_set_policy (evil) is invoked which calls verify_within_limits. max_freq gets lowered and therefore users_policy.max, which is used to restore higher freqs via update_policy later is set to the already limited frequency -> you can never go up again, even BIOS allows higher freqs later.

---
 drivers/cpufreq/cpufreq.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
drivers/cpufreq/cpufreq.c +9 -3
Index: linux-2.6.21-rc3/drivers/cpufreq/cpufreq.c
===================================================================
@@ -768,7 +768,10 @@ static int cpufreq_add_dev (struct sys_d
 		unlock_policy_rwsem_write(cpu);
 		goto err_out;
 	}
-
+	policy->user_policy.min = policy->cpuinfo.min_freq;
+	policy->user_policy.max = policy->cpuinfo.max_freq;
+	policy->user_policy.governor = policy->governor;
+	
 #ifdef CONFIG_SMP
 	for_each_cpu_mask(j, policy->cpus) {
 		if (cpu == j)
@@ -858,10 +861,13 @@ static int cpufreq_add_dev (struct sys_d
 
 	policy->governor = NULL; /* to assure that the starting sequence is
 				  * run in cpufreq_set_policy */
-	unlock_policy_rwsem_write(cpu);
 
 	/* set default policy */
-	ret = cpufreq_set_policy(&new_policy);
+	ret = __cpufreq_set_policy(policy, &new_policy);
+	policy->user_policy.policy = policy->policy;
+
+	unlock_policy_rwsem_write(cpu);
+
 	if (ret) {
 		dprintk("setting policy failed\n");
 		goto err_out_unregister;