nsdump.c revision 123315
138032Speter/****************************************************************************** 2363466Sgshapiro * 364565Sgshapiro * Module Name: nsdump - table dumping routines for debug 438032Speter * $Revision: 156 $ 538032Speter * 638032Speter *****************************************************************************/ 738032Speter 838032Speter/****************************************************************************** 938032Speter * 1038032Speter * 1. Copyright Notice 1138032Speter * 1238032Speter * Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp. 1338032Speter * All rights reserved. 1490795Sgshapiro * 1538032Speter * 2. License 16266527Sgshapiro * 1790795Sgshapiro * 2.1. This is your license from Intel Corp. under its intellectual property 1890795Sgshapiro * rights. You may have additional license terms from the party that provided 1964565Sgshapiro * you this software, covering your right to use that party's intellectual 2064565Sgshapiro * property rights. 21363466Sgshapiro * 2264565Sgshapiro * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 2364565Sgshapiro * copy of the source code appearing in this file ("Covered Code") an 2464565Sgshapiro * irrevocable, perpetual, worldwide license under Intel's copyrights in the 2564565Sgshapiro * base code distributed originally by Intel ("Original Intel Code") to copy, 2664565Sgshapiro 2764565Sgshapiro * make derivatives, distribute, use and display any portion of the Covered 2838032Speter * Code in any form, with the right to sublicense such rights; and 2990795Sgshapiro * 3090795Sgshapiro * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 3190795Sgshapiro * license (with the right to sublicense), under only those claims of Intel 3290795Sgshapiro * patents that are infringed by the Original Intel Code, to make, use, sell, 3390795Sgshapiro * offer to sell, and import the Covered Code and derivative works thereof 3490795Sgshapiro * solely to the minimum extent necessary to exercise the above copyright 3590795Sgshapiro * license, and in no event shall the patent license extend to any additions 3690795Sgshapiro * to or modifications of the Original Intel Code. No other license or right 3790795Sgshapiro * is granted directly or by implication, estoppel or otherwise; 3890795Sgshapiro * 3990795Sgshapiro * The above copyright and patent license is granted only if the following 4090795Sgshapiro * conditions are met: 4190795Sgshapiro * 4290795Sgshapiro * 3. Conditions 4390795Sgshapiro * 4490795Sgshapiro * 3.1. Redistribution of Source with Rights to Further Distribute Source. 4590795Sgshapiro * Redistribution of source code of any substantial portion of the Covered 4690795Sgshapiro * Code or modification with rights to further distribute source must include 4790795Sgshapiro * the above Copyright Notice, the above License, this list of Conditions, 4890795Sgshapiro * and the following Disclaimer and Export Compliance provision. In addition, 4990795Sgshapiro * Licensee must cause all Covered Code to which Licensee contributes to 5090795Sgshapiro * contain a file documenting the changes Licensee made to create that Covered 5190795Sgshapiro * Code and the date of any change. Licensee must include in that file the 5290795Sgshapiro * documentation of any changes made by any predecessor Licensee. Licensee 5390795Sgshapiro * must include a prominent statement that the modification is derived, 5490795Sgshapiro * directly or indirectly, from Original Intel Code. 5590795Sgshapiro * 5690795Sgshapiro * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 5790795Sgshapiro * Redistribution of source code of any substantial portion of the Covered 5890795Sgshapiro * Code or modification without rights to further distribute source must 5990795Sgshapiro * include the following Disclaimer and Export Compliance provision in the 6090795Sgshapiro * documentation and/or other materials provided with distribution. In 6190795Sgshapiro * addition, Licensee may not authorize further sublicense of source of any 6290795Sgshapiro * portion of the Covered Code, and must include terms to the effect that the 6390795Sgshapiro * license from Licensee to its licensee is limited to the intellectual 6490795Sgshapiro * property embodied in the software Licensee provides to its licensee, and 6590795Sgshapiro * not to intellectual property embodied in modifications its licensee may 6690795Sgshapiro * make. 6790795Sgshapiro * 6890795Sgshapiro * 3.3. Redistribution of Executable. Redistribution in executable form of any 6990795Sgshapiro * substantial portion of the Covered Code or modification must reproduce the 7090795Sgshapiro * above Copyright Notice, and the following Disclaimer and Export Compliance 7190795Sgshapiro * provision in the documentation and/or other materials provided with the 7290795Sgshapiro * distribution. 7390795Sgshapiro * 7490795Sgshapiro * 3.4. Intel retains all right, title, and interest in and to the Original 7590795Sgshapiro * Intel Code. 7690795Sgshapiro * 7790795Sgshapiro * 3.5. Neither the name Intel nor any other trademark owned or controlled by 7890795Sgshapiro * Intel shall be used in advertising or otherwise to promote the sale, use or 7990795Sgshapiro * other dealings in products derived from or relating to the Covered Code 8090795Sgshapiro * without prior written authorization from Intel. 8190795Sgshapiro * 8238032Speter * 4. Disclaimer and Export Compliance 8338032Speter * 8490795Sgshapiro * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 8538032Speter * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 8638032Speter * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 8738032Speter * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 8838032Speter * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 8938032Speter * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 9038032Speter * PARTICULAR PURPOSE. 9190795Sgshapiro * 9290795Sgshapiro * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 9390795Sgshapiro * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 9490795Sgshapiro * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 9590795Sgshapiro * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 9638032Speter * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 97285229Sgshapiro * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 9890795Sgshapiro * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 9990795Sgshapiro * LIMITED REMEDY. 10038032Speter * 10138032Speter * 4.3. Licensee shall not export, either directly or indirectly, any of this 10238032Speter * software or system incorporating such software without first obtaining any 10338032Speter * required license or other approval from the U. S. Department of Commerce or 10490795Sgshapiro * any other agency or department of the United States Government. In the 10538032Speter * event Licensee exports any such software from the United States or 10638032Speter * re-exports any such software from a foreign destination, Licensee shall 10738032Speter * ensure that the distribution and export/re-export of the software is in 10838032Speter * compliance with all laws, regulations, orders, or other restrictions of the 10938032Speter * U.S. Export Administration Regulations. Licensee agrees that neither it nor 11038032Speter * any of its subsidiaries will export/re-export any technical data, process, 11164565Sgshapiro * software, or service, directly or indirectly, to any country for which the 112168520Sgshapiro * United States government or any agency thereof requires an export license, 11338032Speter * other governmental approval, or letter of assurance, without first obtaining 11438032Speter * such license, approval or letter. 11538032Speter * 116363466Sgshapiro *****************************************************************************/ 11738032Speter 11838032Speter#define __NSDUMP_C__ 11938032Speter 12038032Speter#include "acpi.h" 12138032Speter#include "acnamesp.h" 12264565Sgshapiro#include "acparser.h" 12338032Speter 12438032Speter 12538032Speter#define _COMPONENT ACPI_NAMESPACE 12664565Sgshapiro ACPI_MODULE_NAME ("nsdump") 12738032Speter 12838032Speter 12964565Sgshapiro#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) 130285229Sgshapiro 13164565Sgshapiro/******************************************************************************* 13264565Sgshapiro * 13364565Sgshapiro * FUNCTION: AcpiNsPrintPathname 13438032Speter * 13538032Speter * PARAMETERS: NumSegment - Number of ACPI name segments 13690795Sgshapiro * Pathname - The compressed (internal) path 13738032Speter * 138285229Sgshapiro * DESCRIPTION: Print an object's full namespace pathname 13990795Sgshapiro * 14038032Speter ******************************************************************************/ 14190795Sgshapiro 14290795Sgshapirovoid 143285229SgshapiroAcpiNsPrintPathname ( 14490795Sgshapiro UINT32 NumSegments, 14590795Sgshapiro char *Pathname) 14690795Sgshapiro{ 14790795Sgshapiro ACPI_FUNCTION_NAME ("NsPrintPathname"); 14890795Sgshapiro 149285229Sgshapiro 150285229Sgshapiro if (!(AcpiDbgLevel & ACPI_LV_NAMES) || !(AcpiDbgLayer & ACPI_NAMESPACE)) 151285229Sgshapiro { 152285229Sgshapiro return; 15390795Sgshapiro } 15490795Sgshapiro 15538032Speter /* Print the entire name */ 15638032Speter 15738032Speter ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[")); 15890795Sgshapiro 15964565Sgshapiro while (NumSegments) 16090795Sgshapiro { 16190795Sgshapiro AcpiOsPrintf ("%4.4s", Pathname); 16290795Sgshapiro Pathname += ACPI_NAME_SIZE; 16390795Sgshapiro 16490795Sgshapiro NumSegments--; 16590795Sgshapiro if (NumSegments) 16690795Sgshapiro { 16790795Sgshapiro AcpiOsPrintf ("."); 16890795Sgshapiro } 16990795Sgshapiro } 17090795Sgshapiro 17138032Speter AcpiOsPrintf ("]\n"); 17264565Sgshapiro} 17364565Sgshapiro 17438032Speter 17564565Sgshapiro/******************************************************************************* 17638032Speter * 17764565Sgshapiro * FUNCTION: AcpiNsDumpPathname 17864565Sgshapiro * 17990795Sgshapiro * PARAMETERS: Handle - Object 18064565Sgshapiro * Msg - Prefix message 18190795Sgshapiro * Level - Desired debug level 18238032Speter * Component - Caller's component ID 18338032Speter * 18438032Speter * DESCRIPTION: Print an object's full namespace pathname 185285229Sgshapiro * Manages allocation/freeing of a pathname buffer 18638032Speter * 18790795Sgshapiro ******************************************************************************/ 18890795Sgshapiro 18990795Sgshapirovoid 19077352SgshapiroAcpiNsDumpPathname ( 19190795Sgshapiro ACPI_HANDLE Handle, 19238032Speter char *Msg, 19338032Speter UINT32 Level, 19438032Speter UINT32 Component) 19538032Speter{ 19638032Speter 19764565Sgshapiro ACPI_FUNCTION_TRACE ("NsDumpPathname"); 19838032Speter 19938032Speter 20038032Speter /* Do this only if the requested debug level and component are enabled */ 20138032Speter 20290795Sgshapiro if (!(AcpiDbgLevel & Level) || !(AcpiDbgLayer & Component)) 20338032Speter { 20438032Speter return_VOID; 20577352Sgshapiro } 20638032Speter 20764565Sgshapiro /* Convert handle to a full pathname and print it (with supplied message) */ 20838032Speter 20938032Speter AcpiNsPrintNodePathname (Handle, Msg); 21064565Sgshapiro AcpiOsPrintf ("\n"); 211168520Sgshapiro return_VOID; 21238032Speter} 21338032Speter 21438032Speter 21538032Speter/******************************************************************************* 21638032Speter * 21738032Speter * FUNCTION: AcpiNsDumpOneObject 21864565Sgshapiro * 21964565Sgshapiro * PARAMETERS: Handle - Node to be dumped 22038032Speter * Level - Nesting level of the handle 22138032Speter * Context - Passed into WalkNamespace 22238032Speter * 22338032Speter * DESCRIPTION: Dump a single Node 22438032Speter * This procedure is a UserFunction called by AcpiNsWalkNamespace. 22538032Speter * 22638032Speter ******************************************************************************/ 227363466Sgshapiro 22838032SpeterACPI_STATUS 22938032SpeterAcpiNsDumpOneObject ( 230363466Sgshapiro ACPI_HANDLE ObjHandle, 23138032Speter UINT32 Level, 23238032Speter void *Context, 233363466Sgshapiro void **ReturnValue) 23438032Speter{ 23538032Speter ACPI_WALK_INFO *Info = (ACPI_WALK_INFO *) Context; 236363466Sgshapiro ACPI_NAMESPACE_NODE *ThisNode; 23738032Speter ACPI_OPERAND_OBJECT *ObjDesc = NULL; 23838032Speter ACPI_OBJECT_TYPE ObjType; 239363466Sgshapiro ACPI_OBJECT_TYPE Type; 24090795Sgshapiro UINT32 BytesToDump; 241132946Sgshapiro UINT32 DbgLevel; 24238032Speter UINT32 i; 24338032Speter 24438032Speter 24538032Speter ACPI_FUNCTION_NAME ("NsDumpOneObject"); 24690795Sgshapiro 24738032Speter 248363466Sgshapiro /* Is output enabled? */ 24964565Sgshapiro 25038032Speter if (!(AcpiDbgLevel & Info->DebugLevel)) 25138032Speter { 25238032Speter return (AE_OK); 25338032Speter } 25438032Speter 25538032Speter if (!ObjHandle) 25690795Sgshapiro { 25738032Speter ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Null object handle\n")); 258363466Sgshapiro return (AE_OK); 25990795Sgshapiro } 26038032Speter 26138032Speter ThisNode = AcpiNsMapHandleToNode (ObjHandle); 26238032Speter Type = ThisNode->Type; 26338032Speter 26438032Speter /* Check if the owner matches */ 26538032Speter 26690795Sgshapiro if ((Info->OwnerId != ACPI_UINT32_MAX) && 26790795Sgshapiro (Info->OwnerId != ThisNode->OwnerId)) 26838032Speter { 26938032Speter return (AE_OK); 27038032Speter } 27190795Sgshapiro 27238032Speter /* Indent the object according to the level */ 27338032Speter 27438032Speter AcpiOsPrintf ("%2d%*s", (UINT32) Level - 1, (int) Level * 2, " "); 27538032Speter 27638032Speter /* Check the node type and name */ 27738032Speter 27838032Speter if (Type > ACPI_TYPE_LOCAL_MAX) 27938032Speter { 28038032Speter ACPI_REPORT_WARNING (("Invalid ACPI Type %08X\n", Type)); 28164565Sgshapiro } 28238032Speter 28338032Speter if (!AcpiUtValidAcpiName (ThisNode->Name.Integer)) 28438032Speter { 28564565Sgshapiro ACPI_REPORT_WARNING (("Invalid ACPI Name %08X\n", ThisNode->Name.Integer)); 28638032Speter } 28764565Sgshapiro 28864565Sgshapiro /* 28990795Sgshapiro * Now we can print out the pertinent information 29038032Speter */ 29164565Sgshapiro AcpiOsPrintf ("%4.4s %-12s %p ", 29264565Sgshapiro AcpiUtGetNodeName (ThisNode), AcpiUtGetTypeName (Type), ThisNode); 29364565Sgshapiro 29464565Sgshapiro DbgLevel = AcpiDbgLevel; 29564565Sgshapiro AcpiDbgLevel = 0; 29664565Sgshapiro ObjDesc = AcpiNsGetAttachedObject (ThisNode); 29764565Sgshapiro AcpiDbgLevel = DbgLevel; 29864565Sgshapiro 29990795Sgshapiro switch (Info->DisplayType) 30090795Sgshapiro { 30190795Sgshapiro case ACPI_DISPLAY_SUMMARY: 30264565Sgshapiro 30338032Speter if (!ObjDesc) 30438032Speter { 30538032Speter /* No attached object, we are done */ 30664565Sgshapiro 30764565Sgshapiro AcpiOsPrintf ("\n"); 30864565Sgshapiro return (AE_OK); 30964565Sgshapiro } 31064565Sgshapiro 31164565Sgshapiro switch (Type) 31264565Sgshapiro { 31364565Sgshapiro case ACPI_TYPE_PROCESSOR: 31464565Sgshapiro 31564565Sgshapiro AcpiOsPrintf ("ID %X Len %.4X Addr %p\n", 31664565Sgshapiro ObjDesc->Processor.ProcId, 31764565Sgshapiro ObjDesc->Processor.Length, 31890795Sgshapiro (char *) ObjDesc->Processor.Address); 31977352Sgshapiro break; 32064565Sgshapiro 32164565Sgshapiro 32264565Sgshapiro case ACPI_TYPE_DEVICE: 32364565Sgshapiro 324168520Sgshapiro AcpiOsPrintf ("Notify Object: %p\n", ObjDesc); 32590795Sgshapiro break; 326168520Sgshapiro 32790795Sgshapiro 32890795Sgshapiro case ACPI_TYPE_METHOD: 32964565Sgshapiro 33064565Sgshapiro AcpiOsPrintf ("Args %X Len %.4X Aml %p\n", 33164565Sgshapiro (UINT32) ObjDesc->Method.ParamCount, 33290795Sgshapiro ObjDesc->Method.AmlLength, 33390795Sgshapiro ObjDesc->Method.AmlStart); 33464565Sgshapiro break; 33564565Sgshapiro 33664565Sgshapiro 33764565Sgshapiro case ACPI_TYPE_INTEGER: 33864565Sgshapiro 33964565Sgshapiro AcpiOsPrintf ("= %8.8X%8.8X\n", 34064565Sgshapiro ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); 34164565Sgshapiro break; 34290795Sgshapiro 34364565Sgshapiro 344363466Sgshapiro case ACPI_TYPE_PACKAGE: 34590795Sgshapiro 34664565Sgshapiro if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) 34764565Sgshapiro { 34864565Sgshapiro AcpiOsPrintf ("Elements %.2X\n", 34964565Sgshapiro ObjDesc->Package.Count); 35064565Sgshapiro } 35164565Sgshapiro else 35264565Sgshapiro { 35390795Sgshapiro AcpiOsPrintf ("[Length not yet evaluated]\n"); 35490795Sgshapiro } 35564565Sgshapiro break; 35664565Sgshapiro 35764565Sgshapiro 35890795Sgshapiro case ACPI_TYPE_BUFFER: 35964565Sgshapiro 36064565Sgshapiro if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) 36164565Sgshapiro { 36264565Sgshapiro AcpiOsPrintf ("Len %.2X", 36364565Sgshapiro ObjDesc->Buffer.Length); 364223067Sgshapiro 36564565Sgshapiro /* Dump some of the buffer */ 36664565Sgshapiro 36764565Sgshapiro if (ObjDesc->Buffer.Length > 0) 36864565Sgshapiro { 36964565Sgshapiro AcpiOsPrintf (" ="); 37064565Sgshapiro for (i = 0; (i < ObjDesc->Buffer.Length && i < 12); i++) 37164565Sgshapiro { 37264565Sgshapiro AcpiOsPrintf (" %.2hX", ObjDesc->Buffer.Pointer[i]); 37364565Sgshapiro } 37464565Sgshapiro } 37564565Sgshapiro AcpiOsPrintf ("\n"); 37690795Sgshapiro } 37764565Sgshapiro else 37864565Sgshapiro { 37964565Sgshapiro AcpiOsPrintf ("[Length not yet evaluated]\n"); 38064565Sgshapiro } 38164565Sgshapiro break; 38264565Sgshapiro 38364565Sgshapiro 38464565Sgshapiro case ACPI_TYPE_STRING: 38564565Sgshapiro 38664565Sgshapiro AcpiOsPrintf ("Len %.2X ", ObjDesc->String.Length); 38790795Sgshapiro AcpiUtPrintString (ObjDesc->String.Pointer, 32); 38890795Sgshapiro AcpiOsPrintf ("\n"); 38990795Sgshapiro break; 39038032Speter 39164565Sgshapiro 39264565Sgshapiro case ACPI_TYPE_REGION: 39364565Sgshapiro 39438032Speter AcpiOsPrintf ("[%s]", AcpiUtGetRegionName (ObjDesc->Region.SpaceId)); 39538032Speter if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) 39638032Speter { 39738032Speter AcpiOsPrintf (" Addr %8.8X%8.8X Len %.4X\n", 39838032Speter ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), 39938032Speter ObjDesc->Region.Length); 40038032Speter } 40138032Speter else 40264565Sgshapiro { 40338032Speter AcpiOsPrintf (" [Address/Length not yet evaluated]\n"); 40438032Speter } 40538032Speter break; 40690795Sgshapiro 40777352Sgshapiro 40838032Speter case ACPI_TYPE_LOCAL_REFERENCE: 40938032Speter 41038032Speter AcpiOsPrintf ("[%s]\n", 41138032Speter AcpiPsGetOpcodeName (ObjDesc->Reference.Opcode)); 412168520Sgshapiro break; 41390795Sgshapiro 414168520Sgshapiro 41590795Sgshapiro case ACPI_TYPE_BUFFER_FIELD: 41690795Sgshapiro 41738032Speter if (ObjDesc->BufferField.BufferObj && 41838032Speter ObjDesc->BufferField.BufferObj->Buffer.Node) 41938032Speter { 42090795Sgshapiro AcpiOsPrintf ("Buf [%4.4s]", 42190795Sgshapiro AcpiUtGetNodeName (ObjDesc->BufferField.BufferObj->Buffer.Node)); 42238032Speter } 42338032Speter break; 42438032Speter 42538032Speter 42638032Speter case ACPI_TYPE_LOCAL_REGION_FIELD: 42738032Speter 42864565Sgshapiro AcpiOsPrintf ("Rgn [%4.4s]", 42938032Speter AcpiUtGetNodeName (ObjDesc->CommonField.RegionObj->Region.Node)); 43090795Sgshapiro break; 43138032Speter 432223067Sgshapiro 43390795Sgshapiro case ACPI_TYPE_LOCAL_BANK_FIELD: 43438032Speter 43538032Speter AcpiOsPrintf ("Rgn [%4.4s] Bnk [%4.4s]", 43638032Speter AcpiUtGetNodeName (ObjDesc->CommonField.RegionObj->Region.Node), 43790795Sgshapiro AcpiUtGetNodeName (ObjDesc->BankField.BankObj->CommonField.Node)); 43838032Speter break; 43990795Sgshapiro 44038032Speter 44138032Speter case ACPI_TYPE_LOCAL_INDEX_FIELD: 44238032Speter 44338032Speter AcpiOsPrintf ("Idx [%4.4s] Dat [%4.4s]", 44438032Speter AcpiUtGetNodeName (ObjDesc->IndexField.IndexObj->CommonField.Node), 44538032Speter AcpiUtGetNodeName (ObjDesc->IndexField.DataObj->CommonField.Node)); 44638032Speter break; 44738032Speter 44838032Speter 44964565Sgshapiro case ACPI_TYPE_LOCAL_ALIAS: 45038032Speter 45138032Speter AcpiOsPrintf ("Target %4.4s (%p)\n", AcpiUtGetNodeName (ObjDesc), ObjDesc); 45238032Speter break; 45364565Sgshapiro 45438032Speter default: 45564565Sgshapiro 45690795Sgshapiro AcpiOsPrintf ("Object %p\n", ObjDesc); 45738032Speter break; 45838032Speter } 45990795Sgshapiro 46064565Sgshapiro /* Common field handling */ 46190795Sgshapiro 46290795Sgshapiro switch (Type) 46338032Speter { 46438032Speter case ACPI_TYPE_BUFFER_FIELD: 46538032Speter case ACPI_TYPE_LOCAL_REGION_FIELD: 46638032Speter case ACPI_TYPE_LOCAL_BANK_FIELD: 46738032Speter case ACPI_TYPE_LOCAL_INDEX_FIELD: 46838032Speter 46938032Speter AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hd\n", 47038032Speter (ObjDesc->CommonField.BaseByteOffset * 8) 47164565Sgshapiro + ObjDesc->CommonField.StartFieldBitOffset, 47238032Speter ObjDesc->CommonField.BitLength, 47338032Speter ObjDesc->CommonField.AccessByteWidth); 47490795Sgshapiro break; 47577352Sgshapiro 476223067Sgshapiro default: 47738032Speter break; 47838032Speter } 47938032Speter break; 480223067Sgshapiro 481285229Sgshapiro 482285229Sgshapiro case ACPI_DISPLAY_OBJECTS: 483285229Sgshapiro 484285229Sgshapiro AcpiOsPrintf ("O:%p", ObjDesc); 485285229Sgshapiro if (!ObjDesc) 486285229Sgshapiro { 487285229Sgshapiro /* No attached object, we are done */ 488285229Sgshapiro 489285229Sgshapiro AcpiOsPrintf ("\n"); 490285229Sgshapiro return (AE_OK); 491285229Sgshapiro } 492285229Sgshapiro 493285229Sgshapiro AcpiOsPrintf ("(R%d)", 494285229Sgshapiro ObjDesc->Common.ReferenceCount); 495285229Sgshapiro 496223067Sgshapiro switch (Type) 497285229Sgshapiro { 498285229Sgshapiro case ACPI_TYPE_METHOD: 499285229Sgshapiro 500285229Sgshapiro /* Name is a Method and its AML offset/length are set */ 501285229Sgshapiro 502285229Sgshapiro AcpiOsPrintf (" M:%p-%X\n", ObjDesc->Method.AmlStart, 503285229Sgshapiro ObjDesc->Method.AmlLength); 504285229Sgshapiro break; 505285229Sgshapiro 506285229Sgshapiro case ACPI_TYPE_INTEGER: 507285229Sgshapiro 508285229Sgshapiro AcpiOsPrintf (" I:%8.8X8.8%X\n", 509285229Sgshapiro ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); 510285229Sgshapiro break; 511285229Sgshapiro 512285229Sgshapiro case ACPI_TYPE_STRING: 513285229Sgshapiro 514285229Sgshapiro AcpiOsPrintf (" S:%p-%X\n", ObjDesc->String.Pointer, 515285229Sgshapiro ObjDesc->String.Length); 516285229Sgshapiro break; 517285229Sgshapiro 518285229Sgshapiro case ACPI_TYPE_BUFFER: 519285229Sgshapiro 520285229Sgshapiro AcpiOsPrintf (" B:%p-%X\n", ObjDesc->Buffer.Pointer, 521285229Sgshapiro ObjDesc->Buffer.Length); 522285229Sgshapiro break; 523285229Sgshapiro 524285229Sgshapiro default: 525285229Sgshapiro 526285229Sgshapiro AcpiOsPrintf ("\n"); 527285229Sgshapiro break; 528285229Sgshapiro } 529285229Sgshapiro break; 530285229Sgshapiro 531285229Sgshapiro 532285229Sgshapiro default: 533285229Sgshapiro AcpiOsPrintf ("\n"); 534285229Sgshapiro break; 53590795Sgshapiro } 536285229Sgshapiro 537285229Sgshapiro /* If debug turned off, done */ 538285229Sgshapiro 539285229Sgshapiro if (!(AcpiDbgLevel & ACPI_LV_VALUES)) 540285229Sgshapiro { 541285229Sgshapiro return (AE_OK); 542285229Sgshapiro } 543285229Sgshapiro 544285229Sgshapiro 545285229Sgshapiro /* If there is an attached object, display it */ 546285229Sgshapiro 547285229Sgshapiro DbgLevel = AcpiDbgLevel; 548285229Sgshapiro AcpiDbgLevel = 0; 549285229Sgshapiro ObjDesc = AcpiNsGetAttachedObject (ThisNode); 550285229Sgshapiro AcpiDbgLevel = DbgLevel; 551285229Sgshapiro 552285229Sgshapiro /* Dump attached objects */ 553285229Sgshapiro 554285229Sgshapiro while (ObjDesc) 555285229Sgshapiro { 556285229Sgshapiro ObjType = ACPI_TYPE_INVALID; 557285229Sgshapiro AcpiOsPrintf (" Attached Object %p: ", ObjDesc); 558285229Sgshapiro 559285229Sgshapiro /* Decode the type of attached object and dump the contents */ 560285229Sgshapiro 561285229Sgshapiro switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) 562285229Sgshapiro { 563285229Sgshapiro case ACPI_DESC_TYPE_NAMED: 564285229Sgshapiro 565285229Sgshapiro AcpiOsPrintf ("(Ptr to Node)\n"); 566285229Sgshapiro BytesToDump = sizeof (ACPI_NAMESPACE_NODE); 567285229Sgshapiro break; 568285229Sgshapiro 569285229Sgshapiro 570285229Sgshapiro case ACPI_DESC_TYPE_OPERAND: 571285229Sgshapiro 572285229Sgshapiro ObjType = ACPI_GET_OBJECT_TYPE (ObjDesc); 573285229Sgshapiro 574285229Sgshapiro if (ObjType > ACPI_TYPE_LOCAL_MAX) 575285229Sgshapiro { 576285229Sgshapiro AcpiOsPrintf ("(Ptr to ACPI Object type %X [UNKNOWN])\n", ObjType); 577285229Sgshapiro BytesToDump = 32; 578285229Sgshapiro } 579285229Sgshapiro else 580285229Sgshapiro { 581285229Sgshapiro AcpiOsPrintf ("(Ptr to ACPI Object type %s, %X)\n", 58238032Speter AcpiUtGetTypeName (ObjType), ObjType); 58338032Speter BytesToDump = sizeof (ACPI_OPERAND_OBJECT); 58438032Speter } 58538032Speter break; 58638032Speter 58790795Sgshapiro 58838032Speter default: 58938032Speter 59090795Sgshapiro AcpiOsPrintf ("(String or Buffer ptr - not an object descriptor) [%s]\n", 59138032Speter AcpiUtGetDescriptorName (ObjDesc)); 59238032Speter BytesToDump = 16; 59338032Speter break; 59438032Speter } 59538032Speter 59638032Speter ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); 59738032Speter 59838032Speter /* If value is NOT an internal object, we are done */ 59938032Speter 60064565Sgshapiro if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) 60138032Speter { 60238032Speter goto Cleanup; 60338032Speter } 60464565Sgshapiro 60538032Speter /* 60664565Sgshapiro * Valid object, get the pointer to next level, if any 60790795Sgshapiro */ 60838032Speter switch (ObjType) 60938032Speter { 61090795Sgshapiro case ACPI_TYPE_STRING: 61164565Sgshapiro ObjDesc = (void *) ObjDesc->String.Pointer; 61264565Sgshapiro break; 61390795Sgshapiro 61490795Sgshapiro case ACPI_TYPE_BUFFER: 61538032Speter ObjDesc = (void *) ObjDesc->Buffer.Pointer; 61638032Speter break; 61738032Speter 61838032Speter case ACPI_TYPE_BUFFER_FIELD: 61938032Speter ObjDesc = (ACPI_OPERAND_OBJECT *) ObjDesc->BufferField.BufferObj; 62038032Speter break; 62138032Speter 62238032Speter case ACPI_TYPE_PACKAGE: 62364565Sgshapiro ObjDesc = (void *) ObjDesc->Package.Elements; 62438032Speter break; 62538032Speter 62690795Sgshapiro case ACPI_TYPE_METHOD: 62777352Sgshapiro ObjDesc = (void *) ObjDesc->Method.AmlStart; 628168520Sgshapiro break; 62938032Speter 63038032Speter case ACPI_TYPE_LOCAL_REGION_FIELD: 63138032Speter ObjDesc = (void *) ObjDesc->Field.RegionObj; 632363466Sgshapiro break; 63390795Sgshapiro 63438032Speter case ACPI_TYPE_LOCAL_BANK_FIELD: 63538032Speter ObjDesc = (void *) ObjDesc->BankField.RegionObj; 63638032Speter break; 63738032Speter 63890795Sgshapiro case ACPI_TYPE_LOCAL_INDEX_FIELD: 63938032Speter ObjDesc = (void *) ObjDesc->IndexField.IndexObj; 64090795Sgshapiro break; 64138032Speter 64238032Speter default: 64338032Speter goto Cleanup; 64438032Speter } 64538032Speter 64638032Speter ObjType = ACPI_TYPE_INVALID; /* Terminate loop after next pass */ 64738032Speter } 64838032Speter 64938032SpeterCleanup: 65038032Speter AcpiOsPrintf ("\n"); 65138032Speter return (AE_OK); 65264565Sgshapiro} 65338032Speter 65438032Speter 65538032Speter/******************************************************************************* 65638032Speter * 65738032Speter * FUNCTION: AcpiNsDumpObjects 658168520Sgshapiro * 65964565Sgshapiro * PARAMETERS: Type - Object type to be dumped 660168520Sgshapiro * MaxDepth - Maximum depth of dump. Use ACPI_UINT32_MAX 66138032Speter * for an effectively unlimited depth. 66238032Speter * OwnerId - Dump only objects owned by this ID. Use 66338032Speter * ACPI_UINT32_MAX to match all owners. 66490795Sgshapiro * StartHandle - Where in namespace to start/end search 66538032Speter * 66638032Speter * DESCRIPTION: Dump typed objects within the loaded namespace. 66738032Speter * Uses AcpiNsWalkNamespace in conjunction with AcpiNsDumpOneObject. 66838032Speter * 66938032Speter ******************************************************************************/ 67038032Speter 67138032Spetervoid 672168520SgshapiroAcpiNsDumpObjects ( 67338032Speter ACPI_OBJECT_TYPE Type, 67438032Speter UINT8 DisplayType, 67538032Speter UINT32 MaxDepth, 67638032Speter UINT32 OwnerId, 67790795Sgshapiro ACPI_HANDLE StartHandle) 67890795Sgshapiro{ 67938032Speter ACPI_WALK_INFO Info; 68090795Sgshapiro 681168520Sgshapiro 68290795Sgshapiro ACPI_FUNCTION_ENTRY (); 68390795Sgshapiro 68438032Speter 68538032Speter Info.DebugLevel = ACPI_LV_TABLES; 68638032Speter Info.OwnerId = OwnerId; 68738032Speter Info.DisplayType = DisplayType; 68838032Speter 68938032Speter (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, 69038032Speter ACPI_NS_WALK_NO_UNLOCK, AcpiNsDumpOneObject, 69138032Speter (void *) &Info, NULL); 69238032Speter} 69338032Speter 69438032Speter 69564565Sgshapiro/******************************************************************************* 69664565Sgshapiro * 697168520Sgshapiro * FUNCTION: AcpiNsDumpTables 69838032Speter * 69938032Speter * PARAMETERS: SearchBase - Root of subtree to be dumped, or 70038032Speter * NS_ALL to dump the entire namespace 70190795Sgshapiro * MaxDepth - Maximum depth of dump. Use INT_MAX 70238032Speter * for an effectively unlimited depth. 70338032Speter * 70438032Speter * DESCRIPTION: Dump the name space, or a portion of it. 70564565Sgshapiro * 70664565Sgshapiro ******************************************************************************/ 70764565Sgshapiro 70864565Sgshapirovoid 70964565SgshapiroAcpiNsDumpTables ( 71064565Sgshapiro ACPI_HANDLE SearchBase, 71164565Sgshapiro UINT32 MaxDepth) 71264565Sgshapiro{ 71364565Sgshapiro ACPI_HANDLE SearchHandle = SearchBase; 71464565Sgshapiro 71564565Sgshapiro 71664565Sgshapiro ACPI_FUNCTION_TRACE ("NsDumpTables"); 71764565Sgshapiro 71864565Sgshapiro 71938032Speter if (!AcpiGbl_RootNode) 72038032Speter { 72138032Speter /* 72290795Sgshapiro * If the name space has not been initialized, 72390795Sgshapiro * there is nothing to dump. 72438032Speter */ 72590795Sgshapiro ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "namespace not initialized!\n")); 72690795Sgshapiro return_VOID; 72738032Speter } 72890795Sgshapiro 72990795Sgshapiro if (ACPI_NS_ALL == SearchBase) 73090795Sgshapiro { 73190795Sgshapiro /* entire namespace */ 73290795Sgshapiro 73390795Sgshapiro SearchHandle = AcpiGbl_RootNode; 73438032Speter ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "\\\n")); 73590795Sgshapiro } 73690795Sgshapiro 73738032Speter AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth, 73838032Speter ACPI_UINT32_MAX, SearchHandle); 73938032Speter return_VOID; 74038032Speter} 74138032Speter 74238032Speter 74338032Speter/******************************************************************************* 74438032Speter * 74590795Sgshapiro * FUNCTION: AcpiNsDumpEntry 74690795Sgshapiro * 74738032Speter * PARAMETERS: Handle - Node to be dumped 74838032Speter * DebugLevel - Output level 74938032Speter * 75090795Sgshapiro * DESCRIPTION: Dump a single Node 75138032Speter * 752168520Sgshapiro ******************************************************************************/ 75364565Sgshapiro 75490795Sgshapirovoid 75590795SgshapiroAcpiNsDumpEntry ( 75690795Sgshapiro ACPI_HANDLE Handle, 75738032Speter UINT32 DebugLevel) 758363466Sgshapiro{ 75990795Sgshapiro ACPI_WALK_INFO Info; 76038032Speter 76138032Speter 76238032Speter ACPI_FUNCTION_ENTRY (); 76338032Speter 76438032Speter 76538032Speter Info.DebugLevel = DebugLevel; 76638032Speter Info.OwnerId = ACPI_UINT32_MAX; 76738032Speter Info.DisplayType = ACPI_DISPLAY_SUMMARY; 76838032Speter 76938032Speter (void) AcpiNsDumpOneObject (Handle, 1, &Info, NULL); 77038032Speter} 77138032Speter 77264565Sgshapiro#endif 77338032Speter 77438032Speter