diff options
author | Bob Moore <robert.moore@intel.com> | 2012-08-16 22:30:28 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2012-09-21 00:26:16 -0400 |
commit | 28f538b56d321dd5e027267f8240f06ce045e0aa (patch) | |
tree | e725bdd72c148b1b696f973b00afab1ec7532ff1 /drivers/acpi/acpica | |
parent | a950c135e5b2be6ef7518d54d98a7901db1b377a (diff) |
ACPICA: Enable Scope change to root during module-level code execution.
Allows constructs like this:
If (XXXX)
Scope (\)
...
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/acpica')
-rw-r--r-- | drivers/acpi/acpica/dswload.c | 14 | ||||
-rw-r--r-- | drivers/acpi/acpica/dswload2.c | 14 |
2 files changed, 28 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/dswload.c b/drivers/acpi/acpica/dswload.c index 552aa3a50c84..557510084c7a 100644 --- a/drivers/acpi/acpica/dswload.c +++ b/drivers/acpi/acpica/dswload.c | |||
@@ -230,6 +230,20 @@ acpi_ds_load1_begin_op(struct acpi_walk_state * walk_state, | |||
230 | walk_state->scope_info->common.value = ACPI_TYPE_ANY; | 230 | walk_state->scope_info->common.value = ACPI_TYPE_ANY; |
231 | break; | 231 | break; |
232 | 232 | ||
233 | case ACPI_TYPE_METHOD: | ||
234 | |||
235 | /* | ||
236 | * Allow scope change to root during execution of module-level | ||
237 | * code. Root is typed METHOD during this time. | ||
238 | */ | ||
239 | if ((node == acpi_gbl_root_node) && | ||
240 | (walk_state-> | ||
241 | parse_flags & ACPI_PARSE_MODULE_LEVEL)) { | ||
242 | break; | ||
243 | } | ||
244 | |||
245 | /*lint -fallthrough */ | ||
246 | |||
233 | default: | 247 | default: |
234 | 248 | ||
235 | /* All other types are an error */ | 249 | /* All other types are an error */ |
diff --git a/drivers/acpi/acpica/dswload2.c b/drivers/acpi/acpica/dswload2.c index ae7147724763..89c0114210c0 100644 --- a/drivers/acpi/acpica/dswload2.c +++ b/drivers/acpi/acpica/dswload2.c | |||
@@ -230,6 +230,20 @@ acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state, | |||
230 | walk_state->scope_info->common.value = ACPI_TYPE_ANY; | 230 | walk_state->scope_info->common.value = ACPI_TYPE_ANY; |
231 | break; | 231 | break; |
232 | 232 | ||
233 | case ACPI_TYPE_METHOD: | ||
234 | |||
235 | /* | ||
236 | * Allow scope change to root during execution of module-level | ||
237 | * code. Root is typed METHOD during this time. | ||
238 | */ | ||
239 | if ((node == acpi_gbl_root_node) && | ||
240 | (walk_state-> | ||
241 | parse_flags & ACPI_PARSE_MODULE_LEVEL)) { | ||
242 | break; | ||
243 | } | ||
244 | |||
245 | /*lint -fallthrough */ | ||
246 | |||
233 | default: | 247 | default: |
234 | 248 | ||
235 | /* All other types are an error */ | 249 | /* All other types are an error */ |