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:
parent
d8841647de
commit
7f4ac9f913
|
@ -368,7 +368,8 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
|
||||||
}
|
}
|
||||||
|
|
||||||
status =
|
status =
|
||||||
acpi_ex_add_table(table_index, acpi_gbl_root_node, &ddb_handle);
|
acpi_ex_add_table(table_index, walk_state->scope_info->scope.node,
|
||||||
|
&ddb_handle);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
|
|
||||||
/* On error, table_ptr was deallocated above */
|
/* On error, table_ptr was deallocated above */
|
||||||
|
|
|
@ -107,7 +107,7 @@ acpi_ns_load_table(acpi_native_uint table_index,
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = acpi_ns_parse_table(table_index, node->child);
|
status = acpi_ns_parse_table(table_index, node);
|
||||||
if (ACPI_SUCCESS(status)) {
|
if (ACPI_SUCCESS(status)) {
|
||||||
acpi_tb_set_table_loaded_flag(table_index, TRUE);
|
acpi_tb_set_table_loaded_flag(table_index, TRUE);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -64,7 +64,8 @@ ACPI_MODULE_NAME("nsparse")
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
acpi_status
|
acpi_status
|
||||||
acpi_ns_one_complete_parse(acpi_native_uint pass_number,
|
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;
|
union acpi_parse_object *parse_root;
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
|
@ -121,6 +122,13 @@ acpi_ns_one_complete_parse(acpi_native_uint pass_number,
|
||||||
return_ACPI_STATUS(status);
|
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 */
|
/* Parse the AML */
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "*PARSE* pass %d parse\n",
|
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.
|
* performs another complete parse of the AML.
|
||||||
*/
|
*/
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 1\n"));
|
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)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
@ -178,7 +188,9 @@ acpi_ns_parse_table(acpi_native_uint table_index,
|
||||||
* parse objects are all cached.
|
* parse objects are all cached.
|
||||||
*/
|
*/
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 2\n"));
|
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)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,7 +113,8 @@ acpi_ns_parse_table(acpi_native_uint table_index,
|
||||||
|
|
||||||
acpi_status
|
acpi_status
|
||||||
acpi_ns_one_complete_parse(acpi_native_uint pass_number,
|
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);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* nsaccess - Top-level namespace access
|
* nsaccess - Top-level namespace access
|
||||||
|
|
Loading…
Reference in New Issue