diff options
-rw-r--r-- | source/components/dispatcher/dsargs.c | 2 | ||||
-rw-r--r-- | source/components/executer/excreate.c | 8 | ||||
-rw-r--r-- | source/include/acobject.h | 1 |
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; |