Home | History | Annotate | Line # | Download | only in common
dmtbinfo1.c revision 1.1.1.3
      1      1.1  christos /******************************************************************************
      2      1.1  christos  *
      3      1.1  christos  * Module Name: dmtbinfo1 - Table info for non-AML tables
      4      1.1  christos  *
      5      1.1  christos  *****************************************************************************/
      6      1.1  christos 
      7      1.1  christos /*
      8  1.1.1.3  christos  * Copyright (C) 2000 - 2020, Intel Corp.
      9      1.1  christos  * All rights reserved.
     10      1.1  christos  *
     11      1.1  christos  * Redistribution and use in source and binary forms, with or without
     12      1.1  christos  * modification, are permitted provided that the following conditions
     13      1.1  christos  * are met:
     14      1.1  christos  * 1. Redistributions of source code must retain the above copyright
     15      1.1  christos  *    notice, this list of conditions, and the following disclaimer,
     16      1.1  christos  *    without modification.
     17      1.1  christos  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18      1.1  christos  *    substantially similar to the "NO WARRANTY" disclaimer below
     19      1.1  christos  *    ("Disclaimer") and any redistribution must be conditioned upon
     20      1.1  christos  *    including a substantially similar Disclaimer requirement for further
     21      1.1  christos  *    binary redistribution.
     22      1.1  christos  * 3. Neither the names of the above-listed copyright holders nor the names
     23      1.1  christos  *    of any contributors may be used to endorse or promote products derived
     24      1.1  christos  *    from this software without specific prior written permission.
     25      1.1  christos  *
     26      1.1  christos  * Alternatively, this software may be distributed under the terms of the
     27      1.1  christos  * GNU General Public License ("GPL") version 2 as published by the Free
     28      1.1  christos  * Software Foundation.
     29      1.1  christos  *
     30      1.1  christos  * NO WARRANTY
     31      1.1  christos  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32      1.1  christos  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33      1.1  christos  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34      1.1  christos  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35      1.1  christos  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36      1.1  christos  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37      1.1  christos  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38      1.1  christos  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39      1.1  christos  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40      1.1  christos  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41      1.1  christos  * POSSIBILITY OF SUCH DAMAGES.
     42      1.1  christos  */
     43      1.1  christos 
     44      1.1  christos #include "acpi.h"
     45      1.1  christos #include "accommon.h"
     46      1.1  christos #include "acdisasm.h"
     47      1.1  christos #include "actbinfo.h"
     48      1.1  christos 
     49      1.1  christos /* This module used for application-level code only */
     50      1.1  christos 
     51      1.1  christos #define _COMPONENT          ACPI_CA_DISASSEMBLER
     52      1.1  christos         ACPI_MODULE_NAME    ("dmtbinfo1")
     53      1.1  christos 
     54      1.1  christos /*
     55      1.1  christos  * How to add a new table:
     56      1.1  christos  *
     57      1.1  christos  * - Add the C table definition to the actbl1.h or actbl2.h header.
     58      1.1  christos  * - Add ACPI_xxxx_OFFSET macro(s) for the table (and subtables) to list below.
     59      1.1  christos  * - Define the table in this file (for the disassembler). If any
     60      1.1  christos  *   new data types are required (ACPI_DMT_*), see below.
     61      1.1  christos  * - Add an external declaration for the new table definition (AcpiDmTableInfo*)
     62      1.1  christos  *     in acdisam.h
     63      1.1  christos  * - Add new table definition to the dispatch table in dmtable.c (AcpiDmTableData)
     64      1.1  christos  *     If a simple table (with no subtables), no disassembly code is needed.
     65      1.1  christos  *     Otherwise, create the AcpiDmDump* function for to disassemble the table
     66      1.1  christos  *     and add it to the dmtbdump.c file.
     67      1.1  christos  * - Add an external declaration for the new AcpiDmDump* function in acdisasm.h
     68      1.1  christos  * - Add the new AcpiDmDump* function to the dispatch table in dmtable.c
     69      1.1  christos  * - Create a template for the new table
     70      1.1  christos  * - Add data table compiler support
     71      1.1  christos  *
     72      1.1  christos  * How to add a new data type (ACPI_DMT_*):
     73      1.1  christos  *
     74      1.1  christos  * - Add new type at the end of the ACPI_DMT list in acdisasm.h
     75      1.1  christos  * - Add length and implementation cases in dmtable.c  (disassembler)
     76      1.1  christos  * - Add type and length cases in dtutils.c (DT compiler)
     77      1.1  christos  */
     78      1.1  christos 
     79      1.1  christos /*
     80      1.1  christos  * ACPI Table Information, used to dump formatted ACPI tables
     81      1.1  christos  *
     82      1.1  christos  * Each entry is of the form:  <Field Type, Field Offset, Field Name>
     83      1.1  christos  */
     84      1.1  christos 
     85      1.1  christos 
     86      1.1  christos /*******************************************************************************
     87      1.1  christos  *
     88      1.1  christos  * ASF - Alert Standard Format table (Signature "ASF!")
     89      1.1  christos  *
     90      1.1  christos  ******************************************************************************/
     91      1.1  christos 
     92      1.1  christos /* Common Subtable header (one per Subtable) */
     93      1.1  christos 
     94      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoAsfHdr[] =
     95      1.1  christos {
     96      1.1  christos     {ACPI_DMT_ASF,      ACPI_ASF0_OFFSET (Header.Type),             "Subtable Type", 0},
     97      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF0_OFFSET (Header.Reserved),         "Reserved", 0},
     98      1.1  christos     {ACPI_DMT_UINT16,   ACPI_ASF0_OFFSET (Header.Length),           "Length", DT_LENGTH},
     99      1.1  christos     ACPI_DMT_TERMINATOR
    100      1.1  christos };
    101      1.1  christos 
    102      1.1  christos /* 0: ASF Information */
    103      1.1  christos 
    104      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoAsf0[] =
    105      1.1  christos {
    106      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF0_OFFSET (MinResetValue),           "Minimum Reset Value", 0},
    107      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF0_OFFSET (MinPollInterval),         "Minimum Polling Interval", 0},
    108      1.1  christos     {ACPI_DMT_UINT16,   ACPI_ASF0_OFFSET (SystemId),                "System ID", 0},
    109      1.1  christos     {ACPI_DMT_UINT32,   ACPI_ASF0_OFFSET (MfgId),                   "Manufacturer ID", 0},
    110      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF0_OFFSET (Flags),                   "Flags", 0},
    111      1.1  christos     {ACPI_DMT_UINT24,   ACPI_ASF0_OFFSET (Reserved2[0]),            "Reserved", 0},
    112      1.1  christos     ACPI_DMT_TERMINATOR
    113      1.1  christos };
    114      1.1  christos 
    115      1.1  christos /* 1: ASF Alerts */
    116      1.1  christos 
    117      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoAsf1[] =
    118      1.1  christos {
    119      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1_OFFSET (AssertMask),              "AssertMask", 0},
    120      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1_OFFSET (DeassertMask),            "DeassertMask", 0},
    121      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1_OFFSET (Alerts),                  "Alert Count", 0},
    122      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1_OFFSET (DataLength),              "Alert Data Length", 0},
    123      1.1  christos     ACPI_DMT_TERMINATOR
    124      1.1  christos };
    125      1.1  christos 
    126      1.1  christos /* 1a: ASF Alert data */
    127      1.1  christos 
    128      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoAsf1a[] =
    129      1.1  christos {
    130      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Address),                "Address", 0},
    131      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Command),                "Command", 0},
    132      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Mask),                   "Mask", 0},
    133      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Value),                  "Value", 0},
    134      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (SensorType),             "SensorType", 0},
    135      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Type),                   "Type", 0},
    136      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Offset),                 "Offset", 0},
    137      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (SourceType),             "SourceType", 0},
    138      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Severity),               "Severity", 0},
    139      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (SensorNumber),           "SensorNumber", 0},
    140      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Entity),                 "Entity", 0},
    141      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF1a_OFFSET (Instance),               "Instance", 0},
    142      1.1  christos     ACPI_DMT_TERMINATOR
    143      1.1  christos };
    144      1.1  christos 
    145      1.1  christos /* 2: ASF Remote Control */
    146      1.1  christos 
    147      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoAsf2[] =
    148      1.1  christos {
    149      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF2_OFFSET (Controls),                "Control Count", 0},
    150      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF2_OFFSET (DataLength),              "Control Data Length", 0},
    151      1.1  christos     {ACPI_DMT_UINT16,   ACPI_ASF2_OFFSET (Reserved2),               "Reserved", 0},
    152      1.1  christos     ACPI_DMT_TERMINATOR
    153      1.1  christos };
    154      1.1  christos 
    155      1.1  christos /* 2a: ASF Control data */
    156      1.1  christos 
    157      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoAsf2a[] =
    158      1.1  christos {
    159      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF2a_OFFSET (Function),               "Function", 0},
    160      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF2a_OFFSET (Address),                "Address", 0},
    161      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF2a_OFFSET (Command),                "Command", 0},
    162      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF2a_OFFSET (Value),                  "Value", 0},
    163      1.1  christos     ACPI_DMT_TERMINATOR
    164      1.1  christos };
    165      1.1  christos 
    166      1.1  christos /* 3: ASF RMCP Boot Options */
    167      1.1  christos 
    168      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoAsf3[] =
    169      1.1  christos {
    170      1.1  christos     {ACPI_DMT_BUF7,     ACPI_ASF3_OFFSET (Capabilities[0]),         "Capabilities", 0},
    171      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF3_OFFSET (CompletionCode),          "Completion Code", 0},
    172      1.1  christos     {ACPI_DMT_UINT32,   ACPI_ASF3_OFFSET (EnterpriseId),            "Enterprise ID", 0},
    173      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF3_OFFSET (Command),                 "Command", 0},
    174      1.1  christos     {ACPI_DMT_UINT16,   ACPI_ASF3_OFFSET (Parameter),               "Parameter", 0},
    175      1.1  christos     {ACPI_DMT_UINT16,   ACPI_ASF3_OFFSET (BootOptions),             "Boot Options", 0},
    176      1.1  christos     {ACPI_DMT_UINT16,   ACPI_ASF3_OFFSET (OemParameters),           "Oem Parameters", 0},
    177      1.1  christos     ACPI_DMT_TERMINATOR
    178      1.1  christos };
    179      1.1  christos 
    180      1.1  christos /* 4: ASF Address */
    181      1.1  christos 
    182      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoAsf4[] =
    183      1.1  christos {
    184      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF4_OFFSET (EpromAddress),            "Eprom Address", 0},
    185      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ASF4_OFFSET (Devices),                 "Device Count", DT_COUNT},
    186      1.1  christos     ACPI_DMT_TERMINATOR
    187      1.1  christos };
    188      1.1  christos 
    189      1.1  christos 
    190      1.1  christos /*******************************************************************************
    191      1.1  christos  *
    192      1.1  christos  * BERT -  Boot Error Record table
    193      1.1  christos  *
    194      1.1  christos  ******************************************************************************/
    195      1.1  christos 
    196      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoBert[] =
    197      1.1  christos {
    198      1.1  christos     {ACPI_DMT_UINT32,   ACPI_BERT_OFFSET (RegionLength),            "Boot Error Region Length", 0},
    199      1.1  christos     {ACPI_DMT_UINT64,   ACPI_BERT_OFFSET (Address),                 "Boot Error Region Address", 0},
    200      1.1  christos     ACPI_DMT_TERMINATOR
    201      1.1  christos };
    202      1.1  christos 
    203      1.1  christos 
    204      1.1  christos /*******************************************************************************
    205      1.1  christos  *
    206      1.1  christos  * BGRT -  Boot Graphics Resource Table (ACPI 5.0)
    207      1.1  christos  *
    208      1.1  christos  ******************************************************************************/
    209      1.1  christos 
    210      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoBgrt[] =
    211      1.1  christos {
    212      1.1  christos     {ACPI_DMT_UINT16,   ACPI_BGRT_OFFSET (Version),                 "Version", 0},
    213      1.1  christos     {ACPI_DMT_UINT8,    ACPI_BGRT_OFFSET (Status),                  "Status (decoded below)", DT_FLAG},
    214      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_BGRT_FLAG_OFFSET (Status, 0),          "Displayed", 0},
    215      1.1  christos     {ACPI_DMT_FLAGS1,   ACPI_BGRT_FLAG_OFFSET (Status, 0),          "Orientation Offset", 0},
    216      1.1  christos 
    217      1.1  christos     {ACPI_DMT_UINT8,    ACPI_BGRT_OFFSET (ImageType),               "Image Type", 0},
    218      1.1  christos     {ACPI_DMT_UINT64,   ACPI_BGRT_OFFSET (ImageAddress),            "Image Address", 0},
    219      1.1  christos     {ACPI_DMT_UINT32,   ACPI_BGRT_OFFSET (ImageOffsetX),            "Image OffsetX", 0},
    220      1.1  christos     {ACPI_DMT_UINT32,   ACPI_BGRT_OFFSET (ImageOffsetY),            "Image OffsetY", 0},
    221      1.1  christos     ACPI_DMT_TERMINATOR
    222      1.1  christos };
    223      1.1  christos 
    224      1.1  christos 
    225      1.1  christos /*******************************************************************************
    226      1.1  christos  *
    227      1.1  christos  * BOOT - Simple Boot Flag Table
    228      1.1  christos  *
    229      1.1  christos  ******************************************************************************/
    230      1.1  christos 
    231      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoBoot[] =
    232      1.1  christos {
    233      1.1  christos     {ACPI_DMT_UINT8,    ACPI_BOOT_OFFSET (CmosIndex),               "Boot Register Index", 0},
    234      1.1  christos     {ACPI_DMT_UINT24,   ACPI_BOOT_OFFSET (Reserved[0]),             "Reserved", 0},
    235      1.1  christos     ACPI_DMT_TERMINATOR
    236      1.1  christos };
    237      1.1  christos 
    238      1.1  christos 
    239      1.1  christos /*******************************************************************************
    240      1.1  christos  *
    241      1.1  christos  * CPEP - Corrected Platform Error Polling table
    242      1.1  christos  *
    243      1.1  christos  ******************************************************************************/
    244      1.1  christos 
    245      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoCpep[] =
    246      1.1  christos {
    247      1.1  christos     {ACPI_DMT_UINT64,   ACPI_CPEP_OFFSET (Reserved),                "Reserved", 0},
    248      1.1  christos     ACPI_DMT_TERMINATOR
    249      1.1  christos };
    250      1.1  christos 
    251      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoCpep0[] =
    252      1.1  christos {
    253      1.1  christos     {ACPI_DMT_UINT8,    ACPI_CPEP0_OFFSET (Header.Type),            "Subtable Type", 0},
    254      1.1  christos     {ACPI_DMT_UINT8,    ACPI_CPEP0_OFFSET (Header.Length),          "Length", DT_LENGTH},
    255      1.1  christos     {ACPI_DMT_UINT8,    ACPI_CPEP0_OFFSET (Id),                     "Processor ID", 0},
    256      1.1  christos     {ACPI_DMT_UINT8,    ACPI_CPEP0_OFFSET (Eid),                    "Processor EID", 0},
    257      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CPEP0_OFFSET (Interval),               "Polling Interval", 0},
    258      1.1  christos     ACPI_DMT_TERMINATOR
    259      1.1  christos };
    260      1.1  christos 
    261      1.1  christos 
    262      1.1  christos /*******************************************************************************
    263      1.1  christos  *
    264      1.1  christos  * CSRT - Core System Resource Table
    265      1.1  christos  *
    266      1.1  christos  ******************************************************************************/
    267      1.1  christos 
    268      1.1  christos /* Main table consists only of the standard ACPI table header */
    269      1.1  christos 
    270      1.1  christos /* Resource Group subtable */
    271      1.1  christos 
    272      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoCsrt0[] =
    273      1.1  christos {
    274      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT0_OFFSET (Length),                 "Length", DT_LENGTH},
    275      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT0_OFFSET (VendorId),               "Vendor ID", 0},
    276      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT0_OFFSET (SubvendorId),            "Subvendor ID", 0},
    277      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT0_OFFSET (DeviceId),               "Device ID", 0},
    278      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT0_OFFSET (SubdeviceId),            "Subdevice ID", 0},
    279      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT0_OFFSET (Revision),               "Revision", 0},
    280      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT0_OFFSET (Reserved),               "Reserved", 0},
    281      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT0_OFFSET (SharedInfoLength),       "Shared Info Length", 0},
    282      1.1  christos     ACPI_DMT_TERMINATOR
    283      1.1  christos };
    284      1.1  christos 
    285      1.1  christos /* Shared Info subtable */
    286      1.1  christos 
    287      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoCsrt1[] =
    288      1.1  christos {
    289      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT1_OFFSET (MajorVersion),           "Major Version", 0},
    290      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT1_OFFSET (MinorVersion),           "Minor Version", 0},
    291      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT1_OFFSET (MmioBaseLow),            "MMIO Base Address Low", 0},
    292      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT1_OFFSET (MmioBaseHigh),           "MMIO Base Address High", 0},
    293      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT1_OFFSET (GsiInterrupt),           "GSI Interrupt", 0},
    294      1.1  christos     {ACPI_DMT_UINT8,    ACPI_CSRT1_OFFSET (InterruptPolarity),      "Interrupt Polarity", 0},
    295      1.1  christos     {ACPI_DMT_UINT8,    ACPI_CSRT1_OFFSET (InterruptMode),          "Interrupt Mode", 0},
    296      1.1  christos     {ACPI_DMT_UINT8,    ACPI_CSRT1_OFFSET (NumChannels),            "Num Channels", 0},
    297      1.1  christos     {ACPI_DMT_UINT8,    ACPI_CSRT1_OFFSET (DmaAddressWidth),        "DMA Address Width", 0},
    298      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT1_OFFSET (BaseRequestLine),        "Base Request Line", 0},
    299      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT1_OFFSET (NumHandshakeSignals),    "Num Handshake Signals", 0},
    300      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT1_OFFSET (MaxBlockSize),           "Max Block Size", 0},
    301      1.1  christos     ACPI_DMT_TERMINATOR
    302      1.1  christos };
    303      1.1  christos 
    304      1.1  christos /* Resource Descriptor subtable */
    305      1.1  christos 
    306      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoCsrt2[] =
    307      1.1  christos {
    308      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT2_OFFSET (Length),                 "Length", DT_LENGTH},
    309      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT2_OFFSET (Type),                   "Type", 0},
    310      1.1  christos     {ACPI_DMT_UINT16,   ACPI_CSRT2_OFFSET (Subtype),                "Subtype", 0},
    311      1.1  christos     {ACPI_DMT_UINT32,   ACPI_CSRT2_OFFSET (Uid),                    "UID", 0},
    312      1.1  christos     ACPI_DMT_TERMINATOR
    313      1.1  christos };
    314      1.1  christos 
    315      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoCsrt2a[] =
    316      1.1  christos {
    317      1.1  christos     {ACPI_DMT_RAW_BUFFER, 0,                                        "ResourceInfo", DT_OPTIONAL},
    318      1.1  christos     ACPI_DMT_TERMINATOR
    319      1.1  christos };
    320      1.1  christos 
    321      1.1  christos 
    322      1.1  christos /*******************************************************************************
    323      1.1  christos  *
    324      1.1  christos  * DBG2 - Debug Port Table 2
    325      1.1  christos  *
    326      1.1  christos  ******************************************************************************/
    327      1.1  christos 
    328      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDbg2[] =
    329      1.1  christos {
    330      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DBG2_OFFSET (InfoOffset),              "Info Offset", 0},
    331      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DBG2_OFFSET (InfoCount),               "Info Count", 0},
    332      1.1  christos     ACPI_DMT_TERMINATOR
    333      1.1  christos };
    334      1.1  christos 
    335      1.1  christos /* Debug Device Information Subtable */
    336      1.1  christos 
    337      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDbg2Device[] =
    338      1.1  christos {
    339      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DBG20_OFFSET (Revision),               "Revision", 0},
    340      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (Length),                 "Length", DT_LENGTH},
    341      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DBG20_OFFSET (RegisterCount),          "Register Count", 0},
    342      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (NamepathLength),         "Namepath Length", 0},
    343      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (NamepathOffset),         "Namepath Offset", 0},
    344      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (OemDataLength),          "OEM Data Length", DT_DESCRIBES_OPTIONAL},
    345      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (OemDataOffset),          "OEM Data Offset", DT_DESCRIBES_OPTIONAL},
    346      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (PortType),               "Port Type", 0},
    347      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (PortSubtype),            "Port Subtype", 0},
    348      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (Reserved),               "Reserved", 0},
    349      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (BaseAddressOffset),      "Base Address Offset", 0},
    350      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DBG20_OFFSET (AddressSizeOffset),      "Address Size Offset", 0},
    351      1.1  christos     ACPI_DMT_TERMINATOR
    352      1.1  christos };
    353      1.1  christos 
    354      1.1  christos /* Variable-length data for the subtable */
    355      1.1  christos 
    356      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDbg2Addr[] =
    357      1.1  christos {
    358      1.1  christos     {ACPI_DMT_GAS,      0,                                          "Base Address Register", 0},
    359      1.1  christos     ACPI_DMT_TERMINATOR
    360      1.1  christos };
    361      1.1  christos 
    362      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDbg2Size[] =
    363      1.1  christos {
    364      1.1  christos     {ACPI_DMT_UINT32,   0,                                          "Address Size", 0},
    365      1.1  christos     ACPI_DMT_TERMINATOR
    366      1.1  christos };
    367      1.1  christos 
    368      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDbg2Name[] =
    369      1.1  christos {
    370      1.1  christos     {ACPI_DMT_STRING,   0,                                          "Namepath", 0},
    371      1.1  christos     ACPI_DMT_TERMINATOR
    372      1.1  christos };
    373      1.1  christos 
    374      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDbg2OemData[] =
    375      1.1  christos {
    376      1.1  christos     {ACPI_DMT_RAW_BUFFER, 0,                                        "OEM Data", DT_OPTIONAL},
    377      1.1  christos     ACPI_DMT_TERMINATOR
    378      1.1  christos };
    379      1.1  christos 
    380      1.1  christos 
    381      1.1  christos /*******************************************************************************
    382      1.1  christos  *
    383      1.1  christos  * DBGP - Debug Port
    384      1.1  christos  *
    385      1.1  christos  ******************************************************************************/
    386      1.1  christos 
    387      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDbgp[] =
    388      1.1  christos {
    389      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DBGP_OFFSET (Type),                    "Interface Type", 0},
    390      1.1  christos     {ACPI_DMT_UINT24,   ACPI_DBGP_OFFSET (Reserved[0]),             "Reserved", 0},
    391      1.1  christos     {ACPI_DMT_GAS,      ACPI_DBGP_OFFSET (DebugPort),               "Debug Port Register", 0},
    392      1.1  christos     ACPI_DMT_TERMINATOR
    393      1.1  christos };
    394      1.1  christos 
    395      1.1  christos 
    396      1.1  christos /*******************************************************************************
    397      1.1  christos  *
    398      1.1  christos  * DMAR - DMA Remapping table
    399      1.1  christos  *
    400      1.1  christos  ******************************************************************************/
    401      1.1  christos 
    402      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar[] =
    403      1.1  christos {
    404      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMAR_OFFSET (Width),                   "Host Address Width", 0},
    405      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMAR_OFFSET (Flags),                   "Flags", 0},
    406      1.1  christos     {ACPI_DMT_BUF10,    ACPI_DMAR_OFFSET (Reserved[0]),             "Reserved", 0},
    407      1.1  christos     ACPI_DMT_TERMINATOR
    408      1.1  christos };
    409      1.1  christos 
    410      1.1  christos /* Common Subtable header (one per Subtable) */
    411      1.1  christos 
    412      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDmarHdr[] =
    413      1.1  christos {
    414      1.1  christos     {ACPI_DMT_DMAR,     ACPI_DMAR0_OFFSET (Header.Type),            "Subtable Type", 0},
    415      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DMAR0_OFFSET (Header.Length),          "Length", DT_LENGTH},
    416      1.1  christos     ACPI_DMT_TERMINATOR
    417      1.1  christos };
    418      1.1  christos 
    419      1.1  christos /* Common device scope entry */
    420      1.1  christos 
    421      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDmarScope[] =
    422      1.1  christos {
    423      1.1  christos     {ACPI_DMT_DMAR_SCOPE, ACPI_DMARS_OFFSET (EntryType),            "Device Scope Type", 0},
    424      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMARS_OFFSET (Length),                 "Entry Length", DT_LENGTH},
    425      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DMARS_OFFSET (Reserved),               "Reserved", 0},
    426      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMARS_OFFSET (EnumerationId),          "Enumeration ID", 0},
    427      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMARS_OFFSET (Bus),                    "PCI Bus Number", 0},
    428      1.1  christos     ACPI_DMT_TERMINATOR
    429      1.1  christos };
    430      1.1  christos 
    431      1.1  christos /* DMAR Subtables */
    432      1.1  christos 
    433      1.1  christos /* 0: Hardware Unit Definition */
    434      1.1  christos 
    435      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar0[] =
    436      1.1  christos {
    437      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMAR0_OFFSET (Flags),                  "Flags", 0},
    438      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMAR0_OFFSET (Reserved),               "Reserved", 0},
    439      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DMAR0_OFFSET (Segment),                "PCI Segment Number", 0},
    440      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DMAR0_OFFSET (Address),                "Register Base Address", 0},
    441      1.1  christos     ACPI_DMT_TERMINATOR
    442      1.1  christos };
    443      1.1  christos 
    444      1.1  christos /* 1: Reserved Memory Definition */
    445      1.1  christos 
    446      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar1[] =
    447      1.1  christos {
    448      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DMAR1_OFFSET (Reserved),               "Reserved", 0},
    449      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DMAR1_OFFSET (Segment),                "PCI Segment Number", 0},
    450      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DMAR1_OFFSET (BaseAddress),            "Base Address", 0},
    451      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DMAR1_OFFSET (EndAddress),             "End Address (limit)", 0},
    452      1.1  christos     ACPI_DMT_TERMINATOR
    453      1.1  christos };
    454      1.1  christos 
    455      1.1  christos /* 2: Root Port ATS Capability Definition */
    456      1.1  christos 
    457      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar2[] =
    458      1.1  christos {
    459      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMAR2_OFFSET (Flags),                  "Flags", 0},
    460      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMAR2_OFFSET (Reserved),               "Reserved", 0},
    461      1.1  christos     {ACPI_DMT_UINT16,   ACPI_DMAR2_OFFSET (Segment),                "PCI Segment Number", 0},
    462      1.1  christos     ACPI_DMT_TERMINATOR
    463      1.1  christos };
    464      1.1  christos 
    465      1.1  christos /* 3: Remapping Hardware Static Affinity Structure */
    466      1.1  christos 
    467      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar3[] =
    468      1.1  christos {
    469      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DMAR3_OFFSET (Reserved),               "Reserved", 0},
    470      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DMAR3_OFFSET (BaseAddress),            "Base Address", 0},
    471      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DMAR3_OFFSET (ProximityDomain),        "Proximity Domain", 0},
    472      1.1  christos     ACPI_DMT_TERMINATOR
    473      1.1  christos };
    474      1.1  christos 
    475      1.1  christos /* 4: ACPI Namespace Device Declaration Structure */
    476      1.1  christos 
    477      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar4[] =
    478      1.1  christos {
    479      1.1  christos     {ACPI_DMT_UINT24,   ACPI_DMAR4_OFFSET (Reserved[0]),            "Reserved", 0},
    480      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DMAR4_OFFSET (DeviceNumber),           "Device Number", 0},
    481      1.1  christos     {ACPI_DMT_STRING,   ACPI_DMAR4_OFFSET (DeviceName[0]),          "Device Name", 0},
    482      1.1  christos     ACPI_DMT_TERMINATOR
    483      1.1  christos };
    484      1.1  christos 
    485      1.1  christos 
    486      1.1  christos /*******************************************************************************
    487      1.1  christos  *
    488      1.1  christos  * DRTM - Dynamic Root of Trust for Measurement table
    489      1.1  christos  *
    490      1.1  christos  ******************************************************************************/
    491      1.1  christos 
    492      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDrtm[] =
    493      1.1  christos {
    494      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DRTM_OFFSET (EntryBaseAddress),        "Entry Base Address", 0},
    495      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DRTM_OFFSET (EntryLength),             "Entry Length", 0},
    496      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DRTM_OFFSET (EntryAddress32),          "Entry 32", 0},
    497      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DRTM_OFFSET (EntryAddress64),          "Entry 64", 0},
    498      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DRTM_OFFSET (ExitAddress),             "Exit Address", 0},
    499      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DRTM_OFFSET (LogAreaAddress),          "Log Area Start", 0},
    500      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DRTM_OFFSET (LogAreaLength),           "Log Area Length", 0},
    501      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DRTM_OFFSET (ArchDependentAddress),    "Arch Dependent Address", 0},
    502      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DRTM_OFFSET (Flags),                   "Flags (decoded below)", 0},
    503      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_DRTM_FLAG_OFFSET (Flags, 0),           "Namespace in TCB", 0},
    504      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_DRTM_FLAG_OFFSET (Flags, 0),           "Gap Code on S3 Resume", 0},
    505      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_DRTM_FLAG_OFFSET (Flags, 0),           "Gap Code on DLME_Exit", 0},
    506      1.1  christos     {ACPI_DMT_FLAG3,    ACPI_DRTM_FLAG_OFFSET (Flags, 0),           "PCR_Authorities Changed", 0},
    507      1.1  christos     ACPI_DMT_TERMINATOR
    508      1.1  christos };
    509      1.1  christos 
    510      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDrtm0[] =
    511      1.1  christos {
    512      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DRTM0_OFFSET (ValidatedTableCount),    "Validated Table Count", DT_COUNT},
    513      1.1  christos     ACPI_DMT_TERMINATOR
    514      1.1  christos };
    515      1.1  christos 
    516      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDrtm0a[] =
    517      1.1  christos {
    518      1.1  christos     {ACPI_DMT_UINT64,   0,                                          "Table Address", DT_OPTIONAL},
    519      1.1  christos     ACPI_DMT_TERMINATOR
    520      1.1  christos };
    521      1.1  christos 
    522      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDrtm1[] =
    523      1.1  christos {
    524      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DRTM1_OFFSET (ResourceCount),          "Resource Count", DT_COUNT},
    525      1.1  christos     ACPI_DMT_TERMINATOR
    526      1.1  christos };
    527      1.1  christos 
    528      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDrtm1a[] =
    529      1.1  christos {
    530      1.1  christos     {ACPI_DMT_UINT56,   ACPI_DRTM1a_OFFSET (Size[0]),               "Size", DT_OPTIONAL},
    531      1.1  christos     {ACPI_DMT_UINT8,    ACPI_DRTM1a_OFFSET (Type),                  "Type", 0},
    532      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_DRTM1a_FLAG_OFFSET (Type, 0),          "Resource Type", 0},
    533      1.1  christos     {ACPI_DMT_FLAG7,    ACPI_DRTM1a_FLAG_OFFSET (Type, 0),          "Protections", 0},
    534      1.1  christos     {ACPI_DMT_UINT64,   ACPI_DRTM1a_OFFSET (Address),               "Address", 0},
    535      1.1  christos     ACPI_DMT_TERMINATOR
    536      1.1  christos };
    537      1.1  christos 
    538      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoDrtm2[] =
    539      1.1  christos {
    540      1.1  christos     {ACPI_DMT_UINT32,   ACPI_DRTM2_OFFSET (DpsIdLength),            "DLME Platform Id Length", DT_COUNT},
    541      1.1  christos     {ACPI_DMT_BUF16,    ACPI_DRTM2_OFFSET (DpsId),                  "DLME Platform Id", DT_COUNT},
    542      1.1  christos     ACPI_DMT_TERMINATOR
    543      1.1  christos };
    544      1.1  christos 
    545      1.1  christos 
    546      1.1  christos /*******************************************************************************
    547      1.1  christos  *
    548      1.1  christos  * ECDT - Embedded Controller Boot Resources Table
    549      1.1  christos  *
    550      1.1  christos  ******************************************************************************/
    551      1.1  christos 
    552      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoEcdt[] =
    553      1.1  christos {
    554      1.1  christos     {ACPI_DMT_GAS,      ACPI_ECDT_OFFSET (Control),                 "Command/Status Register", 0},
    555      1.1  christos     {ACPI_DMT_GAS,      ACPI_ECDT_OFFSET (Data),                    "Data Register", 0},
    556      1.1  christos     {ACPI_DMT_UINT32,   ACPI_ECDT_OFFSET (Uid),                     "UID", 0},
    557      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ECDT_OFFSET (Gpe),                     "GPE Number", 0},
    558      1.1  christos     {ACPI_DMT_STRING,   ACPI_ECDT_OFFSET (Id[0]),                   "Namepath", 0},
    559      1.1  christos     ACPI_DMT_TERMINATOR
    560      1.1  christos };
    561      1.1  christos 
    562      1.1  christos 
    563      1.1  christos /*******************************************************************************
    564      1.1  christos  *
    565      1.1  christos  * EINJ - Error Injection table
    566      1.1  christos  *
    567      1.1  christos  ******************************************************************************/
    568      1.1  christos 
    569      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoEinj[] =
    570      1.1  christos {
    571      1.1  christos     {ACPI_DMT_UINT32,   ACPI_EINJ_OFFSET (HeaderLength),            "Injection Header Length", 0},
    572      1.1  christos     {ACPI_DMT_UINT8,    ACPI_EINJ_OFFSET (Flags),                   "Flags", 0},
    573      1.1  christos     {ACPI_DMT_UINT24,   ACPI_EINJ_OFFSET (Reserved[0]),             "Reserved", 0},
    574      1.1  christos     {ACPI_DMT_UINT32,   ACPI_EINJ_OFFSET (Entries),                 "Injection Entry Count", 0},
    575      1.1  christos     ACPI_DMT_TERMINATOR
    576      1.1  christos };
    577      1.1  christos 
    578      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoEinj0[] =
    579      1.1  christos {
    580      1.1  christos     {ACPI_DMT_EINJACT,  ACPI_EINJ0_OFFSET (Action),                 "Action", 0},
    581      1.1  christos     {ACPI_DMT_EINJINST, ACPI_EINJ0_OFFSET (Instruction),            "Instruction", 0},
    582      1.1  christos     {ACPI_DMT_UINT8,    ACPI_EINJ0_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
    583      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_EINJ0_FLAG_OFFSET (Flags,0),           "Preserve Register Bits", 0},
    584      1.1  christos 
    585      1.1  christos     {ACPI_DMT_UINT8,    ACPI_EINJ0_OFFSET (Reserved),               "Reserved", 0},
    586      1.1  christos     {ACPI_DMT_GAS,      ACPI_EINJ0_OFFSET (RegisterRegion),         "Register Region", 0},
    587      1.1  christos     {ACPI_DMT_UINT64,   ACPI_EINJ0_OFFSET (Value),                  "Value", 0},
    588      1.1  christos     {ACPI_DMT_UINT64,   ACPI_EINJ0_OFFSET (Mask),                   "Mask", 0},
    589      1.1  christos     ACPI_DMT_TERMINATOR
    590      1.1  christos };
    591      1.1  christos 
    592      1.1  christos 
    593      1.1  christos /*******************************************************************************
    594      1.1  christos  *
    595      1.1  christos  * ERST - Error Record Serialization table
    596      1.1  christos  *
    597      1.1  christos  ******************************************************************************/
    598      1.1  christos 
    599      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoErst[] =
    600      1.1  christos {
    601      1.1  christos     {ACPI_DMT_UINT32,   ACPI_ERST_OFFSET (HeaderLength),            "Serialization Header Length", 0},
    602      1.1  christos     {ACPI_DMT_UINT32,   ACPI_ERST_OFFSET (Reserved),                "Reserved", 0},
    603      1.1  christos     {ACPI_DMT_UINT32,   ACPI_ERST_OFFSET (Entries),                 "Instruction Entry Count", 0},
    604      1.1  christos     ACPI_DMT_TERMINATOR
    605      1.1  christos };
    606      1.1  christos 
    607      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoErst0[] =
    608      1.1  christos {
    609      1.1  christos     {ACPI_DMT_ERSTACT,  ACPI_ERST0_OFFSET (Action),                 "Action", 0},
    610      1.1  christos     {ACPI_DMT_ERSTINST, ACPI_ERST0_OFFSET (Instruction),            "Instruction", 0},
    611      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ERST0_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
    612      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_ERST0_FLAG_OFFSET (Flags,0),           "Preserve Register Bits", 0},
    613      1.1  christos 
    614      1.1  christos     {ACPI_DMT_UINT8,    ACPI_ERST0_OFFSET (Reserved),               "Reserved", 0},
    615      1.1  christos     {ACPI_DMT_GAS,      ACPI_ERST0_OFFSET (RegisterRegion),         "Register Region", 0},
    616      1.1  christos     {ACPI_DMT_UINT64,   ACPI_ERST0_OFFSET (Value),                  "Value", 0},
    617      1.1  christos     {ACPI_DMT_UINT64,   ACPI_ERST0_OFFSET (Mask),                   "Mask", 0},
    618      1.1  christos     ACPI_DMT_TERMINATOR
    619      1.1  christos };
    620      1.1  christos 
    621      1.1  christos 
    622      1.1  christos /*******************************************************************************
    623      1.1  christos  *
    624      1.1  christos  * FPDT - Firmware Performance Data Table (ACPI 5.0)
    625      1.1  christos  *
    626      1.1  christos  ******************************************************************************/
    627      1.1  christos 
    628      1.1  christos /* Main table consists of only the standard ACPI header - subtables follow */
    629      1.1  christos 
    630      1.1  christos /* FPDT subtable header */
    631      1.1  christos 
    632      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoFpdtHdr[] =
    633      1.1  christos {
    634      1.1  christos     {ACPI_DMT_UINT16,   ACPI_FPDTH_OFFSET (Type),                   "Subtable Type", 0},
    635      1.1  christos     {ACPI_DMT_UINT8,    ACPI_FPDTH_OFFSET (Length),                 "Length", DT_LENGTH},
    636      1.1  christos     {ACPI_DMT_UINT8,    ACPI_FPDTH_OFFSET (Revision),               "Revision", 0},
    637      1.1  christos     ACPI_DMT_TERMINATOR
    638      1.1  christos };
    639      1.1  christos 
    640      1.1  christos /* 0: Firmware Basic Boot Performance Record */
    641      1.1  christos 
    642      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoFpdt0[] =
    643      1.1  christos {
    644      1.1  christos     {ACPI_DMT_UINT32,   ACPI_FPDT0_OFFSET (Reserved),               "Reserved", 0},
    645      1.1  christos     {ACPI_DMT_UINT64,   ACPI_FPDT1_OFFSET (Address),                "FPDT Boot Record Address", 0},
    646      1.1  christos     ACPI_DMT_TERMINATOR
    647      1.1  christos };
    648      1.1  christos 
    649      1.1  christos /* 1: S3 Performance Table Pointer Record */
    650      1.1  christos 
    651      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoFpdt1[] =
    652      1.1  christos {
    653      1.1  christos     {ACPI_DMT_UINT32,   ACPI_FPDT1_OFFSET (Reserved),               "Reserved", 0},
    654      1.1  christos     {ACPI_DMT_UINT64,   ACPI_FPDT1_OFFSET (Address),                "S3PT Record Address", 0},
    655      1.1  christos     ACPI_DMT_TERMINATOR
    656      1.1  christos };
    657      1.1  christos 
    658      1.1  christos #if 0
    659      1.1  christos     /* Boot Performance Record, not supported at this time. */
    660      1.1  christos     {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (ResetEnd),               "Reset End", 0},
    661      1.1  christos     {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (LoadStart),              "Load Image Start", 0},
    662      1.1  christos     {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (StartupStart),           "Start Image Start", 0},
    663      1.1  christos     {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (ExitServicesEntry),      "Exit Services Entry", 0},
    664      1.1  christos     {ACPI_DMT_UINT64,   ACPI_FPDT0_OFFSET (ExitServicesExit),       "Exit Services Exit", 0},
    665      1.1  christos #endif
    666      1.1  christos 
    667      1.1  christos 
    668      1.1  christos /*******************************************************************************
    669      1.1  christos  *
    670      1.1  christos  * GTDT - Generic Timer Description Table
    671      1.1  christos  *
    672      1.1  christos  ******************************************************************************/
    673      1.1  christos 
    674      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt[] =
    675      1.1  christos {
    676      1.1  christos     {ACPI_DMT_UINT64,   ACPI_GTDT_OFFSET (CounterBlockAddresss),    "Counter Block Address", 0},
    677      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (Reserved),                "Reserved", 0},
    678      1.1  christos     ACPI_DMT_NEW_LINE,
    679      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (SecureEl1Interrupt),      "Secure EL1 Interrupt", 0},
    680      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (SecureEl1Flags),          "EL1 Flags (decoded below)", DT_FLAG},
    681      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0),   "Trigger Mode", 0},
    682      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0),   "Polarity", 0},
    683      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0),   "Always On", 0},
    684      1.1  christos     ACPI_DMT_NEW_LINE,
    685      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (NonSecureEl1Interrupt),   "Non-Secure EL1 Interrupt", 0},
    686      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (NonSecureEl1Flags),       "NEL1 Flags (decoded below)", DT_FLAG},
    687      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Trigger Mode", 0},
    688      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Polarity", 0},
    689      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Always On", 0},
    690      1.1  christos     ACPI_DMT_NEW_LINE,
    691      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (VirtualTimerInterrupt),   "Virtual Timer Interrupt", 0},
    692      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (VirtualTimerFlags),       "VT Flags (decoded below)", DT_FLAG},
    693      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Trigger Mode", 0},
    694      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Polarity", 0},
    695      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Always On", 0},
    696      1.1  christos     ACPI_DMT_NEW_LINE,
    697      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (NonSecureEl2Interrupt),   "Non-Secure EL2 Interrupt", 0},
    698      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (NonSecureEl2Flags),       "NEL2 Flags (decoded below)", DT_FLAG},
    699      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Trigger Mode", 0},
    700      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Polarity", 0},
    701      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Always On", 0},
    702      1.1  christos     {ACPI_DMT_UINT64,   ACPI_GTDT_OFFSET (CounterReadBlockAddress), "Counter Read Block Address", 0},
    703      1.1  christos     ACPI_DMT_NEW_LINE,
    704      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (PlatformTimerCount),      "Platform Timer Count", 0},
    705      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_OFFSET (PlatformTimerOffset),     "Platform Timer Offset", 0},
    706      1.1  christos     ACPI_DMT_TERMINATOR
    707      1.1  christos };
    708      1.1  christos 
    709  1.1.1.2  christos /* GDTD EL2 timer info. This table is appended to AcpiDmTableInfoGtdt for rev 3 and later */
    710  1.1.1.2  christos 
    711  1.1.1.2  christos ACPI_DMTABLE_INFO AcpiDmTableInfoGtdtEl2[] =
    712  1.1.1.2  christos {
    713  1.1.1.2  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerGsiv),  "Virtual EL2 Timer GSIV", 0},
    714  1.1.1.2  christos     {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerFlags), "Virtual EL2 Timer Flags", 0},
    715  1.1.1.2  christos     ACPI_DMT_TERMINATOR
    716  1.1.1.2  christos };
    717  1.1.1.2  christos 
    718      1.1  christos /* GTDT Subtable header (one per Subtable) */
    719      1.1  christos 
    720      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdtHdr[] =
    721      1.1  christos {
    722      1.1  christos     {ACPI_DMT_GTDT,     ACPI_GTDTH_OFFSET (Type),                   "Subtable Type", 0},
    723      1.1  christos     {ACPI_DMT_UINT16,   ACPI_GTDTH_OFFSET (Length),                 "Length", DT_LENGTH},
    724      1.1  christos     ACPI_DMT_TERMINATOR
    725      1.1  christos };
    726      1.1  christos 
    727      1.1  christos /* GTDT Subtables */
    728      1.1  christos 
    729      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt0[] =
    730      1.1  christos {
    731      1.1  christos     {ACPI_DMT_UINT8,    ACPI_GTDT0_OFFSET (Reserved),               "Reserved", 0},
    732      1.1  christos     {ACPI_DMT_UINT64,   ACPI_GTDT0_OFFSET (BlockAddress),           "Block Address", 0},
    733      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT0_OFFSET (TimerCount),             "Timer Count", 0},
    734      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT0_OFFSET (TimerOffset),            "Timer Offset", 0},
    735      1.1  christos     ACPI_DMT_TERMINATOR
    736      1.1  christos };
    737      1.1  christos 
    738      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt0a[] =
    739      1.1  christos {
    740      1.1  christos     {ACPI_DMT_UINT8 ,   ACPI_GTDT0a_OFFSET (FrameNumber),               "Frame Number", 0},
    741      1.1  christos     {ACPI_DMT_UINT24,   ACPI_GTDT0a_OFFSET (Reserved[0]),               "Reserved", 0},
    742      1.1  christos     {ACPI_DMT_UINT64,   ACPI_GTDT0a_OFFSET (BaseAddress),               "Base Address", 0},
    743      1.1  christos     {ACPI_DMT_UINT64,   ACPI_GTDT0a_OFFSET (El0BaseAddress),            "EL0 Base Address", 0},
    744      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT0a_OFFSET (TimerInterrupt),            "Timer Interrupt", 0},
    745      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT0a_OFFSET (TimerFlags),                "Timer Flags (decoded below)", 0},
    746      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_GTDT0a_FLAG_OFFSET (TimerFlags,0),         "Trigger Mode", 0},
    747      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_GTDT0a_FLAG_OFFSET (TimerFlags,0),         "Polarity", 0},
    748      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT0a_OFFSET (VirtualTimerInterrupt),     "Virtual Timer Interrupt", 0},
    749      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT0a_OFFSET (VirtualTimerFlags),         "Virtual Timer Flags (decoded below)", 0},
    750      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_GTDT0a_FLAG_OFFSET (VirtualTimerFlags,0),  "Trigger Mode", 0},
    751      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_GTDT0a_FLAG_OFFSET (VirtualTimerFlags,0),  "Polarity", 0},
    752      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT0a_OFFSET (CommonFlags),               "Common Flags (decoded below)", 0},
    753      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_GTDT0a_FLAG_OFFSET (CommonFlags,0),        "Secure", 0},
    754      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_GTDT0a_FLAG_OFFSET (CommonFlags,0),        "Always On", 0},
    755      1.1  christos     ACPI_DMT_TERMINATOR
    756      1.1  christos };
    757      1.1  christos 
    758      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt1[] =
    759      1.1  christos {
    760      1.1  christos     {ACPI_DMT_UINT8,    ACPI_GTDT1_OFFSET (Reserved),               "Reserved", 0},
    761      1.1  christos     {ACPI_DMT_UINT64,   ACPI_GTDT1_OFFSET (RefreshFrameAddress),    "Refresh Frame Address", 0},
    762      1.1  christos     {ACPI_DMT_UINT64,   ACPI_GTDT1_OFFSET (ControlFrameAddress),    "Control Frame Address", 0},
    763      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT1_OFFSET (TimerInterrupt),         "Timer Interrupt", 0},
    764      1.1  christos     {ACPI_DMT_UINT32,   ACPI_GTDT1_OFFSET (TimerFlags),             "Timer Flags (decoded below)", DT_FLAG},
    765      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0),      "Trigger Mode", 0},
    766      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0),      "Polarity", 0},
    767      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0),      "Security", 0},
    768      1.1  christos     ACPI_DMT_TERMINATOR
    769      1.1  christos };
    770      1.1  christos 
    771      1.1  christos 
    772      1.1  christos /*******************************************************************************
    773      1.1  christos  *
    774      1.1  christos  * HEST - Hardware Error Source table
    775      1.1  christos  *
    776      1.1  christos  ******************************************************************************/
    777      1.1  christos 
    778      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest[] =
    779      1.1  christos {
    780      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST_OFFSET (ErrorSourceCount),        "Error Source Count", 0},
    781      1.1  christos     ACPI_DMT_TERMINATOR
    782      1.1  christos };
    783      1.1  christos 
    784      1.1  christos /* Common HEST structures for subtables */
    785      1.1  christos 
    786      1.1  christos #define ACPI_DM_HEST_HEADER \
    787      1.1  christos     {ACPI_DMT_HEST,     ACPI_HEST0_OFFSET (Header.Type),            "Subtable Type", 0}, \
    788      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST0_OFFSET (Header.SourceId),        "Source Id", 0}
    789      1.1  christos 
    790      1.1  christos #define ACPI_DM_HEST_AER \
    791      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST6_OFFSET (Aer.Reserved1),              "Reserved", 0}, \
    792      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST6_OFFSET (Aer.Flags),                  "Flags (decoded below)", DT_FLAG}, \
    793      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_HEST6_FLAG_OFFSET (Aer.Flags,0),           "Firmware First", 0}, \
    794      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_HEST6_FLAG_OFFSET (Aer.Flags,0),           "Global", 0}, \
    795      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST6_OFFSET (Aer.Enabled),                "Enabled", 0}, \
    796      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST6_OFFSET (Aer.RecordsToPreallocate),   "Records To Preallocate", 0}, \
    797      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST6_OFFSET (Aer.MaxSectionsPerRecord),   "Max Sections Per Record", 0}, \
    798      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST6_OFFSET (Aer.Bus),                    "Bus", 0}, \
    799      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST6_OFFSET (Aer.Device),                 "Device", 0}, \
    800      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST6_OFFSET (Aer.Function),               "Function", 0}, \
    801      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST6_OFFSET (Aer.DeviceControl),          "DeviceControl", 0}, \
    802      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST6_OFFSET (Aer.Reserved2),              "Reserved", 0}, \
    803      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST6_OFFSET (Aer.UncorrectableMask),      "Uncorrectable Mask", 0}, \
    804      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST6_OFFSET (Aer.UncorrectableSeverity),  "Uncorrectable Severity", 0}, \
    805      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST6_OFFSET (Aer.CorrectableMask),        "Correctable Mask", 0}, \
    806      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST6_OFFSET (Aer.AdvancedCapabilities),   "Advanced Capabilities", 0}
    807      1.1  christos 
    808      1.1  christos 
    809      1.1  christos /* HEST Subtables */
    810      1.1  christos 
    811      1.1  christos /* 0: IA32 Machine Check Exception */
    812      1.1  christos 
    813      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest0[] =
    814      1.1  christos {
    815      1.1  christos     ACPI_DM_HEST_HEADER,
    816      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST0_OFFSET (Reserved1),              "Reserved1", 0},
    817      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST0_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
    818      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_HEST0_FLAG_OFFSET (Flags,0),           "Firmware First", 0},
    819      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_HEST0_FLAG_OFFSET (Flags,0),           "GHES Assist", 0},
    820      1.1  christos 
    821      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST0_OFFSET (Enabled),                "Enabled", 0},
    822      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST0_OFFSET (RecordsToPreallocate),   "Records To Preallocate", 0},
    823      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST0_OFFSET (MaxSectionsPerRecord),   "Max Sections Per Record", 0},
    824      1.1  christos     {ACPI_DMT_UINT64,   ACPI_HEST0_OFFSET (GlobalCapabilityData),   "Global Capability Data", 0},
    825      1.1  christos     {ACPI_DMT_UINT64,   ACPI_HEST0_OFFSET (GlobalControlData),      "Global Control Data", 0},
    826      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST0_OFFSET (NumHardwareBanks),       "Num Hardware Banks", 0},
    827      1.1  christos     {ACPI_DMT_UINT56,   ACPI_HEST0_OFFSET (Reserved3[0]),           "Reserved2", 0},
    828      1.1  christos     ACPI_DMT_TERMINATOR
    829      1.1  christos };
    830      1.1  christos 
    831      1.1  christos /* 1: IA32 Corrected Machine Check */
    832      1.1  christos 
    833      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest1[] =
    834      1.1  christos {
    835      1.1  christos     ACPI_DM_HEST_HEADER,
    836      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST1_OFFSET (Reserved1),              "Reserved1", 0},
    837      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST1_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
    838      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_HEST1_FLAG_OFFSET (Flags,0),           "Firmware First", 0},
    839      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_HEST1_FLAG_OFFSET (Flags,0),           "GHES Assist", 0},
    840      1.1  christos 
    841      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST1_OFFSET (Enabled),                "Enabled", 0},
    842      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST1_OFFSET (RecordsToPreallocate),   "Records To Preallocate", 0},
    843      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST1_OFFSET (MaxSectionsPerRecord),   "Max Sections Per Record", 0},
    844      1.1  christos     {ACPI_DMT_HESTNTFY, ACPI_HEST1_OFFSET (Notify),                 "Notify", 0},
    845      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST1_OFFSET (NumHardwareBanks),       "Num Hardware Banks", 0},
    846      1.1  christos     {ACPI_DMT_UINT24,   ACPI_HEST1_OFFSET (Reserved2[0]),           "Reserved2", 0},
    847      1.1  christos     ACPI_DMT_TERMINATOR
    848      1.1  christos };
    849      1.1  christos 
    850      1.1  christos /* 2: IA32 Non-Maskable Interrupt */
    851      1.1  christos 
    852      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest2[] =
    853      1.1  christos {
    854      1.1  christos     ACPI_DM_HEST_HEADER,
    855      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST2_OFFSET (Reserved),               "Reserved", 0},
    856      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST2_OFFSET (RecordsToPreallocate),   "Records To Preallocate", 0},
    857      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST2_OFFSET (MaxSectionsPerRecord),   "Max Sections Per Record", 0},
    858      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST2_OFFSET (MaxRawDataLength),       "Max Raw Data Length", 0},
    859      1.1  christos     ACPI_DMT_TERMINATOR
    860      1.1  christos };
    861      1.1  christos 
    862      1.1  christos /* 6: PCI Express Root Port AER */
    863      1.1  christos 
    864      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest6[] =
    865      1.1  christos {
    866      1.1  christos     ACPI_DM_HEST_HEADER,
    867      1.1  christos     ACPI_DM_HEST_AER,
    868      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST6_OFFSET (RootErrorCommand),       "Root Error Command", 0},
    869      1.1  christos     ACPI_DMT_TERMINATOR
    870      1.1  christos };
    871      1.1  christos 
    872      1.1  christos /* 7: PCI Express AER (AER Endpoint) */
    873      1.1  christos 
    874      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest7[] =
    875      1.1  christos {
    876      1.1  christos     ACPI_DM_HEST_HEADER,
    877      1.1  christos     ACPI_DM_HEST_AER,
    878      1.1  christos     ACPI_DMT_TERMINATOR
    879      1.1  christos };
    880      1.1  christos 
    881      1.1  christos /* 8: PCI Express/PCI-X Bridge AER */
    882      1.1  christos 
    883      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest8[] =
    884      1.1  christos {
    885      1.1  christos     ACPI_DM_HEST_HEADER,
    886      1.1  christos     ACPI_DM_HEST_AER,
    887      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST8_OFFSET (UncorrectableMask2),     "2nd Uncorrectable Mask", 0},
    888      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST8_OFFSET (UncorrectableSeverity2), "2nd Uncorrectable Severity", 0},
    889      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST8_OFFSET (AdvancedCapabilities2),  "2nd Advanced Capabilities", 0},
    890      1.1  christos     ACPI_DMT_TERMINATOR
    891      1.1  christos };
    892      1.1  christos 
    893      1.1  christos /* 9: Generic Hardware Error Source */
    894      1.1  christos 
    895      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest9[] =
    896      1.1  christos {
    897      1.1  christos     ACPI_DM_HEST_HEADER,
    898      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST9_OFFSET (RelatedSourceId),        "Related Source Id", 0},
    899      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST9_OFFSET (Reserved),               "Reserved", 0},
    900      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST9_OFFSET (Enabled),                "Enabled", 0},
    901      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST9_OFFSET (RecordsToPreallocate),   "Records To Preallocate", 0},
    902      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST9_OFFSET (MaxSectionsPerRecord),   "Max Sections Per Record", 0},
    903      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST9_OFFSET (MaxRawDataLength),       "Max Raw Data Length", 0},
    904      1.1  christos     {ACPI_DMT_GAS,      ACPI_HEST9_OFFSET (ErrorStatusAddress),     "Error Status Address", 0},
    905      1.1  christos     {ACPI_DMT_HESTNTFY, ACPI_HEST9_OFFSET (Notify),                 "Notify", 0},
    906      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST9_OFFSET (ErrorBlockLength),       "Error Status Block Length", 0},
    907      1.1  christos     ACPI_DMT_TERMINATOR
    908      1.1  christos };
    909      1.1  christos 
    910      1.1  christos /* 10: Generic Hardware Error Source - Version 2 */
    911      1.1  christos 
    912      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest10[] =
    913      1.1  christos {
    914      1.1  christos     ACPI_DM_HEST_HEADER,
    915      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST10_OFFSET (RelatedSourceId),       "Related Source Id", 0},
    916      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST10_OFFSET (Reserved),              "Reserved", 0},
    917      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST10_OFFSET (Enabled),               "Enabled", 0},
    918      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST10_OFFSET (RecordsToPreallocate),  "Records To Preallocate", 0},
    919      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST10_OFFSET (MaxSectionsPerRecord),  "Max Sections Per Record", 0},
    920      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST10_OFFSET (MaxRawDataLength),      "Max Raw Data Length", 0},
    921      1.1  christos     {ACPI_DMT_GAS,      ACPI_HEST10_OFFSET (ErrorStatusAddress),    "Error Status Address", 0},
    922      1.1  christos     {ACPI_DMT_HESTNTFY, ACPI_HEST10_OFFSET (Notify),                "Notify", 0},
    923      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST10_OFFSET (ErrorBlockLength),      "Error Status Block Length", 0},
    924      1.1  christos     {ACPI_DMT_GAS,      ACPI_HEST10_OFFSET (ReadAckRegister),       "Read Ack Register", 0},
    925      1.1  christos     {ACPI_DMT_UINT64,   ACPI_HEST10_OFFSET (ReadAckPreserve),       "Read Ack Preserve", 0},
    926      1.1  christos     {ACPI_DMT_UINT64,   ACPI_HEST10_OFFSET (ReadAckWrite),          "Read Ack Write", 0},
    927      1.1  christos     ACPI_DMT_TERMINATOR
    928      1.1  christos };
    929      1.1  christos 
    930      1.1  christos /* 11: IA32 Deferred Machine Check */
    931      1.1  christos 
    932      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHest11[] =
    933      1.1  christos {
    934      1.1  christos     ACPI_DM_HEST_HEADER,
    935      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HEST11_OFFSET (Reserved1),             "Reserved1", 0},
    936      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST11_OFFSET (Flags),                 "Flags (decoded below)", DT_FLAG},
    937      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_HEST11_FLAG_OFFSET (Flags,0),          "Firmware First", 0},
    938      1.1  christos     {ACPI_DMT_FLAG2,    ACPI_HEST11_FLAG_OFFSET (Flags,0),          "GHES Assist", 0},
    939      1.1  christos 
    940      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST11_OFFSET (Enabled),               "Enabled", 0},
    941      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST11_OFFSET (RecordsToPreallocate),  "Records To Preallocate", 0},
    942      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HEST11_OFFSET (MaxSectionsPerRecord),  "Max Sections Per Record", 0},
    943      1.1  christos     {ACPI_DMT_HESTNTFY, ACPI_HEST11_OFFSET (Notify),                "Notify", 0},
    944      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HEST11_OFFSET (NumHardwareBanks),      "Num Hardware Banks", 0},
    945      1.1  christos     {ACPI_DMT_UINT24,   ACPI_HEST11_OFFSET (Reserved2[0]),          "Reserved2", 0},
    946      1.1  christos     ACPI_DMT_TERMINATOR
    947      1.1  christos };
    948      1.1  christos 
    949      1.1  christos /* Notification Structure */
    950      1.1  christos 
    951      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHestNotify[] =
    952      1.1  christos {
    953      1.1  christos     {ACPI_DMT_HESTNTYP, ACPI_HESTN_OFFSET (Type),                   "Notify Type", 0},
    954      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HESTN_OFFSET (Length),                 "Notify Length", DT_LENGTH},
    955      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HESTN_OFFSET (ConfigWriteEnable),      "Configuration Write Enable", 0},
    956      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTN_OFFSET (PollInterval),           "PollInterval", 0},
    957      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTN_OFFSET (Vector),                 "Vector", 0},
    958      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTN_OFFSET (PollingThresholdValue),  "Polling Threshold Value", 0},
    959      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTN_OFFSET (PollingThresholdWindow), "Polling Threshold Window", 0},
    960      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTN_OFFSET (ErrorThresholdValue),    "Error Threshold Value", 0},
    961      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTN_OFFSET (ErrorThresholdWindow),   "Error Threshold Window", 0},
    962      1.1  christos     ACPI_DMT_TERMINATOR
    963      1.1  christos };
    964      1.1  christos 
    965      1.1  christos 
    966      1.1  christos /*
    967      1.1  christos  * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
    968      1.1  christos  * ACPI_HEST_IA_CORRECTED structures.
    969      1.1  christos  */
    970      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHestBank[] =
    971      1.1  christos {
    972      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HESTB_OFFSET (BankNumber),             "Bank Number", 0},
    973      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HESTB_OFFSET (ClearStatusOnInit),      "Clear Status On Init", 0},
    974      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HESTB_OFFSET (StatusFormat),           "Status Format", 0},
    975      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HESTB_OFFSET (Reserved),               "Reserved", 0},
    976      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTB_OFFSET (ControlRegister),        "Control Register", 0},
    977      1.1  christos     {ACPI_DMT_UINT64,   ACPI_HESTB_OFFSET (ControlData),            "Control Data", 0},
    978      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTB_OFFSET (StatusRegister),         "Status Register", 0},
    979      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTB_OFFSET (AddressRegister),        "Address Register", 0},
    980      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HESTB_OFFSET (MiscRegister),           "Misc Register", 0},
    981      1.1  christos     ACPI_DMT_TERMINATOR
    982      1.1  christos };
    983      1.1  christos 
    984      1.1  christos 
    985      1.1  christos /*******************************************************************************
    986      1.1  christos  *
    987      1.1  christos  * HMAT - Heterogeneous Memory Attributes Table
    988      1.1  christos  *
    989      1.1  christos  ******************************************************************************/
    990      1.1  christos 
    991      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat[] =
    992      1.1  christos {
    993      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HMAT_OFFSET (Reserved),                "Reserved", 0},
    994      1.1  christos     ACPI_DMT_TERMINATOR
    995      1.1  christos };
    996      1.1  christos 
    997      1.1  christos /* Common HMAT structure header (one per Subtable) */
    998      1.1  christos 
    999      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmatHdr[] =
   1000      1.1  christos {
   1001      1.1  christos     {ACPI_DMT_HMAT,     ACPI_HMATH_OFFSET (Type),                   "Structure Type", 0},
   1002      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HMATH_OFFSET (Reserved),               "Reserved", 0},
   1003      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HMATH_OFFSET (Length),                 "Length", 0},
   1004      1.1  christos     ACPI_DMT_TERMINATOR
   1005      1.1  christos };
   1006      1.1  christos 
   1007      1.1  christos /* HMAT subtables */
   1008      1.1  christos 
   1009  1.1.1.2  christos /* 0x00: Memory proximity domain attributes */
   1010      1.1  christos 
   1011      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat0[] =
   1012      1.1  christos {
   1013      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
   1014      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Processor Proximity Domain Valid", 0},
   1015      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Reserved1),              "Reserved1", 0},
   1016      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (ProcessorPD),            "Processor Proximity Domain", 0},
   1017      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (MemoryPD),               "Memory Proximity Domain", 0},
   1018      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (Reserved2),              "Reserved2", 0},
   1019  1.1.1.2  christos     {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved3),              "Reserved3", 0},
   1020  1.1.1.2  christos     {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved4),              "Reserved4", 0},
   1021      1.1  christos     ACPI_DMT_TERMINATOR
   1022      1.1  christos };
   1023      1.1  christos 
   1024      1.1  christos /* 0x01: System Locality Latency and Bandwidth Information */
   1025      1.1  christos 
   1026      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat1[] =
   1027      1.1  christos {
   1028      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HMAT1_OFFSET (Flags),                  "Flags (decoded below)", 0},
   1029      1.1  christos     {ACPI_DMT_FLAGS4_0, ACPI_HMAT1_FLAG_OFFSET (Flags,0),           "Memory Hierarchy", 0},
   1030      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HMAT1_OFFSET (DataType),               "Data Type", 0},
   1031      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HMAT1_OFFSET (Reserved1),              "Reserved1", 0},
   1032      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HMAT1_OFFSET (NumberOfInitiatorPDs),   "Initiator Proximity Domains #", 0},
   1033      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HMAT1_OFFSET (NumberOfTargetPDs),      "Target Proximity Domains #", 0},
   1034      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HMAT1_OFFSET (Reserved2),              "Reserved2", 0},
   1035      1.1  christos     {ACPI_DMT_UINT64,   ACPI_HMAT1_OFFSET (EntryBaseUnit),          "Entry Base Unit", 0},
   1036      1.1  christos     ACPI_DMT_TERMINATOR
   1037      1.1  christos };
   1038      1.1  christos 
   1039      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat1a[] =
   1040      1.1  christos {
   1041      1.1  christos     {ACPI_DMT_UINT32,   0,                                          "Initiator Proximity Domain List", DT_OPTIONAL},
   1042      1.1  christos     ACPI_DMT_TERMINATOR
   1043      1.1  christos };
   1044      1.1  christos 
   1045      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat1b[] =
   1046      1.1  christos {
   1047      1.1  christos     {ACPI_DMT_UINT32,   0,                                          "Target Proximity Domain List", DT_OPTIONAL},
   1048      1.1  christos     ACPI_DMT_TERMINATOR
   1049      1.1  christos };
   1050      1.1  christos 
   1051      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat1c[] =
   1052      1.1  christos {
   1053      1.1  christos     {ACPI_DMT_UINT16,   0,                                          "Entry", DT_OPTIONAL},
   1054      1.1  christos     ACPI_DMT_TERMINATOR
   1055      1.1  christos };
   1056      1.1  christos 
   1057      1.1  christos /* 0x02: Memory Side Cache Information */
   1058      1.1  christos 
   1059      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat2[] =
   1060      1.1  christos {
   1061      1.1  christos     {ACPI_DMT_UINT32,       ACPI_HMAT2_OFFSET (MemoryPD),               "Memory Proximity Domain", 0},
   1062      1.1  christos     {ACPI_DMT_UINT32,       ACPI_HMAT2_OFFSET (Reserved1),              "Reserved1", 0},
   1063      1.1  christos     {ACPI_DMT_UINT64,       ACPI_HMAT2_OFFSET (CacheSize),              "Memory Side Cache Size", 0},
   1064      1.1  christos     {ACPI_DMT_UINT32,       ACPI_HMAT2_OFFSET (CacheAttributes),        "Cache Attributes (decoded below)", 0},
   1065      1.1  christos     {ACPI_DMT_FLAGS4_0,     ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Total Cache Levels", 0},
   1066      1.1  christos     {ACPI_DMT_FLAGS4_4,     ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Level", 0},
   1067      1.1  christos     {ACPI_DMT_FLAGS4_8,     ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Associativity", 0},
   1068      1.1  christos     {ACPI_DMT_FLAGS4_12,    ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Write Policy", 0},
   1069      1.1  christos     {ACPI_DMT_FLAGS16_16,   ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Line Size", 0},
   1070      1.1  christos     {ACPI_DMT_UINT16,       ACPI_HMAT2_OFFSET (Reserved2),              "Reserved2", 0},
   1071      1.1  christos     {ACPI_DMT_UINT16,       ACPI_HMAT2_OFFSET (NumberOfSMBIOSHandles),  "SMBIOS Handle #", 0},
   1072      1.1  christos     ACPI_DMT_TERMINATOR
   1073      1.1  christos };
   1074      1.1  christos 
   1075      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat2a[] =
   1076      1.1  christos {
   1077      1.1  christos     {ACPI_DMT_UINT16,   0,                                          "SMBIOS Handle", DT_OPTIONAL},
   1078      1.1  christos     ACPI_DMT_TERMINATOR
   1079      1.1  christos };
   1080      1.1  christos 
   1081      1.1  christos 
   1082      1.1  christos /*******************************************************************************
   1083      1.1  christos  *
   1084      1.1  christos  * HPET - High Precision Event Timer table
   1085      1.1  christos  *
   1086      1.1  christos  ******************************************************************************/
   1087      1.1  christos 
   1088      1.1  christos ACPI_DMTABLE_INFO           AcpiDmTableInfoHpet[] =
   1089      1.1  christos {
   1090      1.1  christos     {ACPI_DMT_UINT32,   ACPI_HPET_OFFSET (Id),                      "Hardware Block ID", 0},
   1091      1.1  christos     {ACPI_DMT_GAS,      ACPI_HPET_OFFSET (Address),                 "Timer Block Register", 0},
   1092      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HPET_OFFSET (Sequence),                "Sequence Number", 0},
   1093      1.1  christos     {ACPI_DMT_UINT16,   ACPI_HPET_OFFSET (MinimumTick),             "Minimum Clock Ticks", 0},
   1094      1.1  christos     {ACPI_DMT_UINT8,    ACPI_HPET_OFFSET (Flags),                   "Flags (decoded below)", DT_FLAG},
   1095      1.1  christos     {ACPI_DMT_FLAG0,    ACPI_HPET_FLAG_OFFSET (Flags,0),            "4K Page Protect", 0},
   1096      1.1  christos     {ACPI_DMT_FLAG1,    ACPI_HPET_FLAG_OFFSET (Flags,0),            "64K Page Protect", 0},
   1097      1.1  christos     ACPI_DMT_TERMINATOR
   1098      1.1  christos };
   1099      1.1  christos /*! [End] no source code translation !*/
   1100