summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-08-24 11:52:06 -0700
committerH. Peter Anvin <hpa@zytor.com>2008-08-24 17:16:28 -0700
commit060700b571717c997a2ea5e2049b848fa248ee13 (patch)
tree46bdd7a9eb5cbb95458fc9839270d2e503fa6c4c /arch
parent8735728ef8dc935c4fb351f913758fdbb62c308d (diff)
downloadlinux-3.10-060700b571717c997a2ea5e2049b848fa248ee13.tar.gz
linux-3.10-060700b571717c997a2ea5e2049b848fa248ee13.tar.bz2
linux-3.10-060700b571717c997a2ea5e2049b848fa248ee13.zip
x86: do not enable TSC notifier if we don't need it
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/tsc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 46af7167673..9bed5cae4bd 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -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;