summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica/dswexec.c
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2010-10-25 02:10:36 -0400
committerLen Brown <len.brown@intel.com>2010-10-25 02:10:36 -0400
commitaca209e5e654951a3a90f5aaa8e04e0c470993b4 (patch)
tree5de472175d8edcbdf7a98022af7bf650bde761e9 /drivers/acpi/acpica/dswexec.c
parentf6f94e2ab1b33f0082ac22d71f66385a60d8157f (diff)
parent8df3fc981dc12d9fdcaef4100a2193b605024d7a (diff)
Merge branch 'acpica' into release
Conflicts: drivers/acpi/acpica/aclocal.h Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/dswexec.c')
-rw-r--r--drivers/acpi/acpica/dswexec.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/acpi/acpica/dswexec.c b/drivers/acpi/acpica/dswexec.c
index d555b374e31..6b0b5d08d97 100644
--- a/drivers/acpi/acpica/dswexec.c
+++ b/drivers/acpi/acpica/dswexec.c
@@ -300,10 +300,25 @@ acpi_ds_exec_begin_op(struct acpi_walk_state *walk_state,
* we must enter this object into the namespace. The created
* object is temporary and will be deleted upon completion of
* the execution of this method.
+ *
+ * Note 10/2010: Except for the Scope() op. This opcode does
+ * not actually create a new object, it refers to an existing
+ * object. However, for Scope(), we want to indeed open a
+ * new scope.
*/
- status = acpi_ds_load2_begin_op(walk_state, NULL);
+ if (op->common.aml_opcode != AML_SCOPE_OP) {
+ status =
+ acpi_ds_load2_begin_op(walk_state, NULL);
+ } else {
+ status =
+ acpi_ds_scope_stack_push(op->named.node,
+ op->named.node->
+ type, walk_state);
+ if (ACPI_FAILURE(status)) {
+ return_ACPI_STATUS(status);
+ }
+ }
}
-
break;
case AML_CLASS_EXECUTE: