aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-02-25 22:18:31 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-02-26 12:53:30 -0500
commit13a229abc25640813f1480c0478dfc6bdbc1c19e (patch)
treebdb9da6ba327bd4f6ee64aa3ca1548670be395f2 /arch/x86_64
parent5342fba5412cead88b61ead07168615dbeba1ee3 (diff)
[PATCH] x86_64: Only do the clustered systems have unsynchronized TSC assumption on IBM systems
Big Unisys systems have multiple clusters too, but they have an synchronized TSC. I'm using the SMBIOS to check for vendor == IBM. Cc: Chris McDermott <lcm@us.ibm.com> Cc: "Protasevich, Natalie" <Natalie.Protasevich@unisys.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/kernel/apic.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index e5b14c57eaa0..d70605eda333 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -962,12 +962,14 @@ void smp_apic_timer_interrupt(struct pt_regs *regs)
962 irq_exit(); 962 irq_exit();
963} 963}
964 964
965int __initdata unsync_tsc_on_multicluster;
966
965/* 967/*
966 * oem_force_hpet_timer -- force HPET mode for some boxes. 968 * oem_force_hpet_timer -- force HPET mode for some boxes.
967 * 969 *
968 * Thus far, the major user of this is IBM's Summit2 series: 970 * Thus far, the major user of this is IBM's Summit2 series:
969 * 971 *
970 * Clustered boxes may have unsynced TSC problems if they are 972 * Some clustered boxes may have unsynced TSC problems if they are
971 * multi-chassis. Use available data to take a good guess. 973 * multi-chassis. Use available data to take a good guess.
972 * If in doubt, go HPET. 974 * If in doubt, go HPET.
973 */ 975 */
@@ -977,6 +979,11 @@ __cpuinit int oem_force_hpet_timer(void)
977 unsigned id; 979 unsigned id;
978 DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS); 980 DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS);
979 981
982 /* Only do this check on IBM machines - big Unisys systems
983 use multiple clusters too, but have synchronized TSC */
984 if (!unsync_tsc_on_multicluster)
985 return 0;
986
980 bitmap_zero(clustermap, NUM_APIC_CLUSTERS); 987 bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
981 988
982 for (i = 0; i < NR_CPUS; i++) { 989 for (i = 0; i < NR_CPUS; i++) {