x86: do not enable TSC notifier if we don't need it
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 24 Aug 2008 18:52:06 +0000 (11:52 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Mon, 25 Aug 2008 00:16:28 +0000 (17:16 -0700)
Impact: crash on non-TSC-equipped CPUs

Don't enable the TSC notifier if we *either*:

1. don't have a CPU, or
2. have a CPU with constant TSC.

In either of those cases, the notifier is either damaging (1) or useless(2).

From: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/kernel/tsc.c

index 46af71676738e4ec49640fdcaacd20a85c034bc8..9bed5cae4bdcc31671c36b09393d854ac3327b14 100644 (file)
@@ -325,6 +325,10 @@ static struct notifier_block time_cpufreq_notifier_block = {
 
 static int __init cpufreq_tsc(void)
 {
+       if (!cpu_has_tsc)
+               return 0;
+       if (boot_cpu_has(X86_FEATURE_CONSTANT_TSC))
+               return 0;
        cpufreq_register_notifier(&time_cpufreq_notifier_block,
                                CPUFREQ_TRANSITION_NOTIFIER);
        return 0;