diff --git a/source/components/tables/tbxface.c b/source/components/tables/tbxface.c index d8cb6b18c..6393bdace 100644 --- a/source/components/tables/tbxface.c +++ b/source/components/tables/tbxface.c @@ -300,10 +300,13 @@ AcpiReallocateRootTable ( /* - * Only reallocate the root table if the host provided a static buffer - * for the table array in the call to AcpiInitializeTables. + * If there are tables unverified, it is required to reallocate the + * root table list to clean up invalid table entries. Otherwise only + * reallocate the root table list if the host provided a static buffer + * for the table array in the call to AcpiInitializeTables(). */ - if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) + if ((AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) && + AcpiGbl_EnableTableValidation) { return_ACPI_STATUS (AE_SUPPORT); } diff --git a/source/tools/acpiexec/aetables.c b/source/tools/acpiexec/aetables.c index 671b2a1d0..8d2ea56eb 100644 --- a/source/tools/acpiexec/aetables.c +++ b/source/tools/acpiexec/aetables.c @@ -598,6 +598,14 @@ AeInstallTables ( Status = AcpiInitializeTables (NULL, ACPI_MAX_INIT_TABLES, TRUE); ACPI_CHECK_OK (AcpiInitializeTables, Status); + /* + * The following code is prepared to test the deferred table + * verification mechanism. When AcpiGbl_EnableTableValidation is set + * to FALSE by default, AcpiReallocateRootTable() sets it back to TRUE + * and triggers the deferred table verification mechanism accordingly. + */ + (void) AcpiReallocateRootTable (); + if (AcpiGbl_LoadTestTables) { /* Test multiple table/UEFI support. First, get the headers */