Add reset register support. This is the only method to reboot some new
systems (blade servers). On most systems, this is implemented as an IO write to the SMI port and the BIOS generates the actual reset. PR: kern/94939 Submitted by: dodell@ixsystems.com Reviewed by: jhb MFC after: 3 weeks
This commit is contained in:
parent
1e5e6f25c5
commit
87a500cd3b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=157244
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user