|
@@ -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);
|
|
|
}
|