summaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown2016-07-11 22:23:03 +0200
committerMichael Brown2016-07-11 22:23:03 +0200
commitdf85901768622b8aea94d39a28effdbf90f7d4f0 (patch)
treea6ae8c165518987aeba8447e09f6fc7f6f811e90 /src/arch
parent[acpi] Add support for ACPI power off (diff)
downloadipxe-df85901768622b8aea94d39a28effdbf90f7d4f0.tar.gz
ipxe-df85901768622b8aea94d39a28effdbf90f7d4f0.tar.xz
ipxe-df85901768622b8aea94d39a28effdbf90f7d4f0.zip
[acpi] Allow time for ACPI power off to take effect
The ACPI power off sequence may not take effect immediately. Delay for one second, to eliminate potentially confusing log messages such as "Could not power off: Error 0x43902001 (http://ipx". Reported-by: Leonid Vasetsky <leonidv@velostrata.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/interface/pcbios/acpipwr.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/arch/x86/interface/pcbios/acpipwr.c b/src/arch/x86/interface/pcbios/acpipwr.c
index 63b986b6..d19f972d 100644
--- a/src/arch/x86/interface/pcbios/acpipwr.c
+++ b/src/arch/x86/interface/pcbios/acpipwr.c
@@ -23,6 +23,7 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <unistd.h>
#include <errno.h>
#include <byteswap.h>
#include <realmode.h>
@@ -111,6 +112,11 @@ int acpi_poweroff ( void ) {
ACPI_PM1_CNT_SLP_EN ), pm1b_cnt );
}
+ /* On some systems, execution will continue briefly. Delay to
+ * avoid potentially confusing log messages.
+ */
+ mdelay ( 1000 );
+
DBGC ( colour, "ACPI power off failed\n" );
return -EPROTO;
}