summaryrefslogtreecommitdiff
path: root/drivers/acpi/reboot.c
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2020-10-29 14:08:40 -0700
committerJakub Kicinski <kuba@kernel.org>2020-10-29 14:08:40 -0700
commit1c29d9899081d090cbe2aab128e527354af7f343 (patch)
tree83e3376286d1a808d3f73276750b558776c272ac /drivers/acpi/reboot.c
parentcd29296fdfca919590e4004a7e4905544f4c4a32 (diff)
parent07e0887302450a62f51dba72df6afb5fabb23d1c (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/acpi/reboot.c')
-rw-r--r--drivers/acpi/reboot.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/acpi/reboot.c b/drivers/acpi/reboot.c
index ca707f5b521d..2a61f884e222 100644
--- a/drivers/acpi/reboot.c
+++ b/drivers/acpi/reboot.c
@@ -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);
}