diff options
Diffstat (limited to 'sys/dev/acpica')
-rw-r--r-- | sys/dev/acpica/acpi.c | 11 |
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(); |