summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r--sys/dev/acpica/acpi.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
index bb34549..ee7e015 100644
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$");
#include <contrib/dev/acpica/acpi.h>
#include <dev/acpica/acpivar.h>
#include <dev/acpica/acpiio.h>
+#include <contrib/dev/acpica/achware.h>
#include <contrib/dev/acpica/acnamesp.h>
#include "pci_if.h"
@@ -1636,6 +1637,16 @@ acpi_shutdown_final(void *arg, int howto)
DELAY(1000000);
printf("ACPI power-off failed - timeout\n");
}
+ } else if ((howto & RB_AUTOBOOT) != 0 && AcpiGbl_FADT->ResetRegSup) {
+ status = AcpiHwLowLevelWrite(
+ AcpiGbl_FADT->ResetRegister.RegisterBitWidth,
+ AcpiGbl_FADT->ResetValue, &AcpiGbl_FADT->ResetRegister);
+ if (ACPI_FAILURE(status)) {
+ printf("ACPI reset failed - %s\n", AcpiFormatException(status));
+ } else {
+ DELAY(1000000);
+ printf("ACPI reset failed - timeout\n");
+ }
} else if (panicstr == NULL) {
printf("Shutting down ACPI\n");
AcpiTerminate();
OpenPOWER on IntegriCloud