xref: /freebsd-src/sys/contrib/dev/acpica/common/dmtable.c (revision 92f570c32e9b9b9b4db9b6921c4ab79be686a498)
11a39cfb0SJung-uk Kim /******************************************************************************
21a39cfb0SJung-uk Kim  *
31a39cfb0SJung-uk Kim  * Module Name: dmtable - Support for ACPI tables that contain no AML code
41a39cfb0SJung-uk Kim  *
51a39cfb0SJung-uk Kim  *****************************************************************************/
61a39cfb0SJung-uk Kim 
70d84335fSJung-uk Kim /******************************************************************************
80d84335fSJung-uk Kim  *
90d84335fSJung-uk Kim  * 1. Copyright Notice
100d84335fSJung-uk Kim  *
11804fe266SJung-uk Kim  * Some or all of this work - Copyright (c) 1999 - 2024, Intel Corp.
121a39cfb0SJung-uk Kim  * All rights reserved.
131a39cfb0SJung-uk Kim  *
140d84335fSJung-uk Kim  * 2. License
150d84335fSJung-uk Kim  *
160d84335fSJung-uk Kim  * 2.1. This is your license from Intel Corp. under its intellectual property
170d84335fSJung-uk Kim  * rights. You may have additional license terms from the party that provided
180d84335fSJung-uk Kim  * you this software, covering your right to use that party's intellectual
190d84335fSJung-uk Kim  * property rights.
200d84335fSJung-uk Kim  *
210d84335fSJung-uk Kim  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
220d84335fSJung-uk Kim  * copy of the source code appearing in this file ("Covered Code") an
230d84335fSJung-uk Kim  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
240d84335fSJung-uk Kim  * base code distributed originally by Intel ("Original Intel Code") to copy,
250d84335fSJung-uk Kim  * make derivatives, distribute, use and display any portion of the Covered
260d84335fSJung-uk Kim  * Code in any form, with the right to sublicense such rights; and
270d84335fSJung-uk Kim  *
280d84335fSJung-uk Kim  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
290d84335fSJung-uk Kim  * license (with the right to sublicense), under only those claims of Intel
300d84335fSJung-uk Kim  * patents that are infringed by the Original Intel Code, to make, use, sell,
310d84335fSJung-uk Kim  * offer to sell, and import the Covered Code and derivative works thereof
320d84335fSJung-uk Kim  * solely to the minimum extent necessary to exercise the above copyright
330d84335fSJung-uk Kim  * license, and in no event shall the patent license extend to any additions
340d84335fSJung-uk Kim  * to or modifications of the Original Intel Code. No other license or right
350d84335fSJung-uk Kim  * is granted directly or by implication, estoppel or otherwise;
360d84335fSJung-uk Kim  *
370d84335fSJung-uk Kim  * The above copyright and patent license is granted only if the following
380d84335fSJung-uk Kim  * conditions are met:
390d84335fSJung-uk Kim  *
400d84335fSJung-uk Kim  * 3. Conditions
410d84335fSJung-uk Kim  *
420d84335fSJung-uk Kim  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
430d84335fSJung-uk Kim  * Redistribution of source code of any substantial portion of the Covered
440d84335fSJung-uk Kim  * Code or modification with rights to further distribute source must include
450d84335fSJung-uk Kim  * the above Copyright Notice, the above License, this list of Conditions,
460d84335fSJung-uk Kim  * and the following Disclaimer and Export Compliance provision. In addition,
470d84335fSJung-uk Kim  * Licensee must cause all Covered Code to which Licensee contributes to
480d84335fSJung-uk Kim  * contain a file documenting the changes Licensee made to create that Covered
490d84335fSJung-uk Kim  * Code and the date of any change. Licensee must include in that file the
500d84335fSJung-uk Kim  * documentation of any changes made by any predecessor Licensee. Licensee
510d84335fSJung-uk Kim  * must include a prominent statement that the modification is derived,
520d84335fSJung-uk Kim  * directly or indirectly, from Original Intel Code.
530d84335fSJung-uk Kim  *
540d84335fSJung-uk Kim  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
550d84335fSJung-uk Kim  * Redistribution of source code of any substantial portion of the Covered
560d84335fSJung-uk Kim  * Code or modification without rights to further distribute source must
570d84335fSJung-uk Kim  * include the following Disclaimer and Export Compliance provision in the
580d84335fSJung-uk Kim  * documentation and/or other materials provided with distribution. In
590d84335fSJung-uk Kim  * addition, Licensee may not authorize further sublicense of source of any
600d84335fSJung-uk Kim  * portion of the Covered Code, and must include terms to the effect that the
610d84335fSJung-uk Kim  * license from Licensee to its licensee is limited to the intellectual
620d84335fSJung-uk Kim  * property embodied in the software Licensee provides to its licensee, and
630d84335fSJung-uk Kim  * not to intellectual property embodied in modifications its licensee may
640d84335fSJung-uk Kim  * make.
650d84335fSJung-uk Kim  *
660d84335fSJung-uk Kim  * 3.3. Redistribution of Executable. Redistribution in executable form of any
670d84335fSJung-uk Kim  * substantial portion of the Covered Code or modification must reproduce the
680d84335fSJung-uk Kim  * above Copyright Notice, and the following Disclaimer and Export Compliance
690d84335fSJung-uk Kim  * provision in the documentation and/or other materials provided with the
700d84335fSJung-uk Kim  * distribution.
710d84335fSJung-uk Kim  *
720d84335fSJung-uk Kim  * 3.4. Intel retains all right, title, and interest in and to the Original
730d84335fSJung-uk Kim  * Intel Code.
740d84335fSJung-uk Kim  *
750d84335fSJung-uk Kim  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
760d84335fSJung-uk Kim  * Intel shall be used in advertising or otherwise to promote the sale, use or
770d84335fSJung-uk Kim  * other dealings in products derived from or relating to the Covered Code
780d84335fSJung-uk Kim  * without prior written authorization from Intel.
790d84335fSJung-uk Kim  *
800d84335fSJung-uk Kim  * 4. Disclaimer and Export Compliance
810d84335fSJung-uk Kim  *
820d84335fSJung-uk Kim  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
830d84335fSJung-uk Kim  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
840d84335fSJung-uk Kim  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
850d84335fSJung-uk Kim  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
860d84335fSJung-uk Kim  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
870d84335fSJung-uk Kim  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
880d84335fSJung-uk Kim  * PARTICULAR PURPOSE.
890d84335fSJung-uk Kim  *
900d84335fSJung-uk Kim  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
910d84335fSJung-uk Kim  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
920d84335fSJung-uk Kim  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
930d84335fSJung-uk Kim  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
940d84335fSJung-uk Kim  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
950d84335fSJung-uk Kim  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
960d84335fSJung-uk Kim  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
970d84335fSJung-uk Kim  * LIMITED REMEDY.
980d84335fSJung-uk Kim  *
990d84335fSJung-uk Kim  * 4.3. Licensee shall not export, either directly or indirectly, any of this
1000d84335fSJung-uk Kim  * software or system incorporating such software without first obtaining any
1010d84335fSJung-uk Kim  * required license or other approval from the U. S. Department of Commerce or
1020d84335fSJung-uk Kim  * any other agency or department of the United States Government. In the
1030d84335fSJung-uk Kim  * event Licensee exports any such software from the United States or
1040d84335fSJung-uk Kim  * re-exports any such software from a foreign destination, Licensee shall
1050d84335fSJung-uk Kim  * ensure that the distribution and export/re-export of the software is in
1060d84335fSJung-uk Kim  * compliance with all laws, regulations, orders, or other restrictions of the
1070d84335fSJung-uk Kim  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1080d84335fSJung-uk Kim  * any of its subsidiaries will export/re-export any technical data, process,
1090d84335fSJung-uk Kim  * software, or service, directly or indirectly, to any country for which the
1100d84335fSJung-uk Kim  * United States government or any agency thereof requires an export license,
1110d84335fSJung-uk Kim  * other governmental approval, or letter of assurance, without first obtaining
1120d84335fSJung-uk Kim  * such license, approval or letter.
1130d84335fSJung-uk Kim  *
1140d84335fSJung-uk Kim  *****************************************************************************
1150d84335fSJung-uk Kim  *
1160d84335fSJung-uk Kim  * Alternatively, you may choose to be licensed under the terms of the
1170d84335fSJung-uk Kim  * following license:
1180d84335fSJung-uk Kim  *
119d244b227SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
120d244b227SJung-uk Kim  * modification, are permitted provided that the following conditions
121d244b227SJung-uk Kim  * are met:
122d244b227SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
123d244b227SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
124d244b227SJung-uk Kim  *    without modification.
125d244b227SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
126d244b227SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
127d244b227SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
128d244b227SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
129d244b227SJung-uk Kim  *    binary redistribution.
130d244b227SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
131d244b227SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
132d244b227SJung-uk Kim  *    from this software without specific prior written permission.
1331a39cfb0SJung-uk Kim  *
1340d84335fSJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1350d84335fSJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1360d84335fSJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1370d84335fSJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1380d84335fSJung-uk Kim  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1390d84335fSJung-uk Kim  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1400d84335fSJung-uk Kim  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1410d84335fSJung-uk Kim  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1420d84335fSJung-uk Kim  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1430d84335fSJung-uk Kim  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1440d84335fSJung-uk Kim  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1450d84335fSJung-uk Kim  *
1460d84335fSJung-uk Kim  * Alternatively, you may choose to be licensed under the terms of the
147d244b227SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
148d244b227SJung-uk Kim  * Software Foundation.
1491a39cfb0SJung-uk Kim  *
1500d84335fSJung-uk Kim  *****************************************************************************/
1511a39cfb0SJung-uk Kim 
152ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acpi.h>
153ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/accommon.h>
154ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acdisasm.h>
155ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/actables.h>
156a88e22b7SJung-uk Kim #include <contrib/dev/acpica/compiler/aslcompiler.h>
1571a39cfb0SJung-uk Kim 
1581a39cfb0SJung-uk Kim /* This module used for application-level code only */
1591a39cfb0SJung-uk Kim 
1601a39cfb0SJung-uk Kim #define _COMPONENT          ACPI_CA_DISASSEMBLER
1611a39cfb0SJung-uk Kim         ACPI_MODULE_NAME    ("dmtable")
1621a39cfb0SJung-uk Kim 
163a371a5fdSJung-uk Kim const AH_TABLE *
164a371a5fdSJung-uk Kim AcpiAhGetTableInfo (
165a371a5fdSJung-uk Kim     char                    *Signature);
166a371a5fdSJung-uk Kim 
167a371a5fdSJung-uk Kim 
168d052a1ccSJung-uk Kim /* Common format strings for commented values */
169d052a1ccSJung-uk Kim 
170d052a1ccSJung-uk Kim #define UINT8_FORMAT            "%2.2X [%s]\n"
171ab71bbb7SJung-uk Kim #define UINT8_FORMAT_NO_NEWLINE "%2.2X [%s]"
172d052a1ccSJung-uk Kim #define UINT16_FORMAT           "%4.4X [%s]\n"
173d052a1ccSJung-uk Kim #define UINT32_FORMAT           "%8.8X [%s]\n"
174d052a1ccSJung-uk Kim #define STRING_FORMAT           "[%s]\n"
175d052a1ccSJung-uk Kim 
1761a39cfb0SJung-uk Kim /* These tables map a subtable type to a description string */
1771a39cfb0SJung-uk Kim 
17897c0b5abSJung-uk Kim static const char           *AcpiDmAestResourceNames[] =
17997c0b5abSJung-uk Kim {
18097c0b5abSJung-uk Kim     "Cache Resource",
18197c0b5abSJung-uk Kim     "TLB Resource",
18297c0b5abSJung-uk Kim     "Generic Resource",
18397c0b5abSJung-uk Kim     "Unknown Resource Type"         /* Reserved */
18497c0b5abSJung-uk Kim };
18597c0b5abSJung-uk Kim 
18697c0b5abSJung-uk Kim static const char           *AcpiDmAestSubnames[] =
18797c0b5abSJung-uk Kim {
18897c0b5abSJung-uk Kim     "Processor Error Node",
18997c0b5abSJung-uk Kim     "Memory Error Node",
19097c0b5abSJung-uk Kim     "SMMU Error Node",
19197c0b5abSJung-uk Kim     "Vendor-defined Error Node",
19297c0b5abSJung-uk Kim     "GIC Error Node",
193*92f570c3SJung-uk Kim     "PCIE Error Node",
194*92f570c3SJung-uk Kim     "PROXY Error Node",
19597c0b5abSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
19697c0b5abSJung-uk Kim };
19797c0b5abSJung-uk Kim 
19897c0b5abSJung-uk Kim static const char           *AcpiDmAestCacheNames[] =
19997c0b5abSJung-uk Kim {
20097c0b5abSJung-uk Kim     "Data Cache",
20197c0b5abSJung-uk Kim     "Instruction Cache",
20297c0b5abSJung-uk Kim     "Unified Cache",
20397c0b5abSJung-uk Kim     "Unknown Cache Type"            /* Reserved */
20497c0b5abSJung-uk Kim };
20597c0b5abSJung-uk Kim 
20697c0b5abSJung-uk Kim static const char           *AcpiDmAestGicNames[] =
20797c0b5abSJung-uk Kim {
20897c0b5abSJung-uk Kim     "GIC CPU",
20997c0b5abSJung-uk Kim     "GIC Distributor",
21097c0b5abSJung-uk Kim     "GIC Redistributor",
21197c0b5abSJung-uk Kim     "GIC ITS",
21297c0b5abSJung-uk Kim     "Unknown GIC Interface Type"    /* Reserved */
21397c0b5abSJung-uk Kim };
21497c0b5abSJung-uk Kim 
21597c0b5abSJung-uk Kim static const char           *AcpiDmAestXfaceNames[] =
21697c0b5abSJung-uk Kim {
21797c0b5abSJung-uk Kim     "System Register Interface",
21897c0b5abSJung-uk Kim     "Memory Mapped Interface",
219*92f570c3SJung-uk Kim     "Single Record Memory Mapped Interface",
22097c0b5abSJung-uk Kim     "Unknown Interface Type"        /* Reserved */
22197c0b5abSJung-uk Kim };
22297c0b5abSJung-uk Kim 
22397c0b5abSJung-uk Kim static const char           *AcpiDmAestXruptNames[] =
22497c0b5abSJung-uk Kim {
22597c0b5abSJung-uk Kim     "Fault Handling Interrupt",
22697c0b5abSJung-uk Kim     "Error Recovery Interrupt",
22797c0b5abSJung-uk Kim     "Unknown Interrupt Type"        /* Reserved */
22897c0b5abSJung-uk Kim };
22997c0b5abSJung-uk Kim 
230a9f12690SJung-uk Kim static const char           *AcpiDmAsfSubnames[] =
231a9f12690SJung-uk Kim {
232a9f12690SJung-uk Kim     "ASF Information",
233a9f12690SJung-uk Kim     "ASF Alerts",
234a9f12690SJung-uk Kim     "ASF Remote Control",
235a9f12690SJung-uk Kim     "ASF RMCP Boot Options",
236a9f12690SJung-uk Kim     "ASF Address",
237a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
238a9f12690SJung-uk Kim };
239a9f12690SJung-uk Kim 
240722b1667SJung-uk Kim static const char           *AcpiDmAsptSubnames[] =
241722b1667SJung-uk Kim {
242722b1667SJung-uk Kim     "ASPT Global Registers",
243722b1667SJung-uk Kim     "ASPT SEV Mailbox Registers",
244722b1667SJung-uk Kim     "ASPT ACPI Mailbox Registers",
245722b1667SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
246722b1667SJung-uk Kim };
247722b1667SJung-uk Kim 
2489a4bc520SJung-uk Kim static const char           *AcpiDmCdatSubnames[] =
2499a4bc520SJung-uk Kim {
2509a4bc520SJung-uk Kim     "Device Scoped Memory Affinity Structure (DSMAS)",
2519a4bc520SJung-uk Kim     "Device scoped Latency and Bandwidth Information Structure (DSLBIS)",
2529a4bc520SJung-uk Kim     "Device Scoped Memory Side Cache Information Structure (DSMSCIS)",
2539a4bc520SJung-uk Kim     "Device Scoped Initiator Structure (DSIS)",
2549a4bc520SJung-uk Kim     "Device Scoped EFI Memory Type Structure (DSEMTS)",
2559a4bc520SJung-uk Kim     "Switch Scoped Latency and Bandwidth Information Structure (SSLBIS)",
2569a4bc520SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
2579a4bc520SJung-uk Kim };
2589a4bc520SJung-uk Kim 
259cfd1ed46SJung-uk Kim static const char           *AcpiDmCedtSubnames[] =
260cfd1ed46SJung-uk Kim {
261cfd1ed46SJung-uk Kim     "CXL Host Bridge Structure",
2621970d693SJung-uk Kim     "CXL Fixed Memory Window Structure",
263*92f570c3SJung-uk Kim     "CXL XOR Interleave Math Structure",
264cfd1ed46SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
265cfd1ed46SJung-uk Kim };
266cfd1ed46SJung-uk Kim 
2671a39cfb0SJung-uk Kim static const char           *AcpiDmDmarSubnames[] =
2681a39cfb0SJung-uk Kim {
2691a39cfb0SJung-uk Kim     "Hardware Unit Definition",
2701a39cfb0SJung-uk Kim     "Reserved Memory Region",
271a9f12690SJung-uk Kim     "Root Port ATS Capability",
272d6dd1baeSJung-uk Kim     "Remapping Hardware Static Affinity",
273313a0c13SJung-uk Kim     "ACPI Namespace Device Declaration",
274ab71bbb7SJung-uk Kim     "SoC Integrated Address Translation Cache",
275a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
2761a39cfb0SJung-uk Kim };
2771a39cfb0SJung-uk Kim 
278313a0c13SJung-uk Kim static const char           *AcpiDmDmarScope[] =
279313a0c13SJung-uk Kim {
280313a0c13SJung-uk Kim     "Reserved value",
281313a0c13SJung-uk Kim     "PCI Endpoint Device",
282313a0c13SJung-uk Kim     "PCI Bridge Device",
283313a0c13SJung-uk Kim     "IOAPIC Device",
284313a0c13SJung-uk Kim     "Message-capable HPET Device",
285313a0c13SJung-uk Kim     "Namespace Device",
286313a0c13SJung-uk Kim     "Unknown Scope Type"            /* Reserved */
287313a0c13SJung-uk Kim };
288313a0c13SJung-uk Kim 
289a88e22b7SJung-uk Kim static const char           *AcpiDmEinjActions[] =
290a88e22b7SJung-uk Kim {
291a88e22b7SJung-uk Kim     "Begin Operation",
292a88e22b7SJung-uk Kim     "Get Trigger Table",
293a88e22b7SJung-uk Kim     "Set Error Type",
294a88e22b7SJung-uk Kim     "Get Error Type",
295a88e22b7SJung-uk Kim     "End Operation",
296a88e22b7SJung-uk Kim     "Execute Operation",
297a88e22b7SJung-uk Kim     "Check Busy Status",
298a88e22b7SJung-uk Kim     "Get Command Status",
2998d744e47SJung-uk Kim     "Set Error Type With Address",
300f8146b88SJung-uk Kim     "Get Execute Timings",
301a88e22b7SJung-uk Kim     "Unknown Action"
302a88e22b7SJung-uk Kim };
303a88e22b7SJung-uk Kim 
304a88e22b7SJung-uk Kim static const char           *AcpiDmEinjInstructions[] =
305a88e22b7SJung-uk Kim {
306a88e22b7SJung-uk Kim     "Read Register",
307a88e22b7SJung-uk Kim     "Read Register Value",
308a88e22b7SJung-uk Kim     "Write Register",
309a88e22b7SJung-uk Kim     "Write Register Value",
310a88e22b7SJung-uk Kim     "Noop",
3118d744e47SJung-uk Kim     "Flush Cacheline",
312a88e22b7SJung-uk Kim     "Unknown Instruction"
313a88e22b7SJung-uk Kim };
314a88e22b7SJung-uk Kim 
315a88e22b7SJung-uk Kim static const char           *AcpiDmErstActions[] =
316a88e22b7SJung-uk Kim {
317a88e22b7SJung-uk Kim     "Begin Write Operation",
318a88e22b7SJung-uk Kim     "Begin Read Operation",
319a88e22b7SJung-uk Kim     "Begin Clear Operation",
320a88e22b7SJung-uk Kim     "End Operation",
321a88e22b7SJung-uk Kim     "Set Record Offset",
322a88e22b7SJung-uk Kim     "Execute Operation",
323a88e22b7SJung-uk Kim     "Check Busy Status",
324a88e22b7SJung-uk Kim     "Get Command Status",
325a88e22b7SJung-uk Kim     "Get Record Identifier",
326a88e22b7SJung-uk Kim     "Set Record Identifier",
327a88e22b7SJung-uk Kim     "Get Record Count",
328a88e22b7SJung-uk Kim     "Begin Dummy Write",
329a88e22b7SJung-uk Kim     "Unused/Unknown Action",
330a88e22b7SJung-uk Kim     "Get Error Address Range",
331a88e22b7SJung-uk Kim     "Get Error Address Length",
332a88e22b7SJung-uk Kim     "Get Error Attributes",
333f8146b88SJung-uk Kim     "Execute Timings",
334a88e22b7SJung-uk Kim     "Unknown Action"
335a88e22b7SJung-uk Kim };
336a88e22b7SJung-uk Kim 
337a88e22b7SJung-uk Kim static const char           *AcpiDmErstInstructions[] =
338a88e22b7SJung-uk Kim {
339a88e22b7SJung-uk Kim     "Read Register",
340a88e22b7SJung-uk Kim     "Read Register Value",
341a88e22b7SJung-uk Kim     "Write Register",
342a88e22b7SJung-uk Kim     "Write Register Value",
343a88e22b7SJung-uk Kim     "Noop",
344a88e22b7SJung-uk Kim     "Load Var1",
345a88e22b7SJung-uk Kim     "Load Var2",
346a88e22b7SJung-uk Kim     "Store Var1",
347a88e22b7SJung-uk Kim     "Add",
348a88e22b7SJung-uk Kim     "Subtract",
349a88e22b7SJung-uk Kim     "Add Value",
350a88e22b7SJung-uk Kim     "Subtract Value",
351a88e22b7SJung-uk Kim     "Stall",
352a88e22b7SJung-uk Kim     "Stall While True",
353a88e22b7SJung-uk Kim     "Skip Next If True",
354a88e22b7SJung-uk Kim     "GoTo",
355a88e22b7SJung-uk Kim     "Set Source Address",
356a88e22b7SJung-uk Kim     "Set Destination Address",
357a88e22b7SJung-uk Kim     "Move Data",
358a88e22b7SJung-uk Kim     "Unknown Instruction"
359a88e22b7SJung-uk Kim };
360a88e22b7SJung-uk Kim 
361313a0c13SJung-uk Kim static const char           *AcpiDmGtdtSubnames[] =
362313a0c13SJung-uk Kim {
363313a0c13SJung-uk Kim     "Generic Timer Block",
364313a0c13SJung-uk Kim     "Generic Watchdog Timer",
365a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
366313a0c13SJung-uk Kim };
367313a0c13SJung-uk Kim 
368a9f12690SJung-uk Kim static const char           *AcpiDmHestSubnames[] =
369a9f12690SJung-uk Kim {
370d6dd1baeSJung-uk Kim     "IA-32 Machine Check Exception",
371d6dd1baeSJung-uk Kim     "IA-32 Corrected Machine Check",
372d6dd1baeSJung-uk Kim     "IA-32 Non-Maskable Interrupt",
37367d9aa44SJung-uk Kim     "Unknown Subtable Type",        /* 3 - Reserved */
37467d9aa44SJung-uk Kim     "Unknown Subtable Type",        /* 4 - Reserved */
37567d9aa44SJung-uk Kim     "Unknown Subtable Type",        /* 5 - Reserved */
376a9f12690SJung-uk Kim     "PCI Express Root Port AER",
377a9f12690SJung-uk Kim     "PCI Express AER (AER Endpoint)",
378a9f12690SJung-uk Kim     "PCI Express/PCI-X Bridge AER",
379a9f12690SJung-uk Kim     "Generic Hardware Error Source",
380f8146b88SJung-uk Kim     "Generic Hardware Error Source V2",
381af051161SJung-uk Kim     "IA-32 Deferred Machine Check",
382a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
383a9f12690SJung-uk Kim };
384a9f12690SJung-uk Kim 
385a9f12690SJung-uk Kim static const char           *AcpiDmHestNotifySubnames[] =
386a9f12690SJung-uk Kim {
387a9f12690SJung-uk Kim     "Polled",
388a9f12690SJung-uk Kim     "External Interrupt",
389a9f12690SJung-uk Kim     "Local Interrupt",
390a9f12690SJung-uk Kim     "SCI",
391a9f12690SJung-uk Kim     "NMI",
3928d744e47SJung-uk Kim     "CMCI",                         /* ACPI 5.0 */
3938d744e47SJung-uk Kim     "MCE",                          /* ACPI 5.0 */
394f8146b88SJung-uk Kim     "GPIO",                         /* ACPI 6.0 */
395f8146b88SJung-uk Kim     "SEA",                          /* ACPI 6.1 */
396f8146b88SJung-uk Kim     "SEI",                          /* ACPI 6.1 */
397f8146b88SJung-uk Kim     "GSIV",                         /* ACPI 6.1 */
398af051161SJung-uk Kim     "Software Delegated Exception", /* ACPI 6.2 */
399a9f12690SJung-uk Kim     "Unknown Notify Type"           /* Reserved */
400a9f12690SJung-uk Kim };
401a9f12690SJung-uk Kim 
402af051161SJung-uk Kim static const char           *AcpiDmHmatSubnames[] =
403af051161SJung-uk Kim {
404cd6518c7SJung-uk Kim     "Memory Proximity Domain Attributes",
405af051161SJung-uk Kim     "System Locality Latency and Bandwidth Information",
406af051161SJung-uk Kim     "Memory Side Cache Information",
407af051161SJung-uk Kim     "Unknown Structure Type"         /* Reserved */
408af051161SJung-uk Kim };
409af051161SJung-uk Kim 
4101a39cfb0SJung-uk Kim static const char           *AcpiDmMadtSubnames[] =
4111a39cfb0SJung-uk Kim {
4121a39cfb0SJung-uk Kim     "Processor Local APIC",             /* ACPI_MADT_TYPE_LOCAL_APIC */
4131a39cfb0SJung-uk Kim     "I/O APIC",                         /* ACPI_MADT_TYPE_IO_APIC */
4141a39cfb0SJung-uk Kim     "Interrupt Source Override",        /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */
4151a39cfb0SJung-uk Kim     "NMI Source",                       /* ACPI_MADT_TYPE_NMI_SOURCE */
4161a39cfb0SJung-uk Kim     "Local APIC NMI",                   /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */
4171a39cfb0SJung-uk Kim     "Local APIC Address Override",      /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */
4181a39cfb0SJung-uk Kim     "I/O SAPIC",                        /* ACPI_MADT_TYPE_IO_SAPIC */
4191a39cfb0SJung-uk Kim     "Local SAPIC",                      /* ACPI_MADT_TYPE_LOCAL_SAPIC */
4201a39cfb0SJung-uk Kim     "Platform Interrupt Sources",       /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */
421a9f12690SJung-uk Kim     "Processor Local x2APIC",           /* ACPI_MADT_TYPE_LOCAL_X2APIC */
422a9f12690SJung-uk Kim     "Local x2APIC NMI",                 /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */
4233f0275a0SJung-uk Kim     "Generic Interrupt Controller",     /* ACPI_MADT_GENERIC_INTERRUPT */
4243f0275a0SJung-uk Kim     "Generic Interrupt Distributor",    /* ACPI_MADT_GENERIC_DISTRIBUTOR */
425313a0c13SJung-uk Kim     "Generic MSI Frame",                /* ACPI_MADT_GENERIC_MSI_FRAME */
426313a0c13SJung-uk Kim     "Generic Interrupt Redistributor",  /* ACPI_MADT_GENERIC_REDISTRIBUTOR */
427a371a5fdSJung-uk Kim     "Generic Interrupt Translator",     /* ACPI_MADT_GENERIC_TRANSLATOR */
4281970d693SJung-uk Kim     "Mutiprocessor Wakeup",             /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */
4299a4bc520SJung-uk Kim     "CPU Core Interrupt Controller",    /* ACPI_MADT_TYPE_CORE_PIC */
4309a4bc520SJung-uk Kim     "Legacy I/O Interrupt Controller",  /* ACPI_MADT_TYPE_LIO_PIC */
4319a4bc520SJung-uk Kim     "HT Interrupt Controller",          /* ACPI_MADT_TYPE_HT_PIC */
4329a4bc520SJung-uk Kim     "Extend I/O Interrupt Controller",  /* ACPI_MADT_TYPE_EIO_PIC */
4339a4bc520SJung-uk Kim     "MSI Interrupt Controller",         /* ACPI_MADT_TYPE_MSI_PIC */
4349a4bc520SJung-uk Kim     "Bridge I/O Interrupt Controller",  /* ACPI_MADT_TYPE_BIO_PIC */
4359a4bc520SJung-uk Kim     "LPC Interrupt Controller",         /* ACPI_MADT_TYPE_LPC_PIC */
436722b1667SJung-uk Kim     "RISC-V Interrupt Controller",      /* ACPI_MADT_TYPE_RINTC */
43707c64d74SJung-uk Kim     "RISC-V Incoming MSI Controller",   /* ACPI_MADT_TYPE_IMSIC */
43807c64d74SJung-uk Kim     "RISC-V APLIC Controller",          /* ACPI_MADT_TYPE_APLIC */
43907c64d74SJung-uk Kim     "RISC-V PLIC Controller",           /* ACPI_MADT_TYPE_PLIC */
440ab71bbb7SJung-uk Kim     "Unknown Subtable Type",            /* Reserved */
441ab71bbb7SJung-uk Kim     "Types 80-FF are used for OEM data" /* Reserved for OEM data */
442a371a5fdSJung-uk Kim };
443a371a5fdSJung-uk Kim 
444722b1667SJung-uk Kim static const char           *AcpiDmMpamSubnames[] =
445722b1667SJung-uk Kim {
446722b1667SJung-uk Kim     "Processor cache",      /* ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE */
447722b1667SJung-uk Kim     "Memory",               /* ACPI_MPAM_LOCATION_TYPE_MEMORY */
448722b1667SJung-uk Kim     "SMMU",                 /* ACPI_MPAM_LOCATION_TYPE_SMMU */
449722b1667SJung-uk Kim     "Memory-side cache",    /* ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE */
450722b1667SJung-uk Kim     "ACPI device",          /* ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE */
451722b1667SJung-uk Kim     "Interconnect",         /* ACPI_MPAM_LOCATION_TYPE_INTERCONNECT */
452722b1667SJung-uk Kim     "Unknown"               /* ACPI_MPAM_LOCATION_TYPE_UNKNOWN */
453722b1667SJung-uk Kim };
454722b1667SJung-uk Kim 
455a371a5fdSJung-uk Kim static const char           *AcpiDmNfitSubnames[] =
456a371a5fdSJung-uk Kim {
457a371a5fdSJung-uk Kim     "System Physical Address Range",    /* ACPI_NFIT_TYPE_SYSTEM_ADDRESS */
458a371a5fdSJung-uk Kim     "Memory Range Map",                 /* ACPI_NFIT_TYPE_MEMORY_MAP */
459a371a5fdSJung-uk Kim     "Interleave Info",                  /* ACPI_NFIT_TYPE_INTERLEAVE */
460a371a5fdSJung-uk Kim     "SMBIOS Information",               /* ACPI_NFIT_TYPE_SMBIOS */
461a371a5fdSJung-uk Kim     "NVDIMM Control Region",            /* ACPI_NFIT_TYPE_CONTROL_REGION */
462a371a5fdSJung-uk Kim     "NVDIMM Block Data Window Region",  /* ACPI_NFIT_TYPE_DATA_REGION */
463a371a5fdSJung-uk Kim     "Flush Hint Address",               /* ACPI_NFIT_TYPE_FLUSH_ADDRESS */
464b7b7e711SJung-uk Kim     "Platform Capabilities",            /* ACPI_NFIT_TYPE_CAPABILITIES */
465a371a5fdSJung-uk Kim     "Unknown Subtable Type"             /* Reserved */
466313a0c13SJung-uk Kim };
467313a0c13SJung-uk Kim 
468313a0c13SJung-uk Kim static const char           *AcpiDmPcctSubnames[] =
469313a0c13SJung-uk Kim {
470313a0c13SJung-uk Kim     "Generic Communications Subspace",  /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */
471a371a5fdSJung-uk Kim     "HW-Reduced Comm Subspace",         /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE */
472f8146b88SJung-uk Kim     "HW-Reduced Comm Subspace Type2",   /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 */
473af051161SJung-uk Kim     "Extended PCC Master Subspace",     /* ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE */
474af051161SJung-uk Kim     "Extended PCC Slave Subspace",      /* ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE */
475cfd1ed46SJung-uk Kim     "HW Registers based Comm Subspace", /* ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE */
476cfd1ed46SJung-uk Kim     "Unknown Subtable Type"             /* Reserved */
477cfd1ed46SJung-uk Kim };
478cfd1ed46SJung-uk Kim 
479cfd1ed46SJung-uk Kim static const char           *AcpiDmPhatSubnames[] =
480cfd1ed46SJung-uk Kim {
481cfd1ed46SJung-uk Kim     "Firmware Version Data",        /* ACPI_PHAT_TYPE_FW_VERSION_DATA */
482cfd1ed46SJung-uk Kim     "Firmware Health Data",         /* ACPI_PHAT_TYPE_FW_HEALTH_DATA */
483a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
4843f0275a0SJung-uk Kim };
4853f0275a0SJung-uk Kim 
4863f0275a0SJung-uk Kim static const char           *AcpiDmPmttSubnames[] =
4873f0275a0SJung-uk Kim {
4883f0275a0SJung-uk Kim     "Socket",                       /* ACPI_PMTT_TYPE_SOCKET */
4893f0275a0SJung-uk Kim     "Memory Controller",            /* ACPI_PMTT_TYPE_CONTROLLER */
4903f0275a0SJung-uk Kim     "Physical Component (DIMM)",    /* ACPI_PMTT_TYPE_DIMM */
491cfd1ed46SJung-uk Kim     "Unknown Subtable Type",        /* Reserved */
492cfd1ed46SJung-uk Kim     "Vendor Specific"               /* ACPI_PMTT_TYPE_VENDOR */
4931a39cfb0SJung-uk Kim };
4941a39cfb0SJung-uk Kim 
495af051161SJung-uk Kim static const char           *AcpiDmPpttSubnames[] =
496af051161SJung-uk Kim {
497af051161SJung-uk Kim     "Processor Hierarchy Node",     /* ACPI_PPTT_TYPE_PROCESSOR */
498af051161SJung-uk Kim     "Cache Type",                   /* ACPI_PPTT_TYPE_CACHE */
49967d9aa44SJung-uk Kim     "ID",                           /* ACPI_PPTT_TYPE_ID */
50067d9aa44SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
50167d9aa44SJung-uk Kim };
50267d9aa44SJung-uk Kim 
5031970d693SJung-uk Kim static const char           *AcpiDmRgrtSubnames[] =
5041970d693SJung-uk Kim {
5051970d693SJung-uk Kim     "Unknown/Reserved Image Type",  /* ACPI_RGRT_TYPE_RESERVED0 */
5061970d693SJung-uk Kim     "Type PNG"                      /* ACPI_RGRT_IMAGE_TYPE_PNG */
5071970d693SJung-uk Kim };
5081970d693SJung-uk Kim 
50967d9aa44SJung-uk Kim static const char           *AcpiDmSdevSubnames[] =
51067d9aa44SJung-uk Kim {
51167d9aa44SJung-uk Kim     "Namespace Device",             /* ACPI_SDEV_TYPE_NAMESPACE_DEVICE */
51267d9aa44SJung-uk Kim     "PCIe Endpoint Device",         /* ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE */
513af051161SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
514af051161SJung-uk Kim };
515af051161SJung-uk Kim 
5161a39cfb0SJung-uk Kim static const char           *AcpiDmSratSubnames[] =
5171a39cfb0SJung-uk Kim {
5181a39cfb0SJung-uk Kim     "Processor Local APIC/SAPIC Affinity",
5191a39cfb0SJung-uk Kim     "Memory Affinity",
520a9f12690SJung-uk Kim     "Processor Local x2APIC Affinity",
521313a0c13SJung-uk Kim     "GICC Affinity",
522af051161SJung-uk Kim     "GIC ITS Affinity",             /* Acpi 6.2 */
523cd6518c7SJung-uk Kim     "Generic Initiator Affinity",   /* Acpi 6.3 */
5241b7a2680SJung-uk Kim     "Generic Port Affinity",        /* Acpi 6.4 */
525804fe266SJung-uk Kim     "RINTC Affinity",               /* Acpi 6.6 */
526a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
5271a39cfb0SJung-uk Kim };
5281a39cfb0SJung-uk Kim 
52967d9aa44SJung-uk Kim static const char           *AcpiDmTpm2Subnames[] =
53067d9aa44SJung-uk Kim {
53167d9aa44SJung-uk Kim     "Illegal Start Method value",
53267d9aa44SJung-uk Kim     "Reserved",
53367d9aa44SJung-uk Kim     "ACPI Start Method",
53467d9aa44SJung-uk Kim     "Reserved",
53567d9aa44SJung-uk Kim     "Reserved",
53667d9aa44SJung-uk Kim     "Reserved",
53767d9aa44SJung-uk Kim     "Memory Mapped I/O",
53867d9aa44SJung-uk Kim     "Command Response Buffer",
53967d9aa44SJung-uk Kim     "Command Response Buffer with ACPI Start Method",
54067d9aa44SJung-uk Kim     "Reserved",
54167d9aa44SJung-uk Kim     "Reserved",
54267d9aa44SJung-uk Kim     "Command Response Buffer with ARM SMC",
54367d9aa44SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
54467d9aa44SJung-uk Kim };
54567d9aa44SJung-uk Kim 
546d6dd1baeSJung-uk Kim static const char           *AcpiDmIvrsSubnames[] =
547d6dd1baeSJung-uk Kim {
5481970d693SJung-uk Kim     "Hardware Definition Block (IVHD)",
5491970d693SJung-uk Kim     "Hardware Definition Block - Mixed Format (IVHD)",
5501970d693SJung-uk Kim     "Memory Definition Block (IVMD)",
5511970d693SJung-uk Kim     "Unknown/Reserved Subtable Type"            /* Reserved */
5521970d693SJung-uk Kim };
5531970d693SJung-uk Kim 
5541970d693SJung-uk Kim static const char           *AcpiDmIvrsDevEntryNames[] =
5551970d693SJung-uk Kim {
5561970d693SJung-uk Kim     "Unknown/Reserved Device Entry Type",       /* 0- Reserved */
5571970d693SJung-uk Kim     "Device Entry: Select All Devices",         /* 1 */
5581970d693SJung-uk Kim     "Device Entry: Select One Device",          /* 2 */
5591970d693SJung-uk Kim     "Device Entry: Start of Range",             /* 3 */
5601970d693SJung-uk Kim     "Device Entry: End of Range",               /* 4 */
5611970d693SJung-uk Kim     "Device Entry: Alias Select",               /* 66 */
5621970d693SJung-uk Kim     "Device Entry: Alias Start of Range",       /* 67 */
5631970d693SJung-uk Kim     "Unknown/Reserved Device Entry Type",       /* 68- Reserved */
5641970d693SJung-uk Kim     "Unknown/Reserved Device Entry Type",       /* 69- Reserved */
5651970d693SJung-uk Kim     "Device Entry: Extended Select",            /* 70 */
5661970d693SJung-uk Kim     "Device Entry: Extended Start of Range",    /* 71 */
5671970d693SJung-uk Kim     "Device Entry: Special Device",             /* 72 */
5681970d693SJung-uk Kim     "Device Entry: ACPI HID Named Device",      /* 240 */
5691970d693SJung-uk Kim     "Unknown/Reserved Device Entry Type"        /* Reserved */
570d6dd1baeSJung-uk Kim };
571d6dd1baeSJung-uk Kim 
572313a0c13SJung-uk Kim static const char           *AcpiDmLpitSubnames[] =
573313a0c13SJung-uk Kim {
574313a0c13SJung-uk Kim     "Native C-state Idle Structure",
575a371a5fdSJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
576313a0c13SJung-uk Kim };
577d6dd1baeSJung-uk Kim 
578cfd1ed46SJung-uk Kim static const char           *AcpiDmViotSubnames[] =
579cfd1ed46SJung-uk Kim {
580cfd1ed46SJung-uk Kim     "Unknown Subtable Type",        /* 0 -Reserved */
581cfd1ed46SJung-uk Kim     "PCI Range",
582cfd1ed46SJung-uk Kim     "MMIO Endpoint",
583cfd1ed46SJung-uk Kim     "VirtIO-PCI IOMMU",
584cfd1ed46SJung-uk Kim     "VirtIO-MMIO IOMMU",
585cfd1ed46SJung-uk Kim     "Unknown Subtable Type"         /* Reserved */
586cfd1ed46SJung-uk Kim };
587cfd1ed46SJung-uk Kim 
588ec3fc72fSJung-uk Kim #define ACPI_FADT_PM_RESERVED       9
589a9f12690SJung-uk Kim 
590a9f12690SJung-uk Kim static const char           *AcpiDmFadtProfiles[] =
591a9f12690SJung-uk Kim {
592a9f12690SJung-uk Kim     "Unspecified",
593a9f12690SJung-uk Kim     "Desktop",
594a9f12690SJung-uk Kim     "Mobile",
595a9f12690SJung-uk Kim     "Workstation",
596a9f12690SJung-uk Kim     "Enterprise Server",
597a9f12690SJung-uk Kim     "SOHO Server",
598a9f12690SJung-uk Kim     "Appliance PC",
599a9f12690SJung-uk Kim     "Performance Server",
600ec3fc72fSJung-uk Kim     "Tablet",
601a9f12690SJung-uk Kim     "Unknown Profile Type"
602a9f12690SJung-uk Kim };
603a9f12690SJung-uk Kim 
6045a77b11bSJung-uk Kim #define ACPI_GAS_WIDTH_RESERVED     5
6055a77b11bSJung-uk Kim 
6065a77b11bSJung-uk Kim static const char           *AcpiDmGasAccessWidth[] =
6075a77b11bSJung-uk Kim {
6085a77b11bSJung-uk Kim     "Undefined/Legacy",
6095a77b11bSJung-uk Kim     "Byte Access:8",
6105a77b11bSJung-uk Kim     "Word Access:16",
6115a77b11bSJung-uk Kim     "DWord Access:32",
6125a77b11bSJung-uk Kim     "QWord Access:64",
6135a77b11bSJung-uk Kim     "Unknown Width Encoding"
6145a77b11bSJung-uk Kim };
6155a77b11bSJung-uk Kim 
61607c64d74SJung-uk Kim static const char           *AcpiDmRhctSubnames[] =
61707c64d74SJung-uk Kim {
61807c64d74SJung-uk Kim     "RISC-V ISA string structure",  /* ACPI_RHCT_ISA_STRING */
61907c64d74SJung-uk Kim     "RISC-V CMO node structure",    /* ACPI_RHCT_CMO_NODE */
62007c64d74SJung-uk Kim     "RISC-V MMU node structure",    /* ACPI_RHCT_MMU_NODE */
62107c64d74SJung-uk Kim     "RISC-V Hart Info structure",   /* ACPI_RHCT_HART_INFO */
62207c64d74SJung-uk Kim };
62307c64d74SJung-uk Kim 
6245a77b11bSJung-uk Kim 
6251a39cfb0SJung-uk Kim /*******************************************************************************
6261a39cfb0SJung-uk Kim  *
6271a39cfb0SJung-uk Kim  * ACPI Table Data, indexed by signature.
6281a39cfb0SJung-uk Kim  *
629a88e22b7SJung-uk Kim  * Each entry contains: Signature, Table Info, Handler, DtHandler,
630a88e22b7SJung-uk Kim  *  Template, Description
631d6dd1baeSJung-uk Kim  *
632a88e22b7SJung-uk Kim  * Simple tables have only a TableInfo structure, complex tables have a
633a88e22b7SJung-uk Kim  * handler. This table must be NULL terminated. RSDP and FACS are
634a88e22b7SJung-uk Kim  * special-cased elsewhere.
6351a39cfb0SJung-uk Kim  *
636cfd1ed46SJung-uk Kim  * Note: Any tables added here should be duplicated within
637cfd1ed46SJung-uk Kim  * AcpiGbl_SupportedTables in the file common/ahtable.c
638a371a5fdSJung-uk Kim  *
6391a39cfb0SJung-uk Kim  ******************************************************************************/
6401a39cfb0SJung-uk Kim 
641a371a5fdSJung-uk Kim const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
6421a39cfb0SJung-uk Kim {
64397c0b5abSJung-uk Kim     {ACPI_SIG_AEST, NULL,                   AcpiDmDumpAest, DtCompileAest,  TemplateAest},
644ab71bbb7SJung-uk Kim     {ACPI_SIG_AGDI, AcpiDmTableInfoAgdi,    NULL,           NULL,           TemplateAgdi},
645ab71bbb7SJung-uk Kim     {ACPI_SIG_APMT, NULL,                   AcpiDmDumpApmt, DtCompileApmt,  TemplateApmt},
646a371a5fdSJung-uk Kim     {ACPI_SIG_ASF,  NULL,                   AcpiDmDumpAsf,  DtCompileAsf,   TemplateAsf},
647722b1667SJung-uk Kim     {ACPI_SIG_ASPT, NULL,                   AcpiDmDumpAspt, DtCompileAspt,  TemplateAspt},
6481970d693SJung-uk Kim     {ACPI_SIG_BDAT, AcpiDmTableInfoBdat,    NULL,           NULL,           TemplateBdat},
649a371a5fdSJung-uk Kim     {ACPI_SIG_BERT, AcpiDmTableInfoBert,    NULL,           NULL,           TemplateBert},
650a371a5fdSJung-uk Kim     {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt,    NULL,           NULL,           TemplateBgrt},
651a371a5fdSJung-uk Kim     {ACPI_SIG_BOOT, AcpiDmTableInfoBoot,    NULL,           NULL,           TemplateBoot},
6529a4bc520SJung-uk Kim     {ACPI_SIG_CCEL, AcpiDmTableInfoCcel,    NULL,           NULL,           TemplateCcel},
6539a4bc520SJung-uk Kim     {ACPI_SIG_CDAT, NULL,                   AcpiDmDumpCdat, NULL,           TemplateCdat},
654cfd1ed46SJung-uk Kim     {ACPI_SIG_CEDT, NULL,                   AcpiDmDumpCedt, DtCompileCedt,  TemplateCedt},
655a371a5fdSJung-uk Kim     {ACPI_SIG_CPEP, NULL,                   AcpiDmDumpCpep, DtCompileCpep,  TemplateCpep},
656a371a5fdSJung-uk Kim     {ACPI_SIG_CSRT, NULL,                   AcpiDmDumpCsrt, DtCompileCsrt,  TemplateCsrt},
657a371a5fdSJung-uk Kim     {ACPI_SIG_DBG2, AcpiDmTableInfoDbg2,    AcpiDmDumpDbg2, DtCompileDbg2,  TemplateDbg2},
658a371a5fdSJung-uk Kim     {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp,    NULL,           NULL,           TemplateDbgp},
659a371a5fdSJung-uk Kim     {ACPI_SIG_DMAR, NULL,                   AcpiDmDumpDmar, DtCompileDmar,  TemplateDmar},
660a371a5fdSJung-uk Kim     {ACPI_SIG_DRTM, NULL,                   AcpiDmDumpDrtm, DtCompileDrtm,  TemplateDrtm},
661a371a5fdSJung-uk Kim     {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt,    NULL,           NULL,           TemplateEcdt},
662a371a5fdSJung-uk Kim     {ACPI_SIG_EINJ, NULL,                   AcpiDmDumpEinj, DtCompileEinj,  TemplateEinj},
663a371a5fdSJung-uk Kim     {ACPI_SIG_ERST, NULL,                   AcpiDmDumpErst, DtCompileErst,  TemplateErst},
664a371a5fdSJung-uk Kim     {ACPI_SIG_FADT, NULL,                   AcpiDmDumpFadt, DtCompileFadt,  TemplateFadt},
665a371a5fdSJung-uk Kim     {ACPI_SIG_FPDT, NULL,                   AcpiDmDumpFpdt, DtCompileFpdt,  TemplateFpdt},
666a371a5fdSJung-uk Kim     {ACPI_SIG_GTDT, NULL,                   AcpiDmDumpGtdt, DtCompileGtdt,  TemplateGtdt},
667a371a5fdSJung-uk Kim     {ACPI_SIG_HEST, NULL,                   AcpiDmDumpHest, DtCompileHest,  TemplateHest},
668af051161SJung-uk Kim     {ACPI_SIG_HMAT, NULL,                   AcpiDmDumpHmat, DtCompileHmat,  TemplateHmat},
669a371a5fdSJung-uk Kim     {ACPI_SIG_HPET, AcpiDmTableInfoHpet,    NULL,           NULL,           TemplateHpet},
670a371a5fdSJung-uk Kim     {ACPI_SIG_IORT, NULL,                   AcpiDmDumpIort, DtCompileIort,  TemplateIort},
671a371a5fdSJung-uk Kim     {ACPI_SIG_IVRS, NULL,                   AcpiDmDumpIvrs, DtCompileIvrs,  TemplateIvrs},
672a371a5fdSJung-uk Kim     {ACPI_SIG_LPIT, NULL,                   AcpiDmDumpLpit, DtCompileLpit,  TemplateLpit},
673a371a5fdSJung-uk Kim     {ACPI_SIG_MADT, NULL,                   AcpiDmDumpMadt, DtCompileMadt,  TemplateMadt},
674a371a5fdSJung-uk Kim     {ACPI_SIG_MCFG, NULL,                   AcpiDmDumpMcfg, DtCompileMcfg,  TemplateMcfg},
675a371a5fdSJung-uk Kim     {ACPI_SIG_MCHI, AcpiDmTableInfoMchi,    NULL,           NULL,           TemplateMchi},
676722b1667SJung-uk Kim     {ACPI_SIG_MPAM, NULL,                   AcpiDmDumpMpam, DtCompileMpam,  TemplateMpam},
677a371a5fdSJung-uk Kim     {ACPI_SIG_MPST, AcpiDmTableInfoMpst,    AcpiDmDumpMpst, DtCompileMpst,  TemplateMpst},
678a371a5fdSJung-uk Kim     {ACPI_SIG_MSCT, NULL,                   AcpiDmDumpMsct, DtCompileMsct,  TemplateMsct},
679a371a5fdSJung-uk Kim     {ACPI_SIG_MSDM, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  TemplateMsdm},
680a371a5fdSJung-uk Kim     {ACPI_SIG_NFIT, AcpiDmTableInfoNfit,    AcpiDmDumpNfit, DtCompileNfit,  TemplateNfit},
681804fe266SJung-uk Kim     {ACPI_SIG_NHLT, NULL,                   NULL,           NULL,           NULL},
682a371a5fdSJung-uk Kim     {ACPI_SIG_PCCT, AcpiDmTableInfoPcct,    AcpiDmDumpPcct, DtCompilePcct,  TemplatePcct},
68367d9aa44SJung-uk Kim     {ACPI_SIG_PDTT, AcpiDmTableInfoPdtt,    AcpiDmDumpPdtt, DtCompilePdtt,  TemplatePdtt},
684cfd1ed46SJung-uk Kim     {ACPI_SIG_PHAT, NULL,                   AcpiDmDumpPhat, DtCompilePhat,  TemplatePhat},
685a371a5fdSJung-uk Kim     {ACPI_SIG_PMTT, NULL,                   AcpiDmDumpPmtt, DtCompilePmtt,  TemplatePmtt},
686af051161SJung-uk Kim     {ACPI_SIG_PPTT, NULL,                   AcpiDmDumpPptt, DtCompilePptt,  TemplatePptt},
6871970d693SJung-uk Kim     {ACPI_SIG_PRMT, NULL,                   AcpiDmDumpPrmt, DtCompilePrmt,  TemplatePrmt},
688493deb39SJung-uk Kim     {ACPI_SIG_RASF, AcpiDmTableInfoRasf,    NULL,           NULL,           TemplateRasf},
689804fe266SJung-uk Kim     {ACPI_SIG_RAS2, AcpiDmTableInfoRas2,    AcpiDmDumpRas2, DtCompileRas2,  TemplateRas2},
6901970d693SJung-uk Kim     {ACPI_SIG_RGRT, NULL,                   AcpiDmDumpRgrt, DtCompileRgrt,  TemplateRgrt},
691722b1667SJung-uk Kim     {ACPI_SIG_RHCT, NULL,                   AcpiDmDumpRhct, DtCompileRhct,  TemplateRhct},
692a371a5fdSJung-uk Kim     {ACPI_SIG_RSDT, NULL,                   AcpiDmDumpRsdt, DtCompileRsdt,  TemplateRsdt},
693a371a5fdSJung-uk Kim     {ACPI_SIG_S3PT, NULL,                   NULL,           NULL,           TemplateS3pt},
694a371a5fdSJung-uk Kim     {ACPI_SIG_SBST, AcpiDmTableInfoSbst,    NULL,           NULL,           TemplateSbst},
6955f9b24faSJung-uk Kim     {ACPI_SIG_SDEI, AcpiDmTableInfoSdei,    NULL,           NULL,           TemplateSdei},
69667d9aa44SJung-uk Kim     {ACPI_SIG_SDEV, AcpiDmTableInfoSdev,    AcpiDmDumpSdev, DtCompileSdev,  TemplateSdev},
697a371a5fdSJung-uk Kim     {ACPI_SIG_SLIC, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  TemplateSlic},
698a371a5fdSJung-uk Kim     {ACPI_SIG_SLIT, NULL,                   AcpiDmDumpSlit, DtCompileSlit,  TemplateSlit},
699a371a5fdSJung-uk Kim     {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr,    NULL,           NULL,           TemplateSpcr},
700a371a5fdSJung-uk Kim     {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi,    NULL,           NULL,           TemplateSpmi},
701a371a5fdSJung-uk Kim     {ACPI_SIG_SRAT, NULL,                   AcpiDmDumpSrat, DtCompileSrat,  TemplateSrat},
702a371a5fdSJung-uk Kim     {ACPI_SIG_STAO, NULL,                   AcpiDmDumpStao, DtCompileStao,  TemplateStao},
7031970d693SJung-uk Kim     {ACPI_SIG_SVKL, AcpiDmTableInfoSvkl,    AcpiDmDumpSvkl, DtCompileSvkl,  TemplateSvkl},
704fe0f0bbbSJung-uk Kim     {ACPI_SIG_TCPA, NULL,                   AcpiDmDumpTcpa, DtCompileTcpa,  TemplateTcpa},
705ab71bbb7SJung-uk Kim     {ACPI_SIG_TDEL, AcpiDmTableInfoTdel,    NULL,           NULL,           TemplateTdel},
70667d9aa44SJung-uk Kim     {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2,    AcpiDmDumpTpm2, DtCompileTpm2,  TemplateTpm2},
707a371a5fdSJung-uk Kim     {ACPI_SIG_UEFI, AcpiDmTableInfoUefi,    NULL,           DtCompileUefi,  TemplateUefi},
708cfd1ed46SJung-uk Kim     {ACPI_SIG_VIOT, AcpiDmTableInfoViot,    AcpiDmDumpViot, DtCompileViot,  TemplateViot},
709a371a5fdSJung-uk Kim     {ACPI_SIG_WAET, AcpiDmTableInfoWaet,    NULL,           NULL,           TemplateWaet},
710a371a5fdSJung-uk Kim     {ACPI_SIG_WDAT, NULL,                   AcpiDmDumpWdat, DtCompileWdat,  TemplateWdat},
711a371a5fdSJung-uk Kim     {ACPI_SIG_WDDT, AcpiDmTableInfoWddt,    NULL,           NULL,           TemplateWddt},
712a371a5fdSJung-uk Kim     {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt,    NULL,           NULL,           TemplateWdrt},
713a371a5fdSJung-uk Kim     {ACPI_SIG_WPBT, NULL,                   AcpiDmDumpWpbt, DtCompileWpbt,  TemplateWpbt},
714af051161SJung-uk Kim     {ACPI_SIG_WSMT, AcpiDmTableInfoWsmt,    NULL,           NULL,           TemplateWsmt},
715a371a5fdSJung-uk Kim     {ACPI_SIG_XENV, AcpiDmTableInfoXenv,    NULL,           NULL,           TemplateXenv},
716a371a5fdSJung-uk Kim     {ACPI_SIG_XSDT, NULL,                   AcpiDmDumpXsdt, DtCompileXsdt,  TemplateXsdt},
717a371a5fdSJung-uk Kim     {NULL,          NULL,                   NULL,           NULL,           NULL}
7181a39cfb0SJung-uk Kim };
7191a39cfb0SJung-uk Kim 
7201a39cfb0SJung-uk Kim 
7211a39cfb0SJung-uk Kim /*******************************************************************************
7221a39cfb0SJung-uk Kim  *
7231a39cfb0SJung-uk Kim  * FUNCTION:    AcpiDmGetTableData
7241a39cfb0SJung-uk Kim  *
7251a39cfb0SJung-uk Kim  * PARAMETERS:  Signature           - ACPI signature (4 chars) to match
7261a39cfb0SJung-uk Kim  *
7271a39cfb0SJung-uk Kim  * RETURN:      Pointer to a valid ACPI_DMTABLE_DATA. Null if no match found.
7281a39cfb0SJung-uk Kim  *
7291a39cfb0SJung-uk Kim  * DESCRIPTION: Find a match in the global table of supported ACPI tables
7301a39cfb0SJung-uk Kim  *
7311a39cfb0SJung-uk Kim  ******************************************************************************/
7321a39cfb0SJung-uk Kim 
733a371a5fdSJung-uk Kim const ACPI_DMTABLE_DATA *
7341a39cfb0SJung-uk Kim AcpiDmGetTableData (
7351a39cfb0SJung-uk Kim     char                    *Signature)
7361a39cfb0SJung-uk Kim {
737a371a5fdSJung-uk Kim     const ACPI_DMTABLE_DATA *Info;
7381a39cfb0SJung-uk Kim 
7391a39cfb0SJung-uk Kim 
740a371a5fdSJung-uk Kim     for (Info = AcpiDmTableData; Info->Signature; Info++)
7411a39cfb0SJung-uk Kim     {
742278f0de6SJung-uk Kim         if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature))
7431a39cfb0SJung-uk Kim         {
744a371a5fdSJung-uk Kim             return (Info);
7451a39cfb0SJung-uk Kim         }
7461a39cfb0SJung-uk Kim     }
7471a39cfb0SJung-uk Kim 
7481a39cfb0SJung-uk Kim     return (NULL);
7491a39cfb0SJung-uk Kim }
7501a39cfb0SJung-uk Kim 
7511a39cfb0SJung-uk Kim 
7521a39cfb0SJung-uk Kim /*******************************************************************************
7531a39cfb0SJung-uk Kim  *
7541a39cfb0SJung-uk Kim  * FUNCTION:    AcpiDmDumpDataTable
7551a39cfb0SJung-uk Kim  *
7561a39cfb0SJung-uk Kim  * PARAMETERS:  Table               - An ACPI table
7571a39cfb0SJung-uk Kim  *
7581a39cfb0SJung-uk Kim  * RETURN:      None.
7591a39cfb0SJung-uk Kim  *
7601a39cfb0SJung-uk Kim  * DESCRIPTION: Format the contents of an ACPI data table (any table other
7611a39cfb0SJung-uk Kim  *              than an SSDT or DSDT that does not contain executable AML code)
7621a39cfb0SJung-uk Kim  *
7631a39cfb0SJung-uk Kim  ******************************************************************************/
7641a39cfb0SJung-uk Kim 
7651a39cfb0SJung-uk Kim void
7661a39cfb0SJung-uk Kim AcpiDmDumpDataTable (
7671a39cfb0SJung-uk Kim     ACPI_TABLE_HEADER       *Table)
7681a39cfb0SJung-uk Kim {
769a9f12690SJung-uk Kim     ACPI_STATUS             Status;
770a371a5fdSJung-uk Kim     const ACPI_DMTABLE_DATA *TableData;
7711a39cfb0SJung-uk Kim     UINT32                  Length;
7721a39cfb0SJung-uk Kim 
7731a39cfb0SJung-uk Kim 
7741a39cfb0SJung-uk Kim     /* Ignore tables that contain AML */
7751a39cfb0SJung-uk Kim 
7761a39cfb0SJung-uk Kim     if (AcpiUtIsAmlTable (Table))
7771a39cfb0SJung-uk Kim     {
7786f1f1a63SJung-uk Kim         if (AslGbl_VerboseTemplates)
7798ef1a331SJung-uk Kim         {
7808ef1a331SJung-uk Kim             /* Dump the raw table data */
7818ef1a331SJung-uk Kim 
7828ef1a331SJung-uk Kim             Length = Table->Length;
7838ef1a331SJung-uk Kim 
7848ef1a331SJung-uk Kim             AcpiOsPrintf ("\n/*\n%s: Length %d (0x%X)\n\n",
7858ef1a331SJung-uk Kim                 ACPI_RAW_TABLE_DATA_HEADER, Length, Length);
7868ef1a331SJung-uk Kim             AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table),
7878ef1a331SJung-uk Kim                 Length, DB_BYTE_DISPLAY, 0);
7888ef1a331SJung-uk Kim             AcpiOsPrintf (" */\n");
7898ef1a331SJung-uk Kim         }
7901a39cfb0SJung-uk Kim         return;
7911a39cfb0SJung-uk Kim     }
7921a39cfb0SJung-uk Kim 
7931a39cfb0SJung-uk Kim     /*
7941a39cfb0SJung-uk Kim      * Handle tables that don't use the common ACPI table header structure.
7959a4bc520SJung-uk Kim      * Currently, these are the FACS, RSDP, S3PT and CDAT.
7961a39cfb0SJung-uk Kim      */
797278f0de6SJung-uk Kim     if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS))
7981a39cfb0SJung-uk Kim     {
7991a39cfb0SJung-uk Kim         Length = Table->Length;
800fe0f0bbbSJung-uk Kim         Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs);
801fe0f0bbbSJung-uk Kim         if (ACPI_FAILURE (Status))
802fe0f0bbbSJung-uk Kim         {
803fe0f0bbbSJung-uk Kim             return;
804fe0f0bbbSJung-uk Kim         }
8051a39cfb0SJung-uk Kim     }
806ab71bbb7SJung-uk Kim     else if (ACPI_VALIDATE_RSDP_SIG (ACPI_CAST_PTR (ACPI_TABLE_RSDP,
807ab71bbb7SJung-uk Kim         Table)->Signature))
8081a39cfb0SJung-uk Kim     {
8091a39cfb0SJung-uk Kim         Length = AcpiDmDumpRsdp (Table);
8101a39cfb0SJung-uk Kim     }
811278f0de6SJung-uk Kim     else if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT))
8123f0275a0SJung-uk Kim     {
8133f0275a0SJung-uk Kim         Length = AcpiDmDumpS3pt (Table);
8143f0275a0SJung-uk Kim     }
8159a4bc520SJung-uk Kim     else if (!AcpiUtValidNameseg (Table->Signature))
8169a4bc520SJung-uk Kim     {
8179a4bc520SJung-uk Kim         /*
8189a4bc520SJung-uk Kim          * For CDAT we are assuming that there should be at least one non-ASCII
8199a4bc520SJung-uk Kim          * byte in the (normally) 4-character Signature field (at least the
8209a4bc520SJung-uk Kim          * high-order byte should be zero).
8219a4bc520SJung-uk Kim          */
8229a4bc520SJung-uk Kim         if (AcpiGbl_CDAT)
8239a4bc520SJung-uk Kim         {
8249a4bc520SJung-uk Kim             /*
8259a4bc520SJung-uk Kim              * Invalid signature and <-ds CDAT> was specified on the command line.
8269a4bc520SJung-uk Kim              * Therefore, we have a CDAT table.
8279a4bc520SJung-uk Kim              */
8289a4bc520SJung-uk Kim             AcpiDmDumpCdat (Table);
8299a4bc520SJung-uk Kim         }
8309a4bc520SJung-uk Kim         else
8319a4bc520SJung-uk Kim         {
8329a4bc520SJung-uk Kim             fprintf (stderr, "Table has an invalid signature\n");
8339a4bc520SJung-uk Kim         }
8349a4bc520SJung-uk Kim 
8359a4bc520SJung-uk Kim         return;
8369a4bc520SJung-uk Kim     }
8371a39cfb0SJung-uk Kim     else
8381a39cfb0SJung-uk Kim     {
8391a39cfb0SJung-uk Kim         /*
8401a39cfb0SJung-uk Kim          * All other tables must use the common ACPI table header, dump it now
8411a39cfb0SJung-uk Kim          */
8421a39cfb0SJung-uk Kim         Length = Table->Length;
843a9f12690SJung-uk Kim         Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader);
844a9f12690SJung-uk Kim         if (ACPI_FAILURE (Status))
845a9f12690SJung-uk Kim         {
846a9f12690SJung-uk Kim             return;
847a9f12690SJung-uk Kim         }
8481a39cfb0SJung-uk Kim         AcpiOsPrintf ("\n");
8491a39cfb0SJung-uk Kim 
8501a39cfb0SJung-uk Kim         /* Match signature and dispatch appropriately */
8511a39cfb0SJung-uk Kim 
8521a39cfb0SJung-uk Kim         TableData = AcpiDmGetTableData (Table->Signature);
8531a39cfb0SJung-uk Kim         if (!TableData)
8541a39cfb0SJung-uk Kim         {
8555ef50723SJung-uk Kim             if (!strncmp (Table->Signature, "OEM", 3))
8561a39cfb0SJung-uk Kim             {
8571a39cfb0SJung-uk Kim                 AcpiOsPrintf ("\n**** OEM-defined ACPI table [%4.4s], unknown contents\n\n",
8581a39cfb0SJung-uk Kim                     Table->Signature);
8591a39cfb0SJung-uk Kim             }
8601a39cfb0SJung-uk Kim             else
8611a39cfb0SJung-uk Kim             {
8627cf3e94aSJung-uk Kim                 AcpiOsPrintf ("\n**** Unknown ACPI table signature [%4.4s]\n\n",
8631a39cfb0SJung-uk Kim                     Table->Signature);
8647cf3e94aSJung-uk Kim 
8657cf3e94aSJung-uk Kim                 fprintf (stderr, "Unknown ACPI table signature [%4.4s], ",
8669c48c75eSJung-uk Kim                     Table->Signature);
8677cf3e94aSJung-uk Kim 
8687cf3e94aSJung-uk Kim                 if (!AcpiGbl_ForceAmlDisassembly)
8697cf3e94aSJung-uk Kim                 {
8707cf3e94aSJung-uk Kim                     fprintf (stderr, "decoding ACPI table header only\n");
8717cf3e94aSJung-uk Kim                 }
8727cf3e94aSJung-uk Kim                 else
8737cf3e94aSJung-uk Kim                 {
8747cf3e94aSJung-uk Kim                     fprintf (stderr, "assuming table contains valid AML code\n");
8757cf3e94aSJung-uk Kim                 }
8761a39cfb0SJung-uk Kim             }
8771a39cfb0SJung-uk Kim         }
8781a39cfb0SJung-uk Kim         else if (TableData->TableHandler)
8791a39cfb0SJung-uk Kim         {
8801a39cfb0SJung-uk Kim             /* Complex table, has a handler */
8811a39cfb0SJung-uk Kim 
8821a39cfb0SJung-uk Kim             TableData->TableHandler (Table);
8831a39cfb0SJung-uk Kim         }
8841a39cfb0SJung-uk Kim         else if (TableData->TableInfo)
8851a39cfb0SJung-uk Kim         {
8861a39cfb0SJung-uk Kim             /* Simple table, just walk the info table */
8871a39cfb0SJung-uk Kim 
888fe0f0bbbSJung-uk Kim             Status = AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo);
889fe0f0bbbSJung-uk Kim             if (ACPI_FAILURE (Status))
890fe0f0bbbSJung-uk Kim             {
891fe0f0bbbSJung-uk Kim                 return;
892fe0f0bbbSJung-uk Kim             }
8931a39cfb0SJung-uk Kim         }
8941a39cfb0SJung-uk Kim     }
8951a39cfb0SJung-uk Kim 
8966f1f1a63SJung-uk Kim     if (!AslGbl_DoTemplates || AslGbl_VerboseTemplates)
897a88e22b7SJung-uk Kim     {
898a88e22b7SJung-uk Kim         /* Dump the raw table data */
8991a39cfb0SJung-uk Kim 
900d244b227SJung-uk Kim         AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n",
901d244b227SJung-uk Kim             ACPI_RAW_TABLE_DATA_HEADER, Length, Length);
9028ef1a331SJung-uk Kim         AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table),
9038ef1a331SJung-uk Kim             Length, DB_BYTE_DISPLAY, 0);
9041a39cfb0SJung-uk Kim     }
905a88e22b7SJung-uk Kim }
9061a39cfb0SJung-uk Kim 
9071a39cfb0SJung-uk Kim 
9081a39cfb0SJung-uk Kim /*******************************************************************************
9091a39cfb0SJung-uk Kim  *
9101a39cfb0SJung-uk Kim  * FUNCTION:    AcpiDmLineHeader
9111a39cfb0SJung-uk Kim  *
9121a39cfb0SJung-uk Kim  * PARAMETERS:  Offset              - Current byte offset, from table start
9131a39cfb0SJung-uk Kim  *              ByteLength          - Length of the field in bytes, 0 for flags
9141a39cfb0SJung-uk Kim  *              Name                - Name of this field
9151a39cfb0SJung-uk Kim  *
9161a39cfb0SJung-uk Kim  * RETURN:      None
9171a39cfb0SJung-uk Kim  *
9181a39cfb0SJung-uk Kim  * DESCRIPTION: Utility routines for formatting output lines. Displays the
9191a39cfb0SJung-uk Kim  *              current table offset in hex and decimal, the field length,
9201a39cfb0SJung-uk Kim  *              and the field name.
9211a39cfb0SJung-uk Kim  *
9221a39cfb0SJung-uk Kim  ******************************************************************************/
9231a39cfb0SJung-uk Kim 
9241a39cfb0SJung-uk Kim void
9251a39cfb0SJung-uk Kim AcpiDmLineHeader (
9261a39cfb0SJung-uk Kim     UINT32                  Offset,
9271a39cfb0SJung-uk Kim     UINT32                  ByteLength,
9281a39cfb0SJung-uk Kim     char                    *Name)
9291a39cfb0SJung-uk Kim {
9301a39cfb0SJung-uk Kim 
931dcbce41eSJung-uk Kim     /* Allow a null name for fields that span multiple lines (large buffers) */
932dcbce41eSJung-uk Kim 
933dcbce41eSJung-uk Kim     if (!Name)
934dcbce41eSJung-uk Kim     {
935dcbce41eSJung-uk Kim         Name = "";
936dcbce41eSJung-uk Kim     }
937dcbce41eSJung-uk Kim 
9386f1f1a63SJung-uk Kim     if (AslGbl_DoTemplates && !AslGbl_VerboseTemplates) /* Terse template */
939a88e22b7SJung-uk Kim     {
940a88e22b7SJung-uk Kim         if (ByteLength)
941a88e22b7SJung-uk Kim         {
942dcbce41eSJung-uk Kim             AcpiOsPrintf ("[%.4d] %34s : ", ByteLength, Name);
943a88e22b7SJung-uk Kim         }
944a88e22b7SJung-uk Kim         else
945a88e22b7SJung-uk Kim         {
946d052a1ccSJung-uk Kim             if (*Name)
947d052a1ccSJung-uk Kim             {
948dcbce41eSJung-uk Kim                 AcpiOsPrintf ("%41s : ", Name);
949a88e22b7SJung-uk Kim             }
950d052a1ccSJung-uk Kim             else
951d052a1ccSJung-uk Kim             {
952d052a1ccSJung-uk Kim                 AcpiOsPrintf ("%41s   ", Name);
953d052a1ccSJung-uk Kim             }
954d052a1ccSJung-uk Kim         }
955a88e22b7SJung-uk Kim     }
956a88e22b7SJung-uk Kim     else /* Normal disassembler or verbose template */
957a88e22b7SJung-uk Kim     {
9581a39cfb0SJung-uk Kim         if (ByteLength)
9591a39cfb0SJung-uk Kim         {
9609a4bc520SJung-uk Kim             AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %27s : ",
9611a39cfb0SJung-uk Kim                 Offset, Offset, ByteLength, Name);
9621a39cfb0SJung-uk Kim         }
9631a39cfb0SJung-uk Kim         else
9641a39cfb0SJung-uk Kim         {
965d052a1ccSJung-uk Kim             if (*Name)
966d052a1ccSJung-uk Kim             {
967dcbce41eSJung-uk Kim                 AcpiOsPrintf ("%44s : ", Name);
9681a39cfb0SJung-uk Kim             }
969d052a1ccSJung-uk Kim             else
970d052a1ccSJung-uk Kim             {
971d052a1ccSJung-uk Kim                 AcpiOsPrintf ("%44s   ", Name);
972d052a1ccSJung-uk Kim             }
973d052a1ccSJung-uk Kim         }
9741a39cfb0SJung-uk Kim     }
975a88e22b7SJung-uk Kim }
9761a39cfb0SJung-uk Kim 
9771a39cfb0SJung-uk Kim void
9781a39cfb0SJung-uk Kim AcpiDmLineHeader2 (
9791a39cfb0SJung-uk Kim     UINT32                  Offset,
9801a39cfb0SJung-uk Kim     UINT32                  ByteLength,
9811a39cfb0SJung-uk Kim     char                    *Name,
9821a39cfb0SJung-uk Kim     UINT32                  Value)
9831a39cfb0SJung-uk Kim {
9841a39cfb0SJung-uk Kim 
9856f1f1a63SJung-uk Kim     if (AslGbl_DoTemplates && !AslGbl_VerboseTemplates) /* Terse template */
986a88e22b7SJung-uk Kim     {
987a88e22b7SJung-uk Kim         if (ByteLength)
988a88e22b7SJung-uk Kim         {
989d052a1ccSJung-uk Kim             AcpiOsPrintf ("[%.4d] %30s %3d : ",
990a88e22b7SJung-uk Kim                 ByteLength, Name, Value);
991a88e22b7SJung-uk Kim         }
992a88e22b7SJung-uk Kim         else
993a88e22b7SJung-uk Kim         {
994a88e22b7SJung-uk Kim             AcpiOsPrintf ("%36s % 3d : ",
995a88e22b7SJung-uk Kim                 Name, Value);
996a88e22b7SJung-uk Kim         }
997a88e22b7SJung-uk Kim     }
998a88e22b7SJung-uk Kim     else /* Normal disassembler or verbose template */
999a88e22b7SJung-uk Kim     {
10001a39cfb0SJung-uk Kim         if (ByteLength)
10011a39cfb0SJung-uk Kim         {
10029a4bc520SJung-uk Kim             AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %24s %3d : ",
10031a39cfb0SJung-uk Kim                 Offset, Offset, ByteLength, Name, Value);
10041a39cfb0SJung-uk Kim         }
10051a39cfb0SJung-uk Kim         else
10061a39cfb0SJung-uk Kim         {
10079a4bc520SJung-uk Kim             AcpiOsPrintf ("[%3.3Xh %4.4u   ] %24s %3d : ",
10081a39cfb0SJung-uk Kim                 Offset, Offset, Name, Value);
10091a39cfb0SJung-uk Kim         }
10101a39cfb0SJung-uk Kim     }
1011a88e22b7SJung-uk Kim }
10121a39cfb0SJung-uk Kim 
10131a39cfb0SJung-uk Kim 
10141a39cfb0SJung-uk Kim /*******************************************************************************
10151a39cfb0SJung-uk Kim  *
10161a39cfb0SJung-uk Kim  * FUNCTION:    AcpiDmDumpTable
10171a39cfb0SJung-uk Kim  *
10181a39cfb0SJung-uk Kim  * PARAMETERS:  TableLength         - Length of the entire ACPI table
10191a39cfb0SJung-uk Kim  *              TableOffset         - Starting offset within the table for this
10201a39cfb0SJung-uk Kim  *                                    sub-descriptor (0 if main table)
10211a39cfb0SJung-uk Kim  *              Table               - The ACPI table
1022a9f12690SJung-uk Kim  *              SubtableLength      - Length of this sub-descriptor
10231a39cfb0SJung-uk Kim  *              Info                - Info table for this ACPI table
10241a39cfb0SJung-uk Kim  *
102570e6ab8fSJung-uk Kim  * RETURN:      Status
10261a39cfb0SJung-uk Kim  *
10271a39cfb0SJung-uk Kim  * DESCRIPTION: Display ACPI table contents by walking the Info table.
10281a39cfb0SJung-uk Kim  *
1029a88e22b7SJung-uk Kim  * Note: This function must remain in sync with DtGetFieldLength.
1030a88e22b7SJung-uk Kim  *
10311a39cfb0SJung-uk Kim  ******************************************************************************/
10321a39cfb0SJung-uk Kim 
1033a9f12690SJung-uk Kim ACPI_STATUS
10341a39cfb0SJung-uk Kim AcpiDmDumpTable (
10351a39cfb0SJung-uk Kim     UINT32                  TableLength,
10361a39cfb0SJung-uk Kim     UINT32                  TableOffset,
10371a39cfb0SJung-uk Kim     void                    *Table,
10381a39cfb0SJung-uk Kim     UINT32                  SubtableLength,
10391a39cfb0SJung-uk Kim     ACPI_DMTABLE_INFO       *Info)
10401a39cfb0SJung-uk Kim {
10411a39cfb0SJung-uk Kim     UINT8                   *Target;
10421a39cfb0SJung-uk Kim     UINT32                  CurrentOffset;
10431a39cfb0SJung-uk Kim     UINT32                  ByteLength;
10441a39cfb0SJung-uk Kim     UINT8                   Temp8;
10451a39cfb0SJung-uk Kim     UINT16                  Temp16;
10467cf3e94aSJung-uk Kim     UINT32                  Temp32;
1047313a0c13SJung-uk Kim     UINT64                  Value;
1048a371a5fdSJung-uk Kim     const AH_TABLE          *TableData;
1049d6dd1baeSJung-uk Kim     const char              *Name;
1050a9f12690SJung-uk Kim     BOOLEAN                 LastOutputBlankLine = FALSE;
1051fe0f0bbbSJung-uk Kim     ACPI_STATUS             Status;
1052d6dd1baeSJung-uk Kim     char                    RepairedName[8];
10531a39cfb0SJung-uk Kim 
10541a39cfb0SJung-uk Kim 
10551a39cfb0SJung-uk Kim     if (!Info)
10561a39cfb0SJung-uk Kim     {
10571a39cfb0SJung-uk Kim         AcpiOsPrintf ("Display not implemented\n");
1058a9f12690SJung-uk Kim         return (AE_NOT_IMPLEMENTED);
10591a39cfb0SJung-uk Kim     }
10601a39cfb0SJung-uk Kim 
10611a39cfb0SJung-uk Kim     /* Walk entire Info table; Null name terminates */
10621a39cfb0SJung-uk Kim 
10631a39cfb0SJung-uk Kim     for (; Info->Name; Info++)
10641a39cfb0SJung-uk Kim     {
10651a39cfb0SJung-uk Kim         /*
10661a39cfb0SJung-uk Kim          * Target points to the field within the ACPI Table. CurrentOffset is
10671a39cfb0SJung-uk Kim          * the offset of the field from the start of the main table.
10681a39cfb0SJung-uk Kim          */
10691a39cfb0SJung-uk Kim         Target = ACPI_ADD_PTR (UINT8, Table, Info->Offset);
10701a39cfb0SJung-uk Kim         CurrentOffset = TableOffset + Info->Offset;
10711a39cfb0SJung-uk Kim 
1072a371a5fdSJung-uk Kim         /* Check for beyond subtable end or (worse) beyond EOT */
10731a39cfb0SJung-uk Kim 
1074ab71bbb7SJung-uk Kim         if (SubtableLength && (Info->Offset > SubtableLength))
10751a39cfb0SJung-uk Kim         {
10767cf3e94aSJung-uk Kim             AcpiOsPrintf (
10771970d693SJung-uk Kim                 "/**** ACPI subtable terminates early (Len %u) - "
10781970d693SJung-uk Kim                 "may be older version (dump table) */\n", SubtableLength);
1079a371a5fdSJung-uk Kim 
1080a371a5fdSJung-uk Kim             /* Move on to next subtable */
1081a371a5fdSJung-uk Kim 
1082a371a5fdSJung-uk Kim             return (AE_OK);
1083a371a5fdSJung-uk Kim         }
1084a371a5fdSJung-uk Kim 
1085a371a5fdSJung-uk Kim         if (CurrentOffset >= TableLength)
1086a371a5fdSJung-uk Kim         {
1087a371a5fdSJung-uk Kim             AcpiOsPrintf (
1088a371a5fdSJung-uk Kim                 "/**** ACPI table terminates "
10899a4bc520SJung-uk Kim                 "in the middle of a data structure! (dump table)\n"
10909a4bc520SJung-uk Kim                 "CurrentOffset: %X, TableLength: %X ***/", CurrentOffset, TableLength);
1091a9f12690SJung-uk Kim             return (AE_BAD_DATA);
10921a39cfb0SJung-uk Kim         }
10931a39cfb0SJung-uk Kim 
10941a39cfb0SJung-uk Kim         /* Generate the byte length for this field */
10951a39cfb0SJung-uk Kim 
10961a39cfb0SJung-uk Kim         switch (Info->Opcode)
10971a39cfb0SJung-uk Kim         {
10981a39cfb0SJung-uk Kim         case ACPI_DMT_UINT8:
10991a39cfb0SJung-uk Kim         case ACPI_DMT_CHKSUM:
11001a39cfb0SJung-uk Kim         case ACPI_DMT_SPACEID:
11015a77b11bSJung-uk Kim         case ACPI_DMT_ACCWIDTH:
1102cfd1ed46SJung-uk Kim         case ACPI_DMT_CEDT:
1103d6dd1baeSJung-uk Kim         case ACPI_DMT_IVRS:
11041970d693SJung-uk Kim         case ACPI_DMT_IVRS_DE:
1105313a0c13SJung-uk Kim         case ACPI_DMT_GTDT:
11061a39cfb0SJung-uk Kim         case ACPI_DMT_MADT:
1107722b1667SJung-uk Kim         case ACPI_DMT_MPAM_LOCATOR:
1108313a0c13SJung-uk Kim         case ACPI_DMT_PCCT:
11093f0275a0SJung-uk Kim         case ACPI_DMT_PMTT:
1110af051161SJung-uk Kim         case ACPI_DMT_PPTT:
11111970d693SJung-uk Kim         case ACPI_DMT_RGRT:
111267d9aa44SJung-uk Kim         case ACPI_DMT_SDEV:
11131a39cfb0SJung-uk Kim         case ACPI_DMT_SRAT:
111497c0b5abSJung-uk Kim         case ACPI_DMT_AEST:
111597c0b5abSJung-uk Kim         case ACPI_DMT_AEST_RES:
111697c0b5abSJung-uk Kim         case ACPI_DMT_AEST_XFACE:
111797c0b5abSJung-uk Kim         case ACPI_DMT_AEST_XRUPT:
1118a9f12690SJung-uk Kim         case ACPI_DMT_ASF:
11199a4bc520SJung-uk Kim         case ACPI_DMT_CDAT:
1120a9f12690SJung-uk Kim         case ACPI_DMT_HESTNTYP:
1121a9f12690SJung-uk Kim         case ACPI_DMT_FADTPM:
1122a88e22b7SJung-uk Kim         case ACPI_DMT_EINJACT:
1123a88e22b7SJung-uk Kim         case ACPI_DMT_EINJINST:
1124a88e22b7SJung-uk Kim         case ACPI_DMT_ERSTACT:
1125a88e22b7SJung-uk Kim         case ACPI_DMT_ERSTINST:
1126313a0c13SJung-uk Kim         case ACPI_DMT_DMAR_SCOPE:
1127cfd1ed46SJung-uk Kim         case ACPI_DMT_VIOT:
1128a9d8d09cSJung-uk Kim 
11291a39cfb0SJung-uk Kim             ByteLength = 1;
11301a39cfb0SJung-uk Kim             break;
1131a9d8d09cSJung-uk Kim 
1132722b1667SJung-uk Kim         case ACPI_DMT_ASPT:
11331a39cfb0SJung-uk Kim         case ACPI_DMT_UINT16:
11341a39cfb0SJung-uk Kim         case ACPI_DMT_DMAR:
1135a9f12690SJung-uk Kim         case ACPI_DMT_HEST:
1136af051161SJung-uk Kim         case ACPI_DMT_HMAT:
1137a371a5fdSJung-uk Kim         case ACPI_DMT_NFIT:
1138cfd1ed46SJung-uk Kim         case ACPI_DMT_PHAT:
113907c64d74SJung-uk Kim         case ACPI_DMT_RHCT:
1140a9d8d09cSJung-uk Kim 
11411a39cfb0SJung-uk Kim             ByteLength = 2;
11421a39cfb0SJung-uk Kim             break;
1143a9d8d09cSJung-uk Kim 
11441a39cfb0SJung-uk Kim         case ACPI_DMT_UINT24:
1145a9d8d09cSJung-uk Kim 
11461a39cfb0SJung-uk Kim             ByteLength = 3;
11471a39cfb0SJung-uk Kim             break;
1148a9d8d09cSJung-uk Kim 
11491a39cfb0SJung-uk Kim         case ACPI_DMT_UINT32:
115097c0b5abSJung-uk Kim         case ACPI_DMT_AEST_CACHE:
115197c0b5abSJung-uk Kim         case ACPI_DMT_AEST_GIC:
11521a39cfb0SJung-uk Kim         case ACPI_DMT_NAME4:
11531a39cfb0SJung-uk Kim         case ACPI_DMT_SIG:
1154313a0c13SJung-uk Kim         case ACPI_DMT_LPIT:
115567d9aa44SJung-uk Kim         case ACPI_DMT_TPM2:
1156a9d8d09cSJung-uk Kim 
11571a39cfb0SJung-uk Kim             ByteLength = 4;
11581a39cfb0SJung-uk Kim             break;
1159a9d8d09cSJung-uk Kim 
11603f0275a0SJung-uk Kim         case ACPI_DMT_UINT40:
1161a9d8d09cSJung-uk Kim 
11623f0275a0SJung-uk Kim             ByteLength = 5;
11633f0275a0SJung-uk Kim             break;
1164a9d8d09cSJung-uk Kim 
11653f0275a0SJung-uk Kim         case ACPI_DMT_UINT48:
11661a39cfb0SJung-uk Kim         case ACPI_DMT_NAME6:
1167a9d8d09cSJung-uk Kim 
11681a39cfb0SJung-uk Kim             ByteLength = 6;
11691a39cfb0SJung-uk Kim             break;
1170a9d8d09cSJung-uk Kim 
11711a39cfb0SJung-uk Kim         case ACPI_DMT_UINT56:
11720b94ba42SJung-uk Kim         case ACPI_DMT_BUF7:
1173a9d8d09cSJung-uk Kim 
11741a39cfb0SJung-uk Kim             ByteLength = 7;
11751a39cfb0SJung-uk Kim             break;
1176a9d8d09cSJung-uk Kim 
11771a39cfb0SJung-uk Kim         case ACPI_DMT_UINT64:
11781a39cfb0SJung-uk Kim         case ACPI_DMT_NAME8:
1179a9d8d09cSJung-uk Kim 
11801a39cfb0SJung-uk Kim             ByteLength = 8;
11811a39cfb0SJung-uk Kim             break;
1182a9d8d09cSJung-uk Kim 
11838d744e47SJung-uk Kim         case ACPI_DMT_BUF10:
11848d744e47SJung-uk Kim 
11858d744e47SJung-uk Kim             ByteLength = 10;
11868d744e47SJung-uk Kim             break;
11878d744e47SJung-uk Kim 
1188493deb39SJung-uk Kim         case ACPI_DMT_BUF12:
1189493deb39SJung-uk Kim 
1190493deb39SJung-uk Kim             ByteLength = 12;
1191493deb39SJung-uk Kim             break;
1192493deb39SJung-uk Kim 
1193d6dd1baeSJung-uk Kim         case ACPI_DMT_BUF16:
1194d244b227SJung-uk Kim         case ACPI_DMT_UUID:
1195a9d8d09cSJung-uk Kim 
1196d6dd1baeSJung-uk Kim             ByteLength = 16;
1197d6dd1baeSJung-uk Kim             break;
1198a9d8d09cSJung-uk Kim 
11991b7a2680SJung-uk Kim         case ACPI_DMT_BUF18:
12001b7a2680SJung-uk Kim 
12011b7a2680SJung-uk Kim             ByteLength = 18;
12021b7a2680SJung-uk Kim             break;
12031b7a2680SJung-uk Kim 
1204*92f570c3SJung-uk Kim         case ACPI_DMT_BUF32:
1205*92f570c3SJung-uk Kim 
1206*92f570c3SJung-uk Kim             ByteLength = 32;
1207*92f570c3SJung-uk Kim             break;
1208*92f570c3SJung-uk Kim 
1209*92f570c3SJung-uk Kim         case ACPI_DMT_BUF112:
1210*92f570c3SJung-uk Kim 
1211*92f570c3SJung-uk Kim             ByteLength = 112;
1212*92f570c3SJung-uk Kim             break;
1213*92f570c3SJung-uk Kim 
1214dcbce41eSJung-uk Kim         case ACPI_DMT_BUF128:
1215a9d8d09cSJung-uk Kim 
1216dcbce41eSJung-uk Kim             ByteLength = 128;
1217dcbce41eSJung-uk Kim             break;
1218a9d8d09cSJung-uk Kim 
121997c0b5abSJung-uk Kim         case ACPI_DMT_WPBT_UNICODE:
122097c0b5abSJung-uk Kim 
122197c0b5abSJung-uk Kim             ByteLength = SubtableLength;
122297c0b5abSJung-uk Kim             CurrentOffset = sizeof (ACPI_TABLE_WPBT);
122397c0b5abSJung-uk Kim             break;
122497c0b5abSJung-uk Kim 
1225a371a5fdSJung-uk Kim         case ACPI_DMT_UNICODE:
12267cf3e94aSJung-uk Kim         case ACPI_DMT_BUFFER:
12277cf3e94aSJung-uk Kim         case ACPI_DMT_RAW_BUFFER:
12287cf3e94aSJung-uk Kim 
12297cf3e94aSJung-uk Kim             ByteLength = SubtableLength;
12307cf3e94aSJung-uk Kim             break;
12317cf3e94aSJung-uk Kim 
1232cfd1ed46SJung-uk Kim         case ACPI_DMT_PMTT_VENDOR:
1233cfd1ed46SJung-uk Kim             /*
1234cfd1ed46SJung-uk Kim              * Calculate the length of the vendor data for the PMTT table:
1235cfd1ed46SJung-uk Kim              * Length = (Current Subtable ptr + Subtable length) -
1236cfd1ed46SJung-uk Kim              *          Start of the vendor data (Target)
1237cfd1ed46SJung-uk Kim              */
1238cfd1ed46SJung-uk Kim             ByteLength = ((ACPI_CAST_PTR (char, Table) +
1239cfd1ed46SJung-uk Kim                             (ACPI_CAST_PTR (ACPI_PMTT_HEADER, Table)->Length)) -
1240cfd1ed46SJung-uk Kim                             ACPI_CAST_PTR (char, Target));
1241cfd1ed46SJung-uk Kim             break;
1242cfd1ed46SJung-uk Kim 
12431a39cfb0SJung-uk Kim         case ACPI_DMT_STRING:
1244a9d8d09cSJung-uk Kim 
12455ef50723SJung-uk Kim             ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1;
12461a39cfb0SJung-uk Kim             break;
1247a9d8d09cSJung-uk Kim 
12481970d693SJung-uk Kim         case ACPI_DMT_IVRS_UNTERMINATED_STRING:
12491970d693SJung-uk Kim 
12501970d693SJung-uk Kim             ByteLength = ((ACPI_CAST_PTR (ACPI_IVRS_DEVICE_HID, Target) -1)->UidLength);
12511970d693SJung-uk Kim             break;
12521970d693SJung-uk Kim 
12531a39cfb0SJung-uk Kim         case ACPI_DMT_GAS:
1254a9d8d09cSJung-uk Kim 
1255a9f12690SJung-uk Kim             if (!LastOutputBlankLine)
1256a9f12690SJung-uk Kim             {
12571a39cfb0SJung-uk Kim                 AcpiOsPrintf ("\n");
1258a9f12690SJung-uk Kim                 LastOutputBlankLine = TRUE;
1259a9f12690SJung-uk Kim             }
1260f8146b88SJung-uk Kim 
12611a39cfb0SJung-uk Kim             ByteLength = sizeof (ACPI_GENERIC_ADDRESS);
12621a39cfb0SJung-uk Kim             break;
1263a9d8d09cSJung-uk Kim 
1264a9f12690SJung-uk Kim         case ACPI_DMT_HESTNTFY:
1265a9d8d09cSJung-uk Kim 
1266a9f12690SJung-uk Kim             if (!LastOutputBlankLine)
1267a9f12690SJung-uk Kim             {
1268a9f12690SJung-uk Kim                 AcpiOsPrintf ("\n");
1269a9f12690SJung-uk Kim                 LastOutputBlankLine = TRUE;
1270a9f12690SJung-uk Kim             }
1271f8146b88SJung-uk Kim 
1272a9f12690SJung-uk Kim             ByteLength = sizeof (ACPI_HEST_NOTIFY);
1273a9f12690SJung-uk Kim             break;
1274a9d8d09cSJung-uk Kim 
1275a371a5fdSJung-uk Kim         case ACPI_DMT_IORTMEM:
1276a371a5fdSJung-uk Kim 
1277a371a5fdSJung-uk Kim             if (!LastOutputBlankLine)
1278a371a5fdSJung-uk Kim             {
1279a371a5fdSJung-uk Kim                 LastOutputBlankLine = FALSE;
1280a371a5fdSJung-uk Kim             }
1281f8146b88SJung-uk Kim 
1282a371a5fdSJung-uk Kim             ByteLength = sizeof (ACPI_IORT_MEMORY_ACCESS);
1283a371a5fdSJung-uk Kim             break;
1284a371a5fdSJung-uk Kim 
12851a39cfb0SJung-uk Kim         default:
1286a9d8d09cSJung-uk Kim 
12871a39cfb0SJung-uk Kim             ByteLength = 0;
12881a39cfb0SJung-uk Kim             break;
12891a39cfb0SJung-uk Kim         }
12901a39cfb0SJung-uk Kim 
1291a371a5fdSJung-uk Kim         /* Check if we are beyond a subtable, or (worse) beyond EOT */
1292a371a5fdSJung-uk Kim 
1293a9f12690SJung-uk Kim         if (CurrentOffset + ByteLength > TableLength)
1294a9f12690SJung-uk Kim         {
1295a371a5fdSJung-uk Kim             if (SubtableLength)
1296a371a5fdSJung-uk Kim             {
12977cf3e94aSJung-uk Kim                 AcpiOsPrintf (
1298a371a5fdSJung-uk Kim                     "/**** ACPI subtable terminates early - "
1299a371a5fdSJung-uk Kim                     "may be older version (dump table) */\n");
1300a371a5fdSJung-uk Kim 
1301a371a5fdSJung-uk Kim                 /* Move on to next subtable */
1302a371a5fdSJung-uk Kim 
1303a371a5fdSJung-uk Kim                 return (AE_OK);
1304a371a5fdSJung-uk Kim             }
1305a371a5fdSJung-uk Kim 
1306a371a5fdSJung-uk Kim             AcpiOsPrintf (
1307a371a5fdSJung-uk Kim                 "/**** ACPI table terminates "
1308a371a5fdSJung-uk Kim                 "in the middle of a data structure! */\n");
1309a9f12690SJung-uk Kim             return (AE_BAD_DATA);
1310a9f12690SJung-uk Kim         }
1311a9f12690SJung-uk Kim 
13123f0275a0SJung-uk Kim         if (Info->Opcode == ACPI_DMT_EXTRA_TEXT)
13133f0275a0SJung-uk Kim         {
13143f0275a0SJung-uk Kim             AcpiOsPrintf ("%s", Info->Name);
13153f0275a0SJung-uk Kim             continue;
13163f0275a0SJung-uk Kim         }
13173f0275a0SJung-uk Kim 
13181a39cfb0SJung-uk Kim         /* Start a new line and decode the opcode */
13191a39cfb0SJung-uk Kim 
13201a39cfb0SJung-uk Kim         AcpiDmLineHeader (CurrentOffset, ByteLength, Info->Name);
13211a39cfb0SJung-uk Kim 
13221a39cfb0SJung-uk Kim         switch (Info->Opcode)
13231a39cfb0SJung-uk Kim         {
13241a39cfb0SJung-uk Kim         /* Single-bit Flag fields. Note: Opcode is the bit position */
13251a39cfb0SJung-uk Kim 
13261a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG0:
13271a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG1:
13281a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG2:
13291a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG3:
13301a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG4:
13311a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG5:
13321a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG6:
13331a39cfb0SJung-uk Kim         case ACPI_DMT_FLAG7:
13341a39cfb0SJung-uk Kim 
13351a39cfb0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*Target >> Info->Opcode) & 0x01);
13361a39cfb0SJung-uk Kim             break;
13371a39cfb0SJung-uk Kim 
13381a39cfb0SJung-uk Kim         /* 2-bit Flag fields */
13391a39cfb0SJung-uk Kim 
13401a39cfb0SJung-uk Kim         case ACPI_DMT_FLAGS0:
13411a39cfb0SJung-uk Kim 
13421a39cfb0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", *Target & 0x03);
13431a39cfb0SJung-uk Kim             break;
13441a39cfb0SJung-uk Kim 
13453f0275a0SJung-uk Kim         case ACPI_DMT_FLAGS1:
13463f0275a0SJung-uk Kim 
13473f0275a0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*Target >> 1) & 0x03);
13483f0275a0SJung-uk Kim             break;
13493f0275a0SJung-uk Kim 
13501a39cfb0SJung-uk Kim         case ACPI_DMT_FLAGS2:
13511a39cfb0SJung-uk Kim 
13521a39cfb0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03);
13531a39cfb0SJung-uk Kim             break;
13541a39cfb0SJung-uk Kim 
1355ab71bbb7SJung-uk Kim         case ACPI_DMT_FLAGS8_2:
1356ab71bbb7SJung-uk Kim 
1357ab71bbb7SJung-uk Kim             AcpiOsPrintf ("%2.2X\n", (*Target >> 2) & 0xFF);
1358ab71bbb7SJung-uk Kim             break;
1359ab71bbb7SJung-uk Kim 
13603f0275a0SJung-uk Kim         case ACPI_DMT_FLAGS4:
13613f0275a0SJung-uk Kim 
13623f0275a0SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03);
13633f0275a0SJung-uk Kim             break;
13643f0275a0SJung-uk Kim 
1365af051161SJung-uk Kim         case ACPI_DMT_FLAGS4_0:
1366af051161SJung-uk Kim 
1367af051161SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target) & 0x0F);
1368af051161SJung-uk Kim             break;
1369af051161SJung-uk Kim 
1370af051161SJung-uk Kim         case ACPI_DMT_FLAGS4_4:
1371af051161SJung-uk Kim 
1372af051161SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 4) & 0x0F);
1373af051161SJung-uk Kim             break;
1374af051161SJung-uk Kim 
1375af051161SJung-uk Kim         case ACPI_DMT_FLAGS4_8:
1376af051161SJung-uk Kim 
1377af051161SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 8) & 0x0F);
1378af051161SJung-uk Kim             break;
1379af051161SJung-uk Kim 
1380af051161SJung-uk Kim         case ACPI_DMT_FLAGS4_12:
1381af051161SJung-uk Kim 
1382af051161SJung-uk Kim             AcpiOsPrintf ("%1.1X\n", (*(UINT32 *)Target >> 12) & 0x0F);
1383af051161SJung-uk Kim             break;
1384af051161SJung-uk Kim 
1385af051161SJung-uk Kim         case ACPI_DMT_FLAGS16_16:
1386af051161SJung-uk Kim 
1387af051161SJung-uk Kim             AcpiOsPrintf ("%4.4X\n", (*(UINT32 *)Target >> 16) & 0xFFFF);
1388af051161SJung-uk Kim             break;
1389af051161SJung-uk Kim 
13903f0275a0SJung-uk Kim         /* Integer Data Types */
13911a39cfb0SJung-uk Kim 
13921a39cfb0SJung-uk Kim         case ACPI_DMT_UINT8:
13931a39cfb0SJung-uk Kim         case ACPI_DMT_UINT16:
13941a39cfb0SJung-uk Kim         case ACPI_DMT_UINT24:
13951a39cfb0SJung-uk Kim         case ACPI_DMT_UINT32:
13963f0275a0SJung-uk Kim         case ACPI_DMT_UINT40:
13973f0275a0SJung-uk Kim         case ACPI_DMT_UINT48:
13981a39cfb0SJung-uk Kim         case ACPI_DMT_UINT56:
13993f0275a0SJung-uk Kim         case ACPI_DMT_UINT64:
14003f0275a0SJung-uk Kim             /*
14013f0275a0SJung-uk Kim              * Dump bytes - high byte first, low byte last.
14023f0275a0SJung-uk Kim              * Note: All ACPI tables are little-endian.
14033f0275a0SJung-uk Kim              */
1404313a0c13SJung-uk Kim             Value = 0;
14053f0275a0SJung-uk Kim             for (Temp8 = (UINT8) ByteLength; Temp8 > 0; Temp8--)
1406a9f12690SJung-uk Kim             {
14073f0275a0SJung-uk Kim                 AcpiOsPrintf ("%2.2X", Target[Temp8 - 1]);
1408313a0c13SJung-uk Kim                 Value |= Target[Temp8 - 1];
1409313a0c13SJung-uk Kim                 Value <<= 8;
1410a9f12690SJung-uk Kim             }
1411313a0c13SJung-uk Kim 
1412313a0c13SJung-uk Kim             if (!Value && (Info->Flags & DT_DESCRIBES_OPTIONAL))
1413313a0c13SJung-uk Kim             {
1414313a0c13SJung-uk Kim                 AcpiOsPrintf (" [Optional field not present]");
1415313a0c13SJung-uk Kim             }
1416313a0c13SJung-uk Kim 
1417a9f12690SJung-uk Kim             AcpiOsPrintf ("\n");
14181a39cfb0SJung-uk Kim             break;
14191a39cfb0SJung-uk Kim 
14200b94ba42SJung-uk Kim         case ACPI_DMT_BUF7:
14218d744e47SJung-uk Kim         case ACPI_DMT_BUF10:
1422493deb39SJung-uk Kim         case ACPI_DMT_BUF12:
1423d6dd1baeSJung-uk Kim         case ACPI_DMT_BUF16:
14241b7a2680SJung-uk Kim         case ACPI_DMT_BUF18:
1425*92f570c3SJung-uk Kim         case ACPI_DMT_BUF32:
1426*92f570c3SJung-uk Kim         case ACPI_DMT_BUF112:
1427dcbce41eSJung-uk Kim         case ACPI_DMT_BUF128:
14280b94ba42SJung-uk Kim             /*
14290b94ba42SJung-uk Kim              * Buffer: Size depends on the opcode and was set above.
14300b94ba42SJung-uk Kim              * Each hex byte is separated with a space.
1431d052a1ccSJung-uk Kim              * Multiple lines are separated by line continuation char.
14320b94ba42SJung-uk Kim              */
1433dcbce41eSJung-uk Kim             for (Temp16 = 0; Temp16 < ByteLength; Temp16++)
1434d6dd1baeSJung-uk Kim             {
1435dcbce41eSJung-uk Kim                 AcpiOsPrintf ("%2.2X", Target[Temp16]);
1436dcbce41eSJung-uk Kim                 if ((UINT32) (Temp16 + 1) < ByteLength)
1437dcbce41eSJung-uk Kim                 {
1438dcbce41eSJung-uk Kim                     if ((Temp16 > 0) && (!((Temp16+1) % 16)))
1439dcbce41eSJung-uk Kim                     {
1440d052a1ccSJung-uk Kim                         AcpiOsPrintf (" \\\n"); /* Line continuation */
1441dcbce41eSJung-uk Kim                         AcpiDmLineHeader (0, 0, NULL);
1442dcbce41eSJung-uk Kim                     }
1443dcbce41eSJung-uk Kim                     else
1444a88e22b7SJung-uk Kim                     {
14450b94ba42SJung-uk Kim                         AcpiOsPrintf (" ");
1446a88e22b7SJung-uk Kim                     }
1447d6dd1baeSJung-uk Kim                 }
1448dcbce41eSJung-uk Kim             }
1449f8146b88SJung-uk Kim 
1450d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\n");
1451d6dd1baeSJung-uk Kim             break;
1452d6dd1baeSJung-uk Kim 
1453d244b227SJung-uk Kim         case ACPI_DMT_UUID:
1454d244b227SJung-uk Kim 
1455d244b227SJung-uk Kim             /* Convert 16-byte UUID buffer to 36-byte formatted UUID string */
1456d244b227SJung-uk Kim 
14571970d693SJung-uk Kim             (void) AcpiUtConvertUuidToString ((char *) Target, AslGbl_MsgBuffer);
1458d244b227SJung-uk Kim 
14596f1f1a63SJung-uk Kim             AcpiOsPrintf ("%s\n", AslGbl_MsgBuffer);
1460d244b227SJung-uk Kim             break;
1461d244b227SJung-uk Kim 
14621a39cfb0SJung-uk Kim         case ACPI_DMT_STRING:
14631a39cfb0SJung-uk Kim 
1464d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%s\"\n", ACPI_CAST_PTR (char, Target));
14651a39cfb0SJung-uk Kim             break;
14661a39cfb0SJung-uk Kim 
14671970d693SJung-uk Kim         case ACPI_DMT_IVRS_UNTERMINATED_STRING:
14681970d693SJung-uk Kim 
14691970d693SJung-uk Kim             AcpiOsPrintf ("\"%.*s\"\n", ByteLength, ACPI_CAST_PTR (char, Target));
14701970d693SJung-uk Kim             break;
14711970d693SJung-uk Kim 
14721a39cfb0SJung-uk Kim         /* Fixed length ASCII name fields */
14731a39cfb0SJung-uk Kim 
14741a39cfb0SJung-uk Kim         case ACPI_DMT_SIG:
14751a39cfb0SJung-uk Kim 
1476f8146b88SJung-uk Kim             AcpiUtCheckAndRepairAscii (Target, RepairedName, 4);
1477d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%.4s\"    ", RepairedName);
1478f8146b88SJung-uk Kim 
1479a371a5fdSJung-uk Kim             TableData = AcpiAhGetTableInfo (ACPI_CAST_PTR (char, Target));
14801a39cfb0SJung-uk Kim             if (TableData)
14811a39cfb0SJung-uk Kim             {
1482a371a5fdSJung-uk Kim                 AcpiOsPrintf (STRING_FORMAT, TableData->Description);
14831a39cfb0SJung-uk Kim             }
1484d052a1ccSJung-uk Kim             else
1485d052a1ccSJung-uk Kim             {
14861a39cfb0SJung-uk Kim                 AcpiOsPrintf ("\n");
1487d052a1ccSJung-uk Kim             }
14881a39cfb0SJung-uk Kim             break;
14891a39cfb0SJung-uk Kim 
14901a39cfb0SJung-uk Kim         case ACPI_DMT_NAME4:
14911a39cfb0SJung-uk Kim 
1492f8146b88SJung-uk Kim             AcpiUtCheckAndRepairAscii (Target, RepairedName, 4);
1493d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%.4s\"\n", RepairedName);
14941a39cfb0SJung-uk Kim             break;
14951a39cfb0SJung-uk Kim 
14961a39cfb0SJung-uk Kim         case ACPI_DMT_NAME6:
14971a39cfb0SJung-uk Kim 
1498f8146b88SJung-uk Kim             AcpiUtCheckAndRepairAscii (Target, RepairedName, 6);
1499d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%.6s\"\n", RepairedName);
15001a39cfb0SJung-uk Kim             break;
15011a39cfb0SJung-uk Kim 
15021a39cfb0SJung-uk Kim         case ACPI_DMT_NAME8:
15031a39cfb0SJung-uk Kim 
1504f8146b88SJung-uk Kim             AcpiUtCheckAndRepairAscii (Target, RepairedName, 8);
1505d6dd1baeSJung-uk Kim             AcpiOsPrintf ("\"%.8s\"\n", RepairedName);
15061a39cfb0SJung-uk Kim             break;
15071a39cfb0SJung-uk Kim 
15081a39cfb0SJung-uk Kim         /* Special Data Types */
15091a39cfb0SJung-uk Kim 
15101a39cfb0SJung-uk Kim         case ACPI_DMT_CHKSUM:
15111a39cfb0SJung-uk Kim 
15121a39cfb0SJung-uk Kim             /* Checksum, display and validate */
15131a39cfb0SJung-uk Kim 
15141a39cfb0SJung-uk Kim             AcpiOsPrintf ("%2.2X", *Target);
15159a4bc520SJung-uk Kim             Temp8 = AcpiUtGenerateChecksum (Table,
1516a88e22b7SJung-uk Kim                 ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length,
1517a88e22b7SJung-uk Kim                 ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum);
15187cf3e94aSJung-uk Kim 
15191a39cfb0SJung-uk Kim             if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum)
15201a39cfb0SJung-uk Kim             {
15211a39cfb0SJung-uk Kim                 AcpiOsPrintf (
15221a39cfb0SJung-uk Kim                     "     /* Incorrect checksum, should be %2.2X */", Temp8);
15231a39cfb0SJung-uk Kim             }
1524f8146b88SJung-uk Kim 
15251a39cfb0SJung-uk Kim             AcpiOsPrintf ("\n");
15261a39cfb0SJung-uk Kim             break;
15271a39cfb0SJung-uk Kim 
15281a39cfb0SJung-uk Kim         case ACPI_DMT_SPACEID:
15291a39cfb0SJung-uk Kim 
15301a39cfb0SJung-uk Kim             /* Address Space ID */
15311a39cfb0SJung-uk Kim 
1532d052a1ccSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiUtGetRegionName (*Target));
15331a39cfb0SJung-uk Kim             break;
15341a39cfb0SJung-uk Kim 
15355a77b11bSJung-uk Kim         case ACPI_DMT_ACCWIDTH:
15365a77b11bSJung-uk Kim 
15375a77b11bSJung-uk Kim             /* Encoded Access Width */
15385a77b11bSJung-uk Kim 
15395a77b11bSJung-uk Kim             Temp8 = *Target;
15405a77b11bSJung-uk Kim             if (Temp8 > ACPI_GAS_WIDTH_RESERVED)
15415a77b11bSJung-uk Kim             {
15425a77b11bSJung-uk Kim                 Temp8 = ACPI_GAS_WIDTH_RESERVED;
15435a77b11bSJung-uk Kim             }
15445a77b11bSJung-uk Kim 
15457cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmGasAccessWidth[Temp8]);
15465a77b11bSJung-uk Kim             break;
15475a77b11bSJung-uk Kim 
15481a39cfb0SJung-uk Kim         case ACPI_DMT_GAS:
15491a39cfb0SJung-uk Kim 
15501a39cfb0SJung-uk Kim             /* Generic Address Structure */
15511a39cfb0SJung-uk Kim 
1552d052a1ccSJung-uk Kim             AcpiOsPrintf (STRING_FORMAT, "Generic Address Structure");
1553fe0f0bbbSJung-uk Kim             Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target,
1554d6dd1baeSJung-uk Kim                 sizeof (ACPI_GENERIC_ADDRESS), AcpiDmTableInfoGas);
1555fe0f0bbbSJung-uk Kim             if (ACPI_FAILURE (Status))
1556fe0f0bbbSJung-uk Kim             {
1557fe0f0bbbSJung-uk Kim                 return (Status);
1558fe0f0bbbSJung-uk Kim             }
1559fe0f0bbbSJung-uk Kim 
1560a9f12690SJung-uk Kim             AcpiOsPrintf ("\n");
1561a9f12690SJung-uk Kim             LastOutputBlankLine = TRUE;
1562a9f12690SJung-uk Kim             break;
1563a9f12690SJung-uk Kim 
156497c0b5abSJung-uk Kim         case ACPI_DMT_AEST:
156597c0b5abSJung-uk Kim 
156697c0b5abSJung-uk Kim             /* AEST subtable types */
156797c0b5abSJung-uk Kim 
156897c0b5abSJung-uk Kim             Temp8 = *Target;
156997c0b5abSJung-uk Kim             if (Temp8 > ACPI_AEST_NODE_TYPE_RESERVED)
157097c0b5abSJung-uk Kim             {
157197c0b5abSJung-uk Kim                 Temp8 = ACPI_AEST_NODE_TYPE_RESERVED;
157297c0b5abSJung-uk Kim             }
157397c0b5abSJung-uk Kim 
157497c0b5abSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
157597c0b5abSJung-uk Kim                 AcpiDmAestSubnames[Temp8]);
157697c0b5abSJung-uk Kim             break;
157797c0b5abSJung-uk Kim 
157897c0b5abSJung-uk Kim         case ACPI_DMT_AEST_CACHE:
157997c0b5abSJung-uk Kim 
158097c0b5abSJung-uk Kim             /* AEST cache resource subtable */
158197c0b5abSJung-uk Kim 
158297c0b5abSJung-uk Kim             Temp32 = *Target;
158397c0b5abSJung-uk Kim             if (Temp32 > ACPI_AEST_CACHE_RESERVED)
158497c0b5abSJung-uk Kim             {
158597c0b5abSJung-uk Kim                 Temp32 = ACPI_AEST_CACHE_RESERVED;
158697c0b5abSJung-uk Kim             }
158797c0b5abSJung-uk Kim 
158897c0b5abSJung-uk Kim             AcpiOsPrintf (UINT32_FORMAT, *Target,
158997c0b5abSJung-uk Kim                 AcpiDmAestCacheNames[Temp32]);
159097c0b5abSJung-uk Kim             break;
159197c0b5abSJung-uk Kim 
159297c0b5abSJung-uk Kim         case ACPI_DMT_AEST_GIC:
159397c0b5abSJung-uk Kim 
159497c0b5abSJung-uk Kim             /* AEST GIC error subtable */
159597c0b5abSJung-uk Kim 
159697c0b5abSJung-uk Kim             Temp32 = *Target;
159797c0b5abSJung-uk Kim             if (Temp32 > ACPI_AEST_GIC_RESERVED)
159897c0b5abSJung-uk Kim             {
159997c0b5abSJung-uk Kim                 Temp32 = ACPI_AEST_GIC_RESERVED;
160097c0b5abSJung-uk Kim             }
160197c0b5abSJung-uk Kim 
160297c0b5abSJung-uk Kim             AcpiOsPrintf (UINT32_FORMAT, *Target,
160397c0b5abSJung-uk Kim                 AcpiDmAestGicNames[Temp32]);
160497c0b5abSJung-uk Kim             break;
160597c0b5abSJung-uk Kim 
160697c0b5abSJung-uk Kim         case ACPI_DMT_AEST_RES:
160797c0b5abSJung-uk Kim 
160897c0b5abSJung-uk Kim             /* AEST resource type subtable */
160997c0b5abSJung-uk Kim 
161097c0b5abSJung-uk Kim             Temp8 = *Target;
161197c0b5abSJung-uk Kim             if (Temp8 > ACPI_AEST_RESOURCE_RESERVED)
161297c0b5abSJung-uk Kim             {
161397c0b5abSJung-uk Kim                 Temp8 = ACPI_AEST_RESOURCE_RESERVED;
161497c0b5abSJung-uk Kim             }
161597c0b5abSJung-uk Kim 
161697c0b5abSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
161797c0b5abSJung-uk Kim                 AcpiDmAestResourceNames[Temp8]);
161897c0b5abSJung-uk Kim             break;
161997c0b5abSJung-uk Kim 
162097c0b5abSJung-uk Kim         case ACPI_DMT_AEST_XFACE:
162197c0b5abSJung-uk Kim 
162297c0b5abSJung-uk Kim             /* AEST interface structure types */
162397c0b5abSJung-uk Kim 
162497c0b5abSJung-uk Kim             Temp8 = *Target;
162597c0b5abSJung-uk Kim             if (Temp8 > ACPI_AEST_XFACE_RESERVED)
162697c0b5abSJung-uk Kim             {
162797c0b5abSJung-uk Kim                 Temp8 = ACPI_AEST_XFACE_RESERVED;
162897c0b5abSJung-uk Kim             }
162997c0b5abSJung-uk Kim 
163097c0b5abSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
163197c0b5abSJung-uk Kim                 AcpiDmAestXfaceNames[Temp8]);
163297c0b5abSJung-uk Kim             break;
163397c0b5abSJung-uk Kim 
163497c0b5abSJung-uk Kim         case ACPI_DMT_AEST_XRUPT:
163597c0b5abSJung-uk Kim 
163697c0b5abSJung-uk Kim             /* AEST interrupt structure types */
163797c0b5abSJung-uk Kim 
163897c0b5abSJung-uk Kim             Temp8 = *Target;
163997c0b5abSJung-uk Kim             if (Temp8 > ACPI_AEST_XRUPT_RESERVED)
164097c0b5abSJung-uk Kim             {
164197c0b5abSJung-uk Kim                 Temp8 = ACPI_AEST_XRUPT_RESERVED;
164297c0b5abSJung-uk Kim             }
164397c0b5abSJung-uk Kim 
164497c0b5abSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
164597c0b5abSJung-uk Kim                 AcpiDmAestXruptNames[Temp8]);
164697c0b5abSJung-uk Kim             break;
164797c0b5abSJung-uk Kim 
1648722b1667SJung-uk Kim         case ACPI_DMT_ASPT:
1649722b1667SJung-uk Kim             /* ASPT subtable types */
1650722b1667SJung-uk Kim             Temp16 = ACPI_GET16(Target);
1651722b1667SJung-uk Kim             if (Temp16 > ACPI_ASPT_TYPE_UNKNOWN)
1652722b1667SJung-uk Kim             {
1653722b1667SJung-uk Kim                 Temp16 = ACPI_ASPT_TYPE_UNKNOWN;
1654722b1667SJung-uk Kim             }
1655722b1667SJung-uk Kim 
1656722b1667SJung-uk Kim             AcpiOsPrintf(UINT16_FORMAT, Temp16, AcpiDmAsptSubnames[Temp16]);
1657722b1667SJung-uk Kim             break;
1658722b1667SJung-uk Kim 
1659a9f12690SJung-uk Kim         case ACPI_DMT_ASF:
1660a9f12690SJung-uk Kim 
1661a9f12690SJung-uk Kim             /* ASF subtable types */
1662a9f12690SJung-uk Kim 
1663a9f12690SJung-uk Kim             Temp16 = (UINT16) ((*Target) & 0x7F);  /* Top bit can be zero or one */
1664a9f12690SJung-uk Kim             if (Temp16 > ACPI_ASF_TYPE_RESERVED)
1665a9f12690SJung-uk Kim             {
1666a9f12690SJung-uk Kim                 Temp16 = ACPI_ASF_TYPE_RESERVED;
1667a9f12690SJung-uk Kim             }
1668a9f12690SJung-uk Kim 
1669d052a1ccSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]);
16701a39cfb0SJung-uk Kim             break;
16711a39cfb0SJung-uk Kim 
16729a4bc520SJung-uk Kim         case ACPI_DMT_CDAT:
16739a4bc520SJung-uk Kim 
16749a4bc520SJung-uk Kim             /* CDAT subtable types */
16759a4bc520SJung-uk Kim 
16769a4bc520SJung-uk Kim             Temp8 = *Target;
16779a4bc520SJung-uk Kim             if (Temp8 > ACPI_CDAT_TYPE_RESERVED)
16789a4bc520SJung-uk Kim             {
16799a4bc520SJung-uk Kim                 Temp8 = ACPI_CDAT_TYPE_RESERVED;
16809a4bc520SJung-uk Kim             }
16819a4bc520SJung-uk Kim 
16829a4bc520SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
16839a4bc520SJung-uk Kim                 AcpiDmCdatSubnames[Temp8]);
16849a4bc520SJung-uk Kim             break;
16859a4bc520SJung-uk Kim 
1686cfd1ed46SJung-uk Kim         case ACPI_DMT_CEDT:
1687cfd1ed46SJung-uk Kim 
1688cfd1ed46SJung-uk Kim             /* CEDT subtable types */
1689cfd1ed46SJung-uk Kim 
1690cfd1ed46SJung-uk Kim             Temp8 = *Target;
1691cfd1ed46SJung-uk Kim             if (Temp8 > ACPI_CEDT_TYPE_RESERVED)
1692cfd1ed46SJung-uk Kim             {
1693cfd1ed46SJung-uk Kim                 Temp8 = ACPI_CEDT_TYPE_RESERVED;
1694cfd1ed46SJung-uk Kim             }
1695cfd1ed46SJung-uk Kim 
1696cfd1ed46SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
1697cfd1ed46SJung-uk Kim                 AcpiDmCedtSubnames[Temp8]);
1698cfd1ed46SJung-uk Kim             break;
1699cfd1ed46SJung-uk Kim 
17001a39cfb0SJung-uk Kim         case ACPI_DMT_DMAR:
17011a39cfb0SJung-uk Kim 
17021a39cfb0SJung-uk Kim             /* DMAR subtable types */
17031a39cfb0SJung-uk Kim 
1704a9f12690SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
17051a39cfb0SJung-uk Kim             if (Temp16 > ACPI_DMAR_TYPE_RESERVED)
17061a39cfb0SJung-uk Kim             {
17071a39cfb0SJung-uk Kim                 Temp16 = ACPI_DMAR_TYPE_RESERVED;
17081a39cfb0SJung-uk Kim             }
17091a39cfb0SJung-uk Kim 
17107cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
17117cf3e94aSJung-uk Kim                 AcpiDmDmarSubnames[Temp16]);
17121a39cfb0SJung-uk Kim             break;
17131a39cfb0SJung-uk Kim 
1714313a0c13SJung-uk Kim         case ACPI_DMT_DMAR_SCOPE:
1715313a0c13SJung-uk Kim 
1716313a0c13SJung-uk Kim             /* DMAR device scope types */
1717313a0c13SJung-uk Kim 
1718313a0c13SJung-uk Kim             Temp8 = *Target;
1719313a0c13SJung-uk Kim             if (Temp8 > ACPI_DMAR_SCOPE_TYPE_RESERVED)
1720313a0c13SJung-uk Kim             {
1721313a0c13SJung-uk Kim                 Temp8 = ACPI_DMAR_SCOPE_TYPE_RESERVED;
1722313a0c13SJung-uk Kim             }
1723313a0c13SJung-uk Kim 
17247cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17257cf3e94aSJung-uk Kim                 AcpiDmDmarScope[Temp8]);
1726313a0c13SJung-uk Kim             break;
1727313a0c13SJung-uk Kim 
1728a88e22b7SJung-uk Kim         case ACPI_DMT_EINJACT:
1729a88e22b7SJung-uk Kim 
1730a88e22b7SJung-uk Kim             /* EINJ Action types */
1731a88e22b7SJung-uk Kim 
1732a88e22b7SJung-uk Kim             Temp8 = *Target;
1733a88e22b7SJung-uk Kim             if (Temp8 > ACPI_EINJ_ACTION_RESERVED)
1734a88e22b7SJung-uk Kim             {
1735a88e22b7SJung-uk Kim                 Temp8 = ACPI_EINJ_ACTION_RESERVED;
1736a88e22b7SJung-uk Kim             }
1737a88e22b7SJung-uk Kim 
17387cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17397cf3e94aSJung-uk Kim                 AcpiDmEinjActions[Temp8]);
1740a88e22b7SJung-uk Kim             break;
1741a88e22b7SJung-uk Kim 
1742a88e22b7SJung-uk Kim         case ACPI_DMT_EINJINST:
1743a88e22b7SJung-uk Kim 
1744a88e22b7SJung-uk Kim             /* EINJ Instruction types */
1745a88e22b7SJung-uk Kim 
1746a88e22b7SJung-uk Kim             Temp8 = *Target;
1747a88e22b7SJung-uk Kim             if (Temp8 > ACPI_EINJ_INSTRUCTION_RESERVED)
1748a88e22b7SJung-uk Kim             {
1749a88e22b7SJung-uk Kim                 Temp8 = ACPI_EINJ_INSTRUCTION_RESERVED;
1750a88e22b7SJung-uk Kim             }
1751a88e22b7SJung-uk Kim 
17527cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17537cf3e94aSJung-uk Kim                 AcpiDmEinjInstructions[Temp8]);
1754a88e22b7SJung-uk Kim             break;
1755a88e22b7SJung-uk Kim 
1756a88e22b7SJung-uk Kim         case ACPI_DMT_ERSTACT:
1757a88e22b7SJung-uk Kim 
1758a88e22b7SJung-uk Kim             /* ERST Action types */
1759a88e22b7SJung-uk Kim 
1760a88e22b7SJung-uk Kim             Temp8 = *Target;
1761a88e22b7SJung-uk Kim             if (Temp8 > ACPI_ERST_ACTION_RESERVED)
1762a88e22b7SJung-uk Kim             {
1763a88e22b7SJung-uk Kim                 Temp8 = ACPI_ERST_ACTION_RESERVED;
1764a88e22b7SJung-uk Kim             }
1765a88e22b7SJung-uk Kim 
17667cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17677cf3e94aSJung-uk Kim                 AcpiDmErstActions[Temp8]);
1768a88e22b7SJung-uk Kim             break;
1769a88e22b7SJung-uk Kim 
1770a88e22b7SJung-uk Kim         case ACPI_DMT_ERSTINST:
1771a88e22b7SJung-uk Kim 
1772a88e22b7SJung-uk Kim             /* ERST Instruction types */
1773a88e22b7SJung-uk Kim 
1774a88e22b7SJung-uk Kim             Temp8 = *Target;
1775a88e22b7SJung-uk Kim             if (Temp8 > ACPI_ERST_INSTRUCTION_RESERVED)
1776a88e22b7SJung-uk Kim             {
1777a88e22b7SJung-uk Kim                 Temp8 = ACPI_ERST_INSTRUCTION_RESERVED;
1778a88e22b7SJung-uk Kim             }
1779a88e22b7SJung-uk Kim 
17807cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17817cf3e94aSJung-uk Kim                 AcpiDmErstInstructions[Temp8]);
1782a88e22b7SJung-uk Kim             break;
1783a88e22b7SJung-uk Kim 
1784313a0c13SJung-uk Kim         case ACPI_DMT_GTDT:
1785313a0c13SJung-uk Kim 
1786313a0c13SJung-uk Kim             /* GTDT subtable types */
1787313a0c13SJung-uk Kim 
1788313a0c13SJung-uk Kim             Temp8 = *Target;
1789313a0c13SJung-uk Kim             if (Temp8 > ACPI_GTDT_TYPE_RESERVED)
1790313a0c13SJung-uk Kim             {
1791313a0c13SJung-uk Kim                 Temp8 = ACPI_GTDT_TYPE_RESERVED;
1792313a0c13SJung-uk Kim             }
1793313a0c13SJung-uk Kim 
17947cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
17957cf3e94aSJung-uk Kim                 AcpiDmGtdtSubnames[Temp8]);
1796313a0c13SJung-uk Kim             break;
1797313a0c13SJung-uk Kim 
1798a9f12690SJung-uk Kim         case ACPI_DMT_HEST:
1799a9f12690SJung-uk Kim 
1800a9f12690SJung-uk Kim             /* HEST subtable types */
1801a9f12690SJung-uk Kim 
1802a9f12690SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
1803a9f12690SJung-uk Kim             if (Temp16 > ACPI_HEST_TYPE_RESERVED)
1804a9f12690SJung-uk Kim             {
1805a9f12690SJung-uk Kim                 Temp16 = ACPI_HEST_TYPE_RESERVED;
1806a9f12690SJung-uk Kim             }
1807a9f12690SJung-uk Kim 
18087cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
18097cf3e94aSJung-uk Kim                 AcpiDmHestSubnames[Temp16]);
1810a9f12690SJung-uk Kim             break;
1811a9f12690SJung-uk Kim 
1812a9f12690SJung-uk Kim         case ACPI_DMT_HESTNTFY:
1813a9f12690SJung-uk Kim 
18147cf3e94aSJung-uk Kim             AcpiOsPrintf (STRING_FORMAT,
18157cf3e94aSJung-uk Kim                 "Hardware Error Notification Structure");
18167cf3e94aSJung-uk Kim 
1817fe0f0bbbSJung-uk Kim             Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target,
1818d6dd1baeSJung-uk Kim                 sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify);
1819fe0f0bbbSJung-uk Kim             if (ACPI_FAILURE (Status))
1820fe0f0bbbSJung-uk Kim             {
1821fe0f0bbbSJung-uk Kim                 return (Status);
1822fe0f0bbbSJung-uk Kim             }
1823fe0f0bbbSJung-uk Kim 
1824a9f12690SJung-uk Kim             AcpiOsPrintf ("\n");
1825a9f12690SJung-uk Kim             LastOutputBlankLine = TRUE;
1826a9f12690SJung-uk Kim             break;
1827a9f12690SJung-uk Kim 
1828a9f12690SJung-uk Kim         case ACPI_DMT_HESTNTYP:
1829a9f12690SJung-uk Kim 
1830a9f12690SJung-uk Kim             /* HEST Notify types */
1831a9f12690SJung-uk Kim 
1832a9f12690SJung-uk Kim             Temp8 = *Target;
1833a9f12690SJung-uk Kim             if (Temp8 > ACPI_HEST_NOTIFY_RESERVED)
1834a9f12690SJung-uk Kim             {
1835a9f12690SJung-uk Kim                 Temp8 = ACPI_HEST_NOTIFY_RESERVED;
1836a9f12690SJung-uk Kim             }
1837a9f12690SJung-uk Kim 
18387cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
18397cf3e94aSJung-uk Kim                 AcpiDmHestNotifySubnames[Temp8]);
1840a9f12690SJung-uk Kim             break;
1841a9f12690SJung-uk Kim 
1842af051161SJung-uk Kim         case ACPI_DMT_HMAT:
1843af051161SJung-uk Kim 
1844af051161SJung-uk Kim             /* HMAT subtable types */
1845af051161SJung-uk Kim 
1846af051161SJung-uk Kim             Temp16 = *Target;
1847af051161SJung-uk Kim             if (Temp16 > ACPI_HMAT_TYPE_RESERVED)
1848af051161SJung-uk Kim             {
1849af051161SJung-uk Kim                 Temp16 = ACPI_HMAT_TYPE_RESERVED;
1850af051161SJung-uk Kim             }
1851af051161SJung-uk Kim 
1852af051161SJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, *Target,
1853af051161SJung-uk Kim                 AcpiDmHmatSubnames[Temp16]);
1854af051161SJung-uk Kim             break;
1855af051161SJung-uk Kim 
1856a371a5fdSJung-uk Kim         case ACPI_DMT_IORTMEM:
1857a371a5fdSJung-uk Kim 
1858a371a5fdSJung-uk Kim             AcpiOsPrintf (STRING_FORMAT,
1859a371a5fdSJung-uk Kim                 "IORT Memory Access Properties");
1860a371a5fdSJung-uk Kim 
1861fe0f0bbbSJung-uk Kim             Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target,
1862a371a5fdSJung-uk Kim                 sizeof (ACPI_IORT_MEMORY_ACCESS), AcpiDmTableInfoIortAcc);
1863fe0f0bbbSJung-uk Kim             if (ACPI_FAILURE (Status))
1864fe0f0bbbSJung-uk Kim             {
1865fe0f0bbbSJung-uk Kim                 return (Status);
1866fe0f0bbbSJung-uk Kim             }
1867fe0f0bbbSJung-uk Kim 
1868a371a5fdSJung-uk Kim             LastOutputBlankLine = TRUE;
1869a371a5fdSJung-uk Kim             break;
1870a371a5fdSJung-uk Kim 
18711a39cfb0SJung-uk Kim         case ACPI_DMT_MADT:
18721a39cfb0SJung-uk Kim 
18731a39cfb0SJung-uk Kim             /* MADT subtable types */
18741a39cfb0SJung-uk Kim 
18751a39cfb0SJung-uk Kim             Temp8 = *Target;
1876ab71bbb7SJung-uk Kim             if ((Temp8 >= ACPI_MADT_TYPE_RESERVED) && (Temp8 < ACPI_MADT_TYPE_OEM_RESERVED))
18771a39cfb0SJung-uk Kim             {
18781a39cfb0SJung-uk Kim                 Temp8 = ACPI_MADT_TYPE_RESERVED;
18791a39cfb0SJung-uk Kim             }
1880ab71bbb7SJung-uk Kim             else if (Temp8 >= ACPI_MADT_TYPE_OEM_RESERVED)
1881ab71bbb7SJung-uk Kim             {
1882ab71bbb7SJung-uk Kim                 Temp8 = ACPI_MADT_TYPE_RESERVED + 1;
1883ab71bbb7SJung-uk Kim             }
18847cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
18857cf3e94aSJung-uk Kim                 AcpiDmMadtSubnames[Temp8]);
18861a39cfb0SJung-uk Kim             break;
18871a39cfb0SJung-uk Kim 
1888722b1667SJung-uk Kim         case ACPI_DMT_MPAM_LOCATOR:
1889722b1667SJung-uk Kim 
1890722b1667SJung-uk Kim             /* MPAM subtable locator types */
1891722b1667SJung-uk Kim 
1892722b1667SJung-uk Kim             Temp8 = *Target;
1893722b1667SJung-uk Kim             if (Temp8 > ACPI_MPAM_LOCATION_TYPE_INTERCONNECT)
1894722b1667SJung-uk Kim             {
1895722b1667SJung-uk Kim                 Temp8 = ACPI_MPAM_LOCATION_TYPE_INTERCONNECT + 1;
1896722b1667SJung-uk Kim             }
1897722b1667SJung-uk Kim 
1898722b1667SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
1899722b1667SJung-uk Kim                 AcpiDmMpamSubnames[Temp8]);
1900722b1667SJung-uk Kim             break;
1901722b1667SJung-uk Kim 
1902a371a5fdSJung-uk Kim         case ACPI_DMT_NFIT:
1903a371a5fdSJung-uk Kim 
1904a371a5fdSJung-uk Kim             /* NFIT subtable types */
1905a371a5fdSJung-uk Kim 
1906a371a5fdSJung-uk Kim             Temp16 = ACPI_GET16 (Target);
1907a371a5fdSJung-uk Kim             if (Temp16 > ACPI_NFIT_TYPE_RESERVED)
1908a371a5fdSJung-uk Kim             {
1909a371a5fdSJung-uk Kim                 Temp16 = ACPI_NFIT_TYPE_RESERVED;
1910a371a5fdSJung-uk Kim             }
1911a371a5fdSJung-uk Kim 
1912a371a5fdSJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
1913a371a5fdSJung-uk Kim                 AcpiDmNfitSubnames[Temp16]);
1914a371a5fdSJung-uk Kim             break;
1915a371a5fdSJung-uk Kim 
1916313a0c13SJung-uk Kim         case ACPI_DMT_PCCT:
1917313a0c13SJung-uk Kim 
1918313a0c13SJung-uk Kim             /* PCCT subtable types */
1919313a0c13SJung-uk Kim 
1920313a0c13SJung-uk Kim             Temp8 = *Target;
1921313a0c13SJung-uk Kim             if (Temp8 > ACPI_PCCT_TYPE_RESERVED)
1922313a0c13SJung-uk Kim             {
1923313a0c13SJung-uk Kim                 Temp8 = ACPI_PCCT_TYPE_RESERVED;
1924313a0c13SJung-uk Kim             }
1925313a0c13SJung-uk Kim 
19267cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
19277cf3e94aSJung-uk Kim                 AcpiDmPcctSubnames[Temp8]);
1928313a0c13SJung-uk Kim             break;
1929313a0c13SJung-uk Kim 
1930cfd1ed46SJung-uk Kim         case ACPI_DMT_PHAT:
1931cfd1ed46SJung-uk Kim 
19329a4bc520SJung-uk Kim             /* PHAT subtable types */
1933cfd1ed46SJung-uk Kim 
19349a4bc520SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
1935cfd1ed46SJung-uk Kim             if (Temp16 > ACPI_PHAT_TYPE_RESERVED)
1936cfd1ed46SJung-uk Kim             {
1937cfd1ed46SJung-uk Kim                 Temp16 = ACPI_PHAT_TYPE_RESERVED;
1938cfd1ed46SJung-uk Kim             }
1939cfd1ed46SJung-uk Kim 
1940cfd1ed46SJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
1941cfd1ed46SJung-uk Kim                 AcpiDmPhatSubnames[Temp16]);
1942cfd1ed46SJung-uk Kim             break;
1943cfd1ed46SJung-uk Kim 
19443f0275a0SJung-uk Kim         case ACPI_DMT_PMTT:
19453f0275a0SJung-uk Kim 
19463f0275a0SJung-uk Kim             /* PMTT subtable types */
19473f0275a0SJung-uk Kim 
19483f0275a0SJung-uk Kim             Temp8 = *Target;
1949cfd1ed46SJung-uk Kim             if (Temp8 == ACPI_PMTT_TYPE_VENDOR)
1950cfd1ed46SJung-uk Kim             {
1951cfd1ed46SJung-uk Kim                 Temp8 = ACPI_PMTT_TYPE_RESERVED + 1;
1952cfd1ed46SJung-uk Kim             }
1953cfd1ed46SJung-uk Kim             else if (Temp8 > ACPI_PMTT_TYPE_RESERVED)
19543f0275a0SJung-uk Kim             {
19553f0275a0SJung-uk Kim                 Temp8 = ACPI_PMTT_TYPE_RESERVED;
19563f0275a0SJung-uk Kim             }
19577cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
19587cf3e94aSJung-uk Kim                 AcpiDmPmttSubnames[Temp8]);
19593f0275a0SJung-uk Kim             break;
19603f0275a0SJung-uk Kim 
1961af051161SJung-uk Kim         case ACPI_DMT_PPTT:
1962af051161SJung-uk Kim 
1963af051161SJung-uk Kim             /* PPTT subtable types */
1964af051161SJung-uk Kim 
1965af051161SJung-uk Kim             Temp8 = *Target;
1966af051161SJung-uk Kim             if (Temp8 > ACPI_PPTT_TYPE_RESERVED)
1967af051161SJung-uk Kim             {
1968af051161SJung-uk Kim                 Temp8 = ACPI_PPTT_TYPE_RESERVED;
1969af051161SJung-uk Kim             }
1970af051161SJung-uk Kim 
1971af051161SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
1972af051161SJung-uk Kim                 AcpiDmPpttSubnames[Temp8]);
1973af051161SJung-uk Kim             break;
1974af051161SJung-uk Kim 
1975a371a5fdSJung-uk Kim         case ACPI_DMT_UNICODE:
197697c0b5abSJung-uk Kim         case ACPI_DMT_WPBT_UNICODE:
1977dcbce41eSJung-uk Kim 
1978a371a5fdSJung-uk Kim             if (ByteLength == 0)
1979a371a5fdSJung-uk Kim             {
1980a371a5fdSJung-uk Kim                 AcpiOsPrintf ("/* Zero-length Data */\n");
1981a371a5fdSJung-uk Kim                 break;
1982a371a5fdSJung-uk Kim             }
1983a371a5fdSJung-uk Kim 
19849a4bc520SJung-uk Kim             AcpiDmDumpUnicode (Table, 0, ByteLength);
1985a371a5fdSJung-uk Kim             break;
1986a371a5fdSJung-uk Kim 
1987a371a5fdSJung-uk Kim         case ACPI_DMT_RAW_BUFFER:
1988cfd1ed46SJung-uk Kim         case ACPI_DMT_BUFFER:
1989cfd1ed46SJung-uk Kim         case ACPI_DMT_PMTT_VENDOR:
1990a371a5fdSJung-uk Kim 
1991a371a5fdSJung-uk Kim             if (ByteLength == 0)
1992a371a5fdSJung-uk Kim             {
1993a371a5fdSJung-uk Kim                 AcpiOsPrintf ("/* Zero-length Data */\n");
1994a371a5fdSJung-uk Kim                 break;
1995a371a5fdSJung-uk Kim             }
1996a371a5fdSJung-uk Kim 
1997ab71bbb7SJung-uk Kim             AcpiDmDumpBuffer (Target, 0, ByteLength, CurrentOffset, NULL);
1998dcbce41eSJung-uk Kim             break;
1999dcbce41eSJung-uk Kim 
20001970d693SJung-uk Kim         case ACPI_DMT_RGRT:
20011970d693SJung-uk Kim 
20021970d693SJung-uk Kim             /* RGRT subtable types */
20031970d693SJung-uk Kim 
20041970d693SJung-uk Kim             Temp8 = *Target;
20051970d693SJung-uk Kim             if (Temp8 >= ACPI_RGRT_TYPE_RESERVED)
20061970d693SJung-uk Kim             {
20071970d693SJung-uk Kim                 Temp8 = ACPI_RGRT_TYPE_RESERVED0;
20081970d693SJung-uk Kim             }
20091970d693SJung-uk Kim 
20101970d693SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
20111970d693SJung-uk Kim                 AcpiDmRgrtSubnames[Temp8]);
20121970d693SJung-uk Kim             break;
20131970d693SJung-uk Kim 
201407c64d74SJung-uk Kim         case ACPI_DMT_RHCT:
201507c64d74SJung-uk Kim 
201607c64d74SJung-uk Kim             /* RHCT subtable types */
201707c64d74SJung-uk Kim 
201807c64d74SJung-uk Kim             Temp16 = ACPI_GET16 (Target);
201907c64d74SJung-uk Kim             if (Temp16 == ACPI_RHCT_NODE_TYPE_HART_INFO)
202007c64d74SJung-uk Kim             {
202107c64d74SJung-uk Kim                 Temp16 = ACPI_RHCT_NODE_TYPE_RESERVED;
202207c64d74SJung-uk Kim             }
202307c64d74SJung-uk Kim 
202407c64d74SJung-uk Kim             AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
202507c64d74SJung-uk Kim                 AcpiDmRhctSubnames[Temp16]);
202607c64d74SJung-uk Kim             break;
202707c64d74SJung-uk Kim 
202867d9aa44SJung-uk Kim         case ACPI_DMT_SDEV:
202967d9aa44SJung-uk Kim 
203067d9aa44SJung-uk Kim             /* SDEV subtable types */
203167d9aa44SJung-uk Kim 
203267d9aa44SJung-uk Kim             Temp8 = *Target;
203367d9aa44SJung-uk Kim             if (Temp8 > ACPI_SDEV_TYPE_RESERVED)
203467d9aa44SJung-uk Kim             {
203567d9aa44SJung-uk Kim                 Temp8 = ACPI_SDEV_TYPE_RESERVED;
203667d9aa44SJung-uk Kim             }
203767d9aa44SJung-uk Kim 
203867d9aa44SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
203967d9aa44SJung-uk Kim                 AcpiDmSdevSubnames[Temp8]);
204067d9aa44SJung-uk Kim             break;
204167d9aa44SJung-uk Kim 
20421a39cfb0SJung-uk Kim         case ACPI_DMT_SRAT:
20431a39cfb0SJung-uk Kim 
20441a39cfb0SJung-uk Kim             /* SRAT subtable types */
20451a39cfb0SJung-uk Kim 
20461a39cfb0SJung-uk Kim             Temp8 = *Target;
20471a39cfb0SJung-uk Kim             if (Temp8 > ACPI_SRAT_TYPE_RESERVED)
20481a39cfb0SJung-uk Kim             {
20491a39cfb0SJung-uk Kim                 Temp8 = ACPI_SRAT_TYPE_RESERVED;
20501a39cfb0SJung-uk Kim             }
20511a39cfb0SJung-uk Kim 
20527cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
20537cf3e94aSJung-uk Kim                 AcpiDmSratSubnames[Temp8]);
20541a39cfb0SJung-uk Kim             break;
20551a39cfb0SJung-uk Kim 
205667d9aa44SJung-uk Kim         case ACPI_DMT_TPM2:
205767d9aa44SJung-uk Kim 
205867d9aa44SJung-uk Kim             /* TPM2 Start Method types */
205967d9aa44SJung-uk Kim 
206067d9aa44SJung-uk Kim             Temp8 = *Target;
206167d9aa44SJung-uk Kim             if (Temp8 > ACPI_TPM2_RESERVED)
206267d9aa44SJung-uk Kim             {
206367d9aa44SJung-uk Kim                 Temp8 = ACPI_TPM2_RESERVED;
206467d9aa44SJung-uk Kim             }
206567d9aa44SJung-uk Kim 
206667d9aa44SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
206767d9aa44SJung-uk Kim                 AcpiDmTpm2Subnames[Temp8]);
206867d9aa44SJung-uk Kim             break;
206967d9aa44SJung-uk Kim 
207067d9aa44SJung-uk Kim 
2071a9f12690SJung-uk Kim         case ACPI_DMT_FADTPM:
2072a9f12690SJung-uk Kim 
2073a9f12690SJung-uk Kim             /* FADT Preferred PM Profile names */
2074a9f12690SJung-uk Kim 
2075a9f12690SJung-uk Kim             Temp8 = *Target;
2076a9f12690SJung-uk Kim             if (Temp8 > ACPI_FADT_PM_RESERVED)
2077a9f12690SJung-uk Kim             {
2078a9f12690SJung-uk Kim                 Temp8 = ACPI_FADT_PM_RESERVED;
2079a9f12690SJung-uk Kim             }
2080a9f12690SJung-uk Kim 
20817cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
20827cf3e94aSJung-uk Kim                 AcpiDmFadtProfiles[Temp8]);
2083a9f12690SJung-uk Kim             break;
2084a9f12690SJung-uk Kim 
2085d6dd1baeSJung-uk Kim         case ACPI_DMT_IVRS:
2086d6dd1baeSJung-uk Kim 
2087d6dd1baeSJung-uk Kim             /* IVRS subtable types */
2088d6dd1baeSJung-uk Kim 
2089d6dd1baeSJung-uk Kim             Temp8 = *Target;
2090d6dd1baeSJung-uk Kim             switch (Temp8)
2091d6dd1baeSJung-uk Kim             {
20923ee58df5SJung-uk Kim             case ACPI_IVRS_TYPE_HARDWARE1:
20933ee58df5SJung-uk Kim             case ACPI_IVRS_TYPE_HARDWARE2:
2094a9d8d09cSJung-uk Kim 
2095d6dd1baeSJung-uk Kim                 Name = AcpiDmIvrsSubnames[0];
2096d6dd1baeSJung-uk Kim                 break;
2097d6dd1baeSJung-uk Kim 
20981970d693SJung-uk Kim             case ACPI_IVRS_TYPE_HARDWARE3:
20991970d693SJung-uk Kim 
21001970d693SJung-uk Kim                 Name = AcpiDmIvrsSubnames[1];
21011970d693SJung-uk Kim                 break;
21021970d693SJung-uk Kim 
2103d6dd1baeSJung-uk Kim             case ACPI_IVRS_TYPE_MEMORY1:
2104d6dd1baeSJung-uk Kim             case ACPI_IVRS_TYPE_MEMORY2:
2105d6dd1baeSJung-uk Kim             case ACPI_IVRS_TYPE_MEMORY3:
2106a9d8d09cSJung-uk Kim 
21071970d693SJung-uk Kim                 Name = AcpiDmIvrsSubnames[2];
2108d6dd1baeSJung-uk Kim                 break;
2109d6dd1baeSJung-uk Kim 
2110d6dd1baeSJung-uk Kim             default:
2111a9d8d09cSJung-uk Kim 
21121970d693SJung-uk Kim                 Name = AcpiDmIvrsSubnames[3];
21131970d693SJung-uk Kim                 break;
21141970d693SJung-uk Kim             }
21151970d693SJung-uk Kim 
21161970d693SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, Name);
21171970d693SJung-uk Kim             break;
21181970d693SJung-uk Kim 
21191970d693SJung-uk Kim         case ACPI_DMT_IVRS_DE:
21201970d693SJung-uk Kim 
21211970d693SJung-uk Kim             /* IVRS device entry types */
21221970d693SJung-uk Kim 
21231970d693SJung-uk Kim             Temp8 = *Target;
21241970d693SJung-uk Kim             switch (Temp8)
21251970d693SJung-uk Kim             {
21261970d693SJung-uk Kim             case ACPI_IVRS_TYPE_ALL:
21271970d693SJung-uk Kim             case ACPI_IVRS_TYPE_SELECT:
21281970d693SJung-uk Kim             case ACPI_IVRS_TYPE_START:
21291970d693SJung-uk Kim             case ACPI_IVRS_TYPE_END:
21301970d693SJung-uk Kim 
21311970d693SJung-uk Kim                 Name = AcpiDmIvrsDevEntryNames[Temp8];
21321970d693SJung-uk Kim                 break;
21331970d693SJung-uk Kim 
21341970d693SJung-uk Kim             case ACPI_IVRS_TYPE_ALIAS_SELECT:
21351970d693SJung-uk Kim             case ACPI_IVRS_TYPE_ALIAS_START:
21361970d693SJung-uk Kim             case ACPI_IVRS_TYPE_EXT_SELECT:
21371970d693SJung-uk Kim             case ACPI_IVRS_TYPE_EXT_START:
21381970d693SJung-uk Kim             case ACPI_IVRS_TYPE_SPECIAL:
21391970d693SJung-uk Kim 
21401970d693SJung-uk Kim                 Name = AcpiDmIvrsDevEntryNames[Temp8 - 61];
21411970d693SJung-uk Kim                 break;
21421970d693SJung-uk Kim 
21431970d693SJung-uk Kim             case ACPI_IVRS_TYPE_HID:
21441970d693SJung-uk Kim 
21451970d693SJung-uk Kim                 Name = AcpiDmIvrsDevEntryNames[Temp8 - 228];
21461970d693SJung-uk Kim                 break;
21471970d693SJung-uk Kim 
21481970d693SJung-uk Kim             default:
21491970d693SJung-uk Kim                 Name = AcpiDmIvrsDevEntryNames[0];  /* Unknown/Reserved */
2150d6dd1baeSJung-uk Kim                 break;
2151d6dd1baeSJung-uk Kim             }
2152d6dd1baeSJung-uk Kim 
2153d052a1ccSJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target, Name);
2154d6dd1baeSJung-uk Kim             break;
2155d6dd1baeSJung-uk Kim 
2156313a0c13SJung-uk Kim         case ACPI_DMT_LPIT:
2157313a0c13SJung-uk Kim 
2158313a0c13SJung-uk Kim             /* LPIT subtable types */
2159313a0c13SJung-uk Kim 
21607cf3e94aSJung-uk Kim             Temp32 = ACPI_GET32 (Target);
21617cf3e94aSJung-uk Kim             if (Temp32 > ACPI_LPIT_TYPE_RESERVED)
2162313a0c13SJung-uk Kim             {
21637cf3e94aSJung-uk Kim                 Temp32 = ACPI_LPIT_TYPE_RESERVED;
2164313a0c13SJung-uk Kim             }
2165313a0c13SJung-uk Kim 
21667cf3e94aSJung-uk Kim             AcpiOsPrintf (UINT32_FORMAT, ACPI_GET32 (Target),
21677cf3e94aSJung-uk Kim                 AcpiDmLpitSubnames[Temp32]);
2168313a0c13SJung-uk Kim             break;
2169313a0c13SJung-uk Kim 
2170cfd1ed46SJung-uk Kim         case ACPI_DMT_VIOT:
2171cfd1ed46SJung-uk Kim 
2172cfd1ed46SJung-uk Kim             /* VIOT subtable types */
2173cfd1ed46SJung-uk Kim 
2174cfd1ed46SJung-uk Kim             Temp8 = *Target;
2175cfd1ed46SJung-uk Kim             if (Temp8 > ACPI_VIOT_RESERVED)
2176cfd1ed46SJung-uk Kim             {
2177cfd1ed46SJung-uk Kim                 Temp8 = ACPI_VIOT_RESERVED;
2178cfd1ed46SJung-uk Kim             }
2179cfd1ed46SJung-uk Kim 
2180cfd1ed46SJung-uk Kim             AcpiOsPrintf (UINT8_FORMAT, *Target,
2181cfd1ed46SJung-uk Kim                 AcpiDmViotSubnames[Temp8]);
2182cfd1ed46SJung-uk Kim             break;
2183cfd1ed46SJung-uk Kim 
21841a39cfb0SJung-uk Kim         case ACPI_DMT_EXIT:
2185a9d8d09cSJung-uk Kim 
2186a9f12690SJung-uk Kim             return (AE_OK);
21871a39cfb0SJung-uk Kim 
21881a39cfb0SJung-uk Kim         default:
2189a9d8d09cSJung-uk Kim 
21901a39cfb0SJung-uk Kim             ACPI_ERROR ((AE_INFO,
2191ca3cf4faSJung-uk Kim                 "**** Invalid table opcode [0x%X] ****\n", Info->Opcode));
2192a9f12690SJung-uk Kim             return (AE_SUPPORT);
21931a39cfb0SJung-uk Kim         }
21941a39cfb0SJung-uk Kim     }
2195a9f12690SJung-uk Kim 
2196a9f12690SJung-uk Kim     if (TableOffset && !SubtableLength)
2197a9f12690SJung-uk Kim     {
21987cf3e94aSJung-uk Kim         /*
21997cf3e94aSJung-uk Kim          * If this table is not the main table, the subtable must have a
22007cf3e94aSJung-uk Kim          * valid length
22017cf3e94aSJung-uk Kim          */
2202a9f12690SJung-uk Kim         AcpiOsPrintf ("Invalid zero length subtable\n");
2203a9f12690SJung-uk Kim         return (AE_BAD_DATA);
2204a9f12690SJung-uk Kim     }
2205a9f12690SJung-uk Kim 
2206a9f12690SJung-uk Kim     return (AE_OK);
22071a39cfb0SJung-uk Kim }
2208