aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorjohn stultz <johnstul@us.ibm.com>2009-08-17 19:40:47 -0400
committerThomas Gleixner <tglx@linutronix.de>2009-08-28 15:13:05 -0400
commitd3b8f889a220aed825accc28eb64ce283a0d51ac (patch)
tree6d66dbb21c7b0c53813231a68a5b841394783aed /arch/x86
parent326ba5010a5429a5a528b268b36a5900d4ab0eba (diff)
x86: Make tsc=reliable override boot time stability checks
This patch makes the tsc=reliable option disable the boot time stability checks. Currently the option only disables the runtime watchdog checks. This change allows folks who want to override the boot time TSC stability checks and use the TSC when the system would otherwise disqualify it. There still are some situations that the TSC will be disqualified, such as cpufreq scaling. But these are situations where the box will hang if allowed. Patch also includes a fix for an issue found by Thomas Gleixner, where the TSC disqualification message wouldn't be printed after a call to unsynchronized_tsc(). Signed-off-by: John Stultz <johnstul@us.ibm.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: akataria@vmware.com Cc: Stephen Hemminger <shemminger@vyatta.com> LKML-Reference: <1250552447.7212.92.camel@localhost.localdomain> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/kernel/tsc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 71f4368b357e..648fb269e5d1 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -825,6 +825,9 @@ __cpuinit int unsynchronized_tsc(void)
825 825
826 if (boot_cpu_has(X86_FEATURE_CONSTANT_TSC)) 826 if (boot_cpu_has(X86_FEATURE_CONSTANT_TSC))
827 return 0; 827 return 0;
828
829 if (tsc_clocksource_reliable)
830 return 0;
828 /* 831 /*
829 * Intel systems are normally all synchronized. 832 * Intel systems are normally all synchronized.
830 * Exceptions must mark TSC as unstable: 833 * Exceptions must mark TSC as unstable:
@@ -832,10 +835,10 @@ __cpuinit int unsynchronized_tsc(void)
832 if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL) { 835 if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL) {
833 /* assume multi socket systems are not synchronized: */ 836 /* assume multi socket systems are not synchronized: */
834 if (num_possible_cpus() > 1) 837 if (num_possible_cpus() > 1)
835 tsc_unstable = 1; 838 return 1;
836 } 839 }
837 840
838 return tsc_unstable; 841 return 0;
839} 842}
840 843
841static void __init init_tsc_clocksource(void) 844static void __init init_tsc_clocksource(void)