diff options
author | Cesar Eduardo Barros <cesarb@cesarb.net> | 2008-02-16 08:41:24 -0200 |
---|---|---|
committer | Dave Jones <davej@redhat.com> | 2008-04-28 15:05:44 -0400 |
commit | 74212ca432982903d0fc6a0f282b199e000ad8b1 (patch) | |
tree | 3fb784de921c831cc85577ef7fc9750d1414f1e3 /drivers/cpufreq | |
parent | 457091181176643787a547dc04eb3cf5dcd822ce (diff) | |
download | linux-3.10-74212ca432982903d0fc6a0f282b199e000ad8b1.tar.gz linux-3.10-74212ca432982903d0fc6a0f282b199e000ad8b1.tar.bz2 linux-3.10-74212ca432982903d0fc6a0f282b199e000ad8b1.zip |
[CPUFREQ] Warn when cpufreq_register_notifier called before pure initcalls
If cpufreq_register_notifier is called before pure initcalls,
init_cpufreq_transition_notifier_list will overwrite whatever it did,
causing notifiers to be ignored.
Print some noise to the kernel log if that happens.
Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
Signed-off-by: Dave Jones <davej@codemonkey.org.uk>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index be78c07f72c..d3575f5ec6d 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -118,9 +118,11 @@ static void handle_update(struct work_struct *work); static BLOCKING_NOTIFIER_HEAD(cpufreq_policy_notifier_list); static struct srcu_notifier_head cpufreq_transition_notifier_list; +static bool init_cpufreq_transition_notifier_list_called; static int __init init_cpufreq_transition_notifier_list(void) { srcu_init_notifier_head(&cpufreq_transition_notifier_list); + init_cpufreq_transition_notifier_list_called = true; return 0; } pure_initcall(init_cpufreq_transition_notifier_list); @@ -1367,6 +1369,8 @@ int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list) { int ret; + WARN_ON(!init_cpufreq_transition_notifier_list_called); + switch (list) { case CPUFREQ_TRANSITION_NOTIFIER: ret = srcu_notifier_chain_register( |