ACPICA: Fix for Load/LoadTable to specify load location

Fixed a problem with the Load and LoadTable operators where
the table location within the namespace was ignored. Instead,
the table was always loaded into the root or current scope.

Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Bob Moore
2008-04-10 19:06:39 +04:00
committed by Len Brown
parent d8841647de
commit 7f4ac9f913
4 changed files with 20 additions and 6 deletions

View File

@@ -64,7 +64,8 @@ ACPI_MODULE_NAME("nsparse")
******************************************************************************/
acpi_status
acpi_ns_one_complete_parse(acpi_native_uint pass_number,
acpi_native_uint table_index)
acpi_native_uint table_index,
struct acpi_namespace_node * start_node)
{
union acpi_parse_object *parse_root;
acpi_status status;
@@ -121,6 +122,13 @@ acpi_ns_one_complete_parse(acpi_native_uint pass_number,
return_ACPI_STATUS(status);
}
/* start_node is the default location to load the table */
if (start_node && start_node != acpi_gbl_root_node) {
acpi_ds_scope_stack_push(start_node, ACPI_TYPE_METHOD,
walk_state);
}
/* Parse the AML */
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "*PARSE* pass %d parse\n",
@@ -163,7 +171,9 @@ acpi_ns_parse_table(acpi_native_uint table_index,
* performs another complete parse of the AML.
*/
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 1\n"));
status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1, table_index);
status =
acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1, table_index,
start_node);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
@@ -178,7 +188,9 @@ acpi_ns_parse_table(acpi_native_uint table_index,
* parse objects are all cached.
*/
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 2\n"));
status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2, table_index);
status =
acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2, table_index,
start_node);
if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}