extern int gsi_irq_sharing(int gsi);
 #include <asm/proto.h>
 
-static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id) { return 0; }
-
-
 #else                          /* X86 */
 
 #ifdef CONFIG_X86_LOCAL_APIC
 
        irq_exit();
 }
 
+int __initdata unsync_tsc_on_multicluster;
+
 /*
  * oem_force_hpet_timer -- force HPET mode for some boxes.
  *
  * Thus far, the major user of this is IBM's Summit2 series:
  *
- * Clustered boxes may have unsynced TSC problems if they are
+ * Some clustered boxes may have unsynced TSC problems if they are
  * multi-chassis. Use available data to take a good guess.
  * If in doubt, go HPET.
  */
        unsigned id;
        DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS);
 
+       /* Only do this check on IBM machines - big Unisys systems
+          use multiple clusters too, but have synchronized TSC */
+       if (!unsync_tsc_on_multicluster)
+               return 0;
+
        bitmap_zero(clustermap, NUM_APIC_CLUSTERS);
 
        for (i = 0; i < NR_CPUS; i++) {
 
 
 extern int acpi_skip_timer_override;
 
+extern int unsync_tsc_on_multicluster;
+
+static inline int acpi_madt_oem_check(char *oem, char *productid) 
+{ 
+       /* Copied from i386. Probably has too many entries. */
+       if (!strncmp(oem, "IBM ENSW", 8) && 
+               (!strncmp(productid, "VIGIL SMP", 9) 
+                       || !strncmp(productid, "EXA", 3)
+                       || !strncmp(productid, "RUTHLESS SMP", 12))) {
+               unsync_tsc_on_multicluster = 1;
+        }
+        return 0;
+}
+
 #endif /*__KERNEL__*/
 
 #endif /*_ASM_ACPI_H*/