Fix limited cpufreq when booted on battery
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.
Signed-off-by Thomas Renninger <[email protected]>
--- drivers/cpufreq/cpufreq.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
drivers/cpufreq/cpufreq.c +9 -3
@@ -768,7 +768,10 @@ static int cpufreq_add_dev (struct sys_dunlock_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;