summaryrefslogtreecommitdiff
path: root/source/components/tables
diff options
context:
space:
mode:
authorRobert Moore <Robert.Moore@intel.com>2013-11-27 09:14:47 -0800
committerRobert Moore <Robert.Moore@intel.com>2013-11-27 09:14:47 -0800
commiteaddd4b1289f2e2f637017abaa47d248ed72cfad (patch)
treea1a082e570d08820f9522884c25645bd50b563b7 /source/components/tables
parent4e917154c46af024a011ac90ca2f7782ae0a97da (diff)
downloadacpica-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.c10
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)
{