From ff99a1570ba2d44cff8ecf4650e81b7272a5da55 Mon Sep 17 00:00:00 2001 From: Christian Krafft Date: Fri, 20 Jul 2007 21:39:20 +0200 Subject: [PATCH] --- yaml --- r: 62229 b: refs/heads/master c: e5ecc8719212e2566440818491ec5741689f3743 h: refs/heads/master i: 62227: 5e46089d356e9d2e3ff43aa98650825babb0e85b v: v3 --- [refs] | 2 +- .../arch/powerpc/platforms/cell/cbe_cpufreq.c | 20 ++++++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index 8728181249d2..446e585d4b54 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a964b9be3e475f30aee334654b4ff200bcdc0092 +refs/heads/master: e5ecc8719212e2566440818491ec5741689f3743 diff --git a/trunk/arch/powerpc/platforms/cell/cbe_cpufreq.c b/trunk/arch/powerpc/platforms/cell/cbe_cpufreq.c index 5820fb9a4521..3a26b3c115b9 100644 --- a/trunk/arch/powerpc/platforms/cell/cbe_cpufreq.c +++ b/trunk/arch/powerpc/platforms/cell/cbe_cpufreq.c @@ -196,10 +196,9 @@ static int pmi_notifier(struct notifier_block *nb, { struct cpufreq_policy *policy = data; - if (event != CPUFREQ_INCOMPATIBLE) - return 0; + if (pmi_frequency_limit) + cpufreq_verify_within_limits(policy, 0, pmi_frequency_limit); - cpufreq_verify_within_limits(policy, 0, pmi_frequency_limit); return 0; } @@ -263,11 +262,6 @@ static int cbe_cpufreq_cpu_init(struct cpufreq_policy *policy) cpufreq_frequency_table_get_attr(cbe_freqs, policy->cpu); - if (cbe_cpufreq_has_pmi) { - /* frequency might get limited later, initialize limit with max_freq */ - pmi_frequency_limit = max_freq; - cpufreq_register_notifier(&pmi_notifier_block, CPUFREQ_POLICY_NOTIFIER); - } /* this ensures that policy->cpuinfo_min and policy->cpuinfo_max are set correctly */ return cpufreq_frequency_table_cpuinfo(policy, cbe_freqs); @@ -275,9 +269,6 @@ static int cbe_cpufreq_cpu_init(struct cpufreq_policy *policy) static int cbe_cpufreq_cpu_exit(struct cpufreq_policy *policy) { - if (cbe_cpufreq_has_pmi) - cpufreq_unregister_notifier(&pmi_notifier_block, CPUFREQ_POLICY_NOTIFIER); - cpufreq_frequency_table_put_attr(policy->cpu); return 0; } @@ -341,6 +332,9 @@ static int __init cbe_cpufreq_init(void) cbe_cpufreq_has_pmi = pmi_register_handler(&cbe_pmi_handler) == 0; + if (cbe_cpufreq_has_pmi) + cpufreq_register_notifier(&pmi_notifier_block, CPUFREQ_POLICY_NOTIFIER); + return cpufreq_register_driver(&cbe_cpufreq_driver); } @@ -348,8 +342,10 @@ static void __exit cbe_cpufreq_exit(void) { cpufreq_unregister_driver(&cbe_cpufreq_driver); - if (cbe_cpufreq_has_pmi) + if (cbe_cpufreq_has_pmi) { + cpufreq_unregister_notifier(&pmi_notifier_block, CPUFREQ_POLICY_NOTIFIER); pmi_unregister_handler(&cbe_pmi_handler); + } } module_init(cbe_cpufreq_init);