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));

Reply via email to