summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/components/dispatcher/dsargs.c2
-rw-r--r--source/components/executer/excreate.c8
-rw-r--r--source/include/acobject.h1
3 files changed, 10 insertions, 1 deletions
diff --git a/source/components/dispatcher/dsargs.c b/source/components/dispatcher/dsargs.c
index 44cc41b33..878eb7473 100644
--- a/source/components/dispatcher/dsargs.c
+++ b/source/components/dispatcher/dsargs.c
@@ -496,7 +496,7 @@ AcpiDsGetRegionArguments (
/* Execute the argument AML */
- Status = AcpiDsExecuteArguments (Node, Node->Parent,
+ Status = AcpiDsExecuteArguments (Node, ExtraDesc->Extra.ScopeNode,
ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart);
return_ACPI_STATUS (Status);
}
diff --git a/source/components/executer/excreate.c b/source/components/executer/excreate.c
index a9b92c16f..f4b251481 100644
--- a/source/components/executer/excreate.c
+++ b/source/components/executer/excreate.c
@@ -426,6 +426,14 @@ AcpiExCreateRegion (
RegionObj2 = ObjDesc->Common.NextObject;
RegionObj2->Extra.AmlStart = AmlStart;
RegionObj2->Extra.AmlLength = AmlLength;
+ if (WalkState->ScopeInfo)
+ {
+ RegionObj2->Extra.ScopeNode = WalkState->ScopeInfo->Scope.Node;
+ }
+ else
+ {
+ RegionObj2->Extra.ScopeNode = Node;
+ }
/* Init the region from the operands */
diff --git a/source/include/acobject.h b/source/include/acobject.h
index 6a6ad334e..635a8ab87 100644
--- a/source/include/acobject.h
+++ b/source/include/acobject.h
@@ -535,6 +535,7 @@ typedef struct acpi_object_extra
{
ACPI_OBJECT_COMMON_HEADER
ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */
+ ACPI_NAMESPACE_NODE *ScopeNode;
void *RegionContext; /* Region-specific data */
UINT8 *AmlStart;
UINT32 AmlLength;