aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/time_64.c
diff options
context:
space:
mode:
authorPrarit Bhargava <prarit@redhat.com>2008-11-12 13:35:00 -0500
committerIngo Molnar <mingo@elte.hu>2008-11-12 19:57:35 +0100
commit8652cb4b0d87accbe78725fd2a13be2787059649 (patch)
tree201f712a14998d01aca56ae8ed0d683423f47bdd /arch/x86/kernel/time_64.c
parentx86 debug: mark early_printk.o as notrace (diff)
downloadlinux-dev-8652cb4b0d87accbe78725fd2a13be2787059649.tar.xz
linux-dev-8652cb4b0d87accbe78725fd2a13be2787059649.zip
x86: warn of incorrect cpu_khz on AMD systems
Impact: add debug check If none of the perfctrs are free when calculating cpu_khz we default to using ctr 3 (ie, we just choose 3). This may lead to an incorrect tsc freq value which can cause the system to be unstable. To aid in future debugging, WARN the user of a potential problem. Signed-off-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/time_64.c')
-rw-r--r--arch/x86/kernel/time_64.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kernel/time_64.c b/arch/x86/kernel/time_64.c
index cb19d650c216..418a095c5796 100644
--- a/arch/x86/kernel/time_64.c
+++ b/arch/x86/kernel/time_64.c
@@ -80,6 +80,8 @@ unsigned long __init calibrate_cpu(void)
break;
no_ctr_free = (i == 4);
if (no_ctr_free) {
+ WARN(1, KERN_WARNING "Warning: AMD perfctrs busy ... "
+ "cpu_khz value may be incorrect.\n");
i = 3;
rdmsrl(MSR_K7_EVNTSEL3, evntsel3);
wrmsrl(MSR_K7_EVNTSEL3, 0);