1 /******************************************************************************
3 * Module Name: exdump - Interpreter debug output routines
5 *****************************************************************************/
7 /******************************************************************************
11 * Some or all of this work - Copyright (c) 1999 - 2019, Intel Corp.
12 * All rights reserved.
16 * 2.1. This is your license from Intel Corp. under its intellectual property
17 * rights. You may have additional license terms from the party that provided
18 * you this software, covering your right to use that party's intellectual
21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22 * copy of the source code appearing in this file ("Covered Code") an
23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24 * base code distributed originally by Intel ("Original Intel Code") to copy,
25 * make derivatives, distribute, use and display any portion of the Covered
26 * Code in any form, with the right to sublicense such rights; and
28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29 * license (with the right to sublicense), under only those claims of Intel
30 * patents that are infringed by the Original Intel Code, to make, use, sell,
31 * offer to sell, and import the Covered Code and derivative works thereof
32 * solely to the minimum extent necessary to exercise the above copyright
33 * license, and in no event shall the patent license extend to any additions
34 * to or modifications of the Original Intel Code. No other license or right
35 * is granted directly or by implication, estoppel or otherwise;
37 * The above copyright and patent license is granted only if the following
42 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43 * Redistribution of source code of any substantial portion of the Covered
44 * Code or modification with rights to further distribute source must include
45 * the above Copyright Notice, the above License, this list of Conditions,
46 * and the following Disclaimer and Export Compliance provision. In addition,
47 * Licensee must cause all Covered Code to which Licensee contributes to
48 * contain a file documenting the changes Licensee made to create that Covered
49 * Code and the date of any change. Licensee must include in that file the
50 * documentation of any changes made by any predecessor Licensee. Licensee
51 * must include a prominent statement that the modification is derived,
52 * directly or indirectly, from Original Intel Code.
54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55 * Redistribution of source code of any substantial portion of the Covered
56 * Code or modification without rights to further distribute source must
57 * include the following Disclaimer and Export Compliance provision in the
58 * documentation and/or other materials provided with distribution. In
59 * addition, Licensee may not authorize further sublicense of source of any
60 * portion of the Covered Code, and must include terms to the effect that the
61 * license from Licensee to its licensee is limited to the intellectual
62 * property embodied in the software Licensee provides to its licensee, and
63 * not to intellectual property embodied in modifications its licensee may
66 * 3.3. Redistribution of Executable. Redistribution in executable form of any
67 * substantial portion of the Covered Code or modification must reproduce the
68 * above Copyright Notice, and the following Disclaimer and Export Compliance
69 * provision in the documentation and/or other materials provided with the
72 * 3.4. Intel retains all right, title, and interest in and to the Original
75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76 * Intel shall be used in advertising or otherwise to promote the sale, use or
77 * other dealings in products derived from or relating to the Covered Code
78 * without prior written authorization from Intel.
80 * 4. Disclaimer and Export Compliance
82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
99 * 4.3. Licensee shall not export, either directly or indirectly, any of this
100 * software or system incorporating such software without first obtaining any
101 * required license or other approval from the U. S. Department of Commerce or
102 * any other agency or department of the United States Government. In the
103 * event Licensee exports any such software from the United States or
104 * re-exports any such software from a foreign destination, Licensee shall
105 * ensure that the distribution and export/re-export of the software is in
106 * compliance with all laws, regulations, orders, or other restrictions of the
107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108 * any of its subsidiaries will export/re-export any technical data, process,
109 * software, or service, directly or indirectly, to any country for which the
110 * United States government or any agency thereof requires an export license,
111 * other governmental approval, or letter of assurance, without first obtaining
112 * such license, approval or letter.
114 *****************************************************************************
116 * Alternatively, you may choose to be licensed under the terms of the
119 * Redistribution and use in source and binary forms, with or without
120 * modification, are permitted provided that the following conditions
122 * 1. Redistributions of source code must retain the above copyright
123 * notice, this list of conditions, and the following disclaimer,
124 * without modification.
125 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
126 * substantially similar to the "NO WARRANTY" disclaimer below
127 * ("Disclaimer") and any redistribution must be conditioned upon
128 * including a substantially similar Disclaimer requirement for further
129 * binary redistribution.
130 * 3. Neither the names of the above-listed copyright holders nor the names
131 * of any contributors may be used to endorse or promote products derived
132 * from this software without specific prior written permission.
134 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
135 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
137 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
146 * Alternatively, you may choose to be licensed under the terms of the
147 * GNU General Public License ("GPL") version 2 as published by the Free
148 * Software Foundation.
150 *****************************************************************************/
153 #include "accommon.h"
154 #include "acinterp.h"
156 #include "acnamesp.h"
159 #define _COMPONENT ACPI_EXECUTER
160 ACPI_MODULE_NAME ("exdump")
163 * The following routines are used for debug output only
165 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
167 /* Local prototypes */
181 ACPI_OPERAND_OBJECT *ObjDesc,
182 ACPI_EXDUMP_INFO *Info);
185 AcpiExDumpReferenceObj (
186 ACPI_OPERAND_OBJECT *ObjDesc);
189 AcpiExDumpPackageObj (
190 ACPI_OPERAND_OBJECT *ObjDesc,
195 /*******************************************************************************
197 * Object Descriptor info tables
199 * Note: The first table entry must be an INIT opcode and must contain
200 * the table length (number of table entries)
202 ******************************************************************************/
204 static ACPI_EXDUMP_INFO AcpiExDumpInteger[2] =
206 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpInteger), NULL},
207 {ACPI_EXD_UINT64, ACPI_EXD_OFFSET (Integer.Value), "Value"}
210 static ACPI_EXDUMP_INFO AcpiExDumpString[4] =
212 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpString), NULL},
213 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (String.Length), "Length"},
214 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (String.Pointer), "Pointer"},
215 {ACPI_EXD_STRING, 0, NULL}
218 static ACPI_EXDUMP_INFO AcpiExDumpBuffer[5] =
220 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBuffer), NULL},
221 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Buffer.Length), "Length"},
222 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Buffer.Pointer), "Pointer"},
223 {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Buffer.Node), "Parent Node"},
224 {ACPI_EXD_BUFFER, 0, NULL}
227 static ACPI_EXDUMP_INFO AcpiExDumpPackage[6] =
229 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPackage), NULL},
230 {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Package.Node), "Parent Node"},
231 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Package.Flags), "Flags"},
232 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Package.Count), "Element Count"},
233 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Package.Elements), "Element List"},
234 {ACPI_EXD_PACKAGE, 0, NULL}
237 static ACPI_EXDUMP_INFO AcpiExDumpDevice[4] =
239 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpDevice), NULL},
240 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[0]), "System Notify"},
241 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[1]), "Device Notify"},
242 {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Device.Handler), "Handler"}
245 static ACPI_EXDUMP_INFO AcpiExDumpEvent[2] =
247 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpEvent), NULL},
248 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Event.OsSemaphore), "OsSemaphore"}
251 static ACPI_EXDUMP_INFO AcpiExDumpMethod[9] =
253 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpMethod), NULL},
254 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.InfoFlags), "Info Flags"},
255 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ParamCount), "Parameter Count"},
256 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.SyncLevel), "Sync Level"},
257 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.Mutex), "Mutex"},
258 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.OwnerId), "Owner Id"},
259 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ThreadCount), "Thread Count"},
260 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Method.AmlLength), "Aml Length"},
261 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.AmlStart), "Aml Start"}
264 static ACPI_EXDUMP_INFO AcpiExDumpMutex[6] =
266 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpMutex), NULL},
267 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Mutex.SyncLevel), "Sync Level"},
268 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Mutex.OriginalSyncLevel), "Original Sync Level"},
269 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OwnerThread), "Owner Thread"},
270 {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Mutex.AcquisitionDepth), "Acquire Depth"},
271 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OsMutex), "OsMutex"}
274 static ACPI_EXDUMP_INFO AcpiExDumpRegion[8] =
276 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegion), NULL},
277 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.SpaceId), "Space Id"},
278 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.Flags), "Flags"},
279 {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Region.Node), "Parent Node"},
280 {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Region.Address), "Address"},
281 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Region.Length), "Length"},
282 {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Region.Handler), "Handler"},
283 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Region.Next), "Next"}
286 static ACPI_EXDUMP_INFO AcpiExDumpPower[6] =
288 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPower), NULL},
289 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.SystemLevel), "System Level"},
290 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.ResourceOrder), "Resource Order"},
291 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[0]), "System Notify"},
292 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[1]), "Device Notify"},
293 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.Handler), "Handler"}
296 static ACPI_EXDUMP_INFO AcpiExDumpProcessor[7] =
298 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpProcessor), NULL},
299 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Processor.ProcId), "Processor ID"},
300 {ACPI_EXD_UINT8 , ACPI_EXD_OFFSET (Processor.Length), "Length"},
301 {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Processor.Address), "Address"},
302 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.NotifyList[0]), "System Notify"},
303 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.NotifyList[1]), "Device Notify"},
304 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.Handler), "Handler"}
307 static ACPI_EXDUMP_INFO AcpiExDumpThermal[4] =
309 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpThermal), NULL},
310 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.NotifyList[0]), "System Notify"},
311 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.NotifyList[1]), "Device Notify"},
312 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.Handler), "Handler"}
315 static ACPI_EXDUMP_INFO AcpiExDumpBufferField[3] =
317 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBufferField), NULL},
318 {ACPI_EXD_FIELD, 0, NULL},
319 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BufferField.BufferObj), "Buffer Object"}
322 static ACPI_EXDUMP_INFO AcpiExDumpRegionField[5] =
324 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegionField), NULL},
325 {ACPI_EXD_FIELD, 0, NULL},
326 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Field.AccessLength), "AccessLength"},
327 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.RegionObj), "Region Object"},
328 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.ResourceBuffer), "ResourceBuffer"}
331 static ACPI_EXDUMP_INFO AcpiExDumpBankField[5] =
333 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField), NULL},
334 {ACPI_EXD_FIELD, 0, NULL},
335 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (BankField.Value), "Value"},
336 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BankField.RegionObj), "Region Object"},
337 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BankField.BankObj), "Bank Object"}
340 static ACPI_EXDUMP_INFO AcpiExDumpIndexField[5] =
342 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField), NULL},
343 {ACPI_EXD_FIELD, 0, NULL},
344 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (IndexField.Value), "Value"},
345 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.IndexObj), "Index Object"},
346 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.DataObj), "Data Object"}
349 static ACPI_EXDUMP_INFO AcpiExDumpReference[9] =
351 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpReference), NULL},
352 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.Class), "Class"},
353 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.TargetType), "Target Type"},
354 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Reference.Value), "Value"},
355 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Object), "Object Desc"},
356 {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Reference.Node), "Node"},
357 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Where), "Where"},
358 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.IndexPointer), "Index Pointer"},
359 {ACPI_EXD_REFERENCE,0, NULL}
362 static ACPI_EXDUMP_INFO AcpiExDumpAddressHandler[6] =
364 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL},
365 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (AddressSpace.SpaceId), "Space Id"},
366 {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (AddressSpace.Next), "Next"},
367 {ACPI_EXD_RGN_LIST, ACPI_EXD_OFFSET (AddressSpace.RegionList), "Region List"},
368 {ACPI_EXD_NODE, ACPI_EXD_OFFSET (AddressSpace.Node), "Node"},
369 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Context), "Context"}
372 static ACPI_EXDUMP_INFO AcpiExDumpNotify[7] =
374 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify), NULL},
375 {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Notify.Node), "Node"},
376 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Notify.HandlerType), "Handler Type"},
377 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Handler), "Handler"},
378 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Context), "Context"},
379 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Next[0]), "Next System Notify"},
380 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Next[1]), "Next Device Notify"}
383 static ACPI_EXDUMP_INFO AcpiExDumpExtra[6] =
385 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpExtra), NULL},
386 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.Method_REG), "_REG Method"},
387 {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Extra.ScopeNode), "Scope Node"},
388 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.RegionContext), "Region Context"},
389 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.AmlStart), "Aml Start"},
390 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Extra.AmlLength), "Aml Length"}
393 static ACPI_EXDUMP_INFO AcpiExDumpData[3] =
395 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpData), NULL},
396 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Data.Handler), "Handler"},
397 {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Data.Pointer), "Raw Data"}
400 /* Miscellaneous tables */
402 static ACPI_EXDUMP_INFO AcpiExDumpCommon[5] =
404 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon), NULL},
405 {ACPI_EXD_TYPE , 0, NULL},
406 {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Common.ReferenceCount), "Reference Count"},
407 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Common.Flags), "Flags"},
408 {ACPI_EXD_LIST, ACPI_EXD_OFFSET (Common.NextObject), "Object List"}
411 static ACPI_EXDUMP_INFO AcpiExDumpFieldCommon[7] =
413 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpFieldCommon), NULL},
414 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.FieldFlags), "Field Flags"},
415 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.AccessByteWidth), "Access Byte Width"},
416 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BitLength), "Bit Length"},
417 {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"},
418 {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BaseByteOffset), "Base Byte Offset"},
419 {ACPI_EXD_NODE, ACPI_EXD_OFFSET (CommonField.Node), "Parent Node"}
422 static ACPI_EXDUMP_INFO AcpiExDumpNode[7] =
424 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNode), NULL},
425 {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (Flags), "Flags"},
426 {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (OwnerId), "Owner Id"},
427 {ACPI_EXD_LIST, ACPI_EXD_NSOFFSET (Object), "Object List"},
428 {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Parent), "Parent"},
429 {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Child), "Child"},
430 {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Peer), "Peer"}
434 /* Dispatch table, indexed by object type */
436 static ACPI_EXDUMP_INFO *AcpiExDumpInfo[] =
452 AcpiExDumpBufferField,
455 AcpiExDumpRegionField,
457 AcpiExDumpIndexField,
462 AcpiExDumpAddressHandler,
471 /*******************************************************************************
473 * FUNCTION: AcpiExDumpObject
475 * PARAMETERS: ObjDesc - Descriptor to dump
476 * Info - Info table corresponding to this object
481 * DESCRIPTION: Walk the info table for this object
483 ******************************************************************************/
487 ACPI_OPERAND_OBJECT *ObjDesc,
488 ACPI_EXDUMP_INFO *Info)
493 ACPI_OPERAND_OBJECT *Start;
494 ACPI_OPERAND_OBJECT *Data = NULL;
495 ACPI_OPERAND_OBJECT *Next;
496 ACPI_NAMESPACE_NODE *Node;
502 "ExDumpObject: Display not implemented for object type %s\n",
503 AcpiUtGetObjectTypeName (ObjDesc));
507 /* First table entry must contain the table length (# of table entries) */
509 Count = Info->Offset;
518 Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset);
521 switch (Info->Opcode)
529 AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
530 ObjDesc->Common.Type,
531 AcpiUtGetObjectTypeName (ObjDesc));
536 AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target);
539 case ACPI_EXD_UINT16:
541 AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target));
544 case ACPI_EXD_UINT32:
546 AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target));
549 case ACPI_EXD_UINT64:
551 AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value",
552 ACPI_FORMAT_UINT64 (ACPI_GET64 (Target)));
555 case ACPI_EXD_POINTER:
556 case ACPI_EXD_ADDRESS:
558 AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target));
561 case ACPI_EXD_STRING:
563 AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
567 case ACPI_EXD_BUFFER:
570 ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length);
573 case ACPI_EXD_PACKAGE:
575 /* Dump the package contents */
577 AcpiOsPrintf ("\nPackage Contents:\n");
578 AcpiExDumpPackageObj (ObjDesc, 0, 0);
583 AcpiExDumpObject (ObjDesc, AcpiExDumpFieldCommon);
586 case ACPI_EXD_REFERENCE:
588 AcpiExOutString ("Class Name", AcpiUtGetReferenceName (ObjDesc));
589 AcpiExDumpReferenceObj (ObjDesc);
594 Start = *ACPI_CAST_PTR (void *, Target);
597 AcpiOsPrintf ("%20s : %p ", Name, Next);
600 AcpiOsPrintf ("%s (Type %2.2X)",
601 AcpiUtGetObjectTypeName (Next), Next->Common.Type);
603 while (Next->Common.NextObject)
605 if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
611 Next = Next->Common.NextObject;
612 AcpiOsPrintf ("->%p(%s %2.2X)", Next,
613 AcpiUtGetObjectTypeName (Next), Next->Common.Type);
615 if ((Next == Start) || (Next == Data))
618 "\n**** Error: Object list appears to be circular linked");
625 AcpiOsPrintf ("- No attached objects");
631 case ACPI_EXD_HDLR_LIST:
633 Start = *ACPI_CAST_PTR (void *, Target);
636 AcpiOsPrintf ("%20s : %p", Name, Next);
639 AcpiOsPrintf ("(%s %2.2X)",
640 AcpiUtGetObjectTypeName (Next),
641 Next->AddressSpace.SpaceId);
643 while (Next->AddressSpace.Next)
645 if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
651 Next = Next->AddressSpace.Next;
652 AcpiOsPrintf ("->%p(%s %2.2X)", Next,
653 AcpiUtGetObjectTypeName (Next),
654 Next->AddressSpace.SpaceId);
656 if ((Next == Start) || (Next == Data))
659 "\n**** Error: Handler list appears to be circular linked");
668 case ACPI_EXD_RGN_LIST:
670 Start = *ACPI_CAST_PTR (void *, Target);
673 AcpiOsPrintf ("%20s : %p", Name, Next);
676 AcpiOsPrintf ("(%s %2.2X)",
677 AcpiUtGetObjectTypeName (Next), Next->Common.Type);
679 while (Next->Region.Next)
681 if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
687 Next = Next->Region.Next;
688 AcpiOsPrintf ("->%p(%s %2.2X)", Next,
689 AcpiUtGetObjectTypeName (Next), Next->Common.Type);
691 if ((Next == Start) || (Next == Data))
694 "\n**** Error: Region list appears to be circular linked");
705 Node = *ACPI_CAST_PTR (ACPI_NAMESPACE_NODE *, Target);
707 AcpiOsPrintf ("%20s : %p", Name, Node);
710 AcpiOsPrintf (" [%4.4s]", Node->Name.Ascii);
717 AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
728 /*******************************************************************************
730 * FUNCTION: AcpiExDumpOperand
732 * PARAMETERS: *ObjDesc - Pointer to entry to be dumped
733 * Depth - Current nesting depth
737 * DESCRIPTION: Dump an operand object
739 ******************************************************************************/
743 ACPI_OPERAND_OBJECT *ObjDesc,
750 ACPI_FUNCTION_NAME (ExDumpOperand);
753 /* Check if debug output enabled */
755 if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_EXEC, _COMPONENT))
762 /* This could be a null element of a package */
764 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n"));
768 if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
770 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc));
771 ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC);
775 if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
777 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
778 "%p is not a node or operand object: [%s]\n",
779 ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
780 ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT));
784 /* ObjDesc is a valid object */
788 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p Refs=%u ",
789 Depth, " ", Depth, ObjDesc, ObjDesc->Common.ReferenceCount));
793 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Refs=%u ",
794 ObjDesc, ObjDesc->Common.ReferenceCount));
797 /* Decode object type */
799 switch (ObjDesc->Common.Type)
801 case ACPI_TYPE_LOCAL_REFERENCE:
803 AcpiOsPrintf ("Reference: [%s] ",
804 AcpiUtGetReferenceName (ObjDesc));
806 switch (ObjDesc->Reference.Class)
808 case ACPI_REFCLASS_DEBUG:
813 case ACPI_REFCLASS_INDEX:
815 AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
818 case ACPI_REFCLASS_TABLE:
820 AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
823 case ACPI_REFCLASS_REFOF:
825 AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
826 AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
827 ObjDesc->Reference.Object)->Common.Type));
830 case ACPI_REFCLASS_NAME:
832 AcpiUtRepairName (ObjDesc->Reference.Node->Name.Ascii);
833 AcpiOsPrintf ("- [%4.4s] (Node %p)\n",
834 ObjDesc->Reference.Node->Name.Ascii,
835 ObjDesc->Reference.Node);
838 case ACPI_REFCLASS_ARG:
839 case ACPI_REFCLASS_LOCAL:
841 AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
844 default: /* Unknown reference class */
846 AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
851 case ACPI_TYPE_BUFFER:
853 AcpiOsPrintf ("Buffer length %.2X @ %p\n",
854 ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer);
856 /* Debug only -- dump the buffer contents */
858 if (ObjDesc->Buffer.Pointer)
860 Length = ObjDesc->Buffer.Length;
867 "Buffer Contents: (displaying length 0x%.2X)\n", Length);
868 ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length);
872 case ACPI_TYPE_INTEGER:
874 AcpiOsPrintf ("Integer %8.8X%8.8X\n",
875 ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
878 case ACPI_TYPE_PACKAGE:
880 AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
881 ObjDesc->Package.Count, ObjDesc->Package.Elements);
884 * If elements exist, package element pointer is valid,
885 * and debug_level exceeds 1, dump package's elements.
887 if (ObjDesc->Package.Count &&
888 ObjDesc->Package.Elements &&
891 for (Index = 0; Index < ObjDesc->Package.Count; Index++)
894 ObjDesc->Package.Elements[Index], Depth + 1);
899 case ACPI_TYPE_REGION:
901 AcpiOsPrintf ("Region %s (%X)",
902 AcpiUtGetRegionName (ObjDesc->Region.SpaceId),
903 ObjDesc->Region.SpaceId);
906 * If the address and length have not been evaluated,
909 if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID))
915 AcpiOsPrintf (" base %8.8X%8.8X Length %X\n",
916 ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
917 ObjDesc->Region.Length);
921 case ACPI_TYPE_STRING:
923 AcpiOsPrintf ("String length %X @ %p ",
924 ObjDesc->String.Length,
925 ObjDesc->String.Pointer);
927 AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
931 case ACPI_TYPE_LOCAL_BANK_FIELD:
933 AcpiOsPrintf ("BankField\n");
936 case ACPI_TYPE_LOCAL_REGION_FIELD:
938 AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
939 "byte=%X bit=%X of below:\n",
940 ObjDesc->Field.BitLength,
941 ObjDesc->Field.AccessByteWidth,
942 ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK,
943 ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK,
944 ObjDesc->Field.BaseByteOffset,
945 ObjDesc->Field.StartFieldBitOffset);
947 AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth + 1);
950 case ACPI_TYPE_LOCAL_INDEX_FIELD:
952 AcpiOsPrintf ("IndexField\n");
955 case ACPI_TYPE_BUFFER_FIELD:
957 AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
958 ObjDesc->BufferField.BitLength,
959 ObjDesc->BufferField.BaseByteOffset,
960 ObjDesc->BufferField.StartFieldBitOffset);
962 if (!ObjDesc->BufferField.BufferObj)
964 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n"));
966 else if ((ObjDesc->BufferField.BufferObj)->Common.Type !=
969 AcpiOsPrintf ("*not a Buffer*\n");
973 AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth + 1);
977 case ACPI_TYPE_EVENT:
979 AcpiOsPrintf ("Event\n");
982 case ACPI_TYPE_METHOD:
984 AcpiOsPrintf ("Method(%X) @ %p:%X\n",
985 ObjDesc->Method.ParamCount,
986 ObjDesc->Method.AmlStart,
987 ObjDesc->Method.AmlLength);
990 case ACPI_TYPE_MUTEX:
992 AcpiOsPrintf ("Mutex\n");
995 case ACPI_TYPE_DEVICE:
997 AcpiOsPrintf ("Device\n");
1000 case ACPI_TYPE_POWER:
1002 AcpiOsPrintf ("Power\n");
1005 case ACPI_TYPE_PROCESSOR:
1007 AcpiOsPrintf ("Processor\n");
1010 case ACPI_TYPE_THERMAL:
1012 AcpiOsPrintf ("Thermal\n");
1019 AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
1027 /*******************************************************************************
1029 * FUNCTION: AcpiExDumpOperands
1031 * PARAMETERS: Operands - A list of Operand objects
1032 * OpcodeName - AML opcode name
1033 * NumOperands - Operand count for this opcode
1035 * DESCRIPTION: Dump the operands associated with the opcode
1037 ******************************************************************************/
1040 AcpiExDumpOperands (
1041 ACPI_OPERAND_OBJECT **Operands,
1042 const char *OpcodeName,
1045 ACPI_FUNCTION_TRACE (ExDumpOperands);
1050 OpcodeName = "UNKNOWN";
1053 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
1054 "**** Start operand dump for opcode [%s], %u operands\n",
1055 OpcodeName, NumOperands));
1057 if (NumOperands == 0)
1062 /* Dump the individual operands */
1066 AcpiExDumpOperand (*Operands, 0);
1071 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
1072 "**** End operand dump for [%s]\n", OpcodeName));
1077 /*******************************************************************************
1079 * FUNCTION: AcpiExOut* functions
1081 * PARAMETERS: Title - Descriptive text
1082 * Value - Value to be displayed
1084 * DESCRIPTION: Object dump output formatting functions. These functions
1085 * reduce the number of format strings required and keeps them
1086 * all in one place for easy modification.
1088 ******************************************************************************/
1095 AcpiOsPrintf ("%20s : %s\n", Title, Value);
1103 AcpiOsPrintf ("%20s : %p\n", Title, Value);
1107 /*******************************************************************************
1109 * FUNCTION: AcpiExDumpNamespaceNode
1111 * PARAMETERS: Node - Descriptor to dump
1112 * Flags - Force display if TRUE
1114 * DESCRIPTION: Dumps the members of the given.Node
1116 ******************************************************************************/
1119 AcpiExDumpNamespaceNode (
1120 ACPI_NAMESPACE_NODE *Node,
1124 ACPI_FUNCTION_ENTRY ();
1129 /* Check if debug output enabled */
1131 if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
1137 AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
1138 AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
1139 Node->Type, AcpiUtGetTypeName (Node->Type));
1141 AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node),
1146 /*******************************************************************************
1148 * FUNCTION: AcpiExDumpReferenceObj
1150 * PARAMETERS: Object - Descriptor to dump
1152 * DESCRIPTION: Dumps a reference object
1154 ******************************************************************************/
1157 AcpiExDumpReferenceObj (
1158 ACPI_OPERAND_OBJECT *ObjDesc)
1164 RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
1166 if (ObjDesc->Reference.Class == ACPI_REFCLASS_NAME)
1168 AcpiOsPrintf (" %p ", ObjDesc->Reference.Node);
1170 Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node,
1172 if (ACPI_FAILURE (Status))
1174 AcpiOsPrintf (" Could not convert name to pathname: %s\n",
1175 AcpiFormatException (Status));
1179 AcpiOsPrintf ("%s: %s\n",
1180 AcpiUtGetTypeName (ObjDesc->Reference.Node->Type),
1181 (char *) RetBuf.Pointer);
1182 ACPI_FREE (RetBuf.Pointer);
1185 else if (ObjDesc->Reference.Object)
1187 if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
1189 AcpiOsPrintf ("%22s %p", "Target :",
1190 ObjDesc->Reference.Object);
1191 if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE)
1193 AcpiOsPrintf (" Table Index: %X\n",
1194 ObjDesc->Reference.Value);
1198 AcpiOsPrintf (" [%s]\n",
1199 AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
1200 ObjDesc->Reference.Object)->Common.Type));
1205 AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object);
1211 /*******************************************************************************
1213 * FUNCTION: AcpiExDumpPackageObj
1215 * PARAMETERS: ObjDesc - Descriptor to dump
1216 * Level - Indentation Level
1217 * Index - Package index for this object
1219 * DESCRIPTION: Dumps the elements of the package
1221 ******************************************************************************/
1224 AcpiExDumpPackageObj (
1225 ACPI_OPERAND_OBJECT *ObjDesc,
1232 /* Indentation and index output */
1236 for (i = 0; i < Level; i++)
1241 AcpiOsPrintf ("[%.2d] ", Index);
1244 AcpiOsPrintf ("%p ", ObjDesc);
1246 /* Null package elements are allowed */
1250 AcpiOsPrintf ("[Null Object]\n");
1254 /* Packages may only contain a few object types */
1256 switch (ObjDesc->Common.Type)
1258 case ACPI_TYPE_INTEGER:
1260 AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
1261 ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
1264 case ACPI_TYPE_STRING:
1266 AcpiOsPrintf ("[String] Value: ");
1267 AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
1268 AcpiOsPrintf ("\n");
1271 case ACPI_TYPE_BUFFER:
1273 AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
1274 if (ObjDesc->Buffer.Length)
1276 AcpiUtDebugDumpBuffer (
1277 ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
1278 ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
1282 AcpiOsPrintf ("\n");
1286 case ACPI_TYPE_PACKAGE:
1288 AcpiOsPrintf ("[Package] Contains %u Elements:\n",
1289 ObjDesc->Package.Count);
1291 for (i = 0; i < ObjDesc->Package.Count; i++)
1293 AcpiExDumpPackageObj (
1294 ObjDesc->Package.Elements[i], Level + 1, i);
1298 case ACPI_TYPE_LOCAL_REFERENCE:
1300 AcpiOsPrintf ("[Object Reference] Class [%s]",
1301 AcpiUtGetReferenceName (ObjDesc));
1302 AcpiExDumpReferenceObj (ObjDesc);
1307 AcpiOsPrintf ("[%s] Type: %2.2X\n",
1308 AcpiUtGetTypeName (ObjDesc->Common.Type), ObjDesc->Common.Type);
1314 /*******************************************************************************
1316 * FUNCTION: AcpiExDumpObjectDescriptor
1318 * PARAMETERS: ObjDesc - Descriptor to dump
1319 * Flags - Force display if TRUE
1321 * DESCRIPTION: Dumps the members of the object descriptor given.
1323 ******************************************************************************/
1326 AcpiExDumpObjectDescriptor (
1327 ACPI_OPERAND_OBJECT *ObjDesc,
1330 ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor);
1340 /* Check if debug output enabled */
1342 if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
1348 if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
1350 AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags);
1352 ObjDesc = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object;
1358 AcpiOsPrintf ("\nAttached Object %p", ObjDesc);
1359 if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
1361 AcpiOsPrintf (" - Namespace Node");
1364 AcpiOsPrintf (":\n");
1368 if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
1371 "%p is not an ACPI operand object: [%s]\n",
1372 ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
1376 /* Validate the object type */
1378 if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
1380 AcpiOsPrintf ("Not a known object type: %2.2X\n",
1381 ObjDesc->Common.Type);
1395 AcpiExDumpObject (ObjDesc, AcpiExDumpCommon);
1397 /* Object-specific fields */
1399 AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
1401 if (ObjDesc->Common.Type == ACPI_TYPE_REGION)
1403 ObjDesc = ObjDesc->Common.NextObject;
1404 if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
1407 "Secondary object is not a known object type: %2.2X\n",
1408 ObjDesc->Common.Type);
1413 AcpiOsPrintf ("\nExtra attached Object (%p):\n", ObjDesc);
1414 AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);