diff options
author | Robert Moore <Robert.Moore@intel.com> | 2013-11-27 09:14:47 -0800 |
---|---|---|
committer | Robert Moore <Robert.Moore@intel.com> | 2013-11-27 09:14:47 -0800 |
commit | eaddd4b1289f2e2f637017abaa47d248ed72cfad (patch) | |
tree | a1a082e570d08820f9522884c25645bd50b563b7 /source/components/tables | |
parent | 4e917154c46af024a011ac90ca2f7782ae0a97da (diff) | |
download | acpica-eaddd4b1289f2e2f637017abaa47d248ed72cfad.tar.gz |
Add option to ignore XSDT and force the use of the RSDT.
This change adds a runtime option that will force ACPICA to use the
RSDT instead of the XSDT. Although the ACPI spec requires that an XSDT
be used instead of the RSDT, the XSDT has been found to be corrupt or
ill-formed on some machines. Lv Zheng.
Diffstat (limited to 'source/components/tables')
-rw-r--r-- | source/components/tables/tbutils.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/source/components/tables/tbutils.c b/source/components/tables/tbutils.c index 1710af734..97aaef294 100644 --- a/source/components/tables/tbutils.c +++ b/source/components/tables/tbutils.c @@ -594,9 +594,11 @@ AcpiTbParseRootTable ( AcpiTbPrintTableHeader (RsdpAddress, ACPI_CAST_PTR (ACPI_TABLE_HEADER, Rsdp)); - /* Differentiate between RSDT and XSDT root tables */ + /* Use XSDT if present and not overridden. Otherwise, use RSDT */ - if ((Rsdp->Revision > 1) && Rsdp->XsdtPhysicalAddress) + if ((Rsdp->Revision > 1) && + Rsdp->XsdtPhysicalAddress && + !AcpiGbl_DoNotUseXsdt) { /* * RSDP contains an XSDT (64-bit physical addresses). We must use @@ -621,8 +623,8 @@ AcpiTbParseRootTable ( AcpiOsUnmapMemory (Rsdp, sizeof (ACPI_TABLE_RSDP)); /* - * If it is present, validate the XSDT for access/size and ensure - * that all table entries are at least non-NULL + * If it is present and used, validate the XSDT for access/size + * and ensure that all table entries are at least non-NULL */ if (TableEntrySize == ACPI_XSDT_ENTRY_SIZE) { |