ACPI: processor idle: Practically limit "Dummy wait" workaround to old Intel systems
[platform/kernel/linux-rpi.git] / drivers / acpi / processor_idle.c
index dc880da..e9116db 100644 (file)
@@ -531,10 +531,27 @@ static void wait_for_freeze(void)
        /* No delay is needed if we are in guest */
        if (boot_cpu_has(X86_FEATURE_HYPERVISOR))
                return;
+       /*
+        * Modern (>=Nehalem) Intel systems use ACPI via intel_idle,
+        * not this code.  Assume that any Intel systems using this
+        * are ancient and may need the dummy wait.  This also assumes
+        * that the motivating chipset issue was Intel-only.
+        */
+       if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL)
+               return;
 #endif
-       /* Dummy wait op - must do something useless after P_LVL2 read
-          because chipsets cannot guarantee that STPCLK# signal
-          gets asserted in time to freeze execution properly. */
+       /*
+        * Dummy wait op - must do something useless after P_LVL2 read
+        * because chipsets cannot guarantee that STPCLK# signal gets
+        * asserted in time to freeze execution properly
+        *
+        * This workaround has been in place since the original ACPI
+        * implementation was merged, circa 2002.
+        *
+        * If a profile is pointing to this instruction, please first
+        * consider moving your system to a more modern idle
+        * mechanism.
+        */
        inl(acpi_gbl_FADT.xpm_timer_block.address);
 }