Module Name: src
Committed By: jmcneill
Date: Tue Oct 16 21:44:38 UTC 2018
Modified Files:
src/usr.sbin/acpitools/acpidump: acpi.c
Log Message:
FACS is optional if the HW_REDUCED_ACPI flag is set in the FADT.
To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/usr.sbin/acpitools/acpidump/acpi.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/acpitools/acpidump/acpi.c
diff -u src/usr.sbin/acpitools/acpidump/acpi.c:1.32 src/usr.sbin/acpitools/acpidump/acpi.c:1.33
--- src/usr.sbin/acpitools/acpidump/acpi.c:1.32 Fri Oct 5 05:09:31 2018
+++ src/usr.sbin/acpitools/acpidump/acpi.c Tue Oct 16 21:44:37 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi.c,v 1.32 2018/10/05 05:09:31 msaitoh Exp $ */
+/* $NetBSD: acpi.c,v 1.33 2018/10/16 21:44:37 jmcneill Exp $ */
/*-
* Copyright (c) 1998 Doug Rabson
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: acpi.c,v 1.32 2018/10/05 05:09:31 msaitoh Exp $");
+__RCSID("$NetBSD: acpi.c,v 1.33 2018/10/16 21:44:37 jmcneill Exp $");
#include <sys/param.h>
#include <sys/endian.h>
@@ -819,11 +819,16 @@ acpi_handle_fadt(ACPI_TABLE_HEADER *sdp)
fadt = (ACPI_TABLE_FADT *)sdp;
acpi_print_fadt(sdp);
- facs = (ACPI_TABLE_FACS *)acpi_map_sdt(
- acpi_select_address(fadt->Facs, fadt->XFacs));
- if (memcmp(facs->Signature, ACPI_SIG_FACS, 4) != 0 || facs->Length < 64)
- errx(EXIT_FAILURE, "FACS is corrupt");
- acpi_print_facs(facs);
+ if (acpi_select_address(fadt->Facs, fadt->XFacs) == 0) {
+ if ((fadt->Flags & ACPI_FADT_HW_REDUCED) == 0)
+ errx(EXIT_FAILURE, "Missing FACS and HW_REDUCED_ACPI flag not set in FADT");
+ } else {
+ facs = (ACPI_TABLE_FACS *)acpi_map_sdt(
+ acpi_select_address(fadt->Facs, fadt->XFacs));
+ if (memcmp(facs->Signature, ACPI_SIG_FACS, 4) != 0 || facs->Length < 64)
+ errx(EXIT_FAILURE, "FACS is corrupt");
+ acpi_print_facs(facs);
+ }
dsdp = (ACPI_TABLE_HEADER *)acpi_map_sdt(
acpi_select_address(fadt->Dsdt, fadt->XDsdt));