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>
This commit is contained in:
jhb 2006-03-27 15:59:48 +00:00
parent b0d9b0dc3b
commit 3718b3713e
2 changed files with 10 additions and 8 deletions

View File

@ -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

View File

@ -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