diff --git a/source/common/adisasm.c b/source/common/adisasm.c index 2fe348d3a..cde56f129 100644 --- a/source/common/adisasm.c +++ b/source/common/adisasm.c @@ -426,6 +426,13 @@ AdAmlDisassemble ( AcpiFormatException (Status)); return Status; } + + /* + * Load namespace from names created within control methods + * Set owner id of nodes in external table + */ + AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, + AcpiGbl_RootNode, OwnerId); AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); } @@ -1213,17 +1220,17 @@ AdParseTable ( return Status; } Status = AcpiTbAllocateOwnerId (TableIndex); - if (ACPI_FAILURE (Status)) + if (ACPI_FAILURE (Status)) { - return Status; + return Status; } if (OwnerId) { Status = AcpiTbGetOwnerId (TableIndex, OwnerId); if (ACPI_FAILURE (Status)) - { - return Status; - } + { + return Status; + } } } diff --git a/source/common/adwalk.c b/source/common/adwalk.c index fc24f6287..0365d709f 100644 --- a/source/common/adwalk.c +++ b/source/common/adwalk.c @@ -826,9 +826,11 @@ AcpiDmXrefDescendingOp ( } } - /* Found the node in external table, add it to external list */ - - else if (WalkState->OwnerId != Node->OwnerId) + /* + * Found the node in external table, add it to external list + * Node->OwnerId == 0 indicates built-in ACPI Names, _OS_ etc + */ + else if (Node->OwnerId && WalkState->OwnerId != Node->OwnerId) { Object = AcpiNsGetAttachedObject (Node); if (Object) @@ -853,7 +855,7 @@ AcpiDmXrefDescendingOp ( AcpiDmAddToExternalList (Path, (UINT8) ObjectType, 0); } - /* + /* * Set it NULL since the node is found in external table * And prevent it from opening new scope at below code */