Merge tag 'hyperv-fixes-signed' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / drivers / acpi / reboot.c
index ca707f5..2a61f88 100644 (file)
@@ -3,6 +3,7 @@
 #include <linux/pci.h>
 #include <linux/acpi.h>
 #include <acpi/reboot.h>
+#include <linux/delay.h>
 
 #ifdef CONFIG_PCI
 static void acpi_pci_reboot(struct acpi_generic_address *rr, u8 reset_value)
@@ -66,4 +67,14 @@ void acpi_reboot(void)
                acpi_reset();
                break;
        }
+
+       /*
+        * Some platforms do not shut down immediately after writing to the
+        * ACPI reset register, and this results in racing with the
+        * subsequent reboot mechanism.
+        *
+        * The 15ms delay has been found to be long enough for the system
+        * to reboot on the affected platforms.
+        */
+       mdelay(15);
 }