summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2006-03-27 15:59:48 +0000
committerjhb <jhb@FreeBSD.org>2006-03-27 15:59:48 +0000
commit3718b3713ed99e44c235cc2eb9fbcc462475fcc8 (patch)
treecaaff8afb74acdad49ba7910385456086e5c2deb /sys/i386
parentb0d9b0dc3bdf70e237a44ea4880f2c758053894f (diff)
downloadFreeBSD-src-3718b3713ed99e44c235cc2eb9fbcc462475fcc8.zip
FreeBSD-src-3718b3713ed99e44c235cc2eb9fbcc462475fcc8.tar.gz
If the XSDT address in the RSDP for an ACPI 2.0 machine is NULL, then fall
back to using the RSDT instead. ACPI-CA already follows this same strategy as a workaround for yet another instance of brain-damaged BIOS writers. PR: i386/93963 Submitted by: Masayuki FUKUI <fukui.FreeBSD@fanet.net>
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/acpica/madt.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/i386/acpica/madt.c b/sys/i386/acpica/madt.c
index d0c8496..f6b09a4 100644
--- a/sys/i386/acpica/madt.c
+++ b/sys/i386/acpica/madt.c
@@ -219,11 +219,12 @@ madt_probe(void)
}
/*
- * For ACPI < 2.0, use the RSDT. For ACPI >= 2.0, use the XSDT.
- * We map the XSDT and RSDT at page 1 in the crashdump area.
- * Page 0 is used to map in the headers of candidate ACPI tables.
+ * For ACPI >= 2.0, use the XSDT if it is available.
+ * Otherwise, use the RSDT. We map the XSDT or RSDT at page 1
+ * in the crashdump area. Page 0 is used to map in the
+ * headers of candidate ACPI tables.
*/
- if (rsdp->Revision >= 2) {
+ if (rsdp->Revision >= 2 && rsdp->XsdtPhysicalAddress != 0) {
/*
* AcpiOsGetRootPointer only verifies the checksum for
* the version 1.0 portion of the RSDP. Version 2.0 has
OpenPOWER on IntegriCloud