summaryrefslogtreecommitdiff
path: root/source/components/executer
diff options
context:
space:
mode:
Diffstat (limited to 'source/components/executer')
-rw-r--r--source/components/executer/exdebug.c4
-rw-r--r--source/components/executer/exdump.c27
-rw-r--r--source/components/executer/exoparg1.c26
-rw-r--r--source/components/executer/exresolv.c24
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;