diff options
Diffstat (limited to 'source/components/executer')
-rw-r--r-- | source/components/executer/exdebug.c | 4 | ||||
-rw-r--r-- | source/components/executer/exdump.c | 27 | ||||
-rw-r--r-- | source/components/executer/exoparg1.c | 26 | ||||
-rw-r--r-- | source/components/executer/exresolv.c | 24 |
4 files changed, 58 insertions, 23 deletions
diff --git a/source/components/executer/exdebug.c b/source/components/executer/exdebug.c index cdc678719c7a..155f2c0d48dd 100644 --- a/source/components/executer/exdebug.c +++ b/source/components/executer/exdebug.c @@ -237,11 +237,11 @@ AcpiExDoDebugObject ( Timer = ((UINT32) AcpiOsGetTimer () / 10); Timer &= 0x03FFFFFF; - AcpiOsPrintf ("[ACPI Debug T=0x%8.8X] %*s", Timer, Level, " "); + AcpiOsPrintf ("ACPI Debug: T=0x%8.8X %*s", Timer, Level, " "); } else { - AcpiOsPrintf ("[ACPI Debug] %*s", Level, " "); + AcpiOsPrintf ("ACPI Debug: %*s", Level, " "); } } diff --git a/source/components/executer/exdump.c b/source/components/executer/exdump.c index 82b34038e326..2b23881f16cd 100644 --- a/source/components/executer/exdump.c +++ b/source/components/executer/exdump.c @@ -775,12 +775,13 @@ AcpiExDumpOperand ( if (Depth > 0) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p ", - Depth, " ", Depth, ObjDesc)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p Refs=%u ", + Depth, " ", Depth, ObjDesc, ObjDesc->Common.ReferenceCount)); } else { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", ObjDesc)); + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Refs=%u ", + ObjDesc, ObjDesc->Common.ReferenceCount)); } /* Decode object type */ @@ -818,8 +819,10 @@ AcpiExDumpOperand ( case ACPI_REFCLASS_NAME: - AcpiOsPrintf ("- [%4.4s]\n", - ObjDesc->Reference.Node->Name.Ascii); + AcpiUtRepairName (ObjDesc->Reference.Node->Name.Ascii); + AcpiOsPrintf ("- [%4.4s] (Node %p)\n", + ObjDesc->Reference.Node->Name.Ascii, + ObjDesc->Reference.Node); break; case ACPI_REFCLASS_ARG: @@ -1158,12 +1161,15 @@ AcpiExDumpReferenceObj ( &RetBuf, TRUE); if (ACPI_FAILURE (Status)) { - AcpiOsPrintf (" Could not convert name to pathname\n"); + AcpiOsPrintf (" Could not convert name to pathname: %s\n", + AcpiFormatException (Status)); } else { - AcpiOsPrintf ("%s\n", (char *) RetBuf.Pointer); - ACPI_FREE (RetBuf.Pointer); + AcpiOsPrintf ("%s: %s\n", + AcpiUtGetTypeName (ObjDesc->Reference.Node->Type), + (char *) RetBuf.Pointer); + ACPI_FREE (RetBuf.Pointer); } } else if (ObjDesc->Reference.Object) @@ -1281,9 +1287,8 @@ AcpiExDumpPackageObj ( case ACPI_TYPE_LOCAL_REFERENCE: - AcpiOsPrintf ("[Object Reference] Type [%s] %2.2X", - AcpiUtGetReferenceName (ObjDesc), - ObjDesc->Reference.Class); + AcpiOsPrintf ("[Object Reference] Class [%s]", + AcpiUtGetReferenceName (ObjDesc)); AcpiExDumpReferenceObj (ObjDesc); break; diff --git a/source/components/executer/exoparg1.c b/source/components/executer/exoparg1.c index a0efb25ece22..5d59276be8c1 100644 --- a/source/components/executer/exoparg1.c +++ b/source/components/executer/exoparg1.c @@ -959,7 +959,7 @@ AcpiExOpcode_1A_0T_1R ( if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) == ACPI_DESC_TYPE_NAMED) { TempDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) Operand[0]); + (ACPI_NAMESPACE_NODE *) Operand[0]); if (TempDesc && ((TempDesc->Common.Type == ACPI_TYPE_STRING) || (TempDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE))) @@ -1072,11 +1072,27 @@ AcpiExOpcode_1A_0T_1R ( * This is a DerefOf (ObjectReference) * Get the actual object from the Node (This is the dereference). * This case may only happen when a LocalX or ArgX is - * dereferenced above. + * dereferenced above, or for references to device and + * thermal objects. */ - ReturnDesc = AcpiNsGetAttachedObject ( - (ACPI_NAMESPACE_NODE *) Operand[0]); - AcpiUtAddReference (ReturnDesc); + switch (((ACPI_NAMESPACE_NODE *) Operand[0])->Type) + { + case ACPI_TYPE_DEVICE: + case ACPI_TYPE_THERMAL: + + /* These types have no node subobject, return the NS node */ + + ReturnDesc = Operand[0]; + break; + + default: + /* For most types, get the object attached to the node */ + + ReturnDesc = AcpiNsGetAttachedObject ( + (ACPI_NAMESPACE_NODE *) Operand[0]); + AcpiUtAddReference (ReturnDesc); + break; + } } else { diff --git a/source/components/executer/exresolv.c b/source/components/executer/exresolv.c index d0c8c8a8daf4..64771922d919 100644 --- a/source/components/executer/exresolv.c +++ b/source/components/executer/exresolv.c @@ -493,12 +493,26 @@ AcpiExResolveMultiple ( (ACPI_NAMESPACE_NODE *) ObjDesc); } - if (!ObjDesc) + switch (Type) { - ACPI_ERROR ((AE_INFO, - "[%4.4s] Node is unresolved or uninitialized", - AcpiUtGetNodeName (Node))); - return_ACPI_STATUS (AE_AML_UNINITIALIZED_NODE); + case ACPI_TYPE_DEVICE: + case ACPI_TYPE_THERMAL: + + /* These types have no attached subobject */ + break; + + default: + + /* All other types require a subobject */ + + if (!ObjDesc) + { + ACPI_ERROR ((AE_INFO, + "[%4.4s] Node is unresolved or uninitialized", + AcpiUtGetNodeName (Node))); + return_ACPI_STATUS (AE_AML_UNINITIALIZED_NODE); + } + break; } break; |