diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2010-04-02 17:00:37 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2010-04-02 17:00:37 +0000 |
commit | 28d6b3182d209b2a1385429a55f21fa8c79e6620 (patch) | |
tree | 5b75aa7d16519b03da2de459e49f7fb538eb9318 | |
parent | 5097632a9372c44c1fb7683f81b382b220289a98 (diff) | |
download | src-28d6b3182d209b2a1385429a55f21fa8c79e6620.tar.gz src-28d6b3182d209b2a1385429a55f21fa8c79e6620.zip |
Fixes for table load regression.
http://git.moblin.org/cgit.cgi/acpica/commit/?id=e4c530f4e71d70804ed911d41d922dce4cea8b23
http://git.moblin.org/cgit.cgi/acpica/commit/?id=67a1ef8c98791bd4a0fb84fe0c2feff7082151dc
Obtained from: Intel
Notes
Notes:
svn path=/vendor-sys/acpica/dist/; revision=206107
-rw-r--r-- | tables/tbxface.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/tables/tbxface.c b/tables/tbxface.c index 8cbf15ac8d4e..ba0ec0f7b255 100644 --- a/tables/tbxface.c +++ b/tables/tbxface.c @@ -552,18 +552,13 @@ AcpiTbLoadNamespace ( (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); /* - * Save the DSDT pointer for simple access. This is the mapped memory - * address. We must take care here because the address of the .Tables - * array can change dynamically as tables are loaded at run-time - */ - AcpiGbl_DSDT = AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer; - - /* * Load the namespace. The DSDT is required, but any SSDT and * PSDT tables are optional. Verify the DSDT. */ if (!AcpiGbl_RootTableList.Count || - !ACPI_COMPARE_NAME (AcpiGbl_DSDT->Signature, ACPI_SIG_DSDT) || + !ACPI_COMPARE_NAME ( + &(AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Signature), + ACPI_SIG_DSDT) || ACPI_FAILURE (AcpiTbVerifyTable ( &AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT]))) { @@ -572,6 +567,14 @@ AcpiTbLoadNamespace ( } /* + * Save the DSDT pointer for simple access. This is the mapped memory + * address. We must take care here because the address of the .Tables + * array can change dynamically as tables are loaded at run-time. Note: + * .Pointer field is not validated until after call to AcpiTbVerifyTable. + */ + AcpiGbl_DSDT = AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer; + + /* * Optionally copy the entire DSDT to local memory (instead of simply * mapping it.) There are some BIOSs that corrupt or replace the original * DSDT, creating the need for this option. Default is FALSE, do not copy |