diff options
author | jhb <jhb@FreeBSD.org> | 2006-03-27 15:59:48 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2006-03-27 15:59:48 +0000 |
commit | 3718b3713ed99e44c235cc2eb9fbcc462475fcc8 (patch) | |
tree | caaff8afb74acdad49ba7910385456086e5c2deb /sys/i386 | |
parent | b0d9b0dc3bdf70e237a44ea4880f2c758053894f (diff) | |
download | FreeBSD-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.c | 9 |
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 |