ACK: [PATCH 1/2] ACPICA: Update to version 20180209
ivanhu
ivan.hu at canonical.com
Wed Feb 14 06:14:35 UTC 2018
On 02/10/2018 02:34 AM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> Changes in this release of ACPICA are detailed at the following
> link on the ACPICA developer mailing list:
>
> https://lists.acpica.org/pipermail/devel/2018-February/001722.html
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> src/acpica/source/common/dmtbdump.c | 3829 --------------------
> src/acpica/source/common/dmtbdump1.c | 1542 ++++++++
> src/acpica/source/common/dmtbdump2.c | 2074 +++++++++++
> src/acpica/source/common/dmtbdump3.c | 693 ++++
> src/acpica/source/common/dmtbinfo.c | 2906 ---------------
> src/acpica/source/common/dmtbinfo1.c | 1200 ++++++
> src/acpica/source/common/dmtbinfo2.c | 1541 ++++++++
> src/acpica/source/common/dmtbinfo3.c | 733 ++++
> src/acpica/source/compiler/Makefile.am | 6 +
> src/acpica/source/compiler/aslbtypes.c | 1 +
> src/acpica/source/compiler/aslerror.c | 7 +
> src/acpica/source/compiler/aslfold.c | 54 +-
> src/acpica/source/compiler/aslload.c | 12 +-
> src/acpica/source/compiler/aslmessages.c | 4 +-
> src/acpica/source/compiler/aslmessages.h | 2 +
> src/acpica/source/compiler/dtcompile.c | 18 +-
> src/acpica/source/compiler/dtcompiler.h | 3 +-
> src/acpica/source/compiler/dtexpress.c | 42 +-
> src/acpica/source/compiler/dtparser.l | 58 +-
> src/acpica/source/compiler/dtparser.y | 102 +-
> src/acpica/source/compiler/dttable.c | 16 +-
> src/acpica/source/compiler/dttable1.c | 118 +-
> src/acpica/source/compiler/dttable2.c | 114 +-
> src/acpica/source/components/dispatcher/dsargs.c | 1 +
> src/acpica/source/components/dispatcher/dsopcode.c | 4 +-
> .../source/components/dispatcher/dspkginit.c | 158 +-
> src/acpica/source/components/dispatcher/dswexec.c | 4 +-
> src/acpica/source/components/dispatcher/dswload.c | 2 +-
> src/acpica/source/components/executer/exconvrt.c | 1 +
> src/acpica/source/components/executer/exnames.c | 7 +-
> src/acpica/source/components/executer/exresop.c | 1 +
> src/acpica/source/components/namespace/nseval.c | 11 +-
> src/acpica/source/components/namespace/nsinit.c | 7 +-
> src/acpica/source/components/namespace/nsnames.c | 3 +
> src/acpica/source/components/namespace/nsparse.c | 8 +-
> src/acpica/source/components/parser/psargs.c | 7 +-
> src/acpica/source/components/parser/psloop.c | 4 +-
> src/acpica/source/components/parser/psparse.c | 2 +-
> src/acpica/source/components/parser/pstree.c | 1 +
> src/acpica/source/components/utilities/utcache.c | 5 +-
> src/acpica/source/components/utilities/utdelete.c | 16 +-
> src/acpica/source/include/acopcode.h | 14 +-
> src/acpica/source/include/acpixf.h | 8 +-
> src/acpica/source/include/actbl1.h | 2526 +++++++------
> src/acpica/source/include/actbl2.h | 2624 +++++++-------
> src/acpica/source/include/actbl3.h | 1136 +++---
> src/acpica/source/include/amlcode.h | 21 +-
> src/acpica/source/include/platform/aclinux.h | 1 +
> 48 files changed, 11390 insertions(+), 10257 deletions(-)
> create mode 100644 src/acpica/source/common/dmtbdump1.c
> create mode 100644 src/acpica/source/common/dmtbdump2.c
> create mode 100644 src/acpica/source/common/dmtbdump3.c
> create mode 100644 src/acpica/source/common/dmtbinfo1.c
> create mode 100644 src/acpica/source/common/dmtbinfo2.c
> create mode 100644 src/acpica/source/common/dmtbinfo3.c
>
> diff --git a/src/acpica/source/common/dmtbdump.c b/src/acpica/source/common/dmtbdump.c
> index c9699d5f..cf2ed6d6 100644
> --- a/src/acpica/source/common/dmtbdump.c
> +++ b/src/acpica/source/common/dmtbdump.c
> @@ -603,3832 +603,3 @@ AcpiDmValidateFadtLength (
> "found %X expected %X\n",
> Revision, Length, ExpectedLength);
> }
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpAsf
> - *
> - * PARAMETERS: Table - A ASF table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a ASF table
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpAsf (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_HEADER);
> - ACPI_ASF_INFO *Subtable;
> - ACPI_DMTABLE_INFO *InfoTable;
> - ACPI_DMTABLE_INFO *DataInfoTable = NULL;
> - UINT8 *DataTable = NULL;
> - UINT32 DataCount = 0;
> - UINT32 DataLength = 0;
> - UINT32 DataOffset = 0;
> - UINT32 i;
> - UINT8 Type;
> -
> -
> - /* No main table, only subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Header.Length, AcpiDmTableInfoAsfHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* The actual type is the lower 7 bits of Type */
> -
> - Type = (UINT8) (Subtable->Header.Type & 0x7F);
> -
> - switch (Type)
> - {
> - case ACPI_ASF_TYPE_INFO:
> -
> - InfoTable = AcpiDmTableInfoAsf0;
> - break;
> -
> - case ACPI_ASF_TYPE_ALERT:
> -
> - InfoTable = AcpiDmTableInfoAsf1;
> - DataInfoTable = AcpiDmTableInfoAsf1a;
> - DataTable = ACPI_ADD_PTR (UINT8, Subtable, sizeof (ACPI_ASF_ALERT));
> - DataCount = ACPI_CAST_PTR (ACPI_ASF_ALERT, Subtable)->Alerts;
> - DataLength = ACPI_CAST_PTR (ACPI_ASF_ALERT, Subtable)->DataLength;
> - DataOffset = Offset + sizeof (ACPI_ASF_ALERT);
> - break;
> -
> - case ACPI_ASF_TYPE_CONTROL:
> -
> - InfoTable = AcpiDmTableInfoAsf2;
> - DataInfoTable = AcpiDmTableInfoAsf2a;
> - DataTable = ACPI_ADD_PTR (UINT8, Subtable, sizeof (ACPI_ASF_REMOTE));
> - DataCount = ACPI_CAST_PTR (ACPI_ASF_REMOTE, Subtable)->Controls;
> - DataLength = ACPI_CAST_PTR (ACPI_ASF_REMOTE, Subtable)->DataLength;
> - DataOffset = Offset + sizeof (ACPI_ASF_REMOTE);
> - break;
> -
> - case ACPI_ASF_TYPE_BOOT:
> -
> - InfoTable = AcpiDmTableInfoAsf3;
> - break;
> -
> - case ACPI_ASF_TYPE_ADDRESS:
> -
> - InfoTable = AcpiDmTableInfoAsf4;
> - DataTable = ACPI_ADD_PTR (UINT8, Subtable, sizeof (ACPI_ASF_ADDRESS));
> - DataLength = ACPI_CAST_PTR (ACPI_ASF_ADDRESS, Subtable)->Devices;
> - DataOffset = Offset + sizeof (ACPI_ASF_ADDRESS);
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown ASF subtable type 0x%X\n",
> - Subtable->Header.Type);
> - return;
> - }
> -
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Header.Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Dump variable-length extra data */
> -
> - switch (Type)
> - {
> - case ACPI_ASF_TYPE_ALERT:
> - case ACPI_ASF_TYPE_CONTROL:
> -
> - for (i = 0; i < DataCount; i++)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, DataOffset,
> - DataTable, DataLength, DataInfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - DataTable = ACPI_ADD_PTR (UINT8, DataTable, DataLength);
> - DataOffset += DataLength;
> - }
> - break;
> -
> - case ACPI_ASF_TYPE_ADDRESS:
> -
> - for (i = 0; i < DataLength; i++)
> - {
> - if (!(i % 16))
> - {
> - AcpiDmLineHeader (DataOffset, 1, "Addresses");
> - }
> -
> - AcpiOsPrintf ("%2.2X ", *DataTable);
> - DataTable++;
> - DataOffset++;
> -
> - if (DataOffset > Table->Length)
> - {
> - AcpiOsPrintf (
> - "**** ACPI table terminates in the middle of a "
> - "data structure! (ASF! table)\n");
> - return;
> - }
> - }
> -
> - AcpiOsPrintf ("\n");
> - break;
> -
> - default:
> -
> - break;
> - }
> -
> - AcpiOsPrintf ("\n");
> -
> - /* Point to next subtable */
> -
> - if (!Subtable->Header.Length)
> - {
> - AcpiOsPrintf ("Invalid zero subtable header length\n");
> - return;
> - }
> -
> - Offset += Subtable->Header.Length;
> - Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Subtable,
> - Subtable->Header.Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpCpep
> - *
> - * PARAMETERS: Table - A CPEP table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a CPEP. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpCpep (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_CPEP_POLLING *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_CPEP);
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoCpep);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Header.Length, AcpiDmTableInfoCpep0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += Subtable->Header.Length;
> - Subtable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Subtable,
> - Subtable->Header.Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpCsrt
> - *
> - * PARAMETERS: Table - A CSRT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a CSRT. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpCsrt (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_CSRT_GROUP *Subtable;
> - ACPI_CSRT_SHARED_INFO *SharedInfoTable;
> - ACPI_CSRT_DESCRIPTOR *SubSubtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_CSRT);
> - UINT32 SubOffset;
> - UINT32 SubSubOffset;
> - UINT32 InfoLength;
> -
> -
> - /* The main table only contains the ACPI header, thus already handled */
> -
> - /* Subtables (Resource Groups) */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Resource group subtable */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoCsrt0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Shared info subtable (One per resource group) */
> -
> - SubOffset = sizeof (ACPI_CSRT_GROUP);
> - SharedInfoTable = ACPI_ADD_PTR (ACPI_CSRT_SHARED_INFO, Table,
> - Offset + SubOffset);
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset + SubOffset, SharedInfoTable,
> - sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - SubOffset += Subtable->SharedInfoLength;
> -
> - /* Sub-Subtables (Resource Descriptors) */
> -
> - SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table,
> - Offset + SubOffset);
> -
> - while ((SubOffset < Subtable->Length) &&
> - ((Offset + SubOffset) < Table->Length))
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubtable,
> - SubSubtable->Length, AcpiDmTableInfoCsrt2);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - SubSubOffset = sizeof (ACPI_CSRT_DESCRIPTOR);
> -
> - /* Resource-specific info buffer */
> -
> - InfoLength = SubSubtable->Length - SubSubOffset;
> - if (InfoLength)
> - {
> - Status = AcpiDmDumpTable (Length,
> - Offset + SubOffset + SubSubOffset, Table,
> - InfoLength, AcpiDmTableInfoCsrt2a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - SubSubOffset += InfoLength;
> - }
> -
> - /* Point to next sub-subtable */
> -
> - SubOffset += SubSubtable->Length;
> - SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubtable,
> - SubSubtable->Length);
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Subtable,
> - Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpDbg2
> - *
> - * PARAMETERS: Table - A DBG2 table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a DBG2. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpDbg2 (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_DBG2_DEVICE *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_DBG2);
> - UINT32 i;
> - UINT32 ArrayOffset;
> - UINT32 AbsoluteOffset;
> - UINT8 *Array;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDbg2);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoDbg2Device);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Dump the BaseAddress array */
> -
> - for (i = 0; i < Subtable->RegisterCount; i++)
> - {
> - ArrayOffset = Subtable->BaseAddressOffset +
> - (sizeof (ACPI_GENERIC_ADDRESS) * i);
> - AbsoluteOffset = Offset + ArrayOffset;
> - Array = (UINT8 *) Subtable + ArrayOffset;
> -
> - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
> - Subtable->Length, AcpiDmTableInfoDbg2Addr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - }
> -
> - /* Dump the AddressSize array */
> -
> - for (i = 0; i < Subtable->RegisterCount; i++)
> - {
> - ArrayOffset = Subtable->AddressSizeOffset +
> - (sizeof (UINT32) * i);
> - AbsoluteOffset = Offset + ArrayOffset;
> - Array = (UINT8 *) Subtable + ArrayOffset;
> -
> - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
> - Subtable->Length, AcpiDmTableInfoDbg2Size);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - }
> -
> - /* Dump the Namestring (required) */
> -
> - AcpiOsPrintf ("\n");
> - ArrayOffset = Subtable->NamepathOffset;
> - AbsoluteOffset = Offset + ArrayOffset;
> - Array = (UINT8 *) Subtable + ArrayOffset;
> -
> - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
> - Subtable->Length, AcpiDmTableInfoDbg2Name);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Dump the OemData (optional) */
> -
> - if (Subtable->OemDataOffset)
> - {
> - Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset,
> - Table, Subtable->OemDataLength,
> - AcpiDmTableInfoDbg2OemData);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Subtable,
> - Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpDmar
> - *
> - * PARAMETERS: Table - A DMAR table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a DMAR. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpDmar (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_DMAR_HEADER *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_DMAR);
> - ACPI_DMTABLE_INFO *InfoTable;
> - ACPI_DMAR_DEVICE_SCOPE *ScopeTable;
> - UINT32 ScopeOffset;
> - UINT8 *PciPath;
> - UINT32 PathOffset;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDmar);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoDmarHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - AcpiOsPrintf ("\n");
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_DMAR_TYPE_HARDWARE_UNIT:
> -
> - InfoTable = AcpiDmTableInfoDmar0;
> - ScopeOffset = sizeof (ACPI_DMAR_HARDWARE_UNIT);
> - break;
> -
> - case ACPI_DMAR_TYPE_RESERVED_MEMORY:
> -
> - InfoTable = AcpiDmTableInfoDmar1;
> - ScopeOffset = sizeof (ACPI_DMAR_RESERVED_MEMORY);
> - break;
> -
> - case ACPI_DMAR_TYPE_ROOT_ATS:
> -
> - InfoTable = AcpiDmTableInfoDmar2;
> - ScopeOffset = sizeof (ACPI_DMAR_ATSR);
> - break;
> -
> - case ACPI_DMAR_TYPE_HARDWARE_AFFINITY:
> -
> - InfoTable = AcpiDmTableInfoDmar3;
> - ScopeOffset = sizeof (ACPI_DMAR_RHSA);
> - break;
> -
> - case ACPI_DMAR_TYPE_NAMESPACE:
> -
> - InfoTable = AcpiDmTableInfoDmar4;
> - ScopeOffset = sizeof (ACPI_DMAR_ANDD);
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n",
> - Subtable->Type);
> - return;
> - }
> -
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /*
> - * Dump the optional device scope entries
> - */
> - if ((Subtable->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
> - (Subtable->Type == ACPI_DMAR_TYPE_NAMESPACE))
> - {
> - /* These types do not support device scopes */
> -
> - goto NextSubtable;
> - }
> -
> - ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, Subtable, ScopeOffset);
> - while (ScopeOffset < Subtable->Length)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable,
> - ScopeTable->Length, AcpiDmTableInfoDmarScope);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - AcpiOsPrintf ("\n");
> -
> - /* Dump the PCI Path entries for this device scope */
> -
> - PathOffset = sizeof (ACPI_DMAR_DEVICE_SCOPE); /* Path entries start at this offset */
> -
> - PciPath = ACPI_ADD_PTR (UINT8, ScopeTable,
> - sizeof (ACPI_DMAR_DEVICE_SCOPE));
> -
> - while (PathOffset < ScopeTable->Length)
> - {
> - AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2,
> - "PCI Path");
> - AcpiOsPrintf ("%2.2X,%2.2X\n", PciPath[0], PciPath[1]);
> -
> - /* Point to next PCI Path entry */
> -
> - PathOffset += 2;
> - PciPath += 2;
> - AcpiOsPrintf ("\n");
> - }
> -
> - /* Point to next device scope entry */
> -
> - ScopeOffset += ScopeTable->Length;
> - ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE,
> - ScopeTable, ScopeTable->Length);
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Subtable,
> - Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpDrtm
> - *
> - * PARAMETERS: Table - A DRTM table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a DRTM.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpDrtm (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset;
> - ACPI_DRTM_VTABLE_LIST *DrtmVtl;
> - ACPI_DRTM_RESOURCE_LIST *DrtmRl;
> - ACPI_DRTM_DPS_ID *DrtmDps;
> - UINT32 Count;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> - AcpiDmTableInfoDrtm);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Offset = sizeof (ACPI_TABLE_DRTM);
> -
> - /* Sub-tables */
> -
> - /* Dump ValidatedTable length */
> -
> - DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset);
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset,
> - DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables),
> - AcpiDmTableInfoDrtm0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Offset += ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables);
> -
> - /* Dump Validated table addresses */
> -
> - Count = 0;
> - while ((Offset < Table->Length) &&
> - (DrtmVtl->ValidatedTableCount > Count))
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset,
> - ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64),
> - AcpiDmTableInfoDrtm0a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Offset += sizeof (UINT64);
> - Count++;
> - }
> -
> - /* Dump ResourceList length */
> -
> - DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset);
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset,
> - DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources),
> - AcpiDmTableInfoDrtm1);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Offset += ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources);
> -
> - /* Dump the Resource List */
> -
> - Count = 0;
> - while ((Offset < Table->Length) &&
> - (DrtmRl->ResourceCount > Count))
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset,
> - ACPI_ADD_PTR (void, Table, Offset),
> - sizeof (ACPI_DRTM_RESOURCE), AcpiDmTableInfoDrtm1a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Offset += sizeof (ACPI_DRTM_RESOURCE);
> - Count++;
> - }
> -
> - /* Dump DPS */
> -
> - DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset);
> - AcpiOsPrintf ("\n");
> - (void) AcpiDmDumpTable (Table->Length, Offset,
> - DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpEinj
> - *
> - * PARAMETERS: Table - A EINJ table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a EINJ. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpEinj (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_WHEA_HEADER *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_EINJ);
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoEinj);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoEinj0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable (each subtable is of fixed length) */
> -
> - Offset += sizeof (ACPI_WHEA_HEADER);
> - Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Subtable,
> - sizeof (ACPI_WHEA_HEADER));
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpErst
> - *
> - * PARAMETERS: Table - A ERST table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a ERST. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpErst (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_WHEA_HEADER *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_ERST);
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoErst);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoErst0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable (each subtable is of fixed length) */
> -
> - Offset += sizeof (ACPI_WHEA_HEADER);
> - Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Subtable,
> - sizeof (ACPI_WHEA_HEADER));
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpFpdt
> - *
> - * PARAMETERS: Table - A FPDT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a FPDT. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpFpdt (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_FPDT_HEADER *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_FPDT);
> - ACPI_DMTABLE_INFO *InfoTable;
> -
> -
> - /* There is no main table (other than the standard ACPI header) */
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoFpdtHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_FPDT_TYPE_BOOT:
> -
> - InfoTable = AcpiDmTableInfoFpdt0;
> - break;
> -
> - case ACPI_FPDT_TYPE_S3PERF:
> -
> - InfoTable = AcpiDmTableInfoFpdt1;
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n",
> - Subtable->Type);
> -
> - /* Attempt to continue */
> -
> - if (!Subtable->Length)
> - {
> - AcpiOsPrintf ("Invalid zero length subtable\n");
> - return;
> - }
> - goto NextSubtable;
> - }
> -
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Subtable,
> - Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpGtdt
> - *
> - * PARAMETERS: Table - A GTDT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a GTDT. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpGtdt (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_GTDT_HEADER *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_GTDT);
> - ACPI_DMTABLE_INFO *InfoTable;
> - UINT32 SubtableLength;
> - UINT32 GtCount;
> - ACPI_GTDT_TIMER_ENTRY *GtxTable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoGtdt);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoGtdtHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - GtCount = 0;
> - switch (Subtable->Type)
> - {
> - case ACPI_GTDT_TYPE_TIMER_BLOCK:
> -
> - SubtableLength = sizeof (ACPI_GTDT_TIMER_BLOCK);
> - GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
> - Subtable))->TimerCount;
> -
> - InfoTable = AcpiDmTableInfoGtdt0;
> - break;
> -
> - case ACPI_GTDT_TYPE_WATCHDOG:
> -
> - SubtableLength = sizeof (ACPI_GTDT_WATCHDOG);
> -
> - InfoTable = AcpiDmTableInfoGtdt1;
> - break;
> -
> - default:
> -
> - /* Cannot continue on unknown type - no length */
> -
> - AcpiOsPrintf ("\n**** Unknown GTDT subtable type 0x%X\n",
> - Subtable->Type);
> - return;
> - }
> -
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to end of current subtable (each subtable above is of fixed length) */
> -
> - Offset += SubtableLength;
> -
> - /* If there are any Gt Timer Blocks from above, dump them now */
> -
> - if (GtCount)
> - {
> - GtxTable = ACPI_ADD_PTR (
> - ACPI_GTDT_TIMER_ENTRY, Subtable, SubtableLength);
> - SubtableLength += GtCount * sizeof (ACPI_GTDT_TIMER_ENTRY);
> -
> - while (GtCount)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, GtxTable,
> - sizeof (ACPI_GTDT_TIMER_ENTRY), AcpiDmTableInfoGtdt0a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - Offset += sizeof (ACPI_GTDT_TIMER_ENTRY);
> - GtxTable++;
> - GtCount--;
> - }
> - }
> -
> - /* Point to next subtable */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Subtable, SubtableLength);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpHest
> - *
> - * PARAMETERS: Table - A HEST table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a HEST. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpHest (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_HEST_HEADER *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_HEST);
> - ACPI_DMTABLE_INFO *InfoTable;
> - UINT32 SubtableLength;
> - UINT32 BankCount;
> - ACPI_HEST_IA_ERROR_BANK *BankTable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHest);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - BankCount = 0;
> - switch (Subtable->Type)
> - {
> - case ACPI_HEST_TYPE_IA32_CHECK:
> -
> - InfoTable = AcpiDmTableInfoHest0;
> - SubtableLength = sizeof (ACPI_HEST_IA_MACHINE_CHECK);
> - BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK,
> - Subtable))->NumHardwareBanks;
> - break;
> -
> - case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK:
> -
> - InfoTable = AcpiDmTableInfoHest1;
> - SubtableLength = sizeof (ACPI_HEST_IA_CORRECTED);
> - BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED,
> - Subtable))->NumHardwareBanks;
> - break;
> -
> - case ACPI_HEST_TYPE_IA32_NMI:
> -
> - InfoTable = AcpiDmTableInfoHest2;
> - SubtableLength = sizeof (ACPI_HEST_IA_NMI);
> - break;
> -
> - case ACPI_HEST_TYPE_AER_ROOT_PORT:
> -
> - InfoTable = AcpiDmTableInfoHest6;
> - SubtableLength = sizeof (ACPI_HEST_AER_ROOT);
> - break;
> -
> - case ACPI_HEST_TYPE_AER_ENDPOINT:
> -
> - InfoTable = AcpiDmTableInfoHest7;
> - SubtableLength = sizeof (ACPI_HEST_AER);
> - break;
> -
> - case ACPI_HEST_TYPE_AER_BRIDGE:
> -
> - InfoTable = AcpiDmTableInfoHest8;
> - SubtableLength = sizeof (ACPI_HEST_AER_BRIDGE);
> - break;
> -
> - case ACPI_HEST_TYPE_GENERIC_ERROR:
> -
> - InfoTable = AcpiDmTableInfoHest9;
> - SubtableLength = sizeof (ACPI_HEST_GENERIC);
> - break;
> -
> - case ACPI_HEST_TYPE_GENERIC_ERROR_V2:
> -
> - InfoTable = AcpiDmTableInfoHest10;
> - SubtableLength = sizeof (ACPI_HEST_GENERIC_V2);
> - break;
> -
> - case ACPI_HEST_TYPE_IA32_DEFERRED_CHECK:
> -
> - InfoTable = AcpiDmTableInfoHest11;
> - SubtableLength = sizeof (ACPI_HEST_IA_DEFERRED_CHECK);
> - BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_DEFERRED_CHECK,
> - Subtable))->NumHardwareBanks;
> - break;
> -
> - default:
> -
> - /* Cannot continue on unknown type - no length */
> -
> - AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n",
> - Subtable->Type);
> - return;
> - }
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - SubtableLength, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to end of current subtable (each subtable above is of fixed length) */
> -
> - Offset += SubtableLength;
> -
> - /* If there are any (fixed-length) Error Banks from above, dump them now */
> -
> - if (BankCount)
> - {
> - BankTable = ACPI_ADD_PTR (ACPI_HEST_IA_ERROR_BANK, Subtable,
> - SubtableLength);
> - SubtableLength += BankCount * sizeof (ACPI_HEST_IA_ERROR_BANK);
> -
> - while (BankCount)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, BankTable,
> - sizeof (ACPI_HEST_IA_ERROR_BANK), AcpiDmTableInfoHestBank);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Offset += sizeof (ACPI_HEST_IA_ERROR_BANK);
> - BankTable++;
> - BankCount--;
> - }
> - }
> -
> - /* Point to next subtable */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Subtable, SubtableLength);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpHmat
> - *
> - * PARAMETERS: Table - A HMAT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a HMAT.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpHmat (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_HMAT_STRUCTURE *HmatStruct;
> - ACPI_HMAT_LOCALITY *HmatLocality;
> - ACPI_HMAT_CACHE *HmatCache;
> - UINT32 Offset;
> - UINT32 SubtableOffset;
> - UINT32 Length;
> - ACPI_DMTABLE_INFO *InfoTable;
> - UINT32 i, j;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoHmat);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - Offset = sizeof (ACPI_TABLE_HMAT);
> -
> - while (Offset < Table->Length)
> - {
> - AcpiOsPrintf ("\n");
> - SubtableOffset = 0;
> -
> - /* Dump HMAT structure header */
> -
> - HmatStruct = ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, Table, Offset);
> - if (HmatStruct->Length < sizeof (ACPI_HMAT_STRUCTURE))
> - {
> - AcpiOsPrintf ("Invalid HMAT structure length\n");
> - return;
> - }
> - Status = AcpiDmDumpTable (Table->Length, Offset, HmatStruct,
> - HmatStruct->Length, AcpiDmTableInfoHmatHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (HmatStruct->Type)
> - {
> - case ACPI_HMAT_TYPE_ADDRESS_RANGE:
> -
> - InfoTable = AcpiDmTableInfoHmat0;
> - Length = sizeof (ACPI_HMAT_ADDRESS_RANGE);
> - break;
> -
> - case ACPI_HMAT_TYPE_LOCALITY:
> -
> - InfoTable = AcpiDmTableInfoHmat1;
> - Length = sizeof (ACPI_HMAT_LOCALITY);
> - break;
> -
> - case ACPI_HMAT_TYPE_CACHE:
> -
> - InfoTable = AcpiDmTableInfoHmat2;
> - Length = sizeof (ACPI_HMAT_CACHE);
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown HMAT structure type 0x%X\n",
> - HmatStruct->Type);
> -
> - /* Attempt to continue */
> -
> - goto NextSubtable;
> - }
> -
> - /* Dump HMAT structure body */
> -
> - if (HmatStruct->Length < Length)
> - {
> - AcpiOsPrintf ("Invalid HMAT structure length\n");
> - return;
> - }
> - Status = AcpiDmDumpTable (Table->Length, Offset, HmatStruct,
> - HmatStruct->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Dump HMAT structure additionals */
> -
> - switch (HmatStruct->Type)
> - {
> - case ACPI_HMAT_TYPE_LOCALITY:
> -
> - HmatLocality = ACPI_CAST_PTR (ACPI_HMAT_LOCALITY, HmatStruct);
> - SubtableOffset = sizeof (ACPI_HMAT_LOCALITY);
> -
> - /* Dump initiator proximity domains */
> -
> - if ((UINT32)(HmatStruct->Length - SubtableOffset) <
> - (UINT32)(HmatLocality->NumberOfInitiatorPDs * 4))
> - {
> - AcpiOsPrintf ("Invalid initiator proximity domain number\n");
> - return;
> - }
> - for (i = 0; i < HmatLocality->NumberOfInitiatorPDs; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> - ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
> - 4, AcpiDmTableInfoHmat1a);
> - SubtableOffset += 4;
> - }
> -
> - /* Dump target proximity domains */
> -
> - if ((UINT32)(HmatStruct->Length - SubtableOffset) <
> - (UINT32)(HmatLocality->NumberOfTargetPDs * 4))
> - {
> - AcpiOsPrintf ("Invalid target proximity domain number\n");
> - return;
> - }
> - for (i = 0; i < HmatLocality->NumberOfTargetPDs; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> - ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
> - 4, AcpiDmTableInfoHmat1b);
> - SubtableOffset += 4;
> - }
> -
> - /* Dump latency/bandwidth entris */
> -
> - if ((UINT32)(HmatStruct->Length - SubtableOffset) <
> - (UINT32)(HmatLocality->NumberOfInitiatorPDs *
> - HmatLocality->NumberOfTargetPDs * 2))
> - {
> - AcpiOsPrintf ("Invalid latency/bandwidth entry number\n");
> - return;
> - }
> - for (i = 0; i < HmatLocality->NumberOfInitiatorPDs; i++)
> - {
> - for (j = 0; j < HmatLocality->NumberOfTargetPDs; j++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> - ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
> - 2, AcpiDmTableInfoHmat1c);
> - SubtableOffset += 2;
> - }
> - }
> - break;
> -
> - case ACPI_HMAT_TYPE_CACHE:
> -
> - HmatCache = ACPI_CAST_PTR (ACPI_HMAT_CACHE, HmatStruct);
> - SubtableOffset = sizeof (ACPI_HMAT_CACHE);
> -
> - /* Dump SMBIOS handles */
> -
> - if ((UINT32)(HmatStruct->Length - SubtableOffset) <
> - (UINT32)(HmatCache->NumberOfSMBIOSHandles * 2))
> - {
> - AcpiOsPrintf ("Invalid SMBIOS handle number\n");
> - return;
> - }
> - for (i = 0; i < HmatCache->NumberOfSMBIOSHandles; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> - ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
> - 2, AcpiDmTableInfoHmat2a);
> - SubtableOffset += 2;
> - }
> - break;
> -
> - default:
> -
> - break;
> - }
> -
> -NextSubtable:
> - /* Point to next HMAT structure subtable */
> -
> - Offset += (HmatStruct->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpIort
> - *
> - * PARAMETERS: Table - A IORT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a IORT
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpIort (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_TABLE_IORT *Iort;
> - ACPI_IORT_NODE *IortNode;
> - ACPI_IORT_ITS_GROUP *IortItsGroup = NULL;
> - ACPI_IORT_SMMU *IortSmmu = NULL;
> - UINT32 Offset;
> - UINT32 NodeOffset;
> - UINT32 Length;
> - ACPI_DMTABLE_INFO *InfoTable;
> - char *String;
> - UINT32 i;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIort);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Iort = ACPI_CAST_PTR (ACPI_TABLE_IORT, Table);
> - Offset = sizeof (ACPI_TABLE_IORT);
> -
> - /* Dump the OptionalPadding (optional) */
> -
> - if (Iort->NodeOffset > Offset)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset, Table,
> - Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - }
> -
> - Offset = Iort->NodeOffset;
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, Table, Offset);
> - AcpiOsPrintf ("\n");
> - Length = ACPI_OFFSET (ACPI_IORT_NODE, NodeData);
> - Status = AcpiDmDumpTable (Table->Length, Offset,
> - IortNode, Length, AcpiDmTableInfoIortHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - NodeOffset = Length;
> -
> - switch (IortNode->Type)
> - {
> - case ACPI_IORT_NODE_ITS_GROUP:
> -
> - InfoTable = AcpiDmTableInfoIort0;
> - Length = ACPI_OFFSET (ACPI_IORT_ITS_GROUP, Identifiers);
> - IortItsGroup = ACPI_ADD_PTR (ACPI_IORT_ITS_GROUP, IortNode, NodeOffset);
> - break;
> -
> - case ACPI_IORT_NODE_NAMED_COMPONENT:
> -
> - InfoTable = AcpiDmTableInfoIort1;
> - Length = ACPI_OFFSET (ACPI_IORT_NAMED_COMPONENT, DeviceName);
> - String = ACPI_ADD_PTR (char, IortNode, NodeOffset + Length);
> - Length += strlen (String) + 1;
> - break;
> -
> - case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
> -
> - InfoTable = AcpiDmTableInfoIort2;
> - Length = IortNode->Length - NodeOffset;
> - break;
> -
> - case ACPI_IORT_NODE_SMMU:
> -
> - InfoTable = AcpiDmTableInfoIort3;
> - Length = ACPI_OFFSET (ACPI_IORT_SMMU, Interrupts);
> - IortSmmu = ACPI_ADD_PTR (ACPI_IORT_SMMU, IortNode, NodeOffset);
> - break;
> -
> - case ACPI_IORT_NODE_SMMU_V3:
> -
> - InfoTable = AcpiDmTableInfoIort4;
> - Length = IortNode->Length - NodeOffset;
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown IORT node type 0x%X\n",
> - IortNode->Type);
> -
> - /* Attempt to continue */
> -
> - if (!IortNode->Length)
> - {
> - AcpiOsPrintf ("Invalid zero length IORT node\n");
> - return;
> - }
> - goto NextSubtable;
> - }
> -
> - /* Dump the node subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> - Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - NodeOffset += Length;
> -
> - /* Dump the node specific data */
> -
> - switch (IortNode->Type)
> - {
> - case ACPI_IORT_NODE_ITS_GROUP:
> -
> - /* Validate IortItsGroup to avoid compiler warnings */
> -
> - if (IortItsGroup)
> - {
> - for (i = 0; i < IortItsGroup->ItsCount; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> - 4, AcpiDmTableInfoIort0a);
> - NodeOffset += 4;
> - }
> - }
> - break;
> -
> - case ACPI_IORT_NODE_NAMED_COMPONENT:
> -
> - /* Dump the Padding (optional) */
> -
> - if (IortNode->Length > NodeOffset)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> - Table, IortNode->Length - NodeOffset,
> - AcpiDmTableInfoIort1a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - }
> - break;
> -
> - case ACPI_IORT_NODE_SMMU:
> -
> - AcpiOsPrintf ("\n");
> -
> - /* Validate IortSmmu to avoid compiler warnings */
> -
> - if (IortSmmu)
> - {
> - Length = 2 * sizeof (UINT64);
> - NodeOffset = IortSmmu->GlobalInterruptOffset;
> - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> - Length, AcpiDmTableInfoIort3a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - NodeOffset = IortSmmu->ContextInterruptOffset;
> - for (i = 0; i < IortSmmu->ContextInterruptCount; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> - 8, AcpiDmTableInfoIort3b);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - NodeOffset += 8;
> - }
> -
> - NodeOffset = IortSmmu->PmuInterruptOffset;
> - for (i = 0; i < IortSmmu->PmuInterruptCount; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> - 8, AcpiDmTableInfoIort3c);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - NodeOffset += 8;
> - }
> - }
> - break;
> -
> - default:
> -
> - break;
> - }
> -
> - /* Dump the ID mappings */
> -
> - NodeOffset = IortNode->MappingOffset;
> - for (i = 0; i < IortNode->MappingCount; i++)
> - {
> - AcpiOsPrintf ("\n");
> - Length = sizeof (ACPI_IORT_ID_MAPPING);
> - Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> - Length, AcpiDmTableInfoIortMap);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - NodeOffset += Length;
> - }
> -
> -NextSubtable:
> - /* Point to next node subtable */
> -
> - Offset += IortNode->Length;
> - IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, IortNode->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpIvrs
> - *
> - * PARAMETERS: Table - A IVRS table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a IVRS
> - *
> - ******************************************************************************/
> -
> -static UINT8 EntrySizes[] = {4,8,16,32};
> -
> -void
> -AcpiDmDumpIvrs (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_IVRS);
> - UINT32 EntryOffset;
> - UINT32 EntryLength;
> - UINT32 EntryType;
> - ACPI_IVRS_DE_HEADER *DeviceEntry;
> - ACPI_IVRS_HEADER *Subtable;
> - ACPI_DMTABLE_INFO *InfoTable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoIvrsHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_IVRS_TYPE_HARDWARE:
> -
> - InfoTable = AcpiDmTableInfoIvrs0;
> - break;
> -
> - case ACPI_IVRS_TYPE_MEMORY1:
> - case ACPI_IVRS_TYPE_MEMORY2:
> - case ACPI_IVRS_TYPE_MEMORY3:
> -
> - InfoTable = AcpiDmTableInfoIvrs1;
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown IVRS subtable type 0x%X\n",
> - Subtable->Type);
> -
> - /* Attempt to continue */
> -
> - if (!Subtable->Length)
> - {
> - AcpiOsPrintf ("Invalid zero length subtable\n");
> - return;
> - }
> - goto NextSubtable;
> - }
> -
> - /* Dump the subtable */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* The hardware subtable can contain multiple device entries */
> -
> - if (Subtable->Type == ACPI_IVRS_TYPE_HARDWARE)
> - {
> - EntryOffset = Offset + sizeof (ACPI_IVRS_HARDWARE);
> - DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, Subtable,
> - sizeof (ACPI_IVRS_HARDWARE));
> -
> - while (EntryOffset < (Offset + Subtable->Length))
> - {
> - AcpiOsPrintf ("\n");
> - /*
> - * Upper 2 bits of Type encode the length of the device entry
> - *
> - * 00 = 4 byte
> - * 01 = 8 byte
> - * 10 = 16 byte - currently no entries defined
> - * 11 = 32 byte - currently no entries defined
> - */
> - EntryType = DeviceEntry->Type;
> - EntryLength = EntrySizes [EntryType >> 6];
> -
> - switch (EntryType)
> - {
> - /* 4-byte device entries */
> -
> - case ACPI_IVRS_TYPE_PAD4:
> - case ACPI_IVRS_TYPE_ALL:
> - case ACPI_IVRS_TYPE_SELECT:
> - case ACPI_IVRS_TYPE_START:
> - case ACPI_IVRS_TYPE_END:
> -
> - InfoTable = AcpiDmTableInfoIvrs4;
> - break;
> -
> - /* 8-byte entries, type A */
> -
> - case ACPI_IVRS_TYPE_ALIAS_SELECT:
> - case ACPI_IVRS_TYPE_ALIAS_START:
> -
> - InfoTable = AcpiDmTableInfoIvrs8a;
> - break;
> -
> - /* 8-byte entries, type B */
> -
> - case ACPI_IVRS_TYPE_PAD8:
> - case ACPI_IVRS_TYPE_EXT_SELECT:
> - case ACPI_IVRS_TYPE_EXT_START:
> -
> - InfoTable = AcpiDmTableInfoIvrs8b;
> - break;
> -
> - /* 8-byte entries, type C */
> -
> - case ACPI_IVRS_TYPE_SPECIAL:
> -
> - InfoTable = AcpiDmTableInfoIvrs8c;
> - break;
> -
> - default:
> - InfoTable = AcpiDmTableInfoIvrs4;
> - AcpiOsPrintf (
> - "\n**** Unknown IVRS device entry type/length: "
> - "0x%.2X/0x%X at offset 0x%.4X: (header below)\n",
> - EntryType, EntryLength, EntryOffset);
> - break;
> - }
> -
> - /* Dump the Device Entry */
> -
> - Status = AcpiDmDumpTable (Table->Length, EntryOffset,
> - DeviceEntry, EntryLength, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - EntryOffset += EntryLength;
> - DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry,
> - EntryLength);
> - }
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpLpit
> - *
> - * PARAMETERS: Table - A LPIT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a LPIT. This table type consists
> - * of an open-ended number of subtables. Note: There are no
> - * entries in the main table. An LPIT consists of the table
> - * header and then subtables only.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpLpit (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_LPIT_HEADER *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_LPIT);
> - ACPI_DMTABLE_INFO *InfoTable;
> - UINT32 SubtableLength;
> -
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_LPIT_TYPE_NATIVE_CSTATE:
> -
> - InfoTable = AcpiDmTableInfoLpit0;
> - SubtableLength = sizeof (ACPI_LPIT_NATIVE);
> - break;
> -
> - default:
> -
> - /* Cannot continue on unknown type - no length */
> -
> - AcpiOsPrintf ("\n**** Unknown LPIT subtable type 0x%X\n",
> - Subtable->Type);
> - return;
> - }
> -
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - SubtableLength, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - AcpiOsPrintf ("\n");
> -
> - /* Point to next subtable */
> -
> - Offset += SubtableLength;
> - Subtable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Subtable, SubtableLength);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpMadt
> - *
> - * PARAMETERS: Table - A MADT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a MADT. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpMadt (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_SUBTABLE_HEADER *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_MADT);
> - ACPI_DMTABLE_INFO *InfoTable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoMadtHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_MADT_TYPE_LOCAL_APIC:
> -
> - InfoTable = AcpiDmTableInfoMadt0;
> - break;
> -
> - case ACPI_MADT_TYPE_IO_APIC:
> -
> - InfoTable = AcpiDmTableInfoMadt1;
> - break;
> -
> - case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE:
> -
> - InfoTable = AcpiDmTableInfoMadt2;
> - break;
> -
> - case ACPI_MADT_TYPE_NMI_SOURCE:
> -
> - InfoTable = AcpiDmTableInfoMadt3;
> - break;
> -
> - case ACPI_MADT_TYPE_LOCAL_APIC_NMI:
> -
> - InfoTable = AcpiDmTableInfoMadt4;
> - break;
> -
> - case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE:
> -
> - InfoTable = AcpiDmTableInfoMadt5;
> - break;
> -
> - case ACPI_MADT_TYPE_IO_SAPIC:
> -
> - InfoTable = AcpiDmTableInfoMadt6;
> - break;
> -
> - case ACPI_MADT_TYPE_LOCAL_SAPIC:
> -
> - InfoTable = AcpiDmTableInfoMadt7;
> - break;
> -
> - case ACPI_MADT_TYPE_INTERRUPT_SOURCE:
> -
> - InfoTable = AcpiDmTableInfoMadt8;
> - break;
> -
> - case ACPI_MADT_TYPE_LOCAL_X2APIC:
> -
> - InfoTable = AcpiDmTableInfoMadt9;
> - break;
> -
> - case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
> -
> - InfoTable = AcpiDmTableInfoMadt10;
> - break;
> -
> - case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
> -
> - InfoTable = AcpiDmTableInfoMadt11;
> - break;
> -
> - case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
> -
> - InfoTable = AcpiDmTableInfoMadt12;
> - break;
> -
> - case ACPI_MADT_TYPE_GENERIC_MSI_FRAME:
> -
> - InfoTable = AcpiDmTableInfoMadt13;
> - break;
> -
> - case ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR:
> -
> - InfoTable = AcpiDmTableInfoMadt14;
> - break;
> -
> - case ACPI_MADT_TYPE_GENERIC_TRANSLATOR:
> -
> - InfoTable = AcpiDmTableInfoMadt15;
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n",
> - Subtable->Type);
> -
> - /* Attempt to continue */
> -
> - if (!Subtable->Length)
> - {
> - AcpiOsPrintf ("Invalid zero length subtable\n");
> - return;
> - }
> -
> - goto NextSubtable;
> - }
> -
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable,
> - Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpMcfg
> - *
> - * PARAMETERS: Table - A MCFG Table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a MCFG table
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpMcfg (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_MCFG);
> - ACPI_MCFG_ALLOCATION *Subtable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
> - {
> - AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
> - sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
> - return;
> - }
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable (each subtable is of fixed length) */
> -
> - Offset += sizeof (ACPI_MCFG_ALLOCATION);
> - Subtable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Subtable,
> - sizeof (ACPI_MCFG_ALLOCATION));
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpMpst
> - *
> - * PARAMETERS: Table - A MPST Table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a MPST table
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpMpst (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_MPST);
> - ACPI_MPST_POWER_NODE *Subtable0;
> - ACPI_MPST_POWER_STATE *Subtable0A;
> - ACPI_MPST_COMPONENT *Subtable0B;
> - ACPI_MPST_DATA_HDR *Subtable1;
> - ACPI_MPST_POWER_DATA *Subtable2;
> - UINT16 SubtableCount;
> - UINT32 PowerStateCount;
> - UINT32 ComponentCount;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtable: Memory Power Node(s) */
> -
> - SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount;
> - Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset);
> -
> - while ((Offset < Table->Length) && SubtableCount)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0,
> - sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Extract the sub-subtable counts */
> -
> - PowerStateCount = Subtable0->NumPowerStates;
> - ComponentCount = Subtable0->NumPhysicalComponents;
> - Offset += sizeof (ACPI_MPST_POWER_NODE);
> -
> - /* Sub-subtables - Memory Power State Structure(s) */
> -
> - Subtable0A = ACPI_ADD_PTR (ACPI_MPST_POWER_STATE, Subtable0,
> - sizeof (ACPI_MPST_POWER_NODE));
> -
> - while (PowerStateCount)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0A,
> - sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Subtable0A++;
> - PowerStateCount--;
> - Offset += sizeof (ACPI_MPST_POWER_STATE);
> - }
> -
> - /* Sub-subtables - Physical Component ID Structure(s) */
> -
> - Subtable0B = ACPI_CAST_PTR (ACPI_MPST_COMPONENT, Subtable0A);
> -
> - if (ComponentCount)
> - {
> - AcpiOsPrintf ("\n");
> - }
> -
> - while (ComponentCount)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0B,
> - sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Subtable0B++;
> - ComponentCount--;
> - Offset += sizeof (ACPI_MPST_COMPONENT);
> - }
> -
> - /* Point to next Memory Power Node subtable */
> -
> - SubtableCount--;
> - Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Subtable0,
> - sizeof (ACPI_MPST_POWER_NODE) +
> - (sizeof (ACPI_MPST_POWER_STATE) * Subtable0->NumPowerStates) +
> - (sizeof (ACPI_MPST_COMPONENT) * Subtable0->NumPhysicalComponents));
> - }
> -
> - /* Subtable: Count of Memory Power State Characteristic structures */
> -
> - AcpiOsPrintf ("\n");
> - Subtable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable0);
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable1,
> - sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - SubtableCount = Subtable1->CharacteristicsCount;
> - Offset += sizeof (ACPI_MPST_DATA_HDR);
> -
> - /* Subtable: Memory Power State Characteristics structure(s) */
> -
> - Subtable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, Subtable1,
> - sizeof (ACPI_MPST_DATA_HDR));
> -
> - while ((Offset < Table->Length) && SubtableCount)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable2,
> - sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - Subtable2++;
> - SubtableCount--;
> - Offset += sizeof (ACPI_MPST_POWER_DATA);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpMsct
> - *
> - * PARAMETERS: Table - A MSCT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a MSCT
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpMsct (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_MSCT);
> - ACPI_MSCT_PROXIMITY *Subtable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += sizeof (ACPI_MSCT_PROXIMITY);
> - Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Subtable,
> - sizeof (ACPI_MSCT_PROXIMITY));
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpMtmr
> - *
> - * PARAMETERS: Table - A MTMR table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a MTMR
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpMtmr (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_MTMR);
> - ACPI_MTMR_ENTRY *Subtable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMtmr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += sizeof (ACPI_MTMR_ENTRY);
> - Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Subtable,
> - sizeof (ACPI_MTMR_ENTRY));
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpNfit
> - *
> - * PARAMETERS: Table - A NFIT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of an NFIT.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpNfit (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_NFIT);
> - UINT32 FieldOffset = 0;
> - UINT32 Length;
> - ACPI_NFIT_HEADER *Subtable;
> - ACPI_DMTABLE_INFO *InfoTable;
> - ACPI_NFIT_INTERLEAVE *Interleave = NULL;
> - ACPI_NFIT_SMBIOS *SmbiosInfo = NULL;
> - ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL;
> - UINT32 i;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoNfit);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* NFIT subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoNfitHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_NFIT_TYPE_SYSTEM_ADDRESS:
> -
> - InfoTable = AcpiDmTableInfoNfit0;
> - break;
> -
> - case ACPI_NFIT_TYPE_MEMORY_MAP:
> -
> - InfoTable = AcpiDmTableInfoNfit1;
> - break;
> -
> - case ACPI_NFIT_TYPE_INTERLEAVE:
> -
> - /* Has a variable number of 32-bit values at the end */
> -
> - InfoTable = AcpiDmTableInfoNfit2;
> - Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, Subtable);
> - FieldOffset = sizeof (ACPI_NFIT_INTERLEAVE);
> - break;
> -
> - case ACPI_NFIT_TYPE_SMBIOS:
> -
> - SmbiosInfo = ACPI_CAST_PTR (ACPI_NFIT_SMBIOS, Subtable);
> - InfoTable = AcpiDmTableInfoNfit3;
> - break;
> -
> - case ACPI_NFIT_TYPE_CONTROL_REGION:
> -
> - InfoTable = AcpiDmTableInfoNfit4;
> - break;
> -
> - case ACPI_NFIT_TYPE_DATA_REGION:
> -
> - InfoTable = AcpiDmTableInfoNfit5;
> - break;
> -
> - case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
> -
> - /* Has a variable number of 64-bit addresses at the end */
> -
> - InfoTable = AcpiDmTableInfoNfit6;
> - Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, Subtable);
> - FieldOffset = sizeof (ACPI_NFIT_FLUSH_ADDRESS) - sizeof (UINT64);
> - break;
> -
> - case ACPI_NFIT_TYPE_CAPABILITIES: /* ACPI 6.0A */
> -
> - InfoTable = AcpiDmTableInfoNfit7;
> - break;
> -
> - default:
> - AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n",
> - Subtable->Type);
> -
> - /* Attempt to continue */
> -
> - if (!Subtable->Length)
> - {
> - AcpiOsPrintf ("Invalid zero length subtable\n");
> - return;
> - }
> - goto NextSubtable;
> - }
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Per-subtable variable-length fields */
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_NFIT_TYPE_INTERLEAVE:
> -
> - for (i = 0; i < Interleave->LineCount; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
> - &Interleave->LineOffset[i],
> - sizeof (UINT32), AcpiDmTableInfoNfit2a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - FieldOffset += sizeof (UINT32);
> - }
> - break;
> -
> - case ACPI_NFIT_TYPE_SMBIOS:
> -
> - Length = Subtable->Length -
> - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
> -
> - if (Length)
> - {
> - Status = AcpiDmDumpTable (Table->Length,
> - sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8),
> - SmbiosInfo,
> - Length, AcpiDmTableInfoNfit3a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - }
> -
> - break;
> -
> - case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
> -
> - for (i = 0; i < Hint->HintCount; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
> - &Hint->HintAddress[i],
> - sizeof (UINT64), AcpiDmTableInfoNfit6a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - FieldOffset += sizeof (UINT64);
> - }
> - break;
> -
> - default:
> - break;
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpPcct
> - *
> - * PARAMETERS: Table - A PCCT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a PCCT. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpPcct (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_PCCT_SUBSPACE *Subtable;
> - ACPI_DMTABLE_INFO *InfoTable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_PCCT);
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Header.Length, AcpiDmTableInfoPcctHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Header.Type)
> - {
> - case ACPI_PCCT_TYPE_GENERIC_SUBSPACE:
> -
> - InfoTable = AcpiDmTableInfoPcct0;
> - break;
> -
> - case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE:
> -
> - InfoTable = AcpiDmTableInfoPcct1;
> - break;
> -
> - case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2:
> -
> - InfoTable = AcpiDmTableInfoPcct2;
> - break;
> -
> - case ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE:
> -
> - InfoTable = AcpiDmTableInfoPcct3;
> - break;
> -
> - case ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE:
> -
> - InfoTable = AcpiDmTableInfoPcct4;
> - break;
> -
> - default:
> -
> - AcpiOsPrintf (
> - "\n**** Unexpected or unknown PCCT subtable type 0x%X\n\n",
> - Subtable->Header.Type);
> - return;
> - }
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Header.Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += Subtable->Header.Length;
> - Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Subtable,
> - Subtable->Header.Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpPdtt
> - *
> - * PARAMETERS: Table - A PDTT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a Pdtt. This is a variable-length
> - * table that contains an open-ended number of IDs
> - * at the end of the table.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpPdtt (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_PDTT_CHANNEL *Subtable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_PDTT);
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPdtt);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables. Currently there is only one type, but can be multiples */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_PDTT_CHANNEL, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - sizeof (ACPI_PDTT_CHANNEL), AcpiDmTableInfoPdtt0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += sizeof (ACPI_PDTT_CHANNEL);
> - Subtable = ACPI_ADD_PTR (ACPI_PDTT_CHANNEL, Subtable,
> - sizeof (ACPI_PDTT_CHANNEL));
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpPmtt
> - *
> - * PARAMETERS: Table - A PMTT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a PMTT. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpPmtt (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_PMTT_HEADER *Subtable;
> - ACPI_PMTT_HEADER *MemSubtable;
> - ACPI_PMTT_HEADER *DimmSubtable;
> - ACPI_PMTT_DOMAIN *DomainArray;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_PMTT);
> - UINT32 MemOffset;
> - UINT32 DimmOffset;
> - UINT32 DomainOffset;
> - UINT32 DomainCount;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoPmttHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Only Socket subtables are expected at this level */
> -
> - if (Subtable->Type != ACPI_PMTT_TYPE_SOCKET)
> - {
> - AcpiOsPrintf (
> - "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> - Subtable->Type);
> - return;
> - }
> -
> - /* Dump the fixed-length portion of the subtable */
> -
> - Status = AcpiDmDumpTable (Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoPmtt0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Walk the memory controller subtables */
> -
> - MemOffset = sizeof (ACPI_PMTT_SOCKET);
> - MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable,
> - sizeof (ACPI_PMTT_SOCKET));
> -
> - while (((Offset + MemOffset) < Table->Length) &&
> - (MemOffset < Subtable->Length))
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length,
> - Offset + MemOffset, MemSubtable,
> - MemSubtable->Length, AcpiDmTableInfoPmttHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Only memory controller subtables are expected at this level */
> -
> - if (MemSubtable->Type != ACPI_PMTT_TYPE_CONTROLLER)
> - {
> - AcpiOsPrintf (
> - "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> - MemSubtable->Type);
> - return;
> - }
> -
> - /* Dump the fixed-length portion of the controller subtable */
> -
> - Status = AcpiDmDumpTable (Length,
> - Offset + MemOffset, MemSubtable,
> - MemSubtable->Length, AcpiDmTableInfoPmtt1);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Walk the variable count of proximity domains */
> -
> - DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount;
> - DomainOffset = sizeof (ACPI_PMTT_CONTROLLER);
> - DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubtable,
> - sizeof (ACPI_PMTT_CONTROLLER));
> -
> - while (((Offset + MemOffset + DomainOffset) < Table->Length) &&
> - ((MemOffset + DomainOffset) < Subtable->Length) &&
> - DomainCount)
> - {
> - Status = AcpiDmDumpTable (Length,
> - Offset + MemOffset + DomainOffset, DomainArray,
> - sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - DomainOffset += sizeof (ACPI_PMTT_DOMAIN);
> - DomainArray++;
> - DomainCount--;
> - }
> -
> - if (DomainCount)
> - {
> - AcpiOsPrintf (
> - "\n**** DomainCount exceeds subtable length\n\n");
> - }
> -
> - /* Walk the physical component (DIMM) subtables */
> -
> - DimmOffset = DomainOffset;
> - DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubtable,
> - DomainOffset);
> -
> - while (((Offset + MemOffset + DimmOffset) < Table->Length) &&
> - (DimmOffset < MemSubtable->Length))
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Length,
> - Offset + MemOffset + DimmOffset, DimmSubtable,
> - DimmSubtable->Length, AcpiDmTableInfoPmttHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Only DIMM subtables are expected at this level */
> -
> - if (DimmSubtable->Type != ACPI_PMTT_TYPE_DIMM)
> - {
> - AcpiOsPrintf (
> - "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> - DimmSubtable->Type);
> - return;
> - }
> -
> - /* Dump the fixed-length DIMM subtable */
> -
> - Status = AcpiDmDumpTable (Length,
> - Offset + MemOffset + DimmOffset, DimmSubtable,
> - DimmSubtable->Length, AcpiDmTableInfoPmtt2);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next DIMM subtable */
> -
> - DimmOffset += DimmSubtable->Length;
> - DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> - DimmSubtable, DimmSubtable->Length);
> - }
> -
> - /* Point to next Controller subtable */
> -
> - MemOffset += MemSubtable->Length;
> - MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> - MemSubtable, MemSubtable->Length);
> - }
> -
> - /* Point to next Socket subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> - Subtable, Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpPptt
> - *
> - * PARAMETERS: Table - A PMTT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a PPTT. This table type consists
> - * of an open-ended number of subtables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpPptt (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_SUBTABLE_HEADER *Subtable;
> - ACPI_PPTT_PROCESSOR *PpttProcessor;
> - UINT8 Length;
> - UINT8 SubtableOffset;
> - UINT32 Offset = sizeof (ACPI_TABLE_FPDT);
> - ACPI_DMTABLE_INFO *InfoTable;
> - UINT32 i;
> -
> -
> - /* There is no main table (other than the standard ACPI header) */
> -
> - /* Subtables */
> -
> - Offset = sizeof (ACPI_TABLE_HEADER);
> - while (Offset < Table->Length)
> - {
> - AcpiOsPrintf ("\n");
> -
> - /* Common subtable header */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
> - if (Subtable->Length < sizeof (ACPI_SUBTABLE_HEADER))
> - {
> - AcpiOsPrintf ("Invalid subtable length\n");
> - return;
> - }
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoPpttHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_PPTT_TYPE_PROCESSOR:
> -
> - InfoTable = AcpiDmTableInfoPptt0;
> - Length = sizeof (ACPI_PPTT_PROCESSOR);
> - break;
> -
> - case ACPI_PPTT_TYPE_CACHE:
> -
> - InfoTable = AcpiDmTableInfoPptt1;
> - Length = sizeof (ACPI_PPTT_CACHE);
> - break;
> -
> - case ACPI_PPTT_TYPE_ID:
> -
> - InfoTable = AcpiDmTableInfoPptt2;
> - Length = sizeof (ACPI_PPTT_ID);
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown PPTT subtable type 0x%X\n\n",
> - Subtable->Type);
> -
> - /* Attempt to continue */
> -
> - goto NextSubtable;
> - }
> -
> - if (Subtable->Length < Length)
> - {
> - AcpiOsPrintf ("Invalid subtable length\n");
> - return;
> - }
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - SubtableOffset = Length;
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_PPTT_TYPE_PROCESSOR:
> -
> - PpttProcessor = ACPI_CAST_PTR (ACPI_PPTT_PROCESSOR, Subtable);
> -
> - /* Dump SMBIOS handles */
> -
> - if ((UINT8)(Subtable->Length - SubtableOffset) <
> - (UINT8)(PpttProcessor->NumberOfPrivResources * 4))
> - {
> - AcpiOsPrintf ("Invalid private resource number\n");
> - return;
> - }
> - for (i = 0; i < PpttProcessor->NumberOfPrivResources; i++)
> - {
> - Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> - ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, SubtableOffset),
> - 4, AcpiDmTableInfoPptt0a);
> - SubtableOffset += 4;
> - }
> - break;
> -
> - default:
> -
> - break;
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpS3pt
> - *
> - * PARAMETERS: Table - A S3PT table
> - *
> - * RETURN: Length of the table
> - *
> - * DESCRIPTION: Format the contents of a S3PT
> - *
> - ******************************************************************************/
> -
> -UINT32
> -AcpiDmDumpS3pt (
> - ACPI_TABLE_HEADER *Tables)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_S3PT);
> - ACPI_FPDT_HEADER *Subtable;
> - ACPI_DMTABLE_INFO *InfoTable;
> - ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Offset, 0, S3ptTable, 0, AcpiDmTableInfoS3pt);
> - if (ACPI_FAILURE (Status))
> - {
> - return 0;
> - }
> -
> - Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset);
> - while (Offset < S3ptTable->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoS3ptHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return 0;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_S3PT_TYPE_RESUME:
> -
> - InfoTable = AcpiDmTableInfoS3pt0;
> - break;
> -
> - case ACPI_S3PT_TYPE_SUSPEND:
> -
> - InfoTable = AcpiDmTableInfoS3pt1;
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n",
> - Subtable->Type);
> -
> - /* Attempt to continue */
> -
> - if (!Subtable->Length)
> - {
> - AcpiOsPrintf ("Invalid zero length subtable\n");
> - return 0;
> - }
> - goto NextSubtable;
> - }
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return 0;
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Subtable, Subtable->Length);
> - }
> -
> - return (S3ptTable->Length);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpSdev
> - *
> - * PARAMETERS: Table - A SDEV table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a SDEV. This is a variable-length
> - * table that contains variable strings and vendor data.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpSdev (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_SDEV_HEADER *Subtable;
> - ACPI_SDEV_PCIE *Pcie;
> - ACPI_SDEV_NAMESPACE *Namesp;
> - ACPI_DMTABLE_INFO *InfoTable;
> - UINT32 Length = Table->Length;
> - UINT32 Offset = sizeof (ACPI_TABLE_SDEV);
> - UINT16 PathOffset;
> - UINT16 PathLength;
> - UINT16 VendorDataOffset;
> - UINT16 VendorDataLength;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSdev);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_SDEV_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoSdevHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_SDEV_TYPE_NAMESPACE_DEVICE:
> -
> - InfoTable = AcpiDmTableInfoSdev0;
> - break;
> -
> - case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE:
> -
> - InfoTable = AcpiDmTableInfoSdev1;
> - break;
> -
> - default:
> - goto NextSubtable;
> - }
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_SDEV_TYPE_NAMESPACE_DEVICE:
> -
> - /* Dump the PCIe device ID(s) */
> -
> - Namesp = ACPI_CAST_PTR (ACPI_SDEV_NAMESPACE, Subtable);
> - PathOffset = Namesp->DeviceIdOffset;
> - PathLength = Namesp->DeviceIdLength;
> -
> - if (PathLength)
> - {
> - Status = AcpiDmDumpTable (Table->Length, 0,
> - ACPI_ADD_PTR (UINT8, Namesp, PathOffset),
> - PathLength, AcpiDmTableInfoSdev0a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - }
> -
> - /* Dump the vendor-specific data */
> -
> - VendorDataLength =
> - Namesp->VendorDataLength;
> - VendorDataOffset =
> - Namesp->DeviceIdOffset + Namesp->DeviceIdLength;
> -
> - if (VendorDataLength)
> - {
> - Status = AcpiDmDumpTable (Table->Length, 0,
> - ACPI_ADD_PTR (UINT8, Namesp, VendorDataOffset),
> - VendorDataLength, AcpiDmTableInfoSdev1b);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> - }
> - break;
> -
> - case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE:
> -
> - /* PCI path substructures */
> -
> - Pcie = ACPI_CAST_PTR (ACPI_SDEV_PCIE, Subtable);
> - PathOffset = Pcie->PathOffset;
> - PathLength = Pcie->PathLength;
> -
> - while (PathLength)
> - {
> - Status = AcpiDmDumpTable (Table->Length,
> - PathOffset + Offset,
> - ACPI_ADD_PTR (UINT8, Pcie, PathOffset),
> - sizeof (ACPI_SDEV_PCIE_PATH), AcpiDmTableInfoSdev1a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - PathOffset += sizeof (ACPI_SDEV_PCIE_PATH);
> - PathLength -= sizeof (ACPI_SDEV_PCIE_PATH);
> - }
> -
> - /* VendorData */
> -
> - VendorDataLength = Pcie->VendorDataLength;
> - VendorDataOffset = Pcie->PathOffset + Pcie->PathLength;
> -
> - if (VendorDataLength)
> - {
> - Status = AcpiDmDumpTable (Table->Length, 0,
> - ACPI_ADD_PTR (UINT8, Pcie, VendorDataOffset),
> - VendorDataLength, AcpiDmTableInfoSdev1b);
> - }
> - break;
> -
> - default:
> - goto NextSubtable;
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_SDEV_HEADER, Subtable,
> - Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpSlic
> - *
> - * PARAMETERS: Table - A SLIC table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a SLIC
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpSlic (
> - ACPI_TABLE_HEADER *Table)
> -{
> -
> - (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table,
> - Table->Length - sizeof (*Table), AcpiDmTableInfoSlic);
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpSlit
> - *
> - * PARAMETERS: Table - An SLIT
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a SLIT
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpSlit (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset;
> - UINT8 *Row;
> - UINT32 Localities;
> - UINT32 i;
> - UINT32 j;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Display the Locality NxN Matrix */
> -
> - Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount;
> - Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]);
> - Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry;
> -
> - for (i = 0; i < Localities; i++)
> - {
> - /* Display one row of the matrix */
> -
> - AcpiDmLineHeader2 (Offset, Localities, "Locality", i);
> - for (j = 0; j < Localities; j++)
> - {
> - /* Check for beyond EOT */
> -
> - if (Offset >= Table->Length)
> - {
> - AcpiOsPrintf (
> - "\n**** Not enough room in table for all localities\n");
> - return;
> - }
> -
> - AcpiOsPrintf ("%2.2X", Row[j]);
> - Offset++;
> -
> - /* Display up to 16 bytes per output row */
> -
> - if ((j+1) < Localities)
> - {
> - AcpiOsPrintf (" ");
> -
> - if (j && (((j+1) % 16) == 0))
> - {
> - AcpiOsPrintf ("\\\n"); /* With line continuation char */
> - AcpiDmLineHeader (Offset, 0, NULL);
> - }
> - }
> - }
> -
> - /* Point to next row */
> -
> - AcpiOsPrintf ("\n");
> - Row += Localities;
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpSrat
> - *
> - * PARAMETERS: Table - A SRAT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a SRAT
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpSrat (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_SRAT);
> - ACPI_SUBTABLE_HEADER *Subtable;
> - ACPI_DMTABLE_INFO *InfoTable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, AcpiDmTableInfoSratHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (Subtable->Type)
> - {
> - case ACPI_SRAT_TYPE_CPU_AFFINITY:
> -
> - InfoTable = AcpiDmTableInfoSrat0;
> - break;
> -
> - case ACPI_SRAT_TYPE_MEMORY_AFFINITY:
> -
> - InfoTable = AcpiDmTableInfoSrat1;
> - break;
> -
> - case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY:
> -
> - InfoTable = AcpiDmTableInfoSrat2;
> - break;
> -
> - case ACPI_SRAT_TYPE_GICC_AFFINITY:
> -
> - InfoTable = AcpiDmTableInfoSrat3;
> - break;
> -
> - case ACPI_SRAT_TYPE_GIC_ITS_AFFINITY:
> -
> - InfoTable = AcpiDmTableInfoSrat4;
> - break;
> -
> - default:
> - AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n",
> - Subtable->Type);
> -
> - /* Attempt to continue */
> -
> - if (!Subtable->Length)
> - {
> - AcpiOsPrintf ("Invalid zero length subtable\n");
> - return;
> - }
> - goto NextSubtable;
> - }
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Subtable->Length, InfoTable);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> -NextSubtable:
> - /* Point to next subtable */
> -
> - Offset += Subtable->Length;
> - Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable,
> - Subtable->Length);
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpStao
> - *
> - * PARAMETERS: Table - A STAO table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a STAO. This is a variable-length
> - * table that contains an open-ended number of ASCII strings
> - * at the end of the table.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpStao (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - char *Namepath;
> - UINT32 Length = Table->Length;
> - UINT32 StringLength;
> - UINT32 Offset = sizeof (ACPI_TABLE_STAO);
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoStao);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* The rest of the table consists of Namepath strings */
> -
> - while (Offset < Table->Length)
> - {
> - Namepath = ACPI_ADD_PTR (char, Table, Offset);
> - StringLength = strlen (Namepath) + 1;
> -
> - AcpiDmLineHeader (Offset, StringLength, "Namestring");
> - AcpiOsPrintf ("\"%s\"\n", Namepath);
> -
> - /* Point to next namepath */
> -
> - Offset += StringLength;
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpTcpa
> - *
> - * PARAMETERS: Table - A TCPA table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a TCPA.
> - *
> - * NOTE: There are two versions of the table with the same signature:
> - * the client version and the server version. The common
> - * PlatformClass field is used to differentiate the two types of
> - * tables.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpTcpa (
> - ACPI_TABLE_HEADER *Table)
> -{
> - UINT32 Offset = sizeof (ACPI_TABLE_TCPA_HDR);
> - ACPI_TABLE_TCPA_HDR *CommonHeader = ACPI_CAST_PTR (
> - ACPI_TABLE_TCPA_HDR, Table);
> - ACPI_TABLE_TCPA_HDR *Subtable = ACPI_ADD_PTR (
> - ACPI_TABLE_TCPA_HDR, Table, Offset);
> - ACPI_STATUS Status;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table,
> - 0, AcpiDmTableInfoTcpaHdr);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /*
> - * Examine the PlatformClass field to determine the table type.
> - * Either a client or server table. Only one.
> - */
> - switch (CommonHeader->PlatformClass)
> - {
> - case ACPI_TCPA_CLIENT_TABLE:
> -
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Table->Length - Offset, AcpiDmTableInfoTcpaClient);
> - break;
> -
> - case ACPI_TCPA_SERVER_TABLE:
> -
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Table->Length - Offset, AcpiDmTableInfoTcpaServer);
> - break;
> -
> - default:
> -
> - AcpiOsPrintf ("\n**** Unknown TCPA Platform Class 0x%X\n",
> - CommonHeader->PlatformClass);
> - Status = AE_ERROR;
> - break;
> - }
> -
> - if (ACPI_FAILURE (Status))
> - {
> - AcpiOsPrintf ("\n**** Cannot disassemble TCPA table\n");
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpTpm2
> - *
> - * PARAMETERS: Table - A TPM2 table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a TPM2.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpTpm2 (
> - ACPI_TABLE_HEADER *Table)
> -{
> - UINT32 Offset = sizeof (ACPI_TABLE_TPM2);
> - ACPI_TABLE_TPM2 *CommonHeader = ACPI_CAST_PTR (ACPI_TABLE_TPM2, Table);
> - ACPI_TPM2_TRAILER *Subtable = ACPI_ADD_PTR (ACPI_TPM2_TRAILER, Table, Offset);
> - ACPI_TPM2_ARM_SMC *ArmSubtable;
> - ACPI_STATUS Status;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm2);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - Table->Length - Offset, AcpiDmTableInfoTpm2a);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - switch (CommonHeader->StartMethod)
> - {
> - case ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC:
> -
> - ArmSubtable = ACPI_ADD_PTR (ACPI_TPM2_ARM_SMC, Subtable,
> - sizeof (ACPI_TPM2_TRAILER));
> - Offset += sizeof (ACPI_TPM2_TRAILER);
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, ArmSubtable,
> - Table->Length - Offset, AcpiDmTableInfoTpm211);
> - break;
> -
> - default:
> - break;
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpVrtc
> - *
> - * PARAMETERS: Table - A VRTC table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a VRTC
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpVrtc (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_VRTC);
> - ACPI_VRTC_ENTRY *Subtable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoVrtc);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += sizeof (ACPI_VRTC_ENTRY);
> - Subtable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Subtable,
> - sizeof (ACPI_VRTC_ENTRY));
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpWdat
> - *
> - * PARAMETERS: Table - A WDAT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a WDAT
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpWdat (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - UINT32 Offset = sizeof (ACPI_TABLE_WDAT);
> - ACPI_WDAT_ENTRY *Subtable;
> -
> -
> - /* Main table */
> -
> - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoWdat);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Subtables */
> -
> - Subtable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset);
> - while (Offset < Table->Length)
> - {
> - /* Common subtable header */
> -
> - AcpiOsPrintf ("\n");
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Point to next subtable */
> -
> - Offset += sizeof (ACPI_WDAT_ENTRY);
> - Subtable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Subtable,
> - sizeof (ACPI_WDAT_ENTRY));
> - }
> -}
> -
> -
> -/*******************************************************************************
> - *
> - * FUNCTION: AcpiDmDumpWpbt
> - *
> - * PARAMETERS: Table - A WPBT table
> - *
> - * RETURN: None
> - *
> - * DESCRIPTION: Format the contents of a WPBT. This table type consists
> - * of an open-ended arguments buffer at the end of the table.
> - *
> - ******************************************************************************/
> -
> -void
> -AcpiDmDumpWpbt (
> - ACPI_TABLE_HEADER *Table)
> -{
> - ACPI_STATUS Status;
> - ACPI_TABLE_WPBT *Subtable;
> - UINT32 Length = Table->Length;
> - UINT16 ArgumentsLength;
> -
> -
> - /* Dump the main table */
> -
> - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoWpbt);
> - if (ACPI_FAILURE (Status))
> - {
> - return;
> - }
> -
> - /* Extract the arguments buffer length from the main table */
> -
> - Subtable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table);
> - ArgumentsLength = Subtable->ArgumentsLength;
> -
> - /* Dump the arguments buffer */
> -
> - (void) AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength,
> - AcpiDmTableInfoWpbt0);
> -}
> diff --git a/src/acpica/source/common/dmtbdump1.c b/src/acpica/source/common/dmtbdump1.c
> new file mode 100644
> index 00000000..4495ba4a
> --- /dev/null
> +++ b/src/acpica/source/common/dmtbdump1.c
> @@ -0,0 +1,1542 @@
> +/******************************************************************************
> + *
> + * Module Name: dmtbdump1 - Dump ACPI data tables that contain no AML code
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
> + * All rights reserved.
> + *
> + * 2. License
> + *
> + * 2.1. This is your license from Intel Corp. under its intellectual property
> + * rights. You may have additional license terms from the party that provided
> + * you this software, covering your right to use that party's intellectual
> + * property rights.
> + *
> + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
> + * copy of the source code appearing in this file ("Covered Code") an
> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the
> + * base code distributed originally by Intel ("Original Intel Code") to copy,
> + * make derivatives, distribute, use and display any portion of the Covered
> + * Code in any form, with the right to sublicense such rights; and
> + *
> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
> + * license (with the right to sublicense), under only those claims of Intel
> + * patents that are infringed by the Original Intel Code, to make, use, sell,
> + * offer to sell, and import the Covered Code and derivative works thereof
> + * solely to the minimum extent necessary to exercise the above copyright
> + * license, and in no event shall the patent license extend to any additions
> + * to or modifications of the Original Intel Code. No other license or right
> + * is granted directly or by implication, estoppel or otherwise;
> + *
> + * The above copyright and patent license is granted only if the following
> + * conditions are met:
> + *
> + * 3. Conditions
> + *
> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification with rights to further distribute source must include
> + * the above Copyright Notice, the above License, this list of Conditions,
> + * and the following Disclaimer and Export Compliance provision. In addition,
> + * Licensee must cause all Covered Code to which Licensee contributes to
> + * contain a file documenting the changes Licensee made to create that Covered
> + * Code and the date of any change. Licensee must include in that file the
> + * documentation of any changes made by any predecessor Licensee. Licensee
> + * must include a prominent statement that the modification is derived,
> + * directly or indirectly, from Original Intel Code.
> + *
> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification without rights to further distribute source must
> + * include the following Disclaimer and Export Compliance provision in the
> + * documentation and/or other materials provided with distribution. In
> + * addition, Licensee may not authorize further sublicense of source of any
> + * portion of the Covered Code, and must include terms to the effect that the
> + * license from Licensee to its licensee is limited to the intellectual
> + * property embodied in the software Licensee provides to its licensee, and
> + * not to intellectual property embodied in modifications its licensee may
> + * make.
> + *
> + * 3.3. Redistribution of Executable. Redistribution in executable form of any
> + * substantial portion of the Covered Code or modification must reproduce the
> + * above Copyright Notice, and the following Disclaimer and Export Compliance
> + * provision in the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * 3.4. Intel retains all right, title, and interest in and to the Original
> + * Intel Code.
> + *
> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by
> + * Intel shall be used in advertising or otherwise to promote the sale, use or
> + * other dealings in products derived from or relating to the Covered Code
> + * without prior written authorization from Intel.
> + *
> + * 4. Disclaimer and Export Compliance
> + *
> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
> + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
> + * PARTICULAR PURPOSE.
> + *
> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
> + * LIMITED REMEDY.
> + *
> + * 4.3. Licensee shall not export, either directly or indirectly, any of this
> + * software or system incorporating such software without first obtaining any
> + * required license or other approval from the U. S. Department of Commerce or
> + * any other agency or department of the United States Government. In the
> + * event Licensee exports any such software from the United States or
> + * re-exports any such software from a foreign destination, Licensee shall
> + * ensure that the distribution and export/re-export of the software is in
> + * compliance with all laws, regulations, orders, or other restrictions of the
> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor
> + * any of its subsidiaries will export/re-export any technical data, process,
> + * software, or service, directly or indirectly, to any country for which the
> + * United States government or any agency thereof requires an export license,
> + * other governmental approval, or letter of assurance, without first obtaining
> + * such license, approval or letter.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions, and the following disclaimer,
> + * without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + * substantially similar to the "NO WARRANTY" disclaimer below
> + * ("Disclaimer") and any redistribution must be conditioned upon
> + * including a substantially similar Disclaimer requirement for further
> + * binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + * of any contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "acpi.h"
> +#include "accommon.h"
> +#include "acdisasm.h"
> +#include "actables.h"
> +
> +/* This module used for application-level code only */
> +
> +#define _COMPONENT ACPI_CA_DISASSEMBLER
> + ACPI_MODULE_NAME ("dmtbdump1")
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpAsf
> + *
> + * PARAMETERS: Table - A ASF table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a ASF table
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpAsf (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_HEADER);
> + ACPI_ASF_INFO *Subtable;
> + ACPI_DMTABLE_INFO *InfoTable;
> + ACPI_DMTABLE_INFO *DataInfoTable = NULL;
> + UINT8 *DataTable = NULL;
> + UINT32 DataCount = 0;
> + UINT32 DataLength = 0;
> + UINT32 DataOffset = 0;
> + UINT32 i;
> + UINT8 Type;
> +
> +
> + /* No main table, only subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Header.Length, AcpiDmTableInfoAsfHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* The actual type is the lower 7 bits of Type */
> +
> + Type = (UINT8) (Subtable->Header.Type & 0x7F);
> +
> + switch (Type)
> + {
> + case ACPI_ASF_TYPE_INFO:
> +
> + InfoTable = AcpiDmTableInfoAsf0;
> + break;
> +
> + case ACPI_ASF_TYPE_ALERT:
> +
> + InfoTable = AcpiDmTableInfoAsf1;
> + DataInfoTable = AcpiDmTableInfoAsf1a;
> + DataTable = ACPI_ADD_PTR (UINT8, Subtable, sizeof (ACPI_ASF_ALERT));
> + DataCount = ACPI_CAST_PTR (ACPI_ASF_ALERT, Subtable)->Alerts;
> + DataLength = ACPI_CAST_PTR (ACPI_ASF_ALERT, Subtable)->DataLength;
> + DataOffset = Offset + sizeof (ACPI_ASF_ALERT);
> + break;
> +
> + case ACPI_ASF_TYPE_CONTROL:
> +
> + InfoTable = AcpiDmTableInfoAsf2;
> + DataInfoTable = AcpiDmTableInfoAsf2a;
> + DataTable = ACPI_ADD_PTR (UINT8, Subtable, sizeof (ACPI_ASF_REMOTE));
> + DataCount = ACPI_CAST_PTR (ACPI_ASF_REMOTE, Subtable)->Controls;
> + DataLength = ACPI_CAST_PTR (ACPI_ASF_REMOTE, Subtable)->DataLength;
> + DataOffset = Offset + sizeof (ACPI_ASF_REMOTE);
> + break;
> +
> + case ACPI_ASF_TYPE_BOOT:
> +
> + InfoTable = AcpiDmTableInfoAsf3;
> + break;
> +
> + case ACPI_ASF_TYPE_ADDRESS:
> +
> + InfoTable = AcpiDmTableInfoAsf4;
> + DataTable = ACPI_ADD_PTR (UINT8, Subtable, sizeof (ACPI_ASF_ADDRESS));
> + DataLength = ACPI_CAST_PTR (ACPI_ASF_ADDRESS, Subtable)->Devices;
> + DataOffset = Offset + sizeof (ACPI_ASF_ADDRESS);
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown ASF subtable type 0x%X\n",
> + Subtable->Header.Type);
> + return;
> + }
> +
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Header.Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Dump variable-length extra data */
> +
> + switch (Type)
> + {
> + case ACPI_ASF_TYPE_ALERT:
> + case ACPI_ASF_TYPE_CONTROL:
> +
> + for (i = 0; i < DataCount; i++)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, DataOffset,
> + DataTable, DataLength, DataInfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + DataTable = ACPI_ADD_PTR (UINT8, DataTable, DataLength);
> + DataOffset += DataLength;
> + }
> + break;
> +
> + case ACPI_ASF_TYPE_ADDRESS:
> +
> + for (i = 0; i < DataLength; i++)
> + {
> + if (!(i % 16))
> + {
> + AcpiDmLineHeader (DataOffset, 1, "Addresses");
> + }
> +
> + AcpiOsPrintf ("%2.2X ", *DataTable);
> + DataTable++;
> + DataOffset++;
> +
> + if (DataOffset > Table->Length)
> + {
> + AcpiOsPrintf (
> + "**** ACPI table terminates in the middle of a "
> + "data structure! (ASF! table)\n");
> + return;
> + }
> + }
> +
> + AcpiOsPrintf ("\n");
> + break;
> +
> + default:
> +
> + break;
> + }
> +
> + AcpiOsPrintf ("\n");
> +
> + /* Point to next subtable */
> +
> + if (!Subtable->Header.Length)
> + {
> + AcpiOsPrintf ("Invalid zero subtable header length\n");
> + return;
> + }
> +
> + Offset += Subtable->Header.Length;
> + Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Subtable,
> + Subtable->Header.Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpCpep
> + *
> + * PARAMETERS: Table - A CPEP table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a CPEP. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpCpep (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_CPEP_POLLING *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_CPEP);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoCpep);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Header.Length, AcpiDmTableInfoCpep0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += Subtable->Header.Length;
> + Subtable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Subtable,
> + Subtable->Header.Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpCsrt
> + *
> + * PARAMETERS: Table - A CSRT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a CSRT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpCsrt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_CSRT_GROUP *Subtable;
> + ACPI_CSRT_SHARED_INFO *SharedInfoTable;
> + ACPI_CSRT_DESCRIPTOR *SubSubtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_CSRT);
> + UINT32 SubOffset;
> + UINT32 SubSubOffset;
> + UINT32 InfoLength;
> +
> +
> + /* The main table only contains the ACPI header, thus already handled */
> +
> + /* Subtables (Resource Groups) */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Resource group subtable */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoCsrt0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Shared info subtable (One per resource group) */
> +
> + SubOffset = sizeof (ACPI_CSRT_GROUP);
> + SharedInfoTable = ACPI_ADD_PTR (ACPI_CSRT_SHARED_INFO, Table,
> + Offset + SubOffset);
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset + SubOffset, SharedInfoTable,
> + sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + SubOffset += Subtable->SharedInfoLength;
> +
> + /* Sub-Subtables (Resource Descriptors) */
> +
> + SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table,
> + Offset + SubOffset);
> +
> + while ((SubOffset < Subtable->Length) &&
> + ((Offset + SubOffset) < Table->Length))
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubtable,
> + SubSubtable->Length, AcpiDmTableInfoCsrt2);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + SubSubOffset = sizeof (ACPI_CSRT_DESCRIPTOR);
> +
> + /* Resource-specific info buffer */
> +
> + InfoLength = SubSubtable->Length - SubSubOffset;
> + if (InfoLength)
> + {
> + Status = AcpiDmDumpTable (Length,
> + Offset + SubOffset + SubSubOffset, Table,
> + InfoLength, AcpiDmTableInfoCsrt2a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + SubSubOffset += InfoLength;
> + }
> +
> + /* Point to next sub-subtable */
> +
> + SubOffset += SubSubtable->Length;
> + SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubtable,
> + SubSubtable->Length);
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Subtable,
> + Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpDbg2
> + *
> + * PARAMETERS: Table - A DBG2 table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a DBG2. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpDbg2 (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_DBG2_DEVICE *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_DBG2);
> + UINT32 i;
> + UINT32 ArrayOffset;
> + UINT32 AbsoluteOffset;
> + UINT8 *Array;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDbg2);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoDbg2Device);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Dump the BaseAddress array */
> +
> + for (i = 0; i < Subtable->RegisterCount; i++)
> + {
> + ArrayOffset = Subtable->BaseAddressOffset +
> + (sizeof (ACPI_GENERIC_ADDRESS) * i);
> + AbsoluteOffset = Offset + ArrayOffset;
> + Array = (UINT8 *) Subtable + ArrayOffset;
> +
> + Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
> + Subtable->Length, AcpiDmTableInfoDbg2Addr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> +
> + /* Dump the AddressSize array */
> +
> + for (i = 0; i < Subtable->RegisterCount; i++)
> + {
> + ArrayOffset = Subtable->AddressSizeOffset +
> + (sizeof (UINT32) * i);
> + AbsoluteOffset = Offset + ArrayOffset;
> + Array = (UINT8 *) Subtable + ArrayOffset;
> +
> + Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
> + Subtable->Length, AcpiDmTableInfoDbg2Size);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> +
> + /* Dump the Namestring (required) */
> +
> + AcpiOsPrintf ("\n");
> + ArrayOffset = Subtable->NamepathOffset;
> + AbsoluteOffset = Offset + ArrayOffset;
> + Array = (UINT8 *) Subtable + ArrayOffset;
> +
> + Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
> + Subtable->Length, AcpiDmTableInfoDbg2Name);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Dump the OemData (optional) */
> +
> + if (Subtable->OemDataOffset)
> + {
> + Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset,
> + Table, Subtable->OemDataLength,
> + AcpiDmTableInfoDbg2OemData);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Subtable,
> + Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpDmar
> + *
> + * PARAMETERS: Table - A DMAR table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a DMAR. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpDmar (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_DMAR_HEADER *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_DMAR);
> + ACPI_DMTABLE_INFO *InfoTable;
> + ACPI_DMAR_DEVICE_SCOPE *ScopeTable;
> + UINT32 ScopeOffset;
> + UINT8 *PciPath;
> + UINT32 PathOffset;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDmar);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoDmarHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + AcpiOsPrintf ("\n");
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_DMAR_TYPE_HARDWARE_UNIT:
> +
> + InfoTable = AcpiDmTableInfoDmar0;
> + ScopeOffset = sizeof (ACPI_DMAR_HARDWARE_UNIT);
> + break;
> +
> + case ACPI_DMAR_TYPE_RESERVED_MEMORY:
> +
> + InfoTable = AcpiDmTableInfoDmar1;
> + ScopeOffset = sizeof (ACPI_DMAR_RESERVED_MEMORY);
> + break;
> +
> + case ACPI_DMAR_TYPE_ROOT_ATS:
> +
> + InfoTable = AcpiDmTableInfoDmar2;
> + ScopeOffset = sizeof (ACPI_DMAR_ATSR);
> + break;
> +
> + case ACPI_DMAR_TYPE_HARDWARE_AFFINITY:
> +
> + InfoTable = AcpiDmTableInfoDmar3;
> + ScopeOffset = sizeof (ACPI_DMAR_RHSA);
> + break;
> +
> + case ACPI_DMAR_TYPE_NAMESPACE:
> +
> + InfoTable = AcpiDmTableInfoDmar4;
> + ScopeOffset = sizeof (ACPI_DMAR_ANDD);
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n",
> + Subtable->Type);
> + return;
> + }
> +
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /*
> + * Dump the optional device scope entries
> + */
> + if ((Subtable->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
> + (Subtable->Type == ACPI_DMAR_TYPE_NAMESPACE))
> + {
> + /* These types do not support device scopes */
> +
> + goto NextSubtable;
> + }
> +
> + ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, Subtable, ScopeOffset);
> + while (ScopeOffset < Subtable->Length)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable,
> + ScopeTable->Length, AcpiDmTableInfoDmarScope);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + AcpiOsPrintf ("\n");
> +
> + /* Dump the PCI Path entries for this device scope */
> +
> + PathOffset = sizeof (ACPI_DMAR_DEVICE_SCOPE); /* Path entries start at this offset */
> +
> + PciPath = ACPI_ADD_PTR (UINT8, ScopeTable,
> + sizeof (ACPI_DMAR_DEVICE_SCOPE));
> +
> + while (PathOffset < ScopeTable->Length)
> + {
> + AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2,
> + "PCI Path");
> + AcpiOsPrintf ("%2.2X,%2.2X\n", PciPath[0], PciPath[1]);
> +
> + /* Point to next PCI Path entry */
> +
> + PathOffset += 2;
> + PciPath += 2;
> + AcpiOsPrintf ("\n");
> + }
> +
> + /* Point to next device scope entry */
> +
> + ScopeOffset += ScopeTable->Length;
> + ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE,
> + ScopeTable, ScopeTable->Length);
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Subtable,
> + Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpDrtm
> + *
> + * PARAMETERS: Table - A DRTM table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a DRTM.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpDrtm (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset;
> + ACPI_DRTM_VTABLE_LIST *DrtmVtl;
> + ACPI_DRTM_RESOURCE_LIST *DrtmRl;
> + ACPI_DRTM_DPS_ID *DrtmDps;
> + UINT32 Count;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> + AcpiDmTableInfoDrtm);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Offset = sizeof (ACPI_TABLE_DRTM);
> +
> + /* Sub-tables */
> +
> + /* Dump ValidatedTable length */
> +
> + DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset);
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset,
> + DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables),
> + AcpiDmTableInfoDrtm0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Offset += ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables);
> +
> + /* Dump Validated table addresses */
> +
> + Count = 0;
> + while ((Offset < Table->Length) &&
> + (DrtmVtl->ValidatedTableCount > Count))
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset,
> + ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64),
> + AcpiDmTableInfoDrtm0a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Offset += sizeof (UINT64);
> + Count++;
> + }
> +
> + /* Dump ResourceList length */
> +
> + DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset);
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset,
> + DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources),
> + AcpiDmTableInfoDrtm1);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Offset += ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources);
> +
> + /* Dump the Resource List */
> +
> + Count = 0;
> + while ((Offset < Table->Length) &&
> + (DrtmRl->ResourceCount > Count))
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset,
> + ACPI_ADD_PTR (void, Table, Offset),
> + sizeof (ACPI_DRTM_RESOURCE), AcpiDmTableInfoDrtm1a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Offset += sizeof (ACPI_DRTM_RESOURCE);
> + Count++;
> + }
> +
> + /* Dump DPS */
> +
> + DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset);
> + AcpiOsPrintf ("\n");
> + (void) AcpiDmDumpTable (Table->Length, Offset,
> + DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpEinj
> + *
> + * PARAMETERS: Table - A EINJ table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a EINJ. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpEinj (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_WHEA_HEADER *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_EINJ);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoEinj);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoEinj0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable (each subtable is of fixed length) */
> +
> + Offset += sizeof (ACPI_WHEA_HEADER);
> + Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Subtable,
> + sizeof (ACPI_WHEA_HEADER));
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpErst
> + *
> + * PARAMETERS: Table - A ERST table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a ERST. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpErst (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_WHEA_HEADER *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_ERST);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoErst);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoErst0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable (each subtable is of fixed length) */
> +
> + Offset += sizeof (ACPI_WHEA_HEADER);
> + Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Subtable,
> + sizeof (ACPI_WHEA_HEADER));
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpFpdt
> + *
> + * PARAMETERS: Table - A FPDT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a FPDT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpFpdt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_FPDT_HEADER *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_FPDT);
> + ACPI_DMTABLE_INFO *InfoTable;
> +
> +
> + /* There is no main table (other than the standard ACPI header) */
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoFpdtHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_FPDT_TYPE_BOOT:
> +
> + InfoTable = AcpiDmTableInfoFpdt0;
> + break;
> +
> + case ACPI_FPDT_TYPE_S3PERF:
> +
> + InfoTable = AcpiDmTableInfoFpdt1;
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n",
> + Subtable->Type);
> +
> + /* Attempt to continue */
> +
> + if (!Subtable->Length)
> + {
> + AcpiOsPrintf ("Invalid zero length subtable\n");
> + return;
> + }
> + goto NextSubtable;
> + }
> +
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Subtable,
> + Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpGtdt
> + *
> + * PARAMETERS: Table - A GTDT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a GTDT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpGtdt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_GTDT_HEADER *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_GTDT);
> + ACPI_DMTABLE_INFO *InfoTable;
> + UINT32 SubtableLength;
> + UINT32 GtCount;
> + ACPI_GTDT_TIMER_ENTRY *GtxTable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoGtdt);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoGtdtHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + GtCount = 0;
> + switch (Subtable->Type)
> + {
> + case ACPI_GTDT_TYPE_TIMER_BLOCK:
> +
> + SubtableLength = sizeof (ACPI_GTDT_TIMER_BLOCK);
> + GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
> + Subtable))->TimerCount;
> +
> + InfoTable = AcpiDmTableInfoGtdt0;
> + break;
> +
> + case ACPI_GTDT_TYPE_WATCHDOG:
> +
> + SubtableLength = sizeof (ACPI_GTDT_WATCHDOG);
> +
> + InfoTable = AcpiDmTableInfoGtdt1;
> + break;
> +
> + default:
> +
> + /* Cannot continue on unknown type - no length */
> +
> + AcpiOsPrintf ("\n**** Unknown GTDT subtable type 0x%X\n",
> + Subtable->Type);
> + return;
> + }
> +
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to end of current subtable (each subtable above is of fixed length) */
> +
> + Offset += SubtableLength;
> +
> + /* If there are any Gt Timer Blocks from above, dump them now */
> +
> + if (GtCount)
> + {
> + GtxTable = ACPI_ADD_PTR (
> + ACPI_GTDT_TIMER_ENTRY, Subtable, SubtableLength);
> + SubtableLength += GtCount * sizeof (ACPI_GTDT_TIMER_ENTRY);
> +
> + while (GtCount)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, GtxTable,
> + sizeof (ACPI_GTDT_TIMER_ENTRY), AcpiDmTableInfoGtdt0a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + Offset += sizeof (ACPI_GTDT_TIMER_ENTRY);
> + GtxTable++;
> + GtCount--;
> + }
> + }
> +
> + /* Point to next subtable */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Subtable, SubtableLength);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpHest
> + *
> + * PARAMETERS: Table - A HEST table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a HEST. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpHest (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_HEST_HEADER *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_HEST);
> + ACPI_DMTABLE_INFO *InfoTable;
> + UINT32 SubtableLength;
> + UINT32 BankCount;
> + ACPI_HEST_IA_ERROR_BANK *BankTable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHest);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + BankCount = 0;
> + switch (Subtable->Type)
> + {
> + case ACPI_HEST_TYPE_IA32_CHECK:
> +
> + InfoTable = AcpiDmTableInfoHest0;
> + SubtableLength = sizeof (ACPI_HEST_IA_MACHINE_CHECK);
> + BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK,
> + Subtable))->NumHardwareBanks;
> + break;
> +
> + case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK:
> +
> + InfoTable = AcpiDmTableInfoHest1;
> + SubtableLength = sizeof (ACPI_HEST_IA_CORRECTED);
> + BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED,
> + Subtable))->NumHardwareBanks;
> + break;
> +
> + case ACPI_HEST_TYPE_IA32_NMI:
> +
> + InfoTable = AcpiDmTableInfoHest2;
> + SubtableLength = sizeof (ACPI_HEST_IA_NMI);
> + break;
> +
> + case ACPI_HEST_TYPE_AER_ROOT_PORT:
> +
> + InfoTable = AcpiDmTableInfoHest6;
> + SubtableLength = sizeof (ACPI_HEST_AER_ROOT);
> + break;
> +
> + case ACPI_HEST_TYPE_AER_ENDPOINT:
> +
> + InfoTable = AcpiDmTableInfoHest7;
> + SubtableLength = sizeof (ACPI_HEST_AER);
> + break;
> +
> + case ACPI_HEST_TYPE_AER_BRIDGE:
> +
> + InfoTable = AcpiDmTableInfoHest8;
> + SubtableLength = sizeof (ACPI_HEST_AER_BRIDGE);
> + break;
> +
> + case ACPI_HEST_TYPE_GENERIC_ERROR:
> +
> + InfoTable = AcpiDmTableInfoHest9;
> + SubtableLength = sizeof (ACPI_HEST_GENERIC);
> + break;
> +
> + case ACPI_HEST_TYPE_GENERIC_ERROR_V2:
> +
> + InfoTable = AcpiDmTableInfoHest10;
> + SubtableLength = sizeof (ACPI_HEST_GENERIC_V2);
> + break;
> +
> + case ACPI_HEST_TYPE_IA32_DEFERRED_CHECK:
> +
> + InfoTable = AcpiDmTableInfoHest11;
> + SubtableLength = sizeof (ACPI_HEST_IA_DEFERRED_CHECK);
> + BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_DEFERRED_CHECK,
> + Subtable))->NumHardwareBanks;
> + break;
> +
> + default:
> +
> + /* Cannot continue on unknown type - no length */
> +
> + AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n",
> + Subtable->Type);
> + return;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + SubtableLength, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to end of current subtable (each subtable above is of fixed length) */
> +
> + Offset += SubtableLength;
> +
> + /* If there are any (fixed-length) Error Banks from above, dump them now */
> +
> + if (BankCount)
> + {
> + BankTable = ACPI_ADD_PTR (ACPI_HEST_IA_ERROR_BANK, Subtable,
> + SubtableLength);
> + SubtableLength += BankCount * sizeof (ACPI_HEST_IA_ERROR_BANK);
> +
> + while (BankCount)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, BankTable,
> + sizeof (ACPI_HEST_IA_ERROR_BANK), AcpiDmTableInfoHestBank);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Offset += sizeof (ACPI_HEST_IA_ERROR_BANK);
> + BankTable++;
> + BankCount--;
> + }
> + }
> +
> + /* Point to next subtable */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Subtable, SubtableLength);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpHmat
> + *
> + * PARAMETERS: Table - A HMAT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a HMAT.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpHmat (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_HMAT_STRUCTURE *HmatStruct;
> + ACPI_HMAT_LOCALITY *HmatLocality;
> + ACPI_HMAT_CACHE *HmatCache;
> + UINT32 Offset;
> + UINT32 SubtableOffset;
> + UINT32 Length;
> + ACPI_DMTABLE_INFO *InfoTable;
> + UINT32 i, j;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoHmat);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + Offset = sizeof (ACPI_TABLE_HMAT);
> +
> + while (Offset < Table->Length)
> + {
> + AcpiOsPrintf ("\n");
> + SubtableOffset = 0;
> +
> + /* Dump HMAT structure header */
> +
> + HmatStruct = ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, Table, Offset);
> + if (HmatStruct->Length < sizeof (ACPI_HMAT_STRUCTURE))
> + {
> + AcpiOsPrintf ("Invalid HMAT structure length\n");
> + return;
> + }
> + Status = AcpiDmDumpTable (Table->Length, Offset, HmatStruct,
> + HmatStruct->Length, AcpiDmTableInfoHmatHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (HmatStruct->Type)
> + {
> + case ACPI_HMAT_TYPE_ADDRESS_RANGE:
> +
> + InfoTable = AcpiDmTableInfoHmat0;
> + Length = sizeof (ACPI_HMAT_ADDRESS_RANGE);
> + break;
> +
> + case ACPI_HMAT_TYPE_LOCALITY:
> +
> + InfoTable = AcpiDmTableInfoHmat1;
> + Length = sizeof (ACPI_HMAT_LOCALITY);
> + break;
> +
> + case ACPI_HMAT_TYPE_CACHE:
> +
> + InfoTable = AcpiDmTableInfoHmat2;
> + Length = sizeof (ACPI_HMAT_CACHE);
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown HMAT structure type 0x%X\n",
> + HmatStruct->Type);
> +
> + /* Attempt to continue */
> +
> + goto NextSubtable;
> + }
> +
> + /* Dump HMAT structure body */
> +
> + if (HmatStruct->Length < Length)
> + {
> + AcpiOsPrintf ("Invalid HMAT structure length\n");
> + return;
> + }
> + Status = AcpiDmDumpTable (Table->Length, Offset, HmatStruct,
> + HmatStruct->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Dump HMAT structure additionals */
> +
> + switch (HmatStruct->Type)
> + {
> + case ACPI_HMAT_TYPE_LOCALITY:
> +
> + HmatLocality = ACPI_CAST_PTR (ACPI_HMAT_LOCALITY, HmatStruct);
> + SubtableOffset = sizeof (ACPI_HMAT_LOCALITY);
> +
> + /* Dump initiator proximity domains */
> +
> + if ((UINT32)(HmatStruct->Length - SubtableOffset) <
> + (UINT32)(HmatLocality->NumberOfInitiatorPDs * 4))
> + {
> + AcpiOsPrintf ("Invalid initiator proximity domain number\n");
> + return;
> + }
> + for (i = 0; i < HmatLocality->NumberOfInitiatorPDs; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> + ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
> + 4, AcpiDmTableInfoHmat1a);
> + SubtableOffset += 4;
> + }
> +
> + /* Dump target proximity domains */
> +
> + if ((UINT32)(HmatStruct->Length - SubtableOffset) <
> + (UINT32)(HmatLocality->NumberOfTargetPDs * 4))
> + {
> + AcpiOsPrintf ("Invalid target proximity domain number\n");
> + return;
> + }
> + for (i = 0; i < HmatLocality->NumberOfTargetPDs; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> + ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
> + 4, AcpiDmTableInfoHmat1b);
> + SubtableOffset += 4;
> + }
> +
> + /* Dump latency/bandwidth entris */
> +
> + if ((UINT32)(HmatStruct->Length - SubtableOffset) <
> + (UINT32)(HmatLocality->NumberOfInitiatorPDs *
> + HmatLocality->NumberOfTargetPDs * 2))
> + {
> + AcpiOsPrintf ("Invalid latency/bandwidth entry number\n");
> + return;
> + }
> + for (i = 0; i < HmatLocality->NumberOfInitiatorPDs; i++)
> + {
> + for (j = 0; j < HmatLocality->NumberOfTargetPDs; j++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> + ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
> + 2, AcpiDmTableInfoHmat1c);
> + SubtableOffset += 2;
> + }
> + }
> + break;
> +
> + case ACPI_HMAT_TYPE_CACHE:
> +
> + HmatCache = ACPI_CAST_PTR (ACPI_HMAT_CACHE, HmatStruct);
> + SubtableOffset = sizeof (ACPI_HMAT_CACHE);
> +
> + /* Dump SMBIOS handles */
> +
> + if ((UINT32)(HmatStruct->Length - SubtableOffset) <
> + (UINT32)(HmatCache->NumberOfSMBIOSHandles * 2))
> + {
> + AcpiOsPrintf ("Invalid SMBIOS handle number\n");
> + return;
> + }
> + for (i = 0; i < HmatCache->NumberOfSMBIOSHandles; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> + ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset),
> + 2, AcpiDmTableInfoHmat2a);
> + SubtableOffset += 2;
> + }
> + break;
> +
> + default:
> +
> + break;
> + }
> +
> +NextSubtable:
> + /* Point to next HMAT structure subtable */
> +
> + Offset += (HmatStruct->Length);
> + }
> +}
> diff --git a/src/acpica/source/common/dmtbdump2.c b/src/acpica/source/common/dmtbdump2.c
> new file mode 100644
> index 00000000..d2c584bb
> --- /dev/null
> +++ b/src/acpica/source/common/dmtbdump2.c
> @@ -0,0 +1,2074 @@
> +/******************************************************************************
> + *
> + * Module Name: dmtbdump2 - Dump ACPI data tables that contain no AML code
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
> + * All rights reserved.
> + *
> + * 2. License
> + *
> + * 2.1. This is your license from Intel Corp. under its intellectual property
> + * rights. You may have additional license terms from the party that provided
> + * you this software, covering your right to use that party's intellectual
> + * property rights.
> + *
> + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
> + * copy of the source code appearing in this file ("Covered Code") an
> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the
> + * base code distributed originally by Intel ("Original Intel Code") to copy,
> + * make derivatives, distribute, use and display any portion of the Covered
> + * Code in any form, with the right to sublicense such rights; and
> + *
> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
> + * license (with the right to sublicense), under only those claims of Intel
> + * patents that are infringed by the Original Intel Code, to make, use, sell,
> + * offer to sell, and import the Covered Code and derivative works thereof
> + * solely to the minimum extent necessary to exercise the above copyright
> + * license, and in no event shall the patent license extend to any additions
> + * to or modifications of the Original Intel Code. No other license or right
> + * is granted directly or by implication, estoppel or otherwise;
> + *
> + * The above copyright and patent license is granted only if the following
> + * conditions are met:
> + *
> + * 3. Conditions
> + *
> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification with rights to further distribute source must include
> + * the above Copyright Notice, the above License, this list of Conditions,
> + * and the following Disclaimer and Export Compliance provision. In addition,
> + * Licensee must cause all Covered Code to which Licensee contributes to
> + * contain a file documenting the changes Licensee made to create that Covered
> + * Code and the date of any change. Licensee must include in that file the
> + * documentation of any changes made by any predecessor Licensee. Licensee
> + * must include a prominent statement that the modification is derived,
> + * directly or indirectly, from Original Intel Code.
> + *
> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification without rights to further distribute source must
> + * include the following Disclaimer and Export Compliance provision in the
> + * documentation and/or other materials provided with distribution. In
> + * addition, Licensee may not authorize further sublicense of source of any
> + * portion of the Covered Code, and must include terms to the effect that the
> + * license from Licensee to its licensee is limited to the intellectual
> + * property embodied in the software Licensee provides to its licensee, and
> + * not to intellectual property embodied in modifications its licensee may
> + * make.
> + *
> + * 3.3. Redistribution of Executable. Redistribution in executable form of any
> + * substantial portion of the Covered Code or modification must reproduce the
> + * above Copyright Notice, and the following Disclaimer and Export Compliance
> + * provision in the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * 3.4. Intel retains all right, title, and interest in and to the Original
> + * Intel Code.
> + *
> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by
> + * Intel shall be used in advertising or otherwise to promote the sale, use or
> + * other dealings in products derived from or relating to the Covered Code
> + * without prior written authorization from Intel.
> + *
> + * 4. Disclaimer and Export Compliance
> + *
> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
> + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
> + * PARTICULAR PURPOSE.
> + *
> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
> + * LIMITED REMEDY.
> + *
> + * 4.3. Licensee shall not export, either directly or indirectly, any of this
> + * software or system incorporating such software without first obtaining any
> + * required license or other approval from the U. S. Department of Commerce or
> + * any other agency or department of the United States Government. In the
> + * event Licensee exports any such software from the United States or
> + * re-exports any such software from a foreign destination, Licensee shall
> + * ensure that the distribution and export/re-export of the software is in
> + * compliance with all laws, regulations, orders, or other restrictions of the
> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor
> + * any of its subsidiaries will export/re-export any technical data, process,
> + * software, or service, directly or indirectly, to any country for which the
> + * United States government or any agency thereof requires an export license,
> + * other governmental approval, or letter of assurance, without first obtaining
> + * such license, approval or letter.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions, and the following disclaimer,
> + * without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + * substantially similar to the "NO WARRANTY" disclaimer below
> + * ("Disclaimer") and any redistribution must be conditioned upon
> + * including a substantially similar Disclaimer requirement for further
> + * binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + * of any contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "acpi.h"
> +#include "accommon.h"
> +#include "acdisasm.h"
> +#include "actables.h"
> +
> +/* This module used for application-level code only */
> +
> +#define _COMPONENT ACPI_CA_DISASSEMBLER
> + ACPI_MODULE_NAME ("dmtbdump2")
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpIort
> + *
> + * PARAMETERS: Table - A IORT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a IORT
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpIort (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_TABLE_IORT *Iort;
> + ACPI_IORT_NODE *IortNode;
> + ACPI_IORT_ITS_GROUP *IortItsGroup = NULL;
> + ACPI_IORT_SMMU *IortSmmu = NULL;
> + UINT32 Offset;
> + UINT32 NodeOffset;
> + UINT32 Length;
> + ACPI_DMTABLE_INFO *InfoTable;
> + char *String;
> + UINT32 i;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIort);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Iort = ACPI_CAST_PTR (ACPI_TABLE_IORT, Table);
> + Offset = sizeof (ACPI_TABLE_IORT);
> +
> + /* Dump the OptionalPadding (optional) */
> +
> + if (Iort->NodeOffset > Offset)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset, Table,
> + Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> +
> + Offset = Iort->NodeOffset;
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, Table, Offset);
> + AcpiOsPrintf ("\n");
> + Length = ACPI_OFFSET (ACPI_IORT_NODE, NodeData);
> + Status = AcpiDmDumpTable (Table->Length, Offset,
> + IortNode, Length, AcpiDmTableInfoIortHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + NodeOffset = Length;
> +
> + switch (IortNode->Type)
> + {
> + case ACPI_IORT_NODE_ITS_GROUP:
> +
> + InfoTable = AcpiDmTableInfoIort0;
> + Length = ACPI_OFFSET (ACPI_IORT_ITS_GROUP, Identifiers);
> + IortItsGroup = ACPI_ADD_PTR (ACPI_IORT_ITS_GROUP, IortNode, NodeOffset);
> + break;
> +
> + case ACPI_IORT_NODE_NAMED_COMPONENT:
> +
> + InfoTable = AcpiDmTableInfoIort1;
> + Length = ACPI_OFFSET (ACPI_IORT_NAMED_COMPONENT, DeviceName);
> + String = ACPI_ADD_PTR (char, IortNode, NodeOffset + Length);
> + Length += strlen (String) + 1;
> + break;
> +
> + case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
> +
> + InfoTable = AcpiDmTableInfoIort2;
> + Length = IortNode->Length - NodeOffset;
> + break;
> +
> + case ACPI_IORT_NODE_SMMU:
> +
> + InfoTable = AcpiDmTableInfoIort3;
> + Length = ACPI_OFFSET (ACPI_IORT_SMMU, Interrupts);
> + IortSmmu = ACPI_ADD_PTR (ACPI_IORT_SMMU, IortNode, NodeOffset);
> + break;
> +
> + case ACPI_IORT_NODE_SMMU_V3:
> +
> + InfoTable = AcpiDmTableInfoIort4;
> + Length = IortNode->Length - NodeOffset;
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown IORT node type 0x%X\n",
> + IortNode->Type);
> +
> + /* Attempt to continue */
> +
> + if (!IortNode->Length)
> + {
> + AcpiOsPrintf ("Invalid zero length IORT node\n");
> + return;
> + }
> + goto NextSubtable;
> + }
> +
> + /* Dump the node subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> + Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + NodeOffset += Length;
> +
> + /* Dump the node specific data */
> +
> + switch (IortNode->Type)
> + {
> + case ACPI_IORT_NODE_ITS_GROUP:
> +
> + /* Validate IortItsGroup to avoid compiler warnings */
> +
> + if (IortItsGroup)
> + {
> + for (i = 0; i < IortItsGroup->ItsCount; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> + 4, AcpiDmTableInfoIort0a);
> + NodeOffset += 4;
> + }
> + }
> + break;
> +
> + case ACPI_IORT_NODE_NAMED_COMPONENT:
> +
> + /* Dump the Padding (optional) */
> +
> + if (IortNode->Length > NodeOffset)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> + Table, IortNode->Length - NodeOffset,
> + AcpiDmTableInfoIort1a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> + break;
> +
> + case ACPI_IORT_NODE_SMMU:
> +
> + AcpiOsPrintf ("\n");
> +
> + /* Validate IortSmmu to avoid compiler warnings */
> +
> + if (IortSmmu)
> + {
> + Length = 2 * sizeof (UINT64);
> + NodeOffset = IortSmmu->GlobalInterruptOffset;
> + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> + Length, AcpiDmTableInfoIort3a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + NodeOffset = IortSmmu->ContextInterruptOffset;
> + for (i = 0; i < IortSmmu->ContextInterruptCount; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> + 8, AcpiDmTableInfoIort3b);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + NodeOffset += 8;
> + }
> +
> + NodeOffset = IortSmmu->PmuInterruptOffset;
> + for (i = 0; i < IortSmmu->PmuInterruptCount; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> + 8, AcpiDmTableInfoIort3c);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + NodeOffset += 8;
> + }
> + }
> + break;
> +
> + default:
> +
> + break;
> + }
> +
> + /* Dump the ID mappings */
> +
> + NodeOffset = IortNode->MappingOffset;
> + for (i = 0; i < IortNode->MappingCount; i++)
> + {
> + AcpiOsPrintf ("\n");
> + Length = sizeof (ACPI_IORT_ID_MAPPING);
> + Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
> + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
> + Length, AcpiDmTableInfoIortMap);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + NodeOffset += Length;
> + }
> +
> +NextSubtable:
> + /* Point to next node subtable */
> +
> + Offset += IortNode->Length;
> + IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, IortNode->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpIvrs
> + *
> + * PARAMETERS: Table - A IVRS table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a IVRS
> + *
> + ******************************************************************************/
> +
> +static UINT8 EntrySizes[] = {4,8,16,32};
> +
> +void
> +AcpiDmDumpIvrs (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_IVRS);
> + UINT32 EntryOffset;
> + UINT32 EntryLength;
> + UINT32 EntryType;
> + ACPI_IVRS_DE_HEADER *DeviceEntry;
> + ACPI_IVRS_HEADER *Subtable;
> + ACPI_DMTABLE_INFO *InfoTable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoIvrsHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_IVRS_TYPE_HARDWARE:
> +
> + InfoTable = AcpiDmTableInfoIvrs0;
> + break;
> +
> + case ACPI_IVRS_TYPE_MEMORY1:
> + case ACPI_IVRS_TYPE_MEMORY2:
> + case ACPI_IVRS_TYPE_MEMORY3:
> +
> + InfoTable = AcpiDmTableInfoIvrs1;
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown IVRS subtable type 0x%X\n",
> + Subtable->Type);
> +
> + /* Attempt to continue */
> +
> + if (!Subtable->Length)
> + {
> + AcpiOsPrintf ("Invalid zero length subtable\n");
> + return;
> + }
> + goto NextSubtable;
> + }
> +
> + /* Dump the subtable */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* The hardware subtable can contain multiple device entries */
> +
> + if (Subtable->Type == ACPI_IVRS_TYPE_HARDWARE)
> + {
> + EntryOffset = Offset + sizeof (ACPI_IVRS_HARDWARE);
> + DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, Subtable,
> + sizeof (ACPI_IVRS_HARDWARE));
> +
> + while (EntryOffset < (Offset + Subtable->Length))
> + {
> + AcpiOsPrintf ("\n");
> + /*
> + * Upper 2 bits of Type encode the length of the device entry
> + *
> + * 00 = 4 byte
> + * 01 = 8 byte
> + * 10 = 16 byte - currently no entries defined
> + * 11 = 32 byte - currently no entries defined
> + */
> + EntryType = DeviceEntry->Type;
> + EntryLength = EntrySizes [EntryType >> 6];
> +
> + switch (EntryType)
> + {
> + /* 4-byte device entries */
> +
> + case ACPI_IVRS_TYPE_PAD4:
> + case ACPI_IVRS_TYPE_ALL:
> + case ACPI_IVRS_TYPE_SELECT:
> + case ACPI_IVRS_TYPE_START:
> + case ACPI_IVRS_TYPE_END:
> +
> + InfoTable = AcpiDmTableInfoIvrs4;
> + break;
> +
> + /* 8-byte entries, type A */
> +
> + case ACPI_IVRS_TYPE_ALIAS_SELECT:
> + case ACPI_IVRS_TYPE_ALIAS_START:
> +
> + InfoTable = AcpiDmTableInfoIvrs8a;
> + break;
> +
> + /* 8-byte entries, type B */
> +
> + case ACPI_IVRS_TYPE_PAD8:
> + case ACPI_IVRS_TYPE_EXT_SELECT:
> + case ACPI_IVRS_TYPE_EXT_START:
> +
> + InfoTable = AcpiDmTableInfoIvrs8b;
> + break;
> +
> + /* 8-byte entries, type C */
> +
> + case ACPI_IVRS_TYPE_SPECIAL:
> +
> + InfoTable = AcpiDmTableInfoIvrs8c;
> + break;
> +
> + default:
> + InfoTable = AcpiDmTableInfoIvrs4;
> + AcpiOsPrintf (
> + "\n**** Unknown IVRS device entry type/length: "
> + "0x%.2X/0x%X at offset 0x%.4X: (header below)\n",
> + EntryType, EntryLength, EntryOffset);
> + break;
> + }
> +
> + /* Dump the Device Entry */
> +
> + Status = AcpiDmDumpTable (Table->Length, EntryOffset,
> + DeviceEntry, EntryLength, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + EntryOffset += EntryLength;
> + DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry,
> + EntryLength);
> + }
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpLpit
> + *
> + * PARAMETERS: Table - A LPIT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a LPIT. This table type consists
> + * of an open-ended number of subtables. Note: There are no
> + * entries in the main table. An LPIT consists of the table
> + * header and then subtables only.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpLpit (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_LPIT_HEADER *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_LPIT);
> + ACPI_DMTABLE_INFO *InfoTable;
> + UINT32 SubtableLength;
> +
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_LPIT_TYPE_NATIVE_CSTATE:
> +
> + InfoTable = AcpiDmTableInfoLpit0;
> + SubtableLength = sizeof (ACPI_LPIT_NATIVE);
> + break;
> +
> + default:
> +
> + /* Cannot continue on unknown type - no length */
> +
> + AcpiOsPrintf ("\n**** Unknown LPIT subtable type 0x%X\n",
> + Subtable->Type);
> + return;
> + }
> +
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + SubtableLength, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + AcpiOsPrintf ("\n");
> +
> + /* Point to next subtable */
> +
> + Offset += SubtableLength;
> + Subtable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Subtable, SubtableLength);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpMadt
> + *
> + * PARAMETERS: Table - A MADT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a MADT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpMadt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_SUBTABLE_HEADER *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_MADT);
> + ACPI_DMTABLE_INFO *InfoTable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoMadtHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_MADT_TYPE_LOCAL_APIC:
> +
> + InfoTable = AcpiDmTableInfoMadt0;
> + break;
> +
> + case ACPI_MADT_TYPE_IO_APIC:
> +
> + InfoTable = AcpiDmTableInfoMadt1;
> + break;
> +
> + case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE:
> +
> + InfoTable = AcpiDmTableInfoMadt2;
> + break;
> +
> + case ACPI_MADT_TYPE_NMI_SOURCE:
> +
> + InfoTable = AcpiDmTableInfoMadt3;
> + break;
> +
> + case ACPI_MADT_TYPE_LOCAL_APIC_NMI:
> +
> + InfoTable = AcpiDmTableInfoMadt4;
> + break;
> +
> + case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE:
> +
> + InfoTable = AcpiDmTableInfoMadt5;
> + break;
> +
> + case ACPI_MADT_TYPE_IO_SAPIC:
> +
> + InfoTable = AcpiDmTableInfoMadt6;
> + break;
> +
> + case ACPI_MADT_TYPE_LOCAL_SAPIC:
> +
> + InfoTable = AcpiDmTableInfoMadt7;
> + break;
> +
> + case ACPI_MADT_TYPE_INTERRUPT_SOURCE:
> +
> + InfoTable = AcpiDmTableInfoMadt8;
> + break;
> +
> + case ACPI_MADT_TYPE_LOCAL_X2APIC:
> +
> + InfoTable = AcpiDmTableInfoMadt9;
> + break;
> +
> + case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
> +
> + InfoTable = AcpiDmTableInfoMadt10;
> + break;
> +
> + case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
> +
> + InfoTable = AcpiDmTableInfoMadt11;
> + break;
> +
> + case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
> +
> + InfoTable = AcpiDmTableInfoMadt12;
> + break;
> +
> + case ACPI_MADT_TYPE_GENERIC_MSI_FRAME:
> +
> + InfoTable = AcpiDmTableInfoMadt13;
> + break;
> +
> + case ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR:
> +
> + InfoTable = AcpiDmTableInfoMadt14;
> + break;
> +
> + case ACPI_MADT_TYPE_GENERIC_TRANSLATOR:
> +
> + InfoTable = AcpiDmTableInfoMadt15;
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n",
> + Subtable->Type);
> +
> + /* Attempt to continue */
> +
> + if (!Subtable->Length)
> + {
> + AcpiOsPrintf ("Invalid zero length subtable\n");
> + return;
> + }
> +
> + goto NextSubtable;
> + }
> +
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable,
> + Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpMcfg
> + *
> + * PARAMETERS: Table - A MCFG Table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a MCFG table
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpMcfg (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_MCFG);
> + ACPI_MCFG_ALLOCATION *Subtable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
> + {
> + AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
> + sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
> + return;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable (each subtable is of fixed length) */
> +
> + Offset += sizeof (ACPI_MCFG_ALLOCATION);
> + Subtable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Subtable,
> + sizeof (ACPI_MCFG_ALLOCATION));
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpMpst
> + *
> + * PARAMETERS: Table - A MPST Table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a MPST table
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpMpst (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_MPST);
> + ACPI_MPST_POWER_NODE *Subtable0;
> + ACPI_MPST_POWER_STATE *Subtable0A;
> + ACPI_MPST_COMPONENT *Subtable0B;
> + ACPI_MPST_DATA_HDR *Subtable1;
> + ACPI_MPST_POWER_DATA *Subtable2;
> + UINT16 SubtableCount;
> + UINT32 PowerStateCount;
> + UINT32 ComponentCount;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtable: Memory Power Node(s) */
> +
> + SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount;
> + Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset);
> +
> + while ((Offset < Table->Length) && SubtableCount)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0,
> + sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Extract the sub-subtable counts */
> +
> + PowerStateCount = Subtable0->NumPowerStates;
> + ComponentCount = Subtable0->NumPhysicalComponents;
> + Offset += sizeof (ACPI_MPST_POWER_NODE);
> +
> + /* Sub-subtables - Memory Power State Structure(s) */
> +
> + Subtable0A = ACPI_ADD_PTR (ACPI_MPST_POWER_STATE, Subtable0,
> + sizeof (ACPI_MPST_POWER_NODE));
> +
> + while (PowerStateCount)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0A,
> + sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Subtable0A++;
> + PowerStateCount--;
> + Offset += sizeof (ACPI_MPST_POWER_STATE);
> + }
> +
> + /* Sub-subtables - Physical Component ID Structure(s) */
> +
> + Subtable0B = ACPI_CAST_PTR (ACPI_MPST_COMPONENT, Subtable0A);
> +
> + if (ComponentCount)
> + {
> + AcpiOsPrintf ("\n");
> + }
> +
> + while (ComponentCount)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0B,
> + sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Subtable0B++;
> + ComponentCount--;
> + Offset += sizeof (ACPI_MPST_COMPONENT);
> + }
> +
> + /* Point to next Memory Power Node subtable */
> +
> + SubtableCount--;
> + Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Subtable0,
> + sizeof (ACPI_MPST_POWER_NODE) +
> + (sizeof (ACPI_MPST_POWER_STATE) * Subtable0->NumPowerStates) +
> + (sizeof (ACPI_MPST_COMPONENT) * Subtable0->NumPhysicalComponents));
> + }
> +
> + /* Subtable: Count of Memory Power State Characteristic structures */
> +
> + AcpiOsPrintf ("\n");
> + Subtable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable0);
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable1,
> + sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + SubtableCount = Subtable1->CharacteristicsCount;
> + Offset += sizeof (ACPI_MPST_DATA_HDR);
> +
> + /* Subtable: Memory Power State Characteristics structure(s) */
> +
> + Subtable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, Subtable1,
> + sizeof (ACPI_MPST_DATA_HDR));
> +
> + while ((Offset < Table->Length) && SubtableCount)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable2,
> + sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Subtable2++;
> + SubtableCount--;
> + Offset += sizeof (ACPI_MPST_POWER_DATA);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpMsct
> + *
> + * PARAMETERS: Table - A MSCT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a MSCT
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpMsct (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_MSCT);
> + ACPI_MSCT_PROXIMITY *Subtable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += sizeof (ACPI_MSCT_PROXIMITY);
> + Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Subtable,
> + sizeof (ACPI_MSCT_PROXIMITY));
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpMtmr
> + *
> + * PARAMETERS: Table - A MTMR table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a MTMR
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpMtmr (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_MTMR);
> + ACPI_MTMR_ENTRY *Subtable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMtmr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += sizeof (ACPI_MTMR_ENTRY);
> + Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Subtable,
> + sizeof (ACPI_MTMR_ENTRY));
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpNfit
> + *
> + * PARAMETERS: Table - A NFIT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of an NFIT.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpNfit (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_NFIT);
> + UINT32 FieldOffset = 0;
> + UINT32 Length;
> + ACPI_NFIT_HEADER *Subtable;
> + ACPI_DMTABLE_INFO *InfoTable;
> + ACPI_NFIT_INTERLEAVE *Interleave = NULL;
> + ACPI_NFIT_SMBIOS *SmbiosInfo = NULL;
> + ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL;
> + UINT32 i;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoNfit);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* NFIT subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoNfitHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_NFIT_TYPE_SYSTEM_ADDRESS:
> +
> + InfoTable = AcpiDmTableInfoNfit0;
> + break;
> +
> + case ACPI_NFIT_TYPE_MEMORY_MAP:
> +
> + InfoTable = AcpiDmTableInfoNfit1;
> + break;
> +
> + case ACPI_NFIT_TYPE_INTERLEAVE:
> +
> + /* Has a variable number of 32-bit values at the end */
> +
> + InfoTable = AcpiDmTableInfoNfit2;
> + Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, Subtable);
> + FieldOffset = sizeof (ACPI_NFIT_INTERLEAVE);
> + break;
> +
> + case ACPI_NFIT_TYPE_SMBIOS:
> +
> + SmbiosInfo = ACPI_CAST_PTR (ACPI_NFIT_SMBIOS, Subtable);
> + InfoTable = AcpiDmTableInfoNfit3;
> + break;
> +
> + case ACPI_NFIT_TYPE_CONTROL_REGION:
> +
> + InfoTable = AcpiDmTableInfoNfit4;
> + break;
> +
> + case ACPI_NFIT_TYPE_DATA_REGION:
> +
> + InfoTable = AcpiDmTableInfoNfit5;
> + break;
> +
> + case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
> +
> + /* Has a variable number of 64-bit addresses at the end */
> +
> + InfoTable = AcpiDmTableInfoNfit6;
> + Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, Subtable);
> + FieldOffset = sizeof (ACPI_NFIT_FLUSH_ADDRESS) - sizeof (UINT64);
> + break;
> +
> + case ACPI_NFIT_TYPE_CAPABILITIES: /* ACPI 6.0A */
> +
> + InfoTable = AcpiDmTableInfoNfit7;
> + break;
> +
> + default:
> + AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n",
> + Subtable->Type);
> +
> + /* Attempt to continue */
> +
> + if (!Subtable->Length)
> + {
> + AcpiOsPrintf ("Invalid zero length subtable\n");
> + return;
> + }
> + goto NextSubtable;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Per-subtable variable-length fields */
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_NFIT_TYPE_INTERLEAVE:
> +
> + for (i = 0; i < Interleave->LineCount; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
> + &Interleave->LineOffset[i],
> + sizeof (UINT32), AcpiDmTableInfoNfit2a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + FieldOffset += sizeof (UINT32);
> + }
> + break;
> +
> + case ACPI_NFIT_TYPE_SMBIOS:
> +
> + Length = Subtable->Length -
> + sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
> +
> + if (Length)
> + {
> + Status = AcpiDmDumpTable (Table->Length,
> + sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8),
> + SmbiosInfo,
> + Length, AcpiDmTableInfoNfit3a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> +
> + break;
> +
> + case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
> +
> + for (i = 0; i < Hint->HintCount; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
> + &Hint->HintAddress[i],
> + sizeof (UINT64), AcpiDmTableInfoNfit6a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + FieldOffset += sizeof (UINT64);
> + }
> + break;
> +
> + default:
> + break;
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpPcct
> + *
> + * PARAMETERS: Table - A PCCT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a PCCT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpPcct (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_PCCT_SUBSPACE *Subtable;
> + ACPI_DMTABLE_INFO *InfoTable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_PCCT);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Header.Length, AcpiDmTableInfoPcctHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Header.Type)
> + {
> + case ACPI_PCCT_TYPE_GENERIC_SUBSPACE:
> +
> + InfoTable = AcpiDmTableInfoPcct0;
> + break;
> +
> + case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE:
> +
> + InfoTable = AcpiDmTableInfoPcct1;
> + break;
> +
> + case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2:
> +
> + InfoTable = AcpiDmTableInfoPcct2;
> + break;
> +
> + case ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE:
> +
> + InfoTable = AcpiDmTableInfoPcct3;
> + break;
> +
> + case ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE:
> +
> + InfoTable = AcpiDmTableInfoPcct4;
> + break;
> +
> + default:
> +
> + AcpiOsPrintf (
> + "\n**** Unexpected or unknown PCCT subtable type 0x%X\n\n",
> + Subtable->Header.Type);
> + return;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Header.Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += Subtable->Header.Length;
> + Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Subtable,
> + Subtable->Header.Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpPdtt
> + *
> + * PARAMETERS: Table - A PDTT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a Pdtt. This is a variable-length
> + * table that contains an open-ended number of IDs
> + * at the end of the table.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpPdtt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_PDTT_CHANNEL *Subtable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_PDTT);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPdtt);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables. Currently there is only one type, but can be multiples */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_PDTT_CHANNEL, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + sizeof (ACPI_PDTT_CHANNEL), AcpiDmTableInfoPdtt0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += sizeof (ACPI_PDTT_CHANNEL);
> + Subtable = ACPI_ADD_PTR (ACPI_PDTT_CHANNEL, Subtable,
> + sizeof (ACPI_PDTT_CHANNEL));
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpPmtt
> + *
> + * PARAMETERS: Table - A PMTT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a PMTT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpPmtt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_PMTT_HEADER *Subtable;
> + ACPI_PMTT_HEADER *MemSubtable;
> + ACPI_PMTT_HEADER *DimmSubtable;
> + ACPI_PMTT_DOMAIN *DomainArray;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_PMTT);
> + UINT32 MemOffset;
> + UINT32 DimmOffset;
> + UINT32 DomainOffset;
> + UINT32 DomainCount;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoPmttHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Only Socket subtables are expected at this level */
> +
> + if (Subtable->Type != ACPI_PMTT_TYPE_SOCKET)
> + {
> + AcpiOsPrintf (
> + "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> + Subtable->Type);
> + return;
> + }
> +
> + /* Dump the fixed-length portion of the subtable */
> +
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoPmtt0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Walk the memory controller subtables */
> +
> + MemOffset = sizeof (ACPI_PMTT_SOCKET);
> + MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable,
> + sizeof (ACPI_PMTT_SOCKET));
> +
> + while (((Offset + MemOffset) < Table->Length) &&
> + (MemOffset < Subtable->Length))
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset, MemSubtable,
> + MemSubtable->Length, AcpiDmTableInfoPmttHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Only memory controller subtables are expected at this level */
> +
> + if (MemSubtable->Type != ACPI_PMTT_TYPE_CONTROLLER)
> + {
> + AcpiOsPrintf (
> + "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> + MemSubtable->Type);
> + return;
> + }
> +
> + /* Dump the fixed-length portion of the controller subtable */
> +
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset, MemSubtable,
> + MemSubtable->Length, AcpiDmTableInfoPmtt1);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Walk the variable count of proximity domains */
> +
> + DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount;
> + DomainOffset = sizeof (ACPI_PMTT_CONTROLLER);
> + DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubtable,
> + sizeof (ACPI_PMTT_CONTROLLER));
> +
> + while (((Offset + MemOffset + DomainOffset) < Table->Length) &&
> + ((MemOffset + DomainOffset) < Subtable->Length) &&
> + DomainCount)
> + {
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset + DomainOffset, DomainArray,
> + sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + DomainOffset += sizeof (ACPI_PMTT_DOMAIN);
> + DomainArray++;
> + DomainCount--;
> + }
> +
> + if (DomainCount)
> + {
> + AcpiOsPrintf (
> + "\n**** DomainCount exceeds subtable length\n\n");
> + }
> +
> + /* Walk the physical component (DIMM) subtables */
> +
> + DimmOffset = DomainOffset;
> + DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubtable,
> + DomainOffset);
> +
> + while (((Offset + MemOffset + DimmOffset) < Table->Length) &&
> + (DimmOffset < MemSubtable->Length))
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset + DimmOffset, DimmSubtable,
> + DimmSubtable->Length, AcpiDmTableInfoPmttHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Only DIMM subtables are expected at this level */
> +
> + if (DimmSubtable->Type != ACPI_PMTT_TYPE_DIMM)
> + {
> + AcpiOsPrintf (
> + "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n",
> + DimmSubtable->Type);
> + return;
> + }
> +
> + /* Dump the fixed-length DIMM subtable */
> +
> + Status = AcpiDmDumpTable (Length,
> + Offset + MemOffset + DimmOffset, DimmSubtable,
> + DimmSubtable->Length, AcpiDmTableInfoPmtt2);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next DIMM subtable */
> +
> + DimmOffset += DimmSubtable->Length;
> + DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> + DimmSubtable, DimmSubtable->Length);
> + }
> +
> + /* Point to next Controller subtable */
> +
> + MemOffset += MemSubtable->Length;
> + MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> + MemSubtable, MemSubtable->Length);
> + }
> +
> + /* Point to next Socket subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
> + Subtable, Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpPptt
> + *
> + * PARAMETERS: Table - A PMTT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a PPTT. This table type consists
> + * of an open-ended number of subtables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpPptt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_SUBTABLE_HEADER *Subtable;
> + ACPI_PPTT_PROCESSOR *PpttProcessor;
> + UINT8 Length;
> + UINT8 SubtableOffset;
> + UINT32 Offset = sizeof (ACPI_TABLE_FPDT);
> + ACPI_DMTABLE_INFO *InfoTable;
> + UINT32 i;
> +
> +
> + /* There is no main table (other than the standard ACPI header) */
> +
> + /* Subtables */
> +
> + Offset = sizeof (ACPI_TABLE_HEADER);
> + while (Offset < Table->Length)
> + {
> + AcpiOsPrintf ("\n");
> +
> + /* Common subtable header */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
> + if (Subtable->Length < sizeof (ACPI_SUBTABLE_HEADER))
> + {
> + AcpiOsPrintf ("Invalid subtable length\n");
> + return;
> + }
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoPpttHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_PPTT_TYPE_PROCESSOR:
> +
> + InfoTable = AcpiDmTableInfoPptt0;
> + Length = sizeof (ACPI_PPTT_PROCESSOR);
> + break;
> +
> + case ACPI_PPTT_TYPE_CACHE:
> +
> + InfoTable = AcpiDmTableInfoPptt1;
> + Length = sizeof (ACPI_PPTT_CACHE);
> + break;
> +
> + case ACPI_PPTT_TYPE_ID:
> +
> + InfoTable = AcpiDmTableInfoPptt2;
> + Length = sizeof (ACPI_PPTT_ID);
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown PPTT subtable type 0x%X\n\n",
> + Subtable->Type);
> +
> + /* Attempt to continue */
> +
> + goto NextSubtable;
> + }
> +
> + if (Subtable->Length < Length)
> + {
> + AcpiOsPrintf ("Invalid subtable length\n");
> + return;
> + }
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + SubtableOffset = Length;
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_PPTT_TYPE_PROCESSOR:
> +
> + PpttProcessor = ACPI_CAST_PTR (ACPI_PPTT_PROCESSOR, Subtable);
> +
> + /* Dump SMBIOS handles */
> +
> + if ((UINT8)(Subtable->Length - SubtableOffset) <
> + (UINT8)(PpttProcessor->NumberOfPrivResources * 4))
> + {
> + AcpiOsPrintf ("Invalid private resource number\n");
> + return;
> + }
> + for (i = 0; i < PpttProcessor->NumberOfPrivResources; i++)
> + {
> + Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
> + ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, SubtableOffset),
> + 4, AcpiDmTableInfoPptt0a);
> + SubtableOffset += 4;
> + }
> + break;
> +
> + default:
> +
> + break;
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpS3pt
> + *
> + * PARAMETERS: Table - A S3PT table
> + *
> + * RETURN: Length of the table
> + *
> + * DESCRIPTION: Format the contents of a S3PT
> + *
> + ******************************************************************************/
> +
> +UINT32
> +AcpiDmDumpS3pt (
> + ACPI_TABLE_HEADER *Tables)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_S3PT);
> + ACPI_FPDT_HEADER *Subtable;
> + ACPI_DMTABLE_INFO *InfoTable;
> + ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Offset, 0, S3ptTable, 0, AcpiDmTableInfoS3pt);
> + if (ACPI_FAILURE (Status))
> + {
> + return 0;
> + }
> +
> + Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset);
> + while (Offset < S3ptTable->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoS3ptHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return 0;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_S3PT_TYPE_RESUME:
> +
> + InfoTable = AcpiDmTableInfoS3pt0;
> + break;
> +
> + case ACPI_S3PT_TYPE_SUSPEND:
> +
> + InfoTable = AcpiDmTableInfoS3pt1;
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n",
> + Subtable->Type);
> +
> + /* Attempt to continue */
> +
> + if (!Subtable->Length)
> + {
> + AcpiOsPrintf ("Invalid zero length subtable\n");
> + return 0;
> + }
> + goto NextSubtable;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return 0;
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Subtable, Subtable->Length);
> + }
> +
> + return (S3ptTable->Length);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpSdev
> + *
> + * PARAMETERS: Table - A SDEV table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a SDEV. This is a variable-length
> + * table that contains variable strings and vendor data.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpSdev (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_SDEV_HEADER *Subtable;
> + ACPI_SDEV_PCIE *Pcie;
> + ACPI_SDEV_NAMESPACE *Namesp;
> + ACPI_DMTABLE_INFO *InfoTable;
> + UINT32 Length = Table->Length;
> + UINT32 Offset = sizeof (ACPI_TABLE_SDEV);
> + UINT16 PathOffset;
> + UINT16 PathLength;
> + UINT16 VendorDataOffset;
> + UINT16 VendorDataLength;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSdev);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_SDEV_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoSdevHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_SDEV_TYPE_NAMESPACE_DEVICE:
> +
> + InfoTable = AcpiDmTableInfoSdev0;
> + break;
> +
> + case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE:
> +
> + InfoTable = AcpiDmTableInfoSdev1;
> + break;
> +
> + default:
> + goto NextSubtable;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_SDEV_TYPE_NAMESPACE_DEVICE:
> +
> + /* Dump the PCIe device ID(s) */
> +
> + Namesp = ACPI_CAST_PTR (ACPI_SDEV_NAMESPACE, Subtable);
> + PathOffset = Namesp->DeviceIdOffset;
> + PathLength = Namesp->DeviceIdLength;
> +
> + if (PathLength)
> + {
> + Status = AcpiDmDumpTable (Table->Length, 0,
> + ACPI_ADD_PTR (UINT8, Namesp, PathOffset),
> + PathLength, AcpiDmTableInfoSdev0a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> +
> + /* Dump the vendor-specific data */
> +
> + VendorDataLength =
> + Namesp->VendorDataLength;
> + VendorDataOffset =
> + Namesp->DeviceIdOffset + Namesp->DeviceIdLength;
> +
> + if (VendorDataLength)
> + {
> + Status = AcpiDmDumpTable (Table->Length, 0,
> + ACPI_ADD_PTR (UINT8, Namesp, VendorDataOffset),
> + VendorDataLength, AcpiDmTableInfoSdev1b);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> + break;
> +
> + case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE:
> +
> + /* PCI path substructures */
> +
> + Pcie = ACPI_CAST_PTR (ACPI_SDEV_PCIE, Subtable);
> + PathOffset = Pcie->PathOffset;
> + PathLength = Pcie->PathLength;
> +
> + while (PathLength)
> + {
> + Status = AcpiDmDumpTable (Table->Length,
> + PathOffset + Offset,
> + ACPI_ADD_PTR (UINT8, Pcie, PathOffset),
> + sizeof (ACPI_SDEV_PCIE_PATH), AcpiDmTableInfoSdev1a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + PathOffset += sizeof (ACPI_SDEV_PCIE_PATH);
> + PathLength -= sizeof (ACPI_SDEV_PCIE_PATH);
> + }
> +
> + /* VendorData */
> +
> + VendorDataLength = Pcie->VendorDataLength;
> + VendorDataOffset = Pcie->PathOffset + Pcie->PathLength;
> +
> + if (VendorDataLength)
> + {
> + Status = AcpiDmDumpTable (Table->Length, 0,
> + ACPI_ADD_PTR (UINT8, Pcie, VendorDataOffset),
> + VendorDataLength, AcpiDmTableInfoSdev1b);
> + }
> + break;
> +
> + default:
> + goto NextSubtable;
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_SDEV_HEADER, Subtable,
> + Subtable->Length);
> + }
> +}
> diff --git a/src/acpica/source/common/dmtbdump3.c b/src/acpica/source/common/dmtbdump3.c
> new file mode 100644
> index 00000000..3c1dea6c
> --- /dev/null
> +++ b/src/acpica/source/common/dmtbdump3.c
> @@ -0,0 +1,693 @@
> +/******************************************************************************
> + *
> + * Module Name: dmtbdump3 - Dump ACPI data tables that contain no AML code
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
> + * All rights reserved.
> + *
> + * 2. License
> + *
> + * 2.1. This is your license from Intel Corp. under its intellectual property
> + * rights. You may have additional license terms from the party that provided
> + * you this software, covering your right to use that party's intellectual
> + * property rights.
> + *
> + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
> + * copy of the source code appearing in this file ("Covered Code") an
> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the
> + * base code distributed originally by Intel ("Original Intel Code") to copy,
> + * make derivatives, distribute, use and display any portion of the Covered
> + * Code in any form, with the right to sublicense such rights; and
> + *
> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
> + * license (with the right to sublicense), under only those claims of Intel
> + * patents that are infringed by the Original Intel Code, to make, use, sell,
> + * offer to sell, and import the Covered Code and derivative works thereof
> + * solely to the minimum extent necessary to exercise the above copyright
> + * license, and in no event shall the patent license extend to any additions
> + * to or modifications of the Original Intel Code. No other license or right
> + * is granted directly or by implication, estoppel or otherwise;
> + *
> + * The above copyright and patent license is granted only if the following
> + * conditions are met:
> + *
> + * 3. Conditions
> + *
> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification with rights to further distribute source must include
> + * the above Copyright Notice, the above License, this list of Conditions,
> + * and the following Disclaimer and Export Compliance provision. In addition,
> + * Licensee must cause all Covered Code to which Licensee contributes to
> + * contain a file documenting the changes Licensee made to create that Covered
> + * Code and the date of any change. Licensee must include in that file the
> + * documentation of any changes made by any predecessor Licensee. Licensee
> + * must include a prominent statement that the modification is derived,
> + * directly or indirectly, from Original Intel Code.
> + *
> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification without rights to further distribute source must
> + * include the following Disclaimer and Export Compliance provision in the
> + * documentation and/or other materials provided with distribution. In
> + * addition, Licensee may not authorize further sublicense of source of any
> + * portion of the Covered Code, and must include terms to the effect that the
> + * license from Licensee to its licensee is limited to the intellectual
> + * property embodied in the software Licensee provides to its licensee, and
> + * not to intellectual property embodied in modifications its licensee may
> + * make.
> + *
> + * 3.3. Redistribution of Executable. Redistribution in executable form of any
> + * substantial portion of the Covered Code or modification must reproduce the
> + * above Copyright Notice, and the following Disclaimer and Export Compliance
> + * provision in the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * 3.4. Intel retains all right, title, and interest in and to the Original
> + * Intel Code.
> + *
> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by
> + * Intel shall be used in advertising or otherwise to promote the sale, use or
> + * other dealings in products derived from or relating to the Covered Code
> + * without prior written authorization from Intel.
> + *
> + * 4. Disclaimer and Export Compliance
> + *
> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
> + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
> + * PARTICULAR PURPOSE.
> + *
> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
> + * LIMITED REMEDY.
> + *
> + * 4.3. Licensee shall not export, either directly or indirectly, any of this
> + * software or system incorporating such software without first obtaining any
> + * required license or other approval from the U. S. Department of Commerce or
> + * any other agency or department of the United States Government. In the
> + * event Licensee exports any such software from the United States or
> + * re-exports any such software from a foreign destination, Licensee shall
> + * ensure that the distribution and export/re-export of the software is in
> + * compliance with all laws, regulations, orders, or other restrictions of the
> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor
> + * any of its subsidiaries will export/re-export any technical data, process,
> + * software, or service, directly or indirectly, to any country for which the
> + * United States government or any agency thereof requires an export license,
> + * other governmental approval, or letter of assurance, without first obtaining
> + * such license, approval or letter.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions, and the following disclaimer,
> + * without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + * substantially similar to the "NO WARRANTY" disclaimer below
> + * ("Disclaimer") and any redistribution must be conditioned upon
> + * including a substantially similar Disclaimer requirement for further
> + * binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + * of any contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "acpi.h"
> +#include "accommon.h"
> +#include "acdisasm.h"
> +#include "actables.h"
> +
> +/* This module used for application-level code only */
> +
> +#define _COMPONENT ACPI_CA_DISASSEMBLER
> + ACPI_MODULE_NAME ("dmtbdump3")
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpSlic
> + *
> + * PARAMETERS: Table - A SLIC table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a SLIC
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpSlic (
> + ACPI_TABLE_HEADER *Table)
> +{
> +
> + (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table,
> + Table->Length - sizeof (*Table), AcpiDmTableInfoSlic);
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpSlit
> + *
> + * PARAMETERS: Table - An SLIT
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a SLIT
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpSlit (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset;
> + UINT8 *Row;
> + UINT32 Localities;
> + UINT32 i;
> + UINT32 j;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Display the Locality NxN Matrix */
> +
> + Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount;
> + Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]);
> + Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry;
> +
> + for (i = 0; i < Localities; i++)
> + {
> + /* Display one row of the matrix */
> +
> + AcpiDmLineHeader2 (Offset, Localities, "Locality", i);
> + for (j = 0; j < Localities; j++)
> + {
> + /* Check for beyond EOT */
> +
> + if (Offset >= Table->Length)
> + {
> + AcpiOsPrintf (
> + "\n**** Not enough room in table for all localities\n");
> + return;
> + }
> +
> + AcpiOsPrintf ("%2.2X", Row[j]);
> + Offset++;
> +
> + /* Display up to 16 bytes per output row */
> +
> + if ((j+1) < Localities)
> + {
> + AcpiOsPrintf (" ");
> +
> + if (j && (((j+1) % 16) == 0))
> + {
> + AcpiOsPrintf ("\\\n"); /* With line continuation char */
> + AcpiDmLineHeader (Offset, 0, NULL);
> + }
> + }
> + }
> +
> + /* Point to next row */
> +
> + AcpiOsPrintf ("\n");
> + Row += Localities;
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpSrat
> + *
> + * PARAMETERS: Table - A SRAT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a SRAT
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpSrat (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_SRAT);
> + ACPI_SUBTABLE_HEADER *Subtable;
> + ACPI_DMTABLE_INFO *InfoTable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoSratHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (Subtable->Type)
> + {
> + case ACPI_SRAT_TYPE_CPU_AFFINITY:
> +
> + InfoTable = AcpiDmTableInfoSrat0;
> + break;
> +
> + case ACPI_SRAT_TYPE_MEMORY_AFFINITY:
> +
> + InfoTable = AcpiDmTableInfoSrat1;
> + break;
> +
> + case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY:
> +
> + InfoTable = AcpiDmTableInfoSrat2;
> + break;
> +
> + case ACPI_SRAT_TYPE_GICC_AFFINITY:
> +
> + InfoTable = AcpiDmTableInfoSrat3;
> + break;
> +
> + case ACPI_SRAT_TYPE_GIC_ITS_AFFINITY:
> +
> + InfoTable = AcpiDmTableInfoSrat4;
> + break;
> +
> + default:
> + AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n",
> + Subtable->Type);
> +
> + /* Attempt to continue */
> +
> + if (!Subtable->Length)
> + {
> + AcpiOsPrintf ("Invalid zero length subtable\n");
> + return;
> + }
> + goto NextSubtable;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Subtable->Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> +NextSubtable:
> + /* Point to next subtable */
> +
> + Offset += Subtable->Length;
> + Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable,
> + Subtable->Length);
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpStao
> + *
> + * PARAMETERS: Table - A STAO table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a STAO. This is a variable-length
> + * table that contains an open-ended number of ASCII strings
> + * at the end of the table.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpStao (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + char *Namepath;
> + UINT32 Length = Table->Length;
> + UINT32 StringLength;
> + UINT32 Offset = sizeof (ACPI_TABLE_STAO);
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoStao);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* The rest of the table consists of Namepath strings */
> +
> + while (Offset < Table->Length)
> + {
> + Namepath = ACPI_ADD_PTR (char, Table, Offset);
> + StringLength = strlen (Namepath) + 1;
> +
> + AcpiDmLineHeader (Offset, StringLength, "Namestring");
> + AcpiOsPrintf ("\"%s\"\n", Namepath);
> +
> + /* Point to next namepath */
> +
> + Offset += StringLength;
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpTcpa
> + *
> + * PARAMETERS: Table - A TCPA table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a TCPA.
> + *
> + * NOTE: There are two versions of the table with the same signature:
> + * the client version and the server version. The common
> + * PlatformClass field is used to differentiate the two types of
> + * tables.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpTcpa (
> + ACPI_TABLE_HEADER *Table)
> +{
> + UINT32 Offset = sizeof (ACPI_TABLE_TCPA_HDR);
> + ACPI_TABLE_TCPA_HDR *CommonHeader = ACPI_CAST_PTR (
> + ACPI_TABLE_TCPA_HDR, Table);
> + ACPI_TABLE_TCPA_HDR *Subtable = ACPI_ADD_PTR (
> + ACPI_TABLE_TCPA_HDR, Table, Offset);
> + ACPI_STATUS Status;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table,
> + 0, AcpiDmTableInfoTcpaHdr);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /*
> + * Examine the PlatformClass field to determine the table type.
> + * Either a client or server table. Only one.
> + */
> + switch (CommonHeader->PlatformClass)
> + {
> + case ACPI_TCPA_CLIENT_TABLE:
> +
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Table->Length - Offset, AcpiDmTableInfoTcpaClient);
> + break;
> +
> + case ACPI_TCPA_SERVER_TABLE:
> +
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Table->Length - Offset, AcpiDmTableInfoTcpaServer);
> + break;
> +
> + default:
> +
> + AcpiOsPrintf ("\n**** Unknown TCPA Platform Class 0x%X\n",
> + CommonHeader->PlatformClass);
> + Status = AE_ERROR;
> + break;
> + }
> +
> + if (ACPI_FAILURE (Status))
> + {
> + AcpiOsPrintf ("\n**** Cannot disassemble TCPA table\n");
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpTpm2
> + *
> + * PARAMETERS: Table - A TPM2 table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a TPM2.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpTpm2 (
> + ACPI_TABLE_HEADER *Table)
> +{
> + UINT32 Offset = sizeof (ACPI_TABLE_TPM2);
> + ACPI_TABLE_TPM2 *CommonHeader = ACPI_CAST_PTR (ACPI_TABLE_TPM2, Table);
> + ACPI_TPM2_TRAILER *Subtable = ACPI_ADD_PTR (ACPI_TPM2_TRAILER, Table, Offset);
> + ACPI_TPM2_ARM_SMC *ArmSubtable;
> + ACPI_STATUS Status;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm2);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + Table->Length - Offset, AcpiDmTableInfoTpm2a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + switch (CommonHeader->StartMethod)
> + {
> + case ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC:
> +
> + ArmSubtable = ACPI_ADD_PTR (ACPI_TPM2_ARM_SMC, Subtable,
> + sizeof (ACPI_TPM2_TRAILER));
> + Offset += sizeof (ACPI_TPM2_TRAILER);
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, ArmSubtable,
> + Table->Length - Offset, AcpiDmTableInfoTpm211);
> + break;
> +
> + default:
> + break;
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpVrtc
> + *
> + * PARAMETERS: Table - A VRTC table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a VRTC
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpVrtc (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_VRTC);
> + ACPI_VRTC_ENTRY *Subtable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoVrtc);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += sizeof (ACPI_VRTC_ENTRY);
> + Subtable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Subtable,
> + sizeof (ACPI_VRTC_ENTRY));
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpWdat
> + *
> + * PARAMETERS: Table - A WDAT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a WDAT
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpWdat (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + UINT32 Offset = sizeof (ACPI_TABLE_WDAT);
> + ACPI_WDAT_ENTRY *Subtable;
> +
> +
> + /* Main table */
> +
> + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoWdat);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Subtables */
> +
> + Subtable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset);
> + while (Offset < Table->Length)
> + {
> + /* Common subtable header */
> +
> + AcpiOsPrintf ("\n");
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> + sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Point to next subtable */
> +
> + Offset += sizeof (ACPI_WDAT_ENTRY);
> + Subtable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Subtable,
> + sizeof (ACPI_WDAT_ENTRY));
> + }
> +}
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiDmDumpWpbt
> + *
> + * PARAMETERS: Table - A WPBT table
> + *
> + * RETURN: None
> + *
> + * DESCRIPTION: Format the contents of a WPBT. This table type consists
> + * of an open-ended arguments buffer at the end of the table.
> + *
> + ******************************************************************************/
> +
> +void
> +AcpiDmDumpWpbt (
> + ACPI_TABLE_HEADER *Table)
> +{
> + ACPI_STATUS Status;
> + ACPI_TABLE_WPBT *Subtable;
> + UINT32 Length = Table->Length;
> + UINT16 ArgumentsLength;
> +
> +
> + /* Dump the main table */
> +
> + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoWpbt);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Extract the arguments buffer length from the main table */
> +
> + Subtable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table);
> + ArgumentsLength = Subtable->ArgumentsLength;
> +
> + /* Dump the arguments buffer */
> +
> + (void) AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength,
> + AcpiDmTableInfoWpbt0);
> +}
> diff --git a/src/acpica/source/common/dmtbinfo.c b/src/acpica/source/common/dmtbinfo.c
> index 8e14569b..2e1c54f8 100644
> --- a/src/acpica/source/common/dmtbinfo.c
> +++ b/src/acpica/source/common/dmtbinfo.c
> @@ -424,2909 +424,3 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt6[] =
> {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (HypervisorId), "Hypervisor ID", 0},
> ACPI_DMT_TERMINATOR
> };
> -
> -
> -/*
> - * Remaining tables are not consumed directly by the ACPICA subsystem
> - */
> -
> -/*******************************************************************************
> - *
> - * ASF - Alert Standard Format table (Signature "ASF!")
> - *
> - ******************************************************************************/
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[] =
> -{
> - {ACPI_DMT_ASF, ACPI_ASF0_OFFSET (Header.Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Header.Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (Header.Length), "Length", DT_LENGTH},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0: ASF Information */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinResetValue), "Minimum Reset Value", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinPollInterval), "Minimum Polling Interval", 0},
> - {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (SystemId), "System ID", 0},
> - {ACPI_DMT_UINT32, ACPI_ASF0_OFFSET (MfgId), "Manufacturer ID", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Flags), "Flags", 0},
> - {ACPI_DMT_UINT24, ACPI_ASF0_OFFSET (Reserved2[0]), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: ASF Alerts */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (AssertMask), "AssertMask", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DeassertMask), "DeassertMask", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (Alerts), "Alert Count", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DataLength), "Alert Data Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1a: ASF Alert data */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Address), "Address", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Command), "Command", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Mask), "Mask", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Value), "Value", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorType), "SensorType", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Type), "Type", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Offset), "Offset", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SourceType), "SourceType", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Severity), "Severity", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorNumber), "SensorNumber", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Entity), "Entity", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Instance), "Instance", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: ASF Remote Control */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (Controls), "Control Count", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (DataLength), "Control Data Length", 0},
> - {ACPI_DMT_UINT16, ACPI_ASF2_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2a: ASF Control data */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Function), "Function", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Address), "Address", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Command), "Command", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Value), "Value", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 3: ASF RMCP Boot Options */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[] =
> -{
> - {ACPI_DMT_BUF7, ACPI_ASF3_OFFSET (Capabilities[0]), "Capabilities", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (CompletionCode), "Completion Code", 0},
> - {ACPI_DMT_UINT32, ACPI_ASF3_OFFSET (EnterpriseId), "Enterprise ID", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (Command), "Command", 0},
> - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (Parameter), "Parameter", 0},
> - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (BootOptions), "Boot Options", 0},
> - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (OemParameters), "Oem Parameters", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 4: ASF Address */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (EpromAddress), "Eprom Address", 0},
> - {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (Devices), "Device Count", DT_COUNT},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * BERT - Boot Error Record table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoBert[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_BERT_OFFSET (RegionLength), "Boot Error Region Length", 0},
> - {ACPI_DMT_UINT64, ACPI_BERT_OFFSET (Address), "Boot Error Region Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * BGRT - Boot Graphics Resource Table (ACPI 5.0)
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_BGRT_OFFSET (Version), "Version", 0},
> - {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (Status), "Status (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_BGRT_FLAG_OFFSET (Status, 0), "Displayed", 0},
> - {ACPI_DMT_FLAGS1, ACPI_BGRT_FLAG_OFFSET (Status, 0), "Orientation Offset", 0},
> -
> - {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (ImageType), "Image Type", 0},
> - {ACPI_DMT_UINT64, ACPI_BGRT_OFFSET (ImageAddress), "Image Address", 0},
> - {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetX), "Image OffsetX", 0},
> - {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetY), "Image OffsetY", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * BOOT - Simple Boot Flag Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_BOOT_OFFSET (CmosIndex), "Boot Register Index", 0},
> - {ACPI_DMT_UINT24, ACPI_BOOT_OFFSET (Reserved[0]), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * CPEP - Corrected Platform Error Polling table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_CPEP_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Id), "Processor ID", 0},
> - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Eid), "Processor EID", 0},
> - {ACPI_DMT_UINT32, ACPI_CPEP0_OFFSET (Interval), "Polling Interval", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * CSRT - Core System Resource Table
> - *
> - ******************************************************************************/
> -
> -/* Main table consists only of the standard ACPI table header */
> -
> -/* Resource Group subtable */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (VendorId), "Vendor ID", 0},
> - {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SubvendorId), "Subvendor ID", 0},
> - {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (DeviceId), "Device ID", 0},
> - {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (SubdeviceId), "Subdevice ID", 0},
> - {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Revision), "Revision", 0},
> - {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SharedInfoLength), "Shared Info Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Shared Info subtable */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt1[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (MajorVersion), "Major Version", 0},
> - {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (MinorVersion), "Minor Version", 0},
> - {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MmioBaseLow), "MMIO Base Address Low", 0},
> - {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MmioBaseHigh), "MMIO Base Address High", 0},
> - {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (GsiInterrupt), "GSI Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (InterruptPolarity), "Interrupt Polarity", 0},
> - {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (InterruptMode), "Interrupt Mode", 0},
> - {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (NumChannels), "Num Channels", 0},
> - {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (DmaAddressWidth), "DMA Address Width", 0},
> - {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (BaseRequestLine), "Base Request Line", 0},
> - {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (NumHandshakeSignals), "Num Handshake Signals", 0},
> - {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MaxBlockSize), "Max Block Size", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Resource Descriptor subtable */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt2[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_CSRT2_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT16, ACPI_CSRT2_OFFSET (Type), "Type", 0},
> - {ACPI_DMT_UINT16, ACPI_CSRT2_OFFSET (Subtype), "Subtype", 0},
> - {ACPI_DMT_UINT32, ACPI_CSRT2_OFFSET (Uid), "UID", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt2a[] =
> -{
> - {ACPI_DMT_RAW_BUFFER, 0, "ResourceInfo", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * DBG2 - Debug Port Table 2
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoOffset), "Info Offset", 0},
> - {ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoCount), "Info Count", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Debug Device Information Subtable */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Device[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (Revision), "Revision", 0},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (RegisterCount), "Register Count", 0},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathLength), "Namepath Length", 0},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathOffset), "Namepath Offset", 0},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataLength), "OEM Data Length", DT_DESCRIBES_OPTIONAL},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataOffset), "OEM Data Offset", DT_DESCRIBES_OPTIONAL},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortType), "Port Type", 0},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortSubtype), "Port Subtype", 0},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (BaseAddressOffset), "Base Address Offset", 0},
> - {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (AddressSizeOffset), "Address Size Offset", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Variable-length data for the subtable */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Addr[] =
> -{
> - {ACPI_DMT_GAS, 0, "Base Address Register", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Size[] =
> -{
> - {ACPI_DMT_UINT32, 0, "Address Size", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Name[] =
> -{
> - {ACPI_DMT_STRING, 0, "Namepath", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2OemData[] =
> -{
> - {ACPI_DMT_RAW_BUFFER, 0, "OEM Data", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * DBGP - Debug Port
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_DBGP_OFFSET (Type), "Interface Type", 0},
> - {ACPI_DMT_UINT24, ACPI_DBGP_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_GAS, ACPI_DBGP_OFFSET (DebugPort), "Debug Port Register", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * DMAR - DMA Remapping table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Width), "Host Address Width", 0},
> - {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Flags), "Flags", 0},
> - {ACPI_DMT_BUF10, ACPI_DMAR_OFFSET (Reserved[0]), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[] =
> -{
> - {ACPI_DMT_DMAR, ACPI_DMAR0_OFFSET (Header.Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Header.Length), "Length", DT_LENGTH},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common device scope entry */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[] =
> -{
> - {ACPI_DMT_DMAR_SCOPE, ACPI_DMARS_OFFSET (EntryType), "Device Scope Type", 0},
> - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Length), "Entry Length", DT_LENGTH},
> - {ACPI_DMT_UINT16, ACPI_DMARS_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EnumerationId), "Enumeration ID", 0},
> - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Bus), "PCI Bus Number", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* DMAR Subtables */
> -
> -/* 0: Hardware Unit Definition */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Flags), "Flags", 0},
> - {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Segment), "PCI Segment Number", 0},
> - {ACPI_DMT_UINT64, ACPI_DMAR0_OFFSET (Address), "Register Base Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: Reserved Memory Definition */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Segment), "PCI Segment Number", 0},
> - {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (EndAddress), "End Address (limit)", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: Root Port ATS Capability Definition */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Flags), "Flags", 0},
> - {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_DMAR2_OFFSET (Segment), "PCI Segment Number", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 3: Remapping Hardware Static Affinity Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_DMAR3_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (ProximityDomain), "Proximity Domain", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 4: ACPI Namespace Device Declaration Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDmar4[] =
> -{
> - {ACPI_DMT_UINT24, ACPI_DMAR4_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_UINT8, ACPI_DMAR4_OFFSET (DeviceNumber), "Device Number", 0},
> - {ACPI_DMT_STRING, ACPI_DMAR4_OFFSET (DeviceName[0]), "Device Name", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * DRTM - Dynamic Root of Trust for Measurement table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryBaseAddress), "Entry Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryLength), "Entry Length", 0},
> - {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (EntryAddress32), "Entry 32", 0},
> - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryAddress64), "Entry 64", 0},
> - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (ExitAddress), "Exit Address", 0},
> - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (LogAreaAddress), "Log Area Start", 0},
> - {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (LogAreaLength), "Log Area Length", 0},
> - {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (ArchDependentAddress), "Arch Dependent Address", 0},
> - {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Namespace in TCB", 0},
> - {ACPI_DMT_FLAG1, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Gap Code on S3 Resume", 0},
> - {ACPI_DMT_FLAG2, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Gap Code on DLME_Exit", 0},
> - {ACPI_DMT_FLAG3, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "PCR_Authorities Changed", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_DRTM0_OFFSET (ValidatedTableCount), "Validated Table Count", DT_COUNT},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0a[] =
> -{
> - {ACPI_DMT_UINT64, 0, "Table Address", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm1[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_DRTM1_OFFSET (ResourceCount), "Resource Count", DT_COUNT},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm1a[] =
> -{
> - {ACPI_DMT_UINT56, ACPI_DRTM1a_OFFSET (Size[0]), "Size", DT_OPTIONAL},
> - {ACPI_DMT_UINT8, ACPI_DRTM1a_OFFSET (Type), "Type", 0},
> - {ACPI_DMT_FLAG0, ACPI_DRTM1a_FLAG_OFFSET (Type, 0), "Resource Type", 0},
> - {ACPI_DMT_FLAG7, ACPI_DRTM1a_FLAG_OFFSET (Type, 0), "Protections", 0},
> - {ACPI_DMT_UINT64, ACPI_DRTM1a_OFFSET (Address), "Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm2[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_DRTM2_OFFSET (DpsIdLength), "DLME Platform Id Length", DT_COUNT},
> - {ACPI_DMT_BUF16, ACPI_DRTM2_OFFSET (DpsId), "DLME Platform Id", DT_COUNT},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * ECDT - Embedded Controller Boot Resources Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[] =
> -{
> - {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Control), "Command/Status Register", 0},
> - {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Data), "Data Register", 0},
> - {ACPI_DMT_UINT32, ACPI_ECDT_OFFSET (Uid), "UID", 0},
> - {ACPI_DMT_UINT8, ACPI_ECDT_OFFSET (Gpe), "GPE Number", 0},
> - {ACPI_DMT_STRING, ACPI_ECDT_OFFSET (Id[0]), "Namepath", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * EINJ - Error Injection table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoEinj[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (HeaderLength), "Injection Header Length", 0},
> - {ACPI_DMT_UINT8, ACPI_EINJ_OFFSET (Flags), "Flags", 0},
> - {ACPI_DMT_UINT24, ACPI_EINJ_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (Entries), "Injection Entry Count", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[] =
> -{
> - {ACPI_DMT_EINJACT, ACPI_EINJ0_OFFSET (Action), "Action", 0},
> - {ACPI_DMT_EINJINST, ACPI_EINJ0_OFFSET (Instruction), "Instruction", 0},
> - {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_EINJ0_FLAG_OFFSET (Flags,0), "Preserve Register Bits", 0},
> -
> - {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_GAS, ACPI_EINJ0_OFFSET (RegisterRegion), "Register Region", 0},
> - {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Value), "Value", 0},
> - {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Mask), "Mask", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * ERST - Error Record Serialization table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoErst[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (HeaderLength), "Serialization Header Length", 0},
> - {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Entries), "Instruction Entry Count", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoErst0[] =
> -{
> - {ACPI_DMT_ERSTACT, ACPI_ERST0_OFFSET (Action), "Action", 0},
> - {ACPI_DMT_ERSTINST, ACPI_ERST0_OFFSET (Instruction), "Instruction", 0},
> - {ACPI_DMT_UINT8, ACPI_ERST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_ERST0_FLAG_OFFSET (Flags,0), "Preserve Register Bits", 0},
> -
> - {ACPI_DMT_UINT8, ACPI_ERST0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_GAS, ACPI_ERST0_OFFSET (RegisterRegion), "Register Region", 0},
> - {ACPI_DMT_UINT64, ACPI_ERST0_OFFSET (Value), "Value", 0},
> - {ACPI_DMT_UINT64, ACPI_ERST0_OFFSET (Mask), "Mask", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * FPDT - Firmware Performance Data Table (ACPI 5.0)
> - *
> - ******************************************************************************/
> -
> -/* Main table consists of only the standard ACPI header - subtables follow */
> -
> -/* FPDT subtable header */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoFpdtHdr[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_FPDTH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Revision), "Revision", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0: Firmware Basic Boot Performance Record */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt0[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_FPDT0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "FPDT Boot Record Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: S3 Performance Table Pointer Record */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt1[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_FPDT1_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "S3PT Record Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -#if 0
> - /* Boot Performance Record, not supported at this time. */
> - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ResetEnd), "Reset End", 0},
> - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (LoadStart), "Load Image Start", 0},
> - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (StartupStart), "Start Image Start", 0},
> - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesEntry), "Exit Services Entry", 0},
> - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesExit), "Exit Services Exit", 0},
> -#endif
> -
> -
> -/*******************************************************************************
> - *
> - * GTDT - Generic Timer Description Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_GTDT_OFFSET (CounterBlockAddresss), "Counter Block Address", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_NEW_LINE,
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecureEl1Interrupt), "Secure EL1 Interrupt", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecureEl1Flags), "EL1 Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Trigger Mode", 0},
> - {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Polarity", 0},
> - {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Always On", 0},
> - ACPI_DMT_NEW_LINE,
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl1Interrupt), "Non-Secure EL1 Interrupt", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl1Flags), "NEL1 Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Trigger Mode", 0},
> - {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Polarity", 0},
> - {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Always On", 0},
> - ACPI_DMT_NEW_LINE,
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerInterrupt), "Virtual Timer Interrupt", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerFlags), "VT Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Trigger Mode", 0},
> - {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Polarity", 0},
> - {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Always On", 0},
> - ACPI_DMT_NEW_LINE,
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl2Interrupt), "Non-Secure EL2 Interrupt", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl2Flags), "NEL2 Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Trigger Mode", 0},
> - {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Polarity", 0},
> - {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Always On", 0},
> - {ACPI_DMT_UINT64, ACPI_GTDT_OFFSET (CounterReadBlockAddress), "Counter Read Block Address", 0},
> - ACPI_DMT_NEW_LINE,
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (PlatformTimerCount), "Platform Timer Count", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (PlatformTimerOffset), "Platform Timer Offset", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* GTDT Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdtHdr[] =
> -{
> - {ACPI_DMT_GTDT, ACPI_GTDTH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT16, ACPI_GTDTH_OFFSET (Length), "Length", DT_LENGTH},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* GTDT Subtables */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_GTDT0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_GTDT0_OFFSET (BlockAddress), "Block Address", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT0_OFFSET (TimerCount), "Timer Count", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT0_OFFSET (TimerOffset), "Timer Offset", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt0a[] =
> -{
> - {ACPI_DMT_UINT8 , ACPI_GTDT0a_OFFSET (FrameNumber), "Frame Number", 0},
> - {ACPI_DMT_UINT24, ACPI_GTDT0a_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_GTDT0a_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_GTDT0a_OFFSET (El0BaseAddress), "EL0 Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (TimerInterrupt), "Timer Interrupt", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (TimerFlags), "Timer Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (TimerFlags,0), "Trigger Mode", 0},
> - {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (TimerFlags,0), "Polarity", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (VirtualTimerInterrupt), "Virtual Timer Interrupt", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (VirtualTimerFlags), "Virtual Timer Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (VirtualTimerFlags,0), "Trigger Mode", 0},
> - {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (VirtualTimerFlags,0), "Polarity", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (CommonFlags), "Common Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (CommonFlags,0), "Secure", 0},
> - {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (CommonFlags,0), "Always On", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt1[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_GTDT1_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_GTDT1_OFFSET (RefreshFrameAddress), "Refresh Frame Address", 0},
> - {ACPI_DMT_UINT64, ACPI_GTDT1_OFFSET (ControlFrameAddress), "Control Frame Address", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT1_OFFSET (TimerInterrupt), "Timer Interrupt", 0},
> - {ACPI_DMT_UINT32, ACPI_GTDT1_OFFSET (TimerFlags), "Timer Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Trigger Mode", 0},
> - {ACPI_DMT_FLAG1, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Polarity", 0},
> - {ACPI_DMT_FLAG2, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Security", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * HEST - Hardware Error Source table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_HEST_OFFSET (ErrorSourceCount), "Error Source Count", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common HEST structures for subtables */
> -
> -#define ACPI_DM_HEST_HEADER \
> - {ACPI_DMT_HEST, ACPI_HEST0_OFFSET (Header.Type), "Subtable Type", 0}, \
> - {ACPI_DMT_UINT16, ACPI_HEST0_OFFSET (Header.SourceId), "Source Id", 0}
> -
> -#define ACPI_DM_HEST_AER \
> - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Reserved1), "Reserved", 0}, \
> - {ACPI_DMT_UINT8, ACPI_HEST6_OFFSET (Aer.Flags), "Flags (decoded below)", DT_FLAG}, \
> - {ACPI_DMT_FLAG0, ACPI_HEST6_FLAG_OFFSET (Aer.Flags,0), "Firmware First", 0}, \
> - {ACPI_DMT_FLAG0, ACPI_HEST6_FLAG_OFFSET (Aer.Flags,0), "Global", 0}, \
> - {ACPI_DMT_UINT8, ACPI_HEST6_OFFSET (Aer.Enabled), "Enabled", 0}, \
> - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.RecordsToPreallocate), "Records To Preallocate", 0}, \
> - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.MaxSectionsPerRecord), "Max Sections Per Record", 0}, \
> - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.Bus), "Bus", 0}, \
> - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Device), "Device", 0}, \
> - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Function), "Function", 0}, \
> - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.DeviceControl), "DeviceControl", 0}, \
> - {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Reserved2), "Reserved", 0}, \
> - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.UncorrectableMask), "Uncorrectable Mask", 0}, \
> - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.UncorrectableSeverity), "Uncorrectable Severity", 0}, \
> - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.CorrectableMask), "Correctable Mask", 0}, \
> - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.AdvancedCapabilities), "Advanced Capabilities", 0}
> -
> -
> -/* HEST Subtables */
> -
> -/* 0: IA32 Machine Check Exception */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest0[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - {ACPI_DMT_UINT16, ACPI_HEST0_OFFSET (Reserved1), "Reserved1", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_HEST0_FLAG_OFFSET (Flags,0), "Firmware First", 0},
> - {ACPI_DMT_FLAG2, ACPI_HEST0_FLAG_OFFSET (Flags,0), "GHES Assist", 0},
> -
> - {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (Enabled), "Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST0_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST0_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> - {ACPI_DMT_UINT64, ACPI_HEST0_OFFSET (GlobalCapabilityData), "Global Capability Data", 0},
> - {ACPI_DMT_UINT64, ACPI_HEST0_OFFSET (GlobalControlData), "Global Control Data", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0},
> - {ACPI_DMT_UINT56, ACPI_HEST0_OFFSET (Reserved3[0]), "Reserved2", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: IA32 Corrected Machine Check */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest1[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - {ACPI_DMT_UINT16, ACPI_HEST1_OFFSET (Reserved1), "Reserved1", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_HEST1_FLAG_OFFSET (Flags,0), "Firmware First", 0},
> - {ACPI_DMT_FLAG2, ACPI_HEST1_FLAG_OFFSET (Flags,0), "GHES Assist", 0},
> -
> - {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (Enabled), "Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST1_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST1_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> - {ACPI_DMT_HESTNTFY, ACPI_HEST1_OFFSET (Notify), "Notify", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0},
> - {ACPI_DMT_UINT24, ACPI_HEST1_OFFSET (Reserved2[0]), "Reserved2", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: IA32 Non-Maskable Interrupt */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest2[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 6: PCI Express Root Port AER */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest6[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - ACPI_DM_HEST_AER,
> - {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (RootErrorCommand), "Root Error Command", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 7: PCI Express AER (AER Endpoint) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest7[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - ACPI_DM_HEST_AER,
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 8: PCI Express/PCI-X Bridge AER */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest8[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - ACPI_DM_HEST_AER,
> - {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (UncorrectableMask2), "2nd Uncorrectable Mask", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (UncorrectableSeverity2), "2nd Uncorrectable Severity", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (AdvancedCapabilities2), "2nd Advanced Capabilities", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 9: Generic Hardware Error Source */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest9[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - {ACPI_DMT_UINT16, ACPI_HEST9_OFFSET (RelatedSourceId), "Related Source Id", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST9_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST9_OFFSET (Enabled), "Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0},
> - {ACPI_DMT_GAS, ACPI_HEST9_OFFSET (ErrorStatusAddress), "Error Status Address", 0},
> - {ACPI_DMT_HESTNTFY, ACPI_HEST9_OFFSET (Notify), "Notify", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (ErrorBlockLength), "Error Status Block Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 10: Generic Hardware Error Source - Version 2 */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest10[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - {ACPI_DMT_UINT16, ACPI_HEST10_OFFSET (RelatedSourceId), "Related Source Id", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST10_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST10_OFFSET (Enabled), "Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST10_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST10_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST10_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0},
> - {ACPI_DMT_GAS, ACPI_HEST10_OFFSET (ErrorStatusAddress), "Error Status Address", 0},
> - {ACPI_DMT_HESTNTFY, ACPI_HEST10_OFFSET (Notify), "Notify", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST10_OFFSET (ErrorBlockLength), "Error Status Block Length", 0},
> - {ACPI_DMT_GAS, ACPI_HEST10_OFFSET (ReadAckRegister), "Read Ack Register", 0},
> - {ACPI_DMT_UINT64, ACPI_HEST10_OFFSET (ReadAckPreserve), "Read Ack Preserve", 0},
> - {ACPI_DMT_UINT64, ACPI_HEST10_OFFSET (ReadAckWrite), "Read Ack Write", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 11: IA32 Deferred Machine Check */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHest11[] =
> -{
> - ACPI_DM_HEST_HEADER,
> - {ACPI_DMT_UINT16, ACPI_HEST11_OFFSET (Reserved1), "Reserved1", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_HEST11_FLAG_OFFSET (Flags,0), "Firmware First", 0},
> - {ACPI_DMT_FLAG2, ACPI_HEST11_FLAG_OFFSET (Flags,0), "GHES Assist", 0},
> -
> - {ACPI_DMT_UINT8, ACPI_HEST11_OFFSET (Enabled), "Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST11_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> - {ACPI_DMT_UINT32, ACPI_HEST11_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> - {ACPI_DMT_HESTNTFY, ACPI_HEST11_OFFSET (Notify), "Notify", 0},
> - {ACPI_DMT_UINT8, ACPI_HEST11_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0},
> - {ACPI_DMT_UINT24, ACPI_HEST11_OFFSET (Reserved2[0]), "Reserved2", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Notification Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHestNotify[] =
> -{
> - {ACPI_DMT_HESTNTYP, ACPI_HESTN_OFFSET (Type), "Notify Type", 0},
> - {ACPI_DMT_UINT8, ACPI_HESTN_OFFSET (Length), "Notify Length", DT_LENGTH},
> - {ACPI_DMT_UINT16, ACPI_HESTN_OFFSET (ConfigWriteEnable), "Configuration Write Enable", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollInterval), "PollInterval", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (Vector), "Vector", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollingThresholdValue), "Polling Threshold Value", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollingThresholdWindow), "Polling Threshold Window", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (ErrorThresholdValue), "Error Threshold Value", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (ErrorThresholdWindow), "Error Threshold Window", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*
> - * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
> - * ACPI_HEST_IA_CORRECTED structures.
> - */
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHestBank[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (BankNumber), "Bank Number", 0},
> - {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (ClearStatusOnInit), "Clear Status On Init", 0},
> - {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (StatusFormat), "Status Format", 0},
> - {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (ControlRegister), "Control Register", 0},
> - {ACPI_DMT_UINT64, ACPI_HESTB_OFFSET (ControlData), "Control Data", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (StatusRegister), "Status Register", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (AddressRegister), "Address Register", 0},
> - {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (MiscRegister), "Misc Register", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * HPET - High Precision Event Timer table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHpet[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_HPET_OFFSET (Id), "Hardware Block ID", 0},
> - {ACPI_DMT_GAS, ACPI_HPET_OFFSET (Address), "Timer Block Register", 0},
> - {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Sequence), "Sequence Number", 0},
> - {ACPI_DMT_UINT16, ACPI_HPET_OFFSET (MinimumTick), "Minimum Clock Ticks", 0},
> - {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_HPET_FLAG_OFFSET (Flags,0), "4K Page Protect", 0},
> - {ACPI_DMT_FLAG1, ACPI_HPET_FLAG_OFFSET (Flags,0), "64K Page Protect", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * HMAT - Heterogeneous Memory Attributes Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmat[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_HMAT_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common HMAT structure header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmatHdr[] =
> -{
> - {ACPI_DMT_HMAT, ACPI_HMATH_OFFSET (Type), "Structure Type", 0},
> - {ACPI_DMT_UINT16, ACPI_HMATH_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_HMATH_OFFSET (Length), "Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* HMAT subtables */
> -
> -/* 0x00: Memory Subsystem Address Range */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmat0[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_HMAT0_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_HMAT0_FLAG_OFFSET (Flags,0), "Processor Proximity Domain Valid", 0},
> - {ACPI_DMT_FLAG1, ACPI_HMAT0_FLAG_OFFSET (Flags,0), "Memory Proximity Domain Valid", 0},
> - {ACPI_DMT_FLAG2, ACPI_HMAT0_FLAG_OFFSET (Flags,0), "Reservation Hint", 0},
> - {ACPI_DMT_UINT16, ACPI_HMAT0_OFFSET (Reserved1), "Reserved1", 0},
> - {ACPI_DMT_UINT32, ACPI_HMAT0_OFFSET (ProcessorPD), "Processor Proximity Domain", 0},
> - {ACPI_DMT_UINT32, ACPI_HMAT0_OFFSET (MemoryPD), "Memory Proximity Domain", 0},
> - {ACPI_DMT_UINT32, ACPI_HMAT0_OFFSET (Reserved2), "Reserved2", 0},
> - {ACPI_DMT_UINT64, ACPI_HMAT0_OFFSET (PhysicalAddressBase), "Physical Address Range Base", 0},
> - {ACPI_DMT_UINT64, ACPI_HMAT0_OFFSET (PhysicalAddressLength), "Physical Address Range Size", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0x01: System Locality Latency and Bandwidth Information */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_HMAT1_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAGS4_0, ACPI_HMAT1_FLAG_OFFSET (Flags,0), "Memory Hierarchy", 0},
> - {ACPI_DMT_UINT8, ACPI_HMAT1_OFFSET (DataType), "Data Type", 0},
> - {ACPI_DMT_UINT16, ACPI_HMAT1_OFFSET (Reserved1), "Reserved1", 0},
> - {ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (NumberOfInitiatorPDs), "Initiator Proximity Domains #", 0},
> - {ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (NumberOfTargetPDs), "Target Proximity Domains #", 0},
> - {ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (Reserved2), "Reserved2", 0},
> - {ACPI_DMT_UINT64, ACPI_HMAT1_OFFSET (EntryBaseUnit), "Entry Base Unit", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1a[] =
> -{
> - {ACPI_DMT_UINT32, 0, "Initiator Proximity Domain List", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1b[] =
> -{
> - {ACPI_DMT_UINT32, 0, "Target Proximity Domain List", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1c[] =
> -{
> - {ACPI_DMT_UINT16, 0, "Entry", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0x02: Memory Side Cache Information */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmat2[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_HMAT2_OFFSET (MemoryPD), "Memory Proximity Domain", 0},
> - {ACPI_DMT_UINT32, ACPI_HMAT2_OFFSET (Reserved1), "Reserved1", 0},
> - {ACPI_DMT_UINT64, ACPI_HMAT2_OFFSET (CacheSize), "Memory Side Cache Size", 0},
> - {ACPI_DMT_UINT32, ACPI_HMAT2_OFFSET (CacheAttributes), "Cache Attributes (decoded below)", 0},
> - {ACPI_DMT_FLAGS4_0, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Total Cache Levels", 0},
> - {ACPI_DMT_FLAGS4_4, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Level", 0},
> - {ACPI_DMT_FLAGS4_8, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Associativity", 0},
> - {ACPI_DMT_FLAGS4_12, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Write Policy", 0},
> - {ACPI_DMT_FLAGS16_16, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Line Size", 0},
> - {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (Reserved2), "Reserved2", 0},
> - {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (NumberOfSMBIOSHandles), "SMBIOS Handle #", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoHmat2a[] =
> -{
> - {ACPI_DMT_UINT16, 0, "SMBIOS Handle", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * IORT - IO Remapping Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (NodeCount), "Node Count", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (NodeOffset), "Node Offset", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Optional padding field */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[] =
> -{
> - {ACPI_DMT_RAW_BUFFER, 0, "Optional Padding", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Type), "Type", 0},
> - {ACPI_DMT_UINT16, ACPI_IORTH_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Revision), "Revision", 0},
> - {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingCount), "Mapping Count", 0},
> - {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingOffset), "Mapping Offset", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (InputBase), "Input base", DT_OPTIONAL},
> - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (IdCount), "ID Count", 0},
> - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (OutputBase), "Output Base", 0},
> - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (OutputReference), "Output Reference", 0},
> - {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_IORTM_FLAG_OFFSET (Flags, 0), "Single Mapping", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIortAcc[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_IORTA_OFFSET (CacheCoherency), "Cache Coherency", 0},
> - {ACPI_DMT_UINT8, ACPI_IORTA_OFFSET (Hints), "Hints (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Transient", 0},
> - {ACPI_DMT_FLAG1, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Write Allocate", 0},
> - {ACPI_DMT_FLAG2, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Read Allocate", 0},
> - {ACPI_DMT_FLAG3, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Override", 0},
> - {ACPI_DMT_UINT16, ACPI_IORTA_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT8, ACPI_IORTA_OFFSET (MemoryFlags), "Memory Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Coherency", 0},
> - {ACPI_DMT_FLAG1, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Device Attribute", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* IORT subtables */
> -
> -/* 0x00: ITS Group */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort0[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_IORT0_OFFSET (ItsCount), "ItsCount", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort0a[] =
> -{
> - {ACPI_DMT_UINT32, 0, "Identifiers", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0x01: Named Component */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort1[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_IORT1_OFFSET (NodeFlags), "Node Flags", 0},
> - {ACPI_DMT_IORTMEM, ACPI_IORT1_OFFSET (MemoryProperties), "Memory Properties", 0},
> - {ACPI_DMT_UINT8, ACPI_IORT1_OFFSET (MemoryAddressLimit), "Memory Size Limit", 0},
> - {ACPI_DMT_STRING, ACPI_IORT1_OFFSET (DeviceName[0]), "Device Name", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort1a[] =
> -{
> - {ACPI_DMT_RAW_BUFFER, 0, "Padding", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0x02: PCI Root Complex */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort2[] =
> -{
> - {ACPI_DMT_IORTMEM, ACPI_IORT2_OFFSET (MemoryProperties), "Memory Properties", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT2_OFFSET (AtsAttribute), "ATS Attribute", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT2_OFFSET (PciSegmentNumber), "PCI Segment Number", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0x03: SMMUv1/2 */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort3[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_IORT3_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_IORT3_OFFSET (Span), "Span", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (Model), "Model", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_IORT3_FLAG_OFFSET (Flags, 0), "DVM Supported", 0},
> - {ACPI_DMT_FLAG1, ACPI_IORT3_FLAG_OFFSET (Flags, 0), "Coherent Walk", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (GlobalInterruptOffset), "Global Interrupt Offset", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (ContextInterruptCount), "Context Interrupt Count", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (ContextInterruptOffset), "Context Interrupt Offset", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (PmuInterruptCount), "PMU Interrupt Count", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (PmuInterruptOffset), "PMU Interrupt Offset", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort3a[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_IORT3A_OFFSET (NSgIrpt), "NSgIrpt", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3A_OFFSET (NSgIrptFlags), "NSgIrpt Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_IORT3a_FLAG_OFFSET (NSgIrptFlags, 0), "Edge Triggered", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3A_OFFSET (NSgCfgIrpt), "NSgCfgIrpt", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT3A_OFFSET (NSgCfgIrptFlags), "NSgCfgIrpt Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_IORT3a_FLAG_OFFSET (NSgCfgIrptFlags, 0), "Edge Triggered", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort3b[] =
> -{
> - {ACPI_DMT_UINT64, 0, "Context Interrupt", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort3c[] =
> -{
> - {ACPI_DMT_UINT64, 0, "PMU Interrupt", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0x04: SMMUv3 */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIort4[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "COHACC Override", 0},
> - {ACPI_DMT_FLAG1, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "HTTU Override", 0},
> - {ACPI_DMT_FLAG3, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "Proximity Domain Valid", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (VatosAddress), "VATOS Address", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Model), "Model", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (EventGsiv), "Event GSIV", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (PriGsiv), "PRI GSIV", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (GerrGsiv), "GERR GSIV", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (SyncGsiv), "Sync GSIV", 0},
> - {ACPI_DMT_UINT8, ACPI_IORT4_OFFSET (Pxm), "Proximity Domain", 0},
> - {ACPI_DMT_UINT8, ACPI_IORT4_OFFSET (Reserved1), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_IORT4_OFFSET (Reserved2), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (IdMappingIndex), "Device ID Mapping Index", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * IVRS - I/O Virtualization Reporting Structure
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_IVRS_OFFSET (Info), "Virtualization Info", 0},
> - {ACPI_DMT_UINT64, ACPI_IVRS_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[] =
> -{
> - {ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags", 0},
> - {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* IVRS subtables */
> -
> -/* 0x10: I/O Virtualization Hardware Definition (IVHD) Block */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (CapabilityOffset), "Capability Offset", 0},
> - {ACPI_DMT_UINT64, ACPI_IVRS0_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (PciSegmentGroup), "PCI Segment Group", 0},
> - {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (Info), "Virtualization Info", 0},
> - {ACPI_DMT_UINT32, ACPI_IVRS0_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Block */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_IVRS1_OFFSET (AuxData), "Auxiliary Data", 0},
> - {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (StartAddress), "Start Address", 0},
> - {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (MemoryLength), "Memory Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Device entry header for IVHD block */
> -
> -#define ACPI_DMT_IVRS_DE_HEADER \
> - {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (Type), "Entry Type", 0}, \
> - {ACPI_DMT_UINT16, ACPI_IVRSD_OFFSET (Id), "Device ID", 0}, \
> - {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (DataSetting), "Data Setting", 0}
> -
> -/* 4-byte device entry */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[] =
> -{
> - ACPI_DMT_IVRS_DE_HEADER,
> - {ACPI_DMT_EXIT, 0, NULL, 0},
> -};
> -
> -/* 8-byte device entry */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[] =
> -{
> - ACPI_DMT_IVRS_DE_HEADER,
> - {ACPI_DMT_UINT8, ACPI_IVRS8A_OFFSET (Reserved1), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_IVRS8A_OFFSET (UsedId), "Source Used Device ID", 0},
> - {ACPI_DMT_UINT8, ACPI_IVRS8A_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 8-byte device entry */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[] =
> -{
> - ACPI_DMT_IVRS_DE_HEADER,
> - {ACPI_DMT_UINT32, ACPI_IVRS8B_OFFSET (ExtendedData), "Extended Data", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 8-byte device entry */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[] =
> -{
> - ACPI_DMT_IVRS_DE_HEADER,
> - {ACPI_DMT_UINT8, ACPI_IVRS8C_OFFSET (Handle), "Handle", 0},
> - {ACPI_DMT_UINT16, ACPI_IVRS8C_OFFSET (UsedId), "Source Used Device ID", 0},
> - {ACPI_DMT_UINT8, ACPI_IVRS8C_OFFSET (Variety), "Variety", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * LPIT - Low Power Idle Table
> - *
> - ******************************************************************************/
> -
> -/* Main table consists only of the standard ACPI table header */
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoLpitHdr[] =
> -{
> - {ACPI_DMT_LPIT, ACPI_LPITH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT32, ACPI_LPITH_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT16, ACPI_LPITH_OFFSET (UniqueId), "Unique ID", 0},
> - {ACPI_DMT_UINT16, ACPI_LPITH_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_LPITH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_LPITH_FLAG_OFFSET (Flags, 0), "State Disabled", 0},
> - {ACPI_DMT_FLAG1, ACPI_LPITH_FLAG_OFFSET (Flags, 0), "No Counter", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* LPIT Subtables */
> -
> -/* 0: Native C-state */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoLpit0[] =
> -{
> - {ACPI_DMT_GAS, ACPI_LPIT0_OFFSET (EntryTrigger), "Entry Trigger", 0},
> - {ACPI_DMT_UINT32, ACPI_LPIT0_OFFSET (Residency), "Residency", 0},
> - {ACPI_DMT_UINT32, ACPI_LPIT0_OFFSET (Latency), "Latency", 0},
> - {ACPI_DMT_GAS, ACPI_LPIT0_OFFSET (ResidencyCounter), "Residency Counter", 0},
> - {ACPI_DMT_UINT64, ACPI_LPIT0_OFFSET (CounterFrequency), "Counter Frequency", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * MADT - Multiple APIC Description Table and subtables
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Address), "Local Apic Address", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MADT_FLAG_OFFSET (Flags,0), "PC-AT Compatibility", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[] =
> -{
> - {ACPI_DMT_MADT, ACPI_MADTH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_MADTH_OFFSET (Length), "Length", DT_LENGTH},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* MADT Subtables */
> -
> -/* 0: processor APIC */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (ProcessorId), "Processor ID", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (Id), "Local Apic ID", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT0_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MADT0_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: IO APIC */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Id), "I/O Apic ID", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (Address), "Address", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (GlobalIrqBase), "Interrupt", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: Interrupt Override */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt2[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (Bus), "Bus", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (SourceIrq), "Source", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT2_OFFSET (GlobalIrq), "Interrupt", 0},
> - {ACPI_DMT_UINT16, ACPI_MADT2_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAGS0, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> - {ACPI_DMT_FLAGS2, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 3: NMI Sources */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt3[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT3_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAGS0, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> - {ACPI_DMT_FLAGS2, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT3_OFFSET (GlobalIrq), "Interrupt", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 4: Local APIC NMI */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt4[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (ProcessorId), "Processor ID", 0},
> - {ACPI_DMT_UINT16, ACPI_MADT4_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAGS0, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> - {ACPI_DMT_FLAGS2, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (Lint), "Interrupt Input LINT", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 5: Address Override */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt5[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT5_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT5_OFFSET (Address), "APIC Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 6: I/O Sapic */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt6[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Id), "I/O Sapic ID", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT6_OFFSET (GlobalIrqBase), "Interrupt Base", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT6_OFFSET (Address), "Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 7: Local Sapic */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (ProcessorId), "Processor ID", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Id), "Local Sapic ID", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Eid), "Local Sapic EID", 0},
> - {ACPI_DMT_UINT24, ACPI_MADT7_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MADT7_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (Uid), "Processor UID", 0},
> - {ACPI_DMT_STRING, ACPI_MADT7_OFFSET (UidString[0]), "Processor UID String", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 8: Platform Interrupt Source */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT8_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAGS0, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> - {ACPI_DMT_FLAGS2, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Type), "InterruptType", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Id), "Processor ID", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Eid), "Processor EID", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (IoSapicVector), "I/O Sapic Vector", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (GlobalIrq), "Interrupt", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MADT8_OFFSET (Flags), "CPEI Override", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 9: Processor Local X2_APIC (ACPI 4.0) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt9[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT9_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (LocalApicId), "Processor x2Apic ID", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MADT9_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (Uid), "Processor UID", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 10: Local X2_APIC NMI (ACPI 4.0) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt10[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT10_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAGS0, ACPI_MADT10_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> - {ACPI_DMT_FLAGS2, ACPI_MADT10_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT10_OFFSET (Uid), "Processor UID", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT10_OFFSET (Lint), "Interrupt Input LINT", 0},
> - {ACPI_DMT_UINT24, ACPI_MADT10_OFFSET (Reserved[0]), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 11: Generic Interrupt Controller (ACPI 5.0) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (CpuInterfaceNumber), "CPU Interface Number", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Uid), "Processor UID", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Processor Enabled", 0},
> - {ACPI_DMT_FLAG1, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Performance Interrupt Trigger Mode", 0},
> - {ACPI_DMT_FLAG2, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Virtual GIC Interrupt Trigger Mode", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (ParkingVersion), "Parking Protocol Version", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (PerformanceInterrupt), "Performance Interrupt", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ParkedAddress), "Parked Address", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicvBaseAddress), "Virtual GIC Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GichBaseAddress), "Hypervisor GIC Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (VgicInterrupt), "Virtual GIC Interrupt", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicrBaseAddress), "Redistributor Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ArmMpidr), "ARM MPIDR", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (EfficiencyClass), "Efficiency Class", 0},
> - {ACPI_DMT_UINT24, ACPI_MADT11_OFFSET (Reserved2[0]), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 12: Generic Interrupt Distributor (ACPI 5.0) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT12_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GicId), "Local GIC Hardware ID", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT12_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GlobalIrqBase), "Interrupt Base", 0},
> - {ACPI_DMT_UINT8, ACPI_MADT12_OFFSET (Version), "Version", 0},
> - {ACPI_DMT_UINT24, ACPI_MADT12_OFFSET (Reserved2[0]), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 13: Generic MSI Frame (ACPI 5.1) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt13[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT13_OFFSET (MsiFrameId), "MSI Frame ID", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT13_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT13_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MADT13_FLAG_OFFSET (Flags,0), "Select SPI", 0},
> - {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (SpiCount), "SPI Count", 0},
> - {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (SpiBase), "SPI Base", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 14: Generic Redistributor (ACPI 5.1) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt14[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT14_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT14_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT14_OFFSET (Length), "Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 15: Generic Translator (ACPI 6.0) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MADT15_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT15_OFFSET (TranslationId), "Translation ID", 0},
> - {ACPI_DMT_UINT64, ACPI_MADT15_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_MADT15_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * MCFG - PCI Memory Mapped Configuration table and Subtable
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_MCFG_OFFSET (Reserved[0]), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_MCFG0_OFFSET (Address), "Base Address", 0},
> - {ACPI_DMT_UINT16, ACPI_MCFG0_OFFSET (PciSegment), "Segment Group Number", 0},
> - {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (StartBusNumber), "Start Bus Number", 0},
> - {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (EndBusNumber), "End Bus Number", 0},
> - {ACPI_DMT_UINT32, ACPI_MCFG0_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * MCHI - Management Controller Host Interface table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterfaceType), "Interface Type", 0},
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Protocol), "Protocol", 0},
> - {ACPI_DMT_UINT64, ACPI_MCHI_OFFSET (ProtocolData), "Protocol Data", 0},
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterruptType), "Interrupt Type", 0},
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Gpe), "Gpe", 0},
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDeviceFlag), "Pci Device Flag", 0},
> - {ACPI_DMT_UINT32, ACPI_MCHI_OFFSET (GlobalInterrupt), "Global Interrupt", 0},
> - {ACPI_DMT_GAS, ACPI_MCHI_OFFSET (ControlRegister), "Control Register", 0},
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciSegment), "Pci Segment", 0},
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciBus), "Pci Bus", 0},
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDevice), "Pci Device", 0},
> - {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciFunction), "Pci Function", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * MPST - Memory Power State Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MPST_OFFSET (ChannelId), "Channel ID", 0},
> - {ACPI_DMT_UINT24, ACPI_MPST_OFFSET (Reserved1[0]), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (PowerNodeCount), "Power Node Count", 0},
> - {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* MPST subtables */
> -
> -/* 0: Memory Power Node Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Node Enabled", 0},
> - {ACPI_DMT_FLAG1, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Power Managed", 0},
> - {ACPI_DMT_FLAG2, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Hot Plug Capable", 0},
> -
> - {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Reserved1), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (NodeId), "Node ID", 0},
> - {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (Length), "Length", 0},
> - {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeAddress), "Range Address", 0},
> - {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeLength), "Range Length", 0},
> - {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0},
> - {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0A: Sub-subtable - Memory Power State Structure (follows Memory Power Node above) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0A[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (PowerState), "Power State", 0},
> - {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (InfoIndex), "InfoIndex", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0B: Sub-subtable - Physical Component ID Structure (follows Memory Power State(s) above) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MPST0B_OFFSET (ComponentId), "Component Id", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 01: Power Characteristics Count (follows all Power Node(s) above) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (CharacteristicsCount), "Characteristics Count", 0},
> - {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 02: Memory Power State Characteristics Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (StructureId), "Structure ID", 0},
> - {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Memory Preserved", 0},
> - {ACPI_DMT_FLAG1, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Entry", 0},
> - {ACPI_DMT_FLAG2, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Exit", 0},
> -
> - {ACPI_DMT_UINT16, ACPI_MPST2_OFFSET (Reserved1), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (AveragePower), "Average Power", 0},
> - {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (PowerSaving), "Power Saving", 0},
> - {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (ExitLatency), "Exit Latency", 0},
> - {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * MSCT - Maximum System Characteristics Table (ACPI 4.0)
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMsct[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (ProximityOffset), "Proximity Offset", 0},
> - {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (MaxProximityDomains), "Max Proximity Domains", 0},
> - {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (MaxClockDomains), "Max Clock Domains", 0},
> - {ACPI_DMT_UINT64, ACPI_MSCT_OFFSET (MaxAddress), "Max Physical Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Subtable - Maximum Proximity Domain Information. Version 1 */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMsct0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_MSCT0_OFFSET (Revision), "Revision", 0},
> - {ACPI_DMT_UINT8, ACPI_MSCT0_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (RangeStart), "Domain Range Start", 0},
> - {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (RangeEnd), "Domain Range End", 0},
> - {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (ProcessorCapacity), "Processor Capacity", 0},
> - {ACPI_DMT_UINT64, ACPI_MSCT0_OFFSET (MemoryCapacity), "Memory Capacity", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * MTMR - MID Timer Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr[] =
> -{
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* MTMR Subtables - MTMR Entry */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr0[] =
> -{
> - {ACPI_DMT_GAS, ACPI_MTMR0_OFFSET (PhysicalAddress), "PhysicalAddress", 0},
> - {ACPI_DMT_UINT32, ACPI_MTMR0_OFFSET (Frequency), "Frequency", 0},
> - {ACPI_DMT_UINT32, ACPI_MTMR0_OFFSET (Irq), "IRQ", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * NFIT - NVDIMM Firmware Interface Table and Subtables - (ACPI 6.0)
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_NFIT_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common Subtable header */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfitHdr[] =
> -{
> - {ACPI_DMT_NFIT, ACPI_NFITH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT16, ACPI_NFITH_OFFSET (Length), "Length", DT_LENGTH},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0: System Physical Address Range Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit0[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_NFIT0_OFFSET (RangeIndex), "Range Index", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Add/Online Operation Only", 0},
> - {ACPI_DMT_FLAG1, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Proximity Domain Valid", 0},
> - {ACPI_DMT_UINT32, ACPI_NFIT0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_NFIT0_OFFSET (ProximityDomain), "Proximity Domain", 0},
> - {ACPI_DMT_UUID, ACPI_NFIT0_OFFSET (RangeGuid[0]), "Address Range GUID", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (Address), "Address Range Base", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (Length), "Address Range Length", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (MemoryMapping), "Memory Map Attribute", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: Memory Device to System Address Range Map Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit1[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_NFIT1_OFFSET (DeviceHandle), "Device Handle", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (PhysicalId), "Physical Id", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RegionId), "Region Id", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RangeIndex), "Range Index", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RegionIndex), "Control Region Index", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (RegionSize), "Region Size", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (RegionOffset), "Region Offset", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (Address), "Address Region Base", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (InterleaveIndex), "Interleave Index", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (InterleaveWays), "Interleave Ways", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (Flags), "Flags", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Save to device failed", 0},
> - {ACPI_DMT_FLAG1, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Restore from device failed", 0},
> - {ACPI_DMT_FLAG2, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Platform flush failed", 0},
> - {ACPI_DMT_FLAG3, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Device not armed", 0},
> - {ACPI_DMT_FLAG4, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Health events observed", 0},
> - {ACPI_DMT_FLAG5, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Health events enabled", 0},
> - {ACPI_DMT_FLAG6, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Mapping failed", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: Interleave Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit2[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_NFIT2_OFFSET (InterleaveIndex), "Interleave Index", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT2_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_NFIT2_OFFSET (LineCount), "Line Count", 0},
> - {ACPI_DMT_UINT32, ACPI_NFIT2_OFFSET (LineSize), "Line Size", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit2a[] =
> -{
> - {ACPI_DMT_UINT32, 0, "Line Offset", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 3: SMBIOS Management Information Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit3[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_NFIT3_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit3a[] =
> -{
> - {ACPI_DMT_RAW_BUFFER, 0, "SMBIOS Table Entries", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 4: NVDIMM Control Region Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit4[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (RegionIndex), "Region Index", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (VendorId), "Vendor Id", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (DeviceId), "Device Id", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (RevisionId), "Revision Id", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemVendorId), "Subsystem Vendor Id", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemDeviceId), "Subsystem Device Id", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemRevisionId), "Subsystem Revision Id", 0},
> - {ACPI_DMT_UINT8, ACPI_NFIT4_OFFSET (ValidFields), "Valid Fields", 0},
> - {ACPI_DMT_UINT8, ACPI_NFIT4_OFFSET (ManufacturingLocation), "Manufacturing Location", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (ManufacturingDate), "Manufacturing Date", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_NFIT4_OFFSET (SerialNumber), "Serial Number", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Code), "Code", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Windows), "Window Count", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (WindowSize), "Window Size", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (CommandOffset), "Command Offset", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (CommandSize), "Command Size", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (StatusOffset), "Status Offset", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (StatusSize), "Status Size", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Flags), "Flags", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_NFIT4_FLAG_OFFSET (Flags,0), "Windows buffered", 0},
> - {ACPI_DMT_UINT48, ACPI_NFIT4_OFFSET (Reserved1[0]), "Reserved1", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 5: NVDIMM Block Data Window Region Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit5[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_NFIT5_OFFSET (RegionIndex), "Region Index", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT5_OFFSET (Windows), "Window Count", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Offset), "Offset", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Size), "Size", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Capacity), "Capacity", 0},
> - {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (StartAddress), "Start Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 6: Flush Hint Address Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_NFIT6_OFFSET (DeviceHandle), "Device Handle", 0},
> - {ACPI_DMT_UINT16, ACPI_NFIT6_OFFSET (HintCount), "Hint Count", 0},
> - {ACPI_DMT_UINT48, ACPI_NFIT6_OFFSET (Reserved[0]), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6a[] =
> -{
> - {ACPI_DMT_UINT64, 0, "Hint Address", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoNfit7[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_NFIT7_OFFSET (HighestCapability), "Highest Capability", 0},
> - {ACPI_DMT_UINT24, ACPI_NFIT7_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_NFIT7_OFFSET (Capabilities), "Capabilities (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Cache Flush to NVDIMM", 0},
> - {ACPI_DMT_FLAG1, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Memory Flush to MVDIMM", 0},
> - {ACPI_DMT_FLAG2, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Memory Mirroring", 0},
> - {ACPI_DMT_UINT32, ACPI_NFIT7_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * PCCT - Platform Communications Channel Table (ACPI 5.0)
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_PCCT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_PCCT_FLAG_OFFSET (Flags,0), "Platform", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* PCCT subtables */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPcctHdr[] =
> -{
> - {ACPI_DMT_PCCT, ACPI_PCCT0_OFFSET (Header.Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT0_OFFSET (Header.Length), "Length", DT_LENGTH},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0: Generic Communications Subspace */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct0[] =
> -{
> - {ACPI_DMT_UINT48, ACPI_PCCT0_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (Length), "Address Length", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT0_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (PreserveMask), "Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (WriteMask), "Write Mask", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT0_OFFSET (Latency), "Command Latency", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT0_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> - {ACPI_DMT_UINT16, ACPI_PCCT0_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: HW-reduced Communications Subspace (ACPI 5.1) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct1[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (PlatformInterrupt), "Platform Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT1_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_PCCT1_FLAG_OFFSET (Flags,0), "Polarity", 0},
> - {ACPI_DMT_FLAG1, ACPI_PCCT1_FLAG_OFFSET (Flags,0), "Mode", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT1_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (Length), "Address Length", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT1_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (PreserveMask), "Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (WriteMask), "Write Mask", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (Latency), "Command Latency", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> - {ACPI_DMT_UINT16, ACPI_PCCT1_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct2[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_PCCT2_OFFSET (PlatformInterrupt), "Platform Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT2_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_PCCT2_FLAG_OFFSET (Flags,0), "Polarity", 0},
> - {ACPI_DMT_FLAG1, ACPI_PCCT2_FLAG_OFFSET (Flags,0), "Mode", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT2_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (Length), "Address Length", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT2_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (PreserveMask), "Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (WriteMask), "Write Mask", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT2_OFFSET (Latency), "Command Latency", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT2_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> - {ACPI_DMT_UINT16, ACPI_PCCT2_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT2_OFFSET (PlatformAckRegister), "Platform ACK Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (AckPreserveMask), "ACK Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (AckWriteMask), "ACK Write Mask", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 3: Extended PCC Master Subspace Type 3 (ACPI 6.2) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct3[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (PlatformInterrupt), "Platform Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT3_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_PCCT3_FLAG_OFFSET (Flags,0), "Polarity", 0},
> - {ACPI_DMT_FLAG1, ACPI_PCCT3_FLAG_OFFSET (Flags,0), "Mode", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT3_OFFSET (Reserved1), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (Length), "Address Length", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (PreserveMask), "Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (WriteMask), "Write Mask", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (Latency), "Command Latency", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (PlatformAckRegister), "Platform ACK Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (AckPreserveMask), "ACK Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (AckSetMask), "ACK Set Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (Reserved2), "Reserved", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (CmdCompleteRegister), "Command Complete Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (CmdCompleteMask), "Command Complete Check Mask", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (CmdUpdateRegister), "Command Update Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (CmdUpdatePreserveMask), "Command Update Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (CmdUpdateSetMask), "Command Update Set Mask", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (ErrorStatusRegister), "Error Status Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (ErrorStatusMask), "Error Status Mask", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 4: Extended PCC Slave Subspace Type 4 (ACPI 6.2) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPcct4[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (PlatformInterrupt), "Platform Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT4_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_PCCT4_FLAG_OFFSET (Flags,0), "Polarity", 0},
> - {ACPI_DMT_FLAG1, ACPI_PCCT4_FLAG_OFFSET (Flags,0), "Mode", 0},
> - {ACPI_DMT_UINT8, ACPI_PCCT4_OFFSET (Reserved1), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (Length), "Address Length", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (PreserveMask), "Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (WriteMask), "Write Mask", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (Latency), "Command Latency", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> - {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (PlatformAckRegister), "Platform ACK Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (AckPreserveMask), "ACK Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (AckSetMask), "ACK Set Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (Reserved2), "Reserved", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (CmdCompleteRegister), "Command Complete Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (CmdCompleteMask), "Command Complete Check Mask", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (CmdUpdateRegister), "Command Update Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (CmdUpdatePreserveMask), "Command Update Preserve Mask", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (CmdUpdateSetMask), "Command Update Set Mask", 0},
> - {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (ErrorStatusRegister), "Error Status Register", 0},
> - {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (ErrorStatusMask), "Error Status Mask", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * PDTT - Platform Debug Trigger Table (ACPI 6.2)
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_PDTT_OFFSET (TriggerCount), "Trigger Count", 0},
> - {ACPI_DMT_UINT24, ACPI_PDTT_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_PDTT_OFFSET (ArrayOffset), "Array Offset", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_PDTT0_OFFSET (SubchannelId), "Subchannel Id", 0},
> - {ACPI_DMT_UINT8, ACPI_PDTT0_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_PDTT0_FLAG_OFFSET (Flags,0), "Runtime Trigger", 0},
> - {ACPI_DMT_FLAG1, ACPI_PDTT0_FLAG_OFFSET (Flags,0), "Wait for Completion", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * PMTT - Platform Memory Topology Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_PMTT_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[] =
> -{
> - {ACPI_DMT_PMTT, ACPI_PMTTH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_PMTTH_OFFSET (Reserved1), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Top-level Device", 0},
> - {ACPI_DMT_FLAG1, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Physical Element", 0},
> - {ACPI_DMT_FLAGS2, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Memory Type", 0},
> - {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* PMTT Subtables */
> -
> -/* 0: Socket */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (SocketId), "Socket ID", 0},
> - {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: Memory Controller */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadLatency), "Read Latency", 0},
> - {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteLatency), "Write Latency", 0},
> - {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadBandwidth), "Read Bandwidth", 0},
> - {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteBandwidth), "Write Bandwidth", 0},
> - {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (AccessWidth), "Access Width", 0},
> - {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Alignment), "Alignment", 0},
> - {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (DomainCount), "Domain Count", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1a: Proximity Domain */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_PMTT1A_OFFSET (ProximityDomain), "Proximity Domain", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: Physical Component */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (ComponentId), "Component ID", 0},
> - {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (MemorySize), "Memory Size", 0},
> - {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (BiosHandle), "Bios Handle", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * PPTT - Processor Properties Topology Table (ACPI 6.2)
> - *
> - ******************************************************************************/
> -
> -/* Main table consists of only the standard ACPI header - subtables follow */
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPpttHdr[] =
> -{
> - {ACPI_DMT_PPTT, ACPI_PPTTH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_PPTTH_OFFSET (Length), "Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0: Processor hierarchy node */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPptt0[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_PPTT0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT0_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_PPTT0_FLAG_OFFSET (Flags,0), "Physical package", 0},
> - {ACPI_DMT_FLAG1, ACPI_PPTT0_FLAG_OFFSET (Flags,0), "ACPI Processor ID valid", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT0_OFFSET (Parent), "Parent", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT0_OFFSET (AcpiProcessorId), "ACPI Processor ID", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT0_OFFSET (NumberOfPrivResources), "Private Resource Number", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPptt0a[] =
> -{
> - {ACPI_DMT_UINT32, 0, "Private Resource", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: Cache type */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_PPTT1_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Size valid", 0},
> - {ACPI_DMT_FLAG1, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Number of Sets valid", 0},
> - {ACPI_DMT_FLAG2, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Associativity valid", 0},
> - {ACPI_DMT_FLAG3, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Allocation Type valid", 0},
> - {ACPI_DMT_FLAG4, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Cache Type valid", 0},
> - {ACPI_DMT_FLAG5, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Write Policy valid", 0},
> - {ACPI_DMT_FLAG6, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Line Size valid", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (NextLevelOfCache), "Next Level of Cache", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (Size), "Size", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (NumberOfSets), "Number of Sets", 0},
> - {ACPI_DMT_UINT8, ACPI_PPTT1_OFFSET (Associativity), "Associativity", 0},
> - {ACPI_DMT_UINT8, ACPI_PPTT1_OFFSET (Attributes), "Attributes", 0},
> - {ACPI_DMT_FLAGS0, ACPI_PPTT1_OFFSET (Attributes), "Allocation Type", 0},
> - {ACPI_DMT_FLAGS2, ACPI_PPTT1_OFFSET (Attributes), "Cache Type", 0},
> - {ACPI_DMT_FLAG4, ACPI_PPTT1_OFFSET (Attributes), "Write Policy", 0},
> - {ACPI_DMT_UINT16, ACPI_PPTT1_OFFSET (LineSize), "Line Size", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: ID */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoPptt2[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_PPTT2_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_PPTT2_OFFSET (VendorId), "VENDOR_ID", 0},
> - {ACPI_DMT_UINT64, ACPI_PPTT2_OFFSET (Level1Id), "LEVEL_1_ID", 0},
> - {ACPI_DMT_UINT64, ACPI_PPTT2_OFFSET (Level2Id), "LEVEL_2_ID", 0},
> - {ACPI_DMT_UINT16, ACPI_PPTT2_OFFSET (MajorRev), "MAJOR_REV", 0},
> - {ACPI_DMT_UINT16, ACPI_PPTT2_OFFSET (MinorRev), "MINOR_REV", 0},
> - {ACPI_DMT_UINT16, ACPI_PPTT2_OFFSET (SpinRev), "SPIN_REV", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * RASF - RAS Feature table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[] =
> -{
> - {ACPI_DMT_BUF12, ACPI_RASF_OFFSET (ChannelId[0]), "Channel ID", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * S3PT - S3 Performance Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[] =
> -{
> - {ACPI_DMT_SIG, ACPI_S3PT_OFFSET (Signature[0]), "Signature", 0},
> - {ACPI_DMT_UINT32, ACPI_S3PT_OFFSET (Length), "Length", DT_LENGTH},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* S3PT subtable header */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoS3ptHdr[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_S3PTH_OFFSET (Type), "Type", 0},
> - {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Length), "Length", DT_LENGTH},
> - {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Revision), "Revision", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 0: Basic S3 Resume Performance Record */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt0[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_S3PT0_OFFSET (ResumeCount), "Resume Count", 0},
> - {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (FullResume), "Full Resume", 0},
> - {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (AverageResume), "Average Resume", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: Basic S3 Suspend Performance Record */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt1[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendStart), "Suspend Start", 0},
> - {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendEnd), "Suspend End", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * SBST - Smart Battery Specification Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (WarningLevel), "Warning Level", 0},
> - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (LowLevel), "Low Level", 0},
> - {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (CriticalLevel), "Critical Level", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * SDEI - Software Delegated Execption Interface Descriptor Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSdei[] =
> -{
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * SDEV - Secure Devices Table (ACPI 6.2)
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSdev[] =
> -{
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSdevHdr[] =
> -{
> - {ACPI_DMT_SDEV, ACPI_SDEVH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_SDEVH_OFFSET (Flags), "Flags (decoded below)", 0},
> - {ACPI_DMT_FLAG0, ACPI_SDEVH_FLAG_OFFSET (Flags,0), "Allow handoff to unsecure OS", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEVH_OFFSET (Length), "Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* SDEV Subtables */
> -
> -/* 0: Namespace Device Based Secure Device Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_SDEV0_OFFSET (DeviceIdOffset), "Device ID Offset", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEV0_OFFSET (DeviceIdLength), "Device ID Length", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEV0_OFFSET (VendorDataOffset), "Vendor Data Offset", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEV0_OFFSET (VendorDataLength), "Vendor Data Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0a[] =
> -{
> - {ACPI_DMT_STRING, 0, "Namepath", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: PCIe Endpoint Device Based Device Structure */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (Segment), "Segment", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (StartBus), "Start Bus", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (PathOffset), "Path Offset", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (PathLength), "Path Length", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (VendorDataOffset), "Vendor Data Offset", 0},
> - {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (VendorDataLength), "Vendor Data Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1a[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_SDEV1A_OFFSET (Device), "Device", 0},
> - {ACPI_DMT_UINT8, ACPI_SDEV1A_OFFSET (Function), "Function", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1b[] =
> -{
> - {ACPI_DMT_RAW_BUFFER, 0, "Vendor Data", 0}, /*, DT_OPTIONAL}, */
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * SLIC - Software Licensing Description Table. This table contains the standard
> - * ACPI header followed by proprietary data structures
> - *
> - ******************************************************************************/
> -
> -/* Single subtable, a proprietary format, so treat it as a buffer */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSlic[] =
> -{
> - {ACPI_DMT_RAW_BUFFER, 0, "Software Licensing Structure", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * SLIT - System Locality Information Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_SLIT_OFFSET (LocalityCount), "Localities", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * SPCR - Serial Port Console Redirection table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterfaceType), "Interface Type", 0},
> - {ACPI_DMT_UINT24, ACPI_SPCR_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_GAS, ACPI_SPCR_OFFSET (SerialPort), "Serial Port Register", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterruptType), "Interrupt Type", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PcInterrupt), "PCAT-compatible IRQ", 0},
> - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Interrupt), "Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (BaudRate), "Baud Rate", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Parity), "Parity", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (StopBits), "Stop Bits", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (FlowControl), "Flow Control", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (TerminalType), "Terminal Type", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0},
> - {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciDeviceId), "PCI Device ID", 0},
> - {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciVendorId), "PCI Vendor ID", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciBus), "PCI Bus", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciDevice), "PCI Device", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciFunction), "PCI Function", 0},
> - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PciFlags), "PCI Flags", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciSegment), "PCI Segment", 0},
> - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * SPMI - Server Platform Management Interface table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterfaceType), "Interface Type", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved), "Reserved", DT_NON_ZERO}, /* Value must be 1 */
> - {ACPI_DMT_UINT16, ACPI_SPMI_OFFSET (SpecRevision), "IPMI Spec Version", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterruptType), "Interrupt Type", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (GpeNumber), "GPE Number", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved1), "Reserved", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDeviceFlag), "PCI Device Flag", 0},
> - {ACPI_DMT_UINT32, ACPI_SPMI_OFFSET (Interrupt), "Interrupt", 0},
> - {ACPI_DMT_GAS, ACPI_SPMI_OFFSET (IpmiRegister), "IPMI Register", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciSegment), "PCI Segment", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciBus), "PCI Bus", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDevice), "PCI Device", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciFunction), "PCI Function", 0},
> - {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved2), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * SRAT - System Resource Affinity Table and Subtables
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_SRAT_OFFSET (TableRevision), "Table Revision", 0},
> - {ACPI_DMT_UINT64, ACPI_SRAT_OFFSET (Reserved), "Reserved", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Common Subtable header (one per Subtable) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSratHdr[] =
> -{
> - {ACPI_DMT_SRAT, ACPI_SRATH_OFFSET (Type), "Subtable Type", 0},
> - {ACPI_DMT_UINT8, ACPI_SRATH_OFFSET (Length), "Length", DT_LENGTH},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* SRAT Subtables */
> -
> -/* 0: Processor Local APIC/SAPIC Affinity */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ProximityDomainLo), "Proximity Domain Low(8)", 0},
> - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ApicId), "Apic ID", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_SRAT0_FLAG_OFFSET (Flags,0), "Enabled", 0},
> - {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (LocalSapicEid), "Local Sapic EID", 0},
> - {ACPI_DMT_UINT24, ACPI_SRAT0_OFFSET (ProximityDomainHi[0]), "Proximity Domain High(24)", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (ClockDomain), "Clock Domain", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 1: Memory Affinity */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat1[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (ProximityDomain), "Proximity Domain", 0},
> - {ACPI_DMT_UINT16, ACPI_SRAT1_OFFSET (Reserved), "Reserved1", 0},
> - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (BaseAddress), "Base Address", 0},
> - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Length), "Address Length", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Reserved1), "Reserved2", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Enabled", 0},
> - {ACPI_DMT_FLAG1, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Hot Pluggable", 0},
> - {ACPI_DMT_FLAG2, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Non-Volatile", 0},
> - {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Reserved2), "Reserved3", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat2[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_SRAT2_OFFSET (Reserved), "Reserved1", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ProximityDomain), "Proximity Domain", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ApicId), "Apic ID", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_SRAT2_FLAG_OFFSET (Flags,0), "Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ClockDomain), "Clock Domain", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (Reserved2), "Reserved2", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 3: GICC Affinity (ACPI 5.1) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat3[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (ProximityDomain), "Proximity Domain", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (AcpiProcessorUid), "Acpi Processor UID", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_SRAT3_FLAG_OFFSET (Flags,0), "Enabled", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (ClockDomain), "Clock Domain", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 4: GCC ITS Affinity (ACPI 6.2) */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoSrat4[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_SRAT4_OFFSET (ProximityDomain), "Proximity Domain", 0},
> - {ACPI_DMT_UINT16, ACPI_SRAT4_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_SRAT4_OFFSET (ItsId), "ITS ID", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * STAO - Status Override Table (_STA override) - ACPI 6.0
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoStao[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_STAO_OFFSET (IgnoreUart), "Ignore UART", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[] =
> -{
> - {ACPI_DMT_STRING, 0, "Namepath", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * TCPA - Trusted Computing Platform Alliance table (Client)
> - *
> - * NOTE: There are two versions of the table with the same signature --
> - * the client version and the server version. The common PlatformClass
> - * field is used to differentiate the two types of tables.
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_TCPA_OFFSET (PlatformClass), "Platform Class", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_TCPA_CLIENT_OFFSET (MinimumLogLength), "Min Event Log Length", 0},
> - {ACPI_DMT_UINT64, ACPI_TCPA_CLIENT_OFFSET (LogAddress), "Event Log Address", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_TCPA_SERVER_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_TCPA_SERVER_OFFSET (MinimumLogLength), "Min Event Log Length", 0},
> - {ACPI_DMT_UINT64, ACPI_TCPA_SERVER_OFFSET (LogAddress), "Event Log Address", 0},
> - {ACPI_DMT_UINT16, ACPI_TCPA_SERVER_OFFSET (SpecRevision), "Specification Revision", 0},
> - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Device Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Pci Device", 0},
> - {ACPI_DMT_FLAG1, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Bus is Pnp", 0},
> - {ACPI_DMT_FLAG2, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Address Valid", 0},
> - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Interrupt Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Mode", 0},
> - {ACPI_DMT_FLAG1, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Polarity", 0},
> - {ACPI_DMT_FLAG2, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "GPE SCI Triggered", 0},
> - {ACPI_DMT_FLAG3, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Global System Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (GpeNumber), "Gpe Number", 0},
> - {ACPI_DMT_UINT24, ACPI_TCPA_SERVER_OFFSET (Reserved2[0]), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_TCPA_SERVER_OFFSET (GlobalInterrupt), "Global Interrupt", 0},
> - {ACPI_DMT_GAS, ACPI_TCPA_SERVER_OFFSET (Address), "Address", 0},
> - {ACPI_DMT_UINT32, ACPI_TCPA_SERVER_OFFSET (Reserved3), "Reserved", 0},
> - {ACPI_DMT_GAS, ACPI_TCPA_SERVER_OFFSET (ConfigAddress), "Configuration Address", 0},
> - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Group), "Pci Group", 0},
> - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Bus), "Pci Bus", 0},
> - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Device), "Pci Device", 0},
> - {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Function), "Pci Function", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (PlatformClass), "Platform Class", 0},
> - {ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT64, ACPI_TPM2_OFFSET (ControlAddress), "Control Address", 0},
> - {ACPI_DMT_TPM2, ACPI_TPM2_OFFSET (StartMethod), "Start Method", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* Optional trailer. LogLength and LogAddress are additionally optional */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2a[] =
> -{
> - {ACPI_DMT_BUF12, ACPI_TPM2A_OFFSET (MethodParameters), "Method Parameters", DT_OPTIONAL},
> - {ACPI_DMT_UINT32, ACPI_TPM2A_OFFSET (MinimumLogLength), "Minimum Log Length", DT_OPTIONAL},
> - {ACPI_DMT_UINT64, ACPI_TPM2A_OFFSET (LogAddress), "Log Address", DT_OPTIONAL},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* 11: Start Method for ARM SMC */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoTpm211[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_TPM211_OFFSET (GlobalInterrupt), "Global Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_TPM211_OFFSET (InterruptFlags), "Interrupt Flags", 0},
> - {ACPI_DMT_UINT8, ACPI_TPM211_OFFSET (OperationFlags), "Operation Flags", 0},
> - {ACPI_DMT_UINT16, ACPI_TPM211_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_TPM211_OFFSET (FunctionId), "Function ID", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * UEFI - UEFI Boot optimization Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[] =
> -{
> - {ACPI_DMT_UUID, ACPI_UEFI_OFFSET (Identifier[0]), "UUID Identifier", 0},
> - {ACPI_DMT_UINT16, ACPI_UEFI_OFFSET (DataOffset), "Data Offset", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * VRTC - Virtual Real Time Clock Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[] =
> -{
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* VRTC Subtables - VRTC Entry */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc0[] =
> -{
> - {ACPI_DMT_GAS, ACPI_VRTC0_OFFSET (PhysicalAddress), "PhysicalAddress", 0},
> - {ACPI_DMT_UINT32, ACPI_VRTC0_OFFSET (Irq), "IRQ", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * WAET - Windows ACPI Emulated devices Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoWaet[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_WAET_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_WAET_OFFSET (Flags), "RTC needs no INT ack", 0},
> - {ACPI_DMT_FLAG1, ACPI_WAET_OFFSET (Flags), "PM timer, one read only", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * WDAT - Watchdog Action Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoWdat[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (HeaderLength), "Header Length", DT_LENGTH},
> - {ACPI_DMT_UINT16, ACPI_WDAT_OFFSET (PciSegment), "PCI Segment", 0},
> - {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciBus), "PCI Bus", 0},
> - {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciDevice), "PCI Device", 0},
> - {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciFunction), "PCI Function", 0},
> - {ACPI_DMT_UINT24, ACPI_WDAT_OFFSET (Reserved[0]), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (TimerPeriod), "Timer Period", 0},
> - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (MaxCount), "Max Count", 0},
> - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (MinCount), "Min Count", 0},
> - {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> - {ACPI_DMT_FLAG0, ACPI_WDAT_OFFSET (Flags), "Enabled", 0},
> - {ACPI_DMT_FLAG7, ACPI_WDAT_OFFSET (Flags), "Stopped When Asleep", 0},
> - {ACPI_DMT_UINT24, ACPI_WDAT_OFFSET (Reserved2[0]), "Reserved", 0},
> - {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (Entries), "Watchdog Entry Count", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -/* WDAT Subtables - Watchdog Instruction Entries */
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoWdat0[] =
> -{
> - {ACPI_DMT_UINT8, ACPI_WDAT0_OFFSET (Action), "Watchdog Action", 0},
> - {ACPI_DMT_UINT8, ACPI_WDAT0_OFFSET (Instruction), "Instruction", 0},
> - {ACPI_DMT_UINT16, ACPI_WDAT0_OFFSET (Reserved), "Reserved", 0},
> - {ACPI_DMT_GAS, ACPI_WDAT0_OFFSET (RegisterRegion), "Register Region", 0},
> - {ACPI_DMT_UINT32, ACPI_WDAT0_OFFSET (Value), "Value", 0},
> - {ACPI_DMT_UINT32, ACPI_WDAT0_OFFSET (Mask), "Register Mask", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * WDDT - Watchdog Description Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoWddt[] =
> -{
> - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (SpecVersion), "Specification Version", 0},
> - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (TableVersion), "Table Version", 0},
> - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (PciVendorId), "PCI Vendor ID", 0},
> - {ACPI_DMT_GAS, ACPI_WDDT_OFFSET (Address), "Timer Register", 0},
> - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (MaxCount), "Max Count", 0},
> - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (MinCount), "Min Count", 0},
> - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Period), "Period", 0},
> - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Status), "Status (decoded below)", 0},
> -
> - /* Status Flags byte 0 */
> -
> - {ACPI_DMT_FLAG0, ACPI_WDDT_FLAG_OFFSET (Status,0), "Available", 0},
> - {ACPI_DMT_FLAG1, ACPI_WDDT_FLAG_OFFSET (Status,0), "Active", 0},
> - {ACPI_DMT_FLAG2, ACPI_WDDT_FLAG_OFFSET (Status,0), "OS Owns", 0},
> -
> - /* Status Flags byte 1 */
> -
> - {ACPI_DMT_FLAG3, ACPI_WDDT_FLAG_OFFSET (Status,1), "User Reset", 0},
> - {ACPI_DMT_FLAG4, ACPI_WDDT_FLAG_OFFSET (Status,1), "Timeout Reset", 0},
> - {ACPI_DMT_FLAG5, ACPI_WDDT_FLAG_OFFSET (Status,1), "Power Fail Reset", 0},
> - {ACPI_DMT_FLAG6, ACPI_WDDT_FLAG_OFFSET (Status,1), "Unknown Reset", 0},
> -
> - {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Capability), "Capability (decoded below)", 0},
> -
> - /* Capability Flags byte 0 */
> -
> - {ACPI_DMT_FLAG0, ACPI_WDDT_FLAG_OFFSET (Capability,0), "Auto Reset", 0},
> - {ACPI_DMT_FLAG1, ACPI_WDDT_FLAG_OFFSET (Capability,0), "Timeout Alert", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * WDRT - Watchdog Resource Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[] =
> -{
> - {ACPI_DMT_GAS, ACPI_WDRT_OFFSET (ControlRegister), "Control Register", 0},
> - {ACPI_DMT_GAS, ACPI_WDRT_OFFSET (CountRegister), "Count Register", 0},
> - {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (PciDeviceId), "PCI Device ID", 0},
> - {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (PciVendorId), "PCI Vendor ID", 0},
> - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciBus), "PCI Bus", 0},
> - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciDevice), "PCI Device", 0},
> - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciFunction), "PCI Function", 0},
> - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciSegment), "PCI Segment", 0},
> - {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (MaxCount), "Max Count", 0},
> - {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (Units), "Counter Units", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * WPBT - Windows Platform Environment Table (ACPI 6.0)
> - * Version 1
> - *
> - * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoWpbt[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_WPBT_OFFSET (HandoffSize), "Handoff Size", 0},
> - {ACPI_DMT_UINT64, ACPI_WPBT_OFFSET (HandoffAddress), "Handoff Address", 0},
> - {ACPI_DMT_UINT8, ACPI_WPBT_OFFSET (Layout), "Layout", 0},
> - {ACPI_DMT_UINT8, ACPI_WPBT_OFFSET (Type), "Type", 0},
> - {ACPI_DMT_UINT16, ACPI_WPBT_OFFSET (ArgumentsLength), "Arguments Length", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoWpbt0[] =
> -{
> - {ACPI_DMT_UNICODE, sizeof (ACPI_TABLE_WPBT), "Command-line Arguments", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * WSMT - Windows SMM Security Migrations Table
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoWsmt[] =
> -{
> - {ACPI_DMT_UINT32, ACPI_WSMT_OFFSET (ProtectionFlags), "Protection Flags", 0},
> - {ACPI_DMT_FLAG0, ACPI_WSMT_FLAG_OFFSET (ProtectionFlags,0), "FIXED_COMM_BUFFERS", 0},
> - {ACPI_DMT_FLAG1, ACPI_WSMT_FLAG_OFFSET (ProtectionFlags,0), "COMM_BUFFER_NESTED_PTR_PROTECTION", 0},
> - {ACPI_DMT_FLAG2, ACPI_WSMT_FLAG_OFFSET (ProtectionFlags,0), "SYSTEM_RESOURCE_PROTECTION", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*******************************************************************************
> - *
> - * XENV - Xen Environment table (ACPI 6.0)
> - *
> - ******************************************************************************/
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoXenv[] =
> -{
> - {ACPI_DMT_UINT64, ACPI_XENV_OFFSET (GrantTableAddress), "Grant Table Address", 0},
> - {ACPI_DMT_UINT64, ACPI_XENV_OFFSET (GrantTableSize), "Grant Table Size", 0},
> - {ACPI_DMT_UINT32, ACPI_XENV_OFFSET (EventInterrupt), "Event Interrupt", 0},
> - {ACPI_DMT_UINT8, ACPI_XENV_OFFSET (EventFlags), "Event Flags", 0},
> - ACPI_DMT_TERMINATOR
> -};
> -
> -
> -/*! [Begin] no source code translation */
> -
> -/*
> - * Generic types (used in UEFI and custom tables)
> - *
> - * Examples:
> - *
> - * Buffer : cc 04 ff bb
> - * UINT8 : 11
> - * UINT16 : 1122
> - * UINT24 : 112233
> - * UINT32 : 11223344
> - * UINT56 : 11223344556677
> - * UINT64 : 1122334455667788
> - *
> - * String : "This is string"
> - * Unicode : "This string encoded to Unicode"
> - *
> - * GUID : 11223344-5566-7788-99aa-bbccddeeff00
> - * DevicePath : "\PciRoot(0)\Pci(0x1f,1)\Usb(0,0)"
> - */
> -
> -#define ACPI_DM_GENERIC_ENTRY(FieldType, FieldName) \
> - {{FieldType, 0, FieldName, 0}, ACPI_DMT_TERMINATOR}
> -
> -ACPI_DMTABLE_INFO AcpiDmTableInfoGeneric[][2] =
> -{
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT8, "UINT8"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT16, "UINT16"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT24, "UINT24"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT32, "UINT32"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT40, "UINT40"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT48, "UINT48"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT56, "UINT56"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT64, "UINT64"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "String"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UNICODE, "Unicode"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_BUFFER, "Buffer"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UUID, "GUID"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "DevicePath"),
> - ACPI_DM_GENERIC_ENTRY (ACPI_DMT_LABEL, "Label"),
> - {ACPI_DMT_TERMINATOR}
> -};
> -/*! [End] no source code translation !*/
> diff --git a/src/acpica/source/common/dmtbinfo1.c b/src/acpica/source/common/dmtbinfo1.c
> new file mode 100644
> index 00000000..a7a3d484
> --- /dev/null
> +++ b/src/acpica/source/common/dmtbinfo1.c
> @@ -0,0 +1,1200 @@
> +/******************************************************************************
> + *
> + * Module Name: dmtbinfo1 - Table info for non-AML tables
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
> + * All rights reserved.
> + *
> + * 2. License
> + *
> + * 2.1. This is your license from Intel Corp. under its intellectual property
> + * rights. You may have additional license terms from the party that provided
> + * you this software, covering your right to use that party's intellectual
> + * property rights.
> + *
> + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
> + * copy of the source code appearing in this file ("Covered Code") an
> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the
> + * base code distributed originally by Intel ("Original Intel Code") to copy,
> + * make derivatives, distribute, use and display any portion of the Covered
> + * Code in any form, with the right to sublicense such rights; and
> + *
> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
> + * license (with the right to sublicense), under only those claims of Intel
> + * patents that are infringed by the Original Intel Code, to make, use, sell,
> + * offer to sell, and import the Covered Code and derivative works thereof
> + * solely to the minimum extent necessary to exercise the above copyright
> + * license, and in no event shall the patent license extend to any additions
> + * to or modifications of the Original Intel Code. No other license or right
> + * is granted directly or by implication, estoppel or otherwise;
> + *
> + * The above copyright and patent license is granted only if the following
> + * conditions are met:
> + *
> + * 3. Conditions
> + *
> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification with rights to further distribute source must include
> + * the above Copyright Notice, the above License, this list of Conditions,
> + * and the following Disclaimer and Export Compliance provision. In addition,
> + * Licensee must cause all Covered Code to which Licensee contributes to
> + * contain a file documenting the changes Licensee made to create that Covered
> + * Code and the date of any change. Licensee must include in that file the
> + * documentation of any changes made by any predecessor Licensee. Licensee
> + * must include a prominent statement that the modification is derived,
> + * directly or indirectly, from Original Intel Code.
> + *
> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification without rights to further distribute source must
> + * include the following Disclaimer and Export Compliance provision in the
> + * documentation and/or other materials provided with distribution. In
> + * addition, Licensee may not authorize further sublicense of source of any
> + * portion of the Covered Code, and must include terms to the effect that the
> + * license from Licensee to its licensee is limited to the intellectual
> + * property embodied in the software Licensee provides to its licensee, and
> + * not to intellectual property embodied in modifications its licensee may
> + * make.
> + *
> + * 3.3. Redistribution of Executable. Redistribution in executable form of any
> + * substantial portion of the Covered Code or modification must reproduce the
> + * above Copyright Notice, and the following Disclaimer and Export Compliance
> + * provision in the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * 3.4. Intel retains all right, title, and interest in and to the Original
> + * Intel Code.
> + *
> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by
> + * Intel shall be used in advertising or otherwise to promote the sale, use or
> + * other dealings in products derived from or relating to the Covered Code
> + * without prior written authorization from Intel.
> + *
> + * 4. Disclaimer and Export Compliance
> + *
> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
> + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
> + * PARTICULAR PURPOSE.
> + *
> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
> + * LIMITED REMEDY.
> + *
> + * 4.3. Licensee shall not export, either directly or indirectly, any of this
> + * software or system incorporating such software without first obtaining any
> + * required license or other approval from the U. S. Department of Commerce or
> + * any other agency or department of the United States Government. In the
> + * event Licensee exports any such software from the United States or
> + * re-exports any such software from a foreign destination, Licensee shall
> + * ensure that the distribution and export/re-export of the software is in
> + * compliance with all laws, regulations, orders, or other restrictions of the
> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor
> + * any of its subsidiaries will export/re-export any technical data, process,
> + * software, or service, directly or indirectly, to any country for which the
> + * United States government or any agency thereof requires an export license,
> + * other governmental approval, or letter of assurance, without first obtaining
> + * such license, approval or letter.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions, and the following disclaimer,
> + * without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + * substantially similar to the "NO WARRANTY" disclaimer below
> + * ("Disclaimer") and any redistribution must be conditioned upon
> + * including a substantially similar Disclaimer requirement for further
> + * binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + * of any contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "acpi.h"
> +#include "accommon.h"
> +#include "acdisasm.h"
> +#include "actbinfo.h"
> +
> +/* This module used for application-level code only */
> +
> +#define _COMPONENT ACPI_CA_DISASSEMBLER
> + ACPI_MODULE_NAME ("dmtbinfo1")
> +
> +/*
> + * How to add a new table:
> + *
> + * - Add the C table definition to the actbl1.h or actbl2.h header.
> + * - Add ACPI_xxxx_OFFSET macro(s) for the table (and subtables) to list below.
> + * - Define the table in this file (for the disassembler). If any
> + * new data types are required (ACPI_DMT_*), see below.
> + * - Add an external declaration for the new table definition (AcpiDmTableInfo*)
> + * in acdisam.h
> + * - Add new table definition to the dispatch table in dmtable.c (AcpiDmTableData)
> + * If a simple table (with no subtables), no disassembly code is needed.
> + * Otherwise, create the AcpiDmDump* function for to disassemble the table
> + * and add it to the dmtbdump.c file.
> + * - Add an external declaration for the new AcpiDmDump* function in acdisasm.h
> + * - Add the new AcpiDmDump* function to the dispatch table in dmtable.c
> + * - Create a template for the new table
> + * - Add data table compiler support
> + *
> + * How to add a new data type (ACPI_DMT_*):
> + *
> + * - Add new type at the end of the ACPI_DMT list in acdisasm.h
> + * - Add length and implementation cases in dmtable.c (disassembler)
> + * - Add type and length cases in dtutils.c (DT compiler)
> + */
> +
> +/*
> + * ACPI Table Information, used to dump formatted ACPI tables
> + *
> + * Each entry is of the form: <Field Type, Field Offset, Field Name>
> + */
> +
> +
> +/*******************************************************************************
> + *
> + * ASF - Alert Standard Format table (Signature "ASF!")
> + *
> + ******************************************************************************/
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[] =
> +{
> + {ACPI_DMT_ASF, ACPI_ASF0_OFFSET (Header.Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Header.Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (Header.Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: ASF Information */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinResetValue), "Minimum Reset Value", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinPollInterval), "Minimum Polling Interval", 0},
> + {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (SystemId), "System ID", 0},
> + {ACPI_DMT_UINT32, ACPI_ASF0_OFFSET (MfgId), "Manufacturer ID", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Flags), "Flags", 0},
> + {ACPI_DMT_UINT24, ACPI_ASF0_OFFSET (Reserved2[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: ASF Alerts */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (AssertMask), "AssertMask", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DeassertMask), "DeassertMask", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (Alerts), "Alert Count", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DataLength), "Alert Data Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1a: ASF Alert data */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Address), "Address", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Command), "Command", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Mask), "Mask", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Value), "Value", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorType), "SensorType", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Type), "Type", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Offset), "Offset", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SourceType), "SourceType", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Severity), "Severity", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorNumber), "SensorNumber", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Entity), "Entity", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Instance), "Instance", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: ASF Remote Control */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (Controls), "Control Count", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (DataLength), "Control Data Length", 0},
> + {ACPI_DMT_UINT16, ACPI_ASF2_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2a: ASF Control data */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Function), "Function", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Address), "Address", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Command), "Command", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Value), "Value", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 3: ASF RMCP Boot Options */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[] =
> +{
> + {ACPI_DMT_BUF7, ACPI_ASF3_OFFSET (Capabilities[0]), "Capabilities", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (CompletionCode), "Completion Code", 0},
> + {ACPI_DMT_UINT32, ACPI_ASF3_OFFSET (EnterpriseId), "Enterprise ID", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (Command), "Command", 0},
> + {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (Parameter), "Parameter", 0},
> + {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (BootOptions), "Boot Options", 0},
> + {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (OemParameters), "Oem Parameters", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 4: ASF Address */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (EpromAddress), "Eprom Address", 0},
> + {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (Devices), "Device Count", DT_COUNT},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * BERT - Boot Error Record table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoBert[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_BERT_OFFSET (RegionLength), "Boot Error Region Length", 0},
> + {ACPI_DMT_UINT64, ACPI_BERT_OFFSET (Address), "Boot Error Region Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * BGRT - Boot Graphics Resource Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_BGRT_OFFSET (Version), "Version", 0},
> + {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (Status), "Status (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_BGRT_FLAG_OFFSET (Status, 0), "Displayed", 0},
> + {ACPI_DMT_FLAGS1, ACPI_BGRT_FLAG_OFFSET (Status, 0), "Orientation Offset", 0},
> +
> + {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (ImageType), "Image Type", 0},
> + {ACPI_DMT_UINT64, ACPI_BGRT_OFFSET (ImageAddress), "Image Address", 0},
> + {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetX), "Image OffsetX", 0},
> + {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetY), "Image OffsetY", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * BOOT - Simple Boot Flag Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_BOOT_OFFSET (CmosIndex), "Boot Register Index", 0},
> + {ACPI_DMT_UINT24, ACPI_BOOT_OFFSET (Reserved[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * CPEP - Corrected Platform Error Polling table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_CPEP_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Id), "Processor ID", 0},
> + {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Eid), "Processor EID", 0},
> + {ACPI_DMT_UINT32, ACPI_CPEP0_OFFSET (Interval), "Polling Interval", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * CSRT - Core System Resource Table
> + *
> + ******************************************************************************/
> +
> +/* Main table consists only of the standard ACPI table header */
> +
> +/* Resource Group subtable */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (VendorId), "Vendor ID", 0},
> + {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SubvendorId), "Subvendor ID", 0},
> + {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (DeviceId), "Device ID", 0},
> + {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (SubdeviceId), "Subdevice ID", 0},
> + {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Revision), "Revision", 0},
> + {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SharedInfoLength), "Shared Info Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Shared Info subtable */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt1[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (MajorVersion), "Major Version", 0},
> + {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (MinorVersion), "Minor Version", 0},
> + {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MmioBaseLow), "MMIO Base Address Low", 0},
> + {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MmioBaseHigh), "MMIO Base Address High", 0},
> + {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (GsiInterrupt), "GSI Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (InterruptPolarity), "Interrupt Polarity", 0},
> + {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (InterruptMode), "Interrupt Mode", 0},
> + {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (NumChannels), "Num Channels", 0},
> + {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (DmaAddressWidth), "DMA Address Width", 0},
> + {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (BaseRequestLine), "Base Request Line", 0},
> + {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (NumHandshakeSignals), "Num Handshake Signals", 0},
> + {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MaxBlockSize), "Max Block Size", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Resource Descriptor subtable */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt2[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_CSRT2_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT16, ACPI_CSRT2_OFFSET (Type), "Type", 0},
> + {ACPI_DMT_UINT16, ACPI_CSRT2_OFFSET (Subtype), "Subtype", 0},
> + {ACPI_DMT_UINT32, ACPI_CSRT2_OFFSET (Uid), "UID", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt2a[] =
> +{
> + {ACPI_DMT_RAW_BUFFER, 0, "ResourceInfo", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * DBG2 - Debug Port Table 2
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoOffset), "Info Offset", 0},
> + {ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoCount), "Info Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Debug Device Information Subtable */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Device[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (Revision), "Revision", 0},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (RegisterCount), "Register Count", 0},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathLength), "Namepath Length", 0},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathOffset), "Namepath Offset", 0},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataLength), "OEM Data Length", DT_DESCRIBES_OPTIONAL},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataOffset), "OEM Data Offset", DT_DESCRIBES_OPTIONAL},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortType), "Port Type", 0},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortSubtype), "Port Subtype", 0},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (BaseAddressOffset), "Base Address Offset", 0},
> + {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (AddressSizeOffset), "Address Size Offset", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Variable-length data for the subtable */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Addr[] =
> +{
> + {ACPI_DMT_GAS, 0, "Base Address Register", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Size[] =
> +{
> + {ACPI_DMT_UINT32, 0, "Address Size", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Name[] =
> +{
> + {ACPI_DMT_STRING, 0, "Namepath", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2OemData[] =
> +{
> + {ACPI_DMT_RAW_BUFFER, 0, "OEM Data", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * DBGP - Debug Port
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_DBGP_OFFSET (Type), "Interface Type", 0},
> + {ACPI_DMT_UINT24, ACPI_DBGP_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_GAS, ACPI_DBGP_OFFSET (DebugPort), "Debug Port Register", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * DMAR - DMA Remapping table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Width), "Host Address Width", 0},
> + {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Flags), "Flags", 0},
> + {ACPI_DMT_BUF10, ACPI_DMAR_OFFSET (Reserved[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[] =
> +{
> + {ACPI_DMT_DMAR, ACPI_DMAR0_OFFSET (Header.Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Header.Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common device scope entry */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[] =
> +{
> + {ACPI_DMT_DMAR_SCOPE, ACPI_DMARS_OFFSET (EntryType), "Device Scope Type", 0},
> + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Length), "Entry Length", DT_LENGTH},
> + {ACPI_DMT_UINT16, ACPI_DMARS_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EnumerationId), "Enumeration ID", 0},
> + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Bus), "PCI Bus Number", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* DMAR Subtables */
> +
> +/* 0: Hardware Unit Definition */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Flags), "Flags", 0},
> + {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Segment), "PCI Segment Number", 0},
> + {ACPI_DMT_UINT64, ACPI_DMAR0_OFFSET (Address), "Register Base Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Reserved Memory Definition */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Segment), "PCI Segment Number", 0},
> + {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (EndAddress), "End Address (limit)", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: Root Port ATS Capability Definition */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Flags), "Flags", 0},
> + {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_DMAR2_OFFSET (Segment), "PCI Segment Number", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 3: Remapping Hardware Static Affinity Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_DMAR3_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (ProximityDomain), "Proximity Domain", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 4: ACPI Namespace Device Declaration Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDmar4[] =
> +{
> + {ACPI_DMT_UINT24, ACPI_DMAR4_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_DMAR4_OFFSET (DeviceNumber), "Device Number", 0},
> + {ACPI_DMT_STRING, ACPI_DMAR4_OFFSET (DeviceName[0]), "Device Name", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * DRTM - Dynamic Root of Trust for Measurement table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryBaseAddress), "Entry Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryLength), "Entry Length", 0},
> + {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (EntryAddress32), "Entry 32", 0},
> + {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (EntryAddress64), "Entry 64", 0},
> + {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (ExitAddress), "Exit Address", 0},
> + {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (LogAreaAddress), "Log Area Start", 0},
> + {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (LogAreaLength), "Log Area Length", 0},
> + {ACPI_DMT_UINT64, ACPI_DRTM_OFFSET (ArchDependentAddress), "Arch Dependent Address", 0},
> + {ACPI_DMT_UINT32, ACPI_DRTM_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Namespace in TCB", 0},
> + {ACPI_DMT_FLAG1, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Gap Code on S3 Resume", 0},
> + {ACPI_DMT_FLAG2, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "Gap Code on DLME_Exit", 0},
> + {ACPI_DMT_FLAG3, ACPI_DRTM_FLAG_OFFSET (Flags, 0), "PCR_Authorities Changed", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_DRTM0_OFFSET (ValidatedTableCount), "Validated Table Count", DT_COUNT},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0a[] =
> +{
> + {ACPI_DMT_UINT64, 0, "Table Address", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_DRTM1_OFFSET (ResourceCount), "Resource Count", DT_COUNT},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm1a[] =
> +{
> + {ACPI_DMT_UINT56, ACPI_DRTM1a_OFFSET (Size[0]), "Size", DT_OPTIONAL},
> + {ACPI_DMT_UINT8, ACPI_DRTM1a_OFFSET (Type), "Type", 0},
> + {ACPI_DMT_FLAG0, ACPI_DRTM1a_FLAG_OFFSET (Type, 0), "Resource Type", 0},
> + {ACPI_DMT_FLAG7, ACPI_DRTM1a_FLAG_OFFSET (Type, 0), "Protections", 0},
> + {ACPI_DMT_UINT64, ACPI_DRTM1a_OFFSET (Address), "Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm2[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_DRTM2_OFFSET (DpsIdLength), "DLME Platform Id Length", DT_COUNT},
> + {ACPI_DMT_BUF16, ACPI_DRTM2_OFFSET (DpsId), "DLME Platform Id", DT_COUNT},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * ECDT - Embedded Controller Boot Resources Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[] =
> +{
> + {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Control), "Command/Status Register", 0},
> + {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Data), "Data Register", 0},
> + {ACPI_DMT_UINT32, ACPI_ECDT_OFFSET (Uid), "UID", 0},
> + {ACPI_DMT_UINT8, ACPI_ECDT_OFFSET (Gpe), "GPE Number", 0},
> + {ACPI_DMT_STRING, ACPI_ECDT_OFFSET (Id[0]), "Namepath", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * EINJ - Error Injection table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoEinj[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (HeaderLength), "Injection Header Length", 0},
> + {ACPI_DMT_UINT8, ACPI_EINJ_OFFSET (Flags), "Flags", 0},
> + {ACPI_DMT_UINT24, ACPI_EINJ_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (Entries), "Injection Entry Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[] =
> +{
> + {ACPI_DMT_EINJACT, ACPI_EINJ0_OFFSET (Action), "Action", 0},
> + {ACPI_DMT_EINJINST, ACPI_EINJ0_OFFSET (Instruction), "Instruction", 0},
> + {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_EINJ0_FLAG_OFFSET (Flags,0), "Preserve Register Bits", 0},
> +
> + {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_GAS, ACPI_EINJ0_OFFSET (RegisterRegion), "Register Region", 0},
> + {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Value), "Value", 0},
> + {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Mask), "Mask", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * ERST - Error Record Serialization table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoErst[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (HeaderLength), "Serialization Header Length", 0},
> + {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Entries), "Instruction Entry Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoErst0[] =
> +{
> + {ACPI_DMT_ERSTACT, ACPI_ERST0_OFFSET (Action), "Action", 0},
> + {ACPI_DMT_ERSTINST, ACPI_ERST0_OFFSET (Instruction), "Instruction", 0},
> + {ACPI_DMT_UINT8, ACPI_ERST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_ERST0_FLAG_OFFSET (Flags,0), "Preserve Register Bits", 0},
> +
> + {ACPI_DMT_UINT8, ACPI_ERST0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_GAS, ACPI_ERST0_OFFSET (RegisterRegion), "Register Region", 0},
> + {ACPI_DMT_UINT64, ACPI_ERST0_OFFSET (Value), "Value", 0},
> + {ACPI_DMT_UINT64, ACPI_ERST0_OFFSET (Mask), "Mask", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * FPDT - Firmware Performance Data Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +/* Main table consists of only the standard ACPI header - subtables follow */
> +
> +/* FPDT subtable header */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoFpdtHdr[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_FPDTH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Revision), "Revision", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: Firmware Basic Boot Performance Record */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt0[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_FPDT0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "FPDT Boot Record Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: S3 Performance Table Pointer Record */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_FPDT1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "S3PT Record Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +#if 0
> + /* Boot Performance Record, not supported at this time. */
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ResetEnd), "Reset End", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (LoadStart), "Load Image Start", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (StartupStart), "Start Image Start", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesEntry), "Exit Services Entry", 0},
> + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesExit), "Exit Services Exit", 0},
> +#endif
> +
> +
> +/*******************************************************************************
> + *
> + * GTDT - Generic Timer Description Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_GTDT_OFFSET (CounterBlockAddresss), "Counter Block Address", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecureEl1Interrupt), "Secure EL1 Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecureEl1Flags), "EL1 Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Polarity", 0},
> + {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (SecureEl1Flags,0), "Always On", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl1Interrupt), "Non-Secure EL1 Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl1Flags), "NEL1 Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Polarity", 0},
> + {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (NonSecureEl1Flags,0),"Always On", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerInterrupt), "Virtual Timer Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerFlags), "VT Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Polarity", 0},
> + {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Always On", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl2Interrupt), "Non-Secure EL2 Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecureEl2Flags), "NEL2 Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Polarity", 0},
> + {ACPI_DMT_FLAG2, ACPI_GTDT_FLAG_OFFSET (NonSecureEl2Flags,0),"Always On", 0},
> + {ACPI_DMT_UINT64, ACPI_GTDT_OFFSET (CounterReadBlockAddress), "Counter Read Block Address", 0},
> + ACPI_DMT_NEW_LINE,
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (PlatformTimerCount), "Platform Timer Count", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (PlatformTimerOffset), "Platform Timer Offset", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* GTDT Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGtdtHdr[] =
> +{
> + {ACPI_DMT_GTDT, ACPI_GTDTH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT16, ACPI_GTDTH_OFFSET (Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* GTDT Subtables */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_GTDT0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_GTDT0_OFFSET (BlockAddress), "Block Address", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT0_OFFSET (TimerCount), "Timer Count", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT0_OFFSET (TimerOffset), "Timer Offset", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt0a[] =
> +{
> + {ACPI_DMT_UINT8 , ACPI_GTDT0a_OFFSET (FrameNumber), "Frame Number", 0},
> + {ACPI_DMT_UINT24, ACPI_GTDT0a_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_GTDT0a_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_GTDT0a_OFFSET (El0BaseAddress), "EL0 Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (TimerInterrupt), "Timer Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (TimerFlags), "Timer Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (TimerFlags,0), "Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (TimerFlags,0), "Polarity", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (VirtualTimerInterrupt), "Virtual Timer Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (VirtualTimerFlags), "Virtual Timer Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (VirtualTimerFlags,0), "Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (VirtualTimerFlags,0), "Polarity", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT0a_OFFSET (CommonFlags), "Common Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_GTDT0a_FLAG_OFFSET (CommonFlags,0), "Secure", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT0a_FLAG_OFFSET (CommonFlags,0), "Always On", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt1[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_GTDT1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_GTDT1_OFFSET (RefreshFrameAddress), "Refresh Frame Address", 0},
> + {ACPI_DMT_UINT64, ACPI_GTDT1_OFFSET (ControlFrameAddress), "Control Frame Address", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT1_OFFSET (TimerInterrupt), "Timer Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_GTDT1_OFFSET (TimerFlags), "Timer Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Trigger Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Polarity", 0},
> + {ACPI_DMT_FLAG2, ACPI_GTDT1_FLAG_OFFSET (TimerFlags,0), "Security", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * HEST - Hardware Error Source table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_HEST_OFFSET (ErrorSourceCount), "Error Source Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common HEST structures for subtables */
> +
> +#define ACPI_DM_HEST_HEADER \
> + {ACPI_DMT_HEST, ACPI_HEST0_OFFSET (Header.Type), "Subtable Type", 0}, \
> + {ACPI_DMT_UINT16, ACPI_HEST0_OFFSET (Header.SourceId), "Source Id", 0}
> +
> +#define ACPI_DM_HEST_AER \
> + {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Reserved1), "Reserved", 0}, \
> + {ACPI_DMT_UINT8, ACPI_HEST6_OFFSET (Aer.Flags), "Flags (decoded below)", DT_FLAG}, \
> + {ACPI_DMT_FLAG0, ACPI_HEST6_FLAG_OFFSET (Aer.Flags,0), "Firmware First", 0}, \
> + {ACPI_DMT_FLAG0, ACPI_HEST6_FLAG_OFFSET (Aer.Flags,0), "Global", 0}, \
> + {ACPI_DMT_UINT8, ACPI_HEST6_OFFSET (Aer.Enabled), "Enabled", 0}, \
> + {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.RecordsToPreallocate), "Records To Preallocate", 0}, \
> + {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.MaxSectionsPerRecord), "Max Sections Per Record", 0}, \
> + {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.Bus), "Bus", 0}, \
> + {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Device), "Device", 0}, \
> + {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Function), "Function", 0}, \
> + {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.DeviceControl), "DeviceControl", 0}, \
> + {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Reserved2), "Reserved", 0}, \
> + {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.UncorrectableMask), "Uncorrectable Mask", 0}, \
> + {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.UncorrectableSeverity), "Uncorrectable Severity", 0}, \
> + {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.CorrectableMask), "Correctable Mask", 0}, \
> + {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.AdvancedCapabilities), "Advanced Capabilities", 0}
> +
> +
> +/* HEST Subtables */
> +
> +/* 0: IA32 Machine Check Exception */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest0[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + {ACPI_DMT_UINT16, ACPI_HEST0_OFFSET (Reserved1), "Reserved1", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_HEST0_FLAG_OFFSET (Flags,0), "Firmware First", 0},
> + {ACPI_DMT_FLAG2, ACPI_HEST0_FLAG_OFFSET (Flags,0), "GHES Assist", 0},
> +
> + {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (Enabled), "Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST0_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST0_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> + {ACPI_DMT_UINT64, ACPI_HEST0_OFFSET (GlobalCapabilityData), "Global Capability Data", 0},
> + {ACPI_DMT_UINT64, ACPI_HEST0_OFFSET (GlobalControlData), "Global Control Data", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0},
> + {ACPI_DMT_UINT56, ACPI_HEST0_OFFSET (Reserved3[0]), "Reserved2", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: IA32 Corrected Machine Check */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest1[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + {ACPI_DMT_UINT16, ACPI_HEST1_OFFSET (Reserved1), "Reserved1", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_HEST1_FLAG_OFFSET (Flags,0), "Firmware First", 0},
> + {ACPI_DMT_FLAG2, ACPI_HEST1_FLAG_OFFSET (Flags,0), "GHES Assist", 0},
> +
> + {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (Enabled), "Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST1_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST1_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> + {ACPI_DMT_HESTNTFY, ACPI_HEST1_OFFSET (Notify), "Notify", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0},
> + {ACPI_DMT_UINT24, ACPI_HEST1_OFFSET (Reserved2[0]), "Reserved2", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: IA32 Non-Maskable Interrupt */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest2[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 6: PCI Express Root Port AER */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest6[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + ACPI_DM_HEST_AER,
> + {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (RootErrorCommand), "Root Error Command", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 7: PCI Express AER (AER Endpoint) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest7[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + ACPI_DM_HEST_AER,
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 8: PCI Express/PCI-X Bridge AER */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest8[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + ACPI_DM_HEST_AER,
> + {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (UncorrectableMask2), "2nd Uncorrectable Mask", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (UncorrectableSeverity2), "2nd Uncorrectable Severity", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (AdvancedCapabilities2), "2nd Advanced Capabilities", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 9: Generic Hardware Error Source */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest9[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + {ACPI_DMT_UINT16, ACPI_HEST9_OFFSET (RelatedSourceId), "Related Source Id", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST9_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST9_OFFSET (Enabled), "Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0},
> + {ACPI_DMT_GAS, ACPI_HEST9_OFFSET (ErrorStatusAddress), "Error Status Address", 0},
> + {ACPI_DMT_HESTNTFY, ACPI_HEST9_OFFSET (Notify), "Notify", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (ErrorBlockLength), "Error Status Block Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 10: Generic Hardware Error Source - Version 2 */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest10[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + {ACPI_DMT_UINT16, ACPI_HEST10_OFFSET (RelatedSourceId), "Related Source Id", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST10_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST10_OFFSET (Enabled), "Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST10_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST10_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST10_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0},
> + {ACPI_DMT_GAS, ACPI_HEST10_OFFSET (ErrorStatusAddress), "Error Status Address", 0},
> + {ACPI_DMT_HESTNTFY, ACPI_HEST10_OFFSET (Notify), "Notify", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST10_OFFSET (ErrorBlockLength), "Error Status Block Length", 0},
> + {ACPI_DMT_GAS, ACPI_HEST10_OFFSET (ReadAckRegister), "Read Ack Register", 0},
> + {ACPI_DMT_UINT64, ACPI_HEST10_OFFSET (ReadAckPreserve), "Read Ack Preserve", 0},
> + {ACPI_DMT_UINT64, ACPI_HEST10_OFFSET (ReadAckWrite), "Read Ack Write", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 11: IA32 Deferred Machine Check */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHest11[] =
> +{
> + ACPI_DM_HEST_HEADER,
> + {ACPI_DMT_UINT16, ACPI_HEST11_OFFSET (Reserved1), "Reserved1", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_HEST11_FLAG_OFFSET (Flags,0), "Firmware First", 0},
> + {ACPI_DMT_FLAG2, ACPI_HEST11_FLAG_OFFSET (Flags,0), "GHES Assist", 0},
> +
> + {ACPI_DMT_UINT8, ACPI_HEST11_OFFSET (Enabled), "Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST11_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0},
> + {ACPI_DMT_UINT32, ACPI_HEST11_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0},
> + {ACPI_DMT_HESTNTFY, ACPI_HEST11_OFFSET (Notify), "Notify", 0},
> + {ACPI_DMT_UINT8, ACPI_HEST11_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0},
> + {ACPI_DMT_UINT24, ACPI_HEST11_OFFSET (Reserved2[0]), "Reserved2", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Notification Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHestNotify[] =
> +{
> + {ACPI_DMT_HESTNTYP, ACPI_HESTN_OFFSET (Type), "Notify Type", 0},
> + {ACPI_DMT_UINT8, ACPI_HESTN_OFFSET (Length), "Notify Length", DT_LENGTH},
> + {ACPI_DMT_UINT16, ACPI_HESTN_OFFSET (ConfigWriteEnable), "Configuration Write Enable", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollInterval), "PollInterval", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (Vector), "Vector", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollingThresholdValue), "Polling Threshold Value", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollingThresholdWindow), "Polling Threshold Window", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (ErrorThresholdValue), "Error Threshold Value", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (ErrorThresholdWindow), "Error Threshold Window", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*
> + * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
> + * ACPI_HEST_IA_CORRECTED structures.
> + */
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHestBank[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (BankNumber), "Bank Number", 0},
> + {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (ClearStatusOnInit), "Clear Status On Init", 0},
> + {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (StatusFormat), "Status Format", 0},
> + {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (ControlRegister), "Control Register", 0},
> + {ACPI_DMT_UINT64, ACPI_HESTB_OFFSET (ControlData), "Control Data", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (StatusRegister), "Status Register", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (AddressRegister), "Address Register", 0},
> + {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (MiscRegister), "Misc Register", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * HMAT - Heterogeneous Memory Attributes Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmat[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_HMAT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common HMAT structure header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmatHdr[] =
> +{
> + {ACPI_DMT_HMAT, ACPI_HMATH_OFFSET (Type), "Structure Type", 0},
> + {ACPI_DMT_UINT16, ACPI_HMATH_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_HMATH_OFFSET (Length), "Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* HMAT subtables */
> +
> +/* 0x00: Memory Subsystem Address Range */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmat0[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_HMAT0_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_HMAT0_FLAG_OFFSET (Flags,0), "Processor Proximity Domain Valid", 0},
> + {ACPI_DMT_FLAG1, ACPI_HMAT0_FLAG_OFFSET (Flags,0), "Memory Proximity Domain Valid", 0},
> + {ACPI_DMT_FLAG2, ACPI_HMAT0_FLAG_OFFSET (Flags,0), "Reservation Hint", 0},
> + {ACPI_DMT_UINT16, ACPI_HMAT0_OFFSET (Reserved1), "Reserved1", 0},
> + {ACPI_DMT_UINT32, ACPI_HMAT0_OFFSET (ProcessorPD), "Processor Proximity Domain", 0},
> + {ACPI_DMT_UINT32, ACPI_HMAT0_OFFSET (MemoryPD), "Memory Proximity Domain", 0},
> + {ACPI_DMT_UINT32, ACPI_HMAT0_OFFSET (Reserved2), "Reserved2", 0},
> + {ACPI_DMT_UINT64, ACPI_HMAT0_OFFSET (PhysicalAddressBase), "Physical Address Range Base", 0},
> + {ACPI_DMT_UINT64, ACPI_HMAT0_OFFSET (PhysicalAddressLength), "Physical Address Range Size", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0x01: System Locality Latency and Bandwidth Information */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_HMAT1_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAGS4_0, ACPI_HMAT1_FLAG_OFFSET (Flags,0), "Memory Hierarchy", 0},
> + {ACPI_DMT_UINT8, ACPI_HMAT1_OFFSET (DataType), "Data Type", 0},
> + {ACPI_DMT_UINT16, ACPI_HMAT1_OFFSET (Reserved1), "Reserved1", 0},
> + {ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (NumberOfInitiatorPDs), "Initiator Proximity Domains #", 0},
> + {ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (NumberOfTargetPDs), "Target Proximity Domains #", 0},
> + {ACPI_DMT_UINT32, ACPI_HMAT1_OFFSET (Reserved2), "Reserved2", 0},
> + {ACPI_DMT_UINT64, ACPI_HMAT1_OFFSET (EntryBaseUnit), "Entry Base Unit", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1a[] =
> +{
> + {ACPI_DMT_UINT32, 0, "Initiator Proximity Domain List", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1b[] =
> +{
> + {ACPI_DMT_UINT32, 0, "Target Proximity Domain List", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmat1c[] =
> +{
> + {ACPI_DMT_UINT16, 0, "Entry", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0x02: Memory Side Cache Information */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmat2[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_HMAT2_OFFSET (MemoryPD), "Memory Proximity Domain", 0},
> + {ACPI_DMT_UINT32, ACPI_HMAT2_OFFSET (Reserved1), "Reserved1", 0},
> + {ACPI_DMT_UINT64, ACPI_HMAT2_OFFSET (CacheSize), "Memory Side Cache Size", 0},
> + {ACPI_DMT_UINT32, ACPI_HMAT2_OFFSET (CacheAttributes), "Cache Attributes (decoded below)", 0},
> + {ACPI_DMT_FLAGS4_0, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Total Cache Levels", 0},
> + {ACPI_DMT_FLAGS4_4, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Level", 0},
> + {ACPI_DMT_FLAGS4_8, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Associativity", 0},
> + {ACPI_DMT_FLAGS4_12, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Write Policy", 0},
> + {ACPI_DMT_FLAGS16_16, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Line Size", 0},
> + {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (Reserved2), "Reserved2", 0},
> + {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (NumberOfSMBIOSHandles), "SMBIOS Handle #", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHmat2a[] =
> +{
> + {ACPI_DMT_UINT16, 0, "SMBIOS Handle", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * HPET - High Precision Event Timer table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoHpet[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_HPET_OFFSET (Id), "Hardware Block ID", 0},
> + {ACPI_DMT_GAS, ACPI_HPET_OFFSET (Address), "Timer Block Register", 0},
> + {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Sequence), "Sequence Number", 0},
> + {ACPI_DMT_UINT16, ACPI_HPET_OFFSET (MinimumTick), "Minimum Clock Ticks", 0},
> + {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_HPET_FLAG_OFFSET (Flags,0), "4K Page Protect", 0},
> + {ACPI_DMT_FLAG1, ACPI_HPET_FLAG_OFFSET (Flags,0), "64K Page Protect", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +/*! [End] no source code translation !*/
> diff --git a/src/acpica/source/common/dmtbinfo2.c b/src/acpica/source/common/dmtbinfo2.c
> new file mode 100644
> index 00000000..a925ac1f
> --- /dev/null
> +++ b/src/acpica/source/common/dmtbinfo2.c
> @@ -0,0 +1,1541 @@
> +/******************************************************************************
> + *
> + * Module Name: dmtbinfo2 - Table info for non-AML tables
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
> + * All rights reserved.
> + *
> + * 2. License
> + *
> + * 2.1. This is your license from Intel Corp. under its intellectual property
> + * rights. You may have additional license terms from the party that provided
> + * you this software, covering your right to use that party's intellectual
> + * property rights.
> + *
> + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
> + * copy of the source code appearing in this file ("Covered Code") an
> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the
> + * base code distributed originally by Intel ("Original Intel Code") to copy,
> + * make derivatives, distribute, use and display any portion of the Covered
> + * Code in any form, with the right to sublicense such rights; and
> + *
> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
> + * license (with the right to sublicense), under only those claims of Intel
> + * patents that are infringed by the Original Intel Code, to make, use, sell,
> + * offer to sell, and import the Covered Code and derivative works thereof
> + * solely to the minimum extent necessary to exercise the above copyright
> + * license, and in no event shall the patent license extend to any additions
> + * to or modifications of the Original Intel Code. No other license or right
> + * is granted directly or by implication, estoppel or otherwise;
> + *
> + * The above copyright and patent license is granted only if the following
> + * conditions are met:
> + *
> + * 3. Conditions
> + *
> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification with rights to further distribute source must include
> + * the above Copyright Notice, the above License, this list of Conditions,
> + * and the following Disclaimer and Export Compliance provision. In addition,
> + * Licensee must cause all Covered Code to which Licensee contributes to
> + * contain a file documenting the changes Licensee made to create that Covered
> + * Code and the date of any change. Licensee must include in that file the
> + * documentation of any changes made by any predecessor Licensee. Licensee
> + * must include a prominent statement that the modification is derived,
> + * directly or indirectly, from Original Intel Code.
> + *
> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification without rights to further distribute source must
> + * include the following Disclaimer and Export Compliance provision in the
> + * documentation and/or other materials provided with distribution. In
> + * addition, Licensee may not authorize further sublicense of source of any
> + * portion of the Covered Code, and must include terms to the effect that the
> + * license from Licensee to its licensee is limited to the intellectual
> + * property embodied in the software Licensee provides to its licensee, and
> + * not to intellectual property embodied in modifications its licensee may
> + * make.
> + *
> + * 3.3. Redistribution of Executable. Redistribution in executable form of any
> + * substantial portion of the Covered Code or modification must reproduce the
> + * above Copyright Notice, and the following Disclaimer and Export Compliance
> + * provision in the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * 3.4. Intel retains all right, title, and interest in and to the Original
> + * Intel Code.
> + *
> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by
> + * Intel shall be used in advertising or otherwise to promote the sale, use or
> + * other dealings in products derived from or relating to the Covered Code
> + * without prior written authorization from Intel.
> + *
> + * 4. Disclaimer and Export Compliance
> + *
> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
> + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
> + * PARTICULAR PURPOSE.
> + *
> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
> + * LIMITED REMEDY.
> + *
> + * 4.3. Licensee shall not export, either directly or indirectly, any of this
> + * software or system incorporating such software without first obtaining any
> + * required license or other approval from the U. S. Department of Commerce or
> + * any other agency or department of the United States Government. In the
> + * event Licensee exports any such software from the United States or
> + * re-exports any such software from a foreign destination, Licensee shall
> + * ensure that the distribution and export/re-export of the software is in
> + * compliance with all laws, regulations, orders, or other restrictions of the
> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor
> + * any of its subsidiaries will export/re-export any technical data, process,
> + * software, or service, directly or indirectly, to any country for which the
> + * United States government or any agency thereof requires an export license,
> + * other governmental approval, or letter of assurance, without first obtaining
> + * such license, approval or letter.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions, and the following disclaimer,
> + * without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + * substantially similar to the "NO WARRANTY" disclaimer below
> + * ("Disclaimer") and any redistribution must be conditioned upon
> + * including a substantially similar Disclaimer requirement for further
> + * binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + * of any contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "acpi.h"
> +#include "accommon.h"
> +#include "acdisasm.h"
> +#include "actbinfo.h"
> +
> +/* This module used for application-level code only */
> +
> +#define _COMPONENT ACPI_CA_DISASSEMBLER
> + ACPI_MODULE_NAME ("dmtbinfo2")
> +
> +/*
> + * How to add a new table:
> + *
> + * - Add the C table definition to the actbl1.h or actbl2.h header.
> + * - Add ACPI_xxxx_OFFSET macro(s) for the table (and subtables) to list below.
> + * - Define the table in this file (for the disassembler). If any
> + * new data types are required (ACPI_DMT_*), see below.
> + * - Add an external declaration for the new table definition (AcpiDmTableInfo*)
> + * in acdisam.h
> + * - Add new table definition to the dispatch table in dmtable.c (AcpiDmTableData)
> + * If a simple table (with no subtables), no disassembly code is needed.
> + * Otherwise, create the AcpiDmDump* function for to disassemble the table
> + * and add it to the dmtbdump.c file.
> + * - Add an external declaration for the new AcpiDmDump* function in acdisasm.h
> + * - Add the new AcpiDmDump* function to the dispatch table in dmtable.c
> + * - Create a template for the new table
> + * - Add data table compiler support
> + *
> + * How to add a new data type (ACPI_DMT_*):
> + *
> + * - Add new type at the end of the ACPI_DMT list in acdisasm.h
> + * - Add length and implementation cases in dmtable.c (disassembler)
> + * - Add type and length cases in dtutils.c (DT compiler)
> + */
> +
> +/*
> + * Remaining tables are not consumed directly by the ACPICA subsystem
> + */
> +
> +
> +/*******************************************************************************
> + *
> + * IORT - IO Remapping Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (NodeCount), "Node Count", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (NodeOffset), "Node Offset", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Optional padding field */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[] =
> +{
> + {ACPI_DMT_RAW_BUFFER, 0, "Optional Padding", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Type), "Type", 0},
> + {ACPI_DMT_UINT16, ACPI_IORTH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT8, ACPI_IORTH_OFFSET (Revision), "Revision", 0},
> + {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingCount), "Mapping Count", 0},
> + {ACPI_DMT_UINT32, ACPI_IORTH_OFFSET (MappingOffset), "Mapping Offset", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (InputBase), "Input base", DT_OPTIONAL},
> + {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (IdCount), "ID Count", 0},
> + {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (OutputBase), "Output Base", 0},
> + {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (OutputReference), "Output Reference", 0},
> + {ACPI_DMT_UINT32, ACPI_IORTM_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_IORTM_FLAG_OFFSET (Flags, 0), "Single Mapping", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIortAcc[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_IORTA_OFFSET (CacheCoherency), "Cache Coherency", 0},
> + {ACPI_DMT_UINT8, ACPI_IORTA_OFFSET (Hints), "Hints (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Transient", 0},
> + {ACPI_DMT_FLAG1, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Write Allocate", 0},
> + {ACPI_DMT_FLAG2, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Read Allocate", 0},
> + {ACPI_DMT_FLAG3, ACPI_IORTA_FLAG_OFFSET (Hints, 0), "Override", 0},
> + {ACPI_DMT_UINT16, ACPI_IORTA_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_IORTA_OFFSET (MemoryFlags), "Memory Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Coherency", 0},
> + {ACPI_DMT_FLAG1, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Device Attribute", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* IORT subtables */
> +
> +/* 0x00: ITS Group */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort0[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_IORT0_OFFSET (ItsCount), "ItsCount", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort0a[] =
> +{
> + {ACPI_DMT_UINT32, 0, "Identifiers", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0x01: Named Component */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_IORT1_OFFSET (NodeFlags), "Node Flags", 0},
> + {ACPI_DMT_IORTMEM, ACPI_IORT1_OFFSET (MemoryProperties), "Memory Properties", 0},
> + {ACPI_DMT_UINT8, ACPI_IORT1_OFFSET (MemoryAddressLimit), "Memory Size Limit", 0},
> + {ACPI_DMT_STRING, ACPI_IORT1_OFFSET (DeviceName[0]), "Device Name", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort1a[] =
> +{
> + {ACPI_DMT_RAW_BUFFER, 0, "Padding", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0x02: PCI Root Complex */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort2[] =
> +{
> + {ACPI_DMT_IORTMEM, ACPI_IORT2_OFFSET (MemoryProperties), "Memory Properties", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT2_OFFSET (AtsAttribute), "ATS Attribute", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT2_OFFSET (PciSegmentNumber), "PCI Segment Number", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0x03: SMMUv1/2 */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort3[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_IORT3_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_IORT3_OFFSET (Span), "Span", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (Model), "Model", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_IORT3_FLAG_OFFSET (Flags, 0), "DVM Supported", 0},
> + {ACPI_DMT_FLAG1, ACPI_IORT3_FLAG_OFFSET (Flags, 0), "Coherent Walk", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (GlobalInterruptOffset), "Global Interrupt Offset", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (ContextInterruptCount), "Context Interrupt Count", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (ContextInterruptOffset), "Context Interrupt Offset", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (PmuInterruptCount), "PMU Interrupt Count", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3_OFFSET (PmuInterruptOffset), "PMU Interrupt Offset", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort3a[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_IORT3A_OFFSET (NSgIrpt), "NSgIrpt", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3A_OFFSET (NSgIrptFlags), "NSgIrpt Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_IORT3a_FLAG_OFFSET (NSgIrptFlags, 0), "Edge Triggered", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3A_OFFSET (NSgCfgIrpt), "NSgCfgIrpt", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT3A_OFFSET (NSgCfgIrptFlags), "NSgCfgIrpt Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_IORT3a_FLAG_OFFSET (NSgCfgIrptFlags, 0), "Edge Triggered", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort3b[] =
> +{
> + {ACPI_DMT_UINT64, 0, "Context Interrupt", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort3c[] =
> +{
> + {ACPI_DMT_UINT64, 0, "PMU Interrupt", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0x04: SMMUv3 */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIort4[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "COHACC Override", 0},
> + {ACPI_DMT_FLAG1, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "HTTU Override", 0},
> + {ACPI_DMT_FLAG3, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "Proximity Domain Valid", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (VatosAddress), "VATOS Address", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Model), "Model", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (EventGsiv), "Event GSIV", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (PriGsiv), "PRI GSIV", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (GerrGsiv), "GERR GSIV", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (SyncGsiv), "Sync GSIV", 0},
> + {ACPI_DMT_UINT8, ACPI_IORT4_OFFSET (Pxm), "Proximity Domain", 0},
> + {ACPI_DMT_UINT8, ACPI_IORT4_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_IORT4_OFFSET (Reserved2), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (IdMappingIndex), "Device ID Mapping Index", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * IVRS - I/O Virtualization Reporting Structure
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_IVRS_OFFSET (Info), "Virtualization Info", 0},
> + {ACPI_DMT_UINT64, ACPI_IVRS_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[] =
> +{
> + {ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags", 0},
> + {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* IVRS subtables */
> +
> +/* 0x10: I/O Virtualization Hardware Definition (IVHD) Block */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (CapabilityOffset), "Capability Offset", 0},
> + {ACPI_DMT_UINT64, ACPI_IVRS0_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (PciSegmentGroup), "PCI Segment Group", 0},
> + {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (Info), "Virtualization Info", 0},
> + {ACPI_DMT_UINT32, ACPI_IVRS0_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Block */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_IVRS1_OFFSET (AuxData), "Auxiliary Data", 0},
> + {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (StartAddress), "Start Address", 0},
> + {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (MemoryLength), "Memory Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Device entry header for IVHD block */
> +
> +#define ACPI_DMT_IVRS_DE_HEADER \
> + {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (Type), "Entry Type", 0}, \
> + {ACPI_DMT_UINT16, ACPI_IVRSD_OFFSET (Id), "Device ID", 0}, \
> + {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (DataSetting), "Data Setting", 0}
> +
> +/* 4-byte device entry */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[] =
> +{
> + ACPI_DMT_IVRS_DE_HEADER,
> + {ACPI_DMT_EXIT, 0, NULL, 0},
> +};
> +
> +/* 8-byte device entry */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[] =
> +{
> + ACPI_DMT_IVRS_DE_HEADER,
> + {ACPI_DMT_UINT8, ACPI_IVRS8A_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_IVRS8A_OFFSET (UsedId), "Source Used Device ID", 0},
> + {ACPI_DMT_UINT8, ACPI_IVRS8A_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 8-byte device entry */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[] =
> +{
> + ACPI_DMT_IVRS_DE_HEADER,
> + {ACPI_DMT_UINT32, ACPI_IVRS8B_OFFSET (ExtendedData), "Extended Data", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 8-byte device entry */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[] =
> +{
> + ACPI_DMT_IVRS_DE_HEADER,
> + {ACPI_DMT_UINT8, ACPI_IVRS8C_OFFSET (Handle), "Handle", 0},
> + {ACPI_DMT_UINT16, ACPI_IVRS8C_OFFSET (UsedId), "Source Used Device ID", 0},
> + {ACPI_DMT_UINT8, ACPI_IVRS8C_OFFSET (Variety), "Variety", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * LPIT - Low Power Idle Table
> + *
> + ******************************************************************************/
> +
> +/* Main table consists only of the standard ACPI table header */
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoLpitHdr[] =
> +{
> + {ACPI_DMT_LPIT, ACPI_LPITH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT32, ACPI_LPITH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT16, ACPI_LPITH_OFFSET (UniqueId), "Unique ID", 0},
> + {ACPI_DMT_UINT16, ACPI_LPITH_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_LPITH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_LPITH_FLAG_OFFSET (Flags, 0), "State Disabled", 0},
> + {ACPI_DMT_FLAG1, ACPI_LPITH_FLAG_OFFSET (Flags, 0), "No Counter", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* LPIT Subtables */
> +
> +/* 0: Native C-state */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoLpit0[] =
> +{
> + {ACPI_DMT_GAS, ACPI_LPIT0_OFFSET (EntryTrigger), "Entry Trigger", 0},
> + {ACPI_DMT_UINT32, ACPI_LPIT0_OFFSET (Residency), "Residency", 0},
> + {ACPI_DMT_UINT32, ACPI_LPIT0_OFFSET (Latency), "Latency", 0},
> + {ACPI_DMT_GAS, ACPI_LPIT0_OFFSET (ResidencyCounter), "Residency Counter", 0},
> + {ACPI_DMT_UINT64, ACPI_LPIT0_OFFSET (CounterFrequency), "Counter Frequency", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * MADT - Multiple APIC Description Table and subtables
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Address), "Local Apic Address", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MADT_FLAG_OFFSET (Flags,0), "PC-AT Compatibility", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[] =
> +{
> + {ACPI_DMT_MADT, ACPI_MADTH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_MADTH_OFFSET (Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* MADT Subtables */
> +
> +/* 0: processor APIC */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (ProcessorId), "Processor ID", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (Id), "Local Apic ID", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT0_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MADT0_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: IO APIC */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Id), "I/O Apic ID", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (Address), "Address", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (GlobalIrqBase), "Interrupt", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: Interrupt Override */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt2[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (Bus), "Bus", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (SourceIrq), "Source", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT2_OFFSET (GlobalIrq), "Interrupt", 0},
> + {ACPI_DMT_UINT16, ACPI_MADT2_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAGS0, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> + {ACPI_DMT_FLAGS2, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 3: NMI Sources */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt3[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT3_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAGS0, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> + {ACPI_DMT_FLAGS2, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT3_OFFSET (GlobalIrq), "Interrupt", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 4: Local APIC NMI */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt4[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (ProcessorId), "Processor ID", 0},
> + {ACPI_DMT_UINT16, ACPI_MADT4_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAGS0, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> + {ACPI_DMT_FLAGS2, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (Lint), "Interrupt Input LINT", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 5: Address Override */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt5[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT5_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT5_OFFSET (Address), "APIC Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 6: I/O Sapic */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt6[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Id), "I/O Sapic ID", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT6_OFFSET (GlobalIrqBase), "Interrupt Base", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT6_OFFSET (Address), "Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 7: Local Sapic */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (ProcessorId), "Processor ID", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Id), "Local Sapic ID", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Eid), "Local Sapic EID", 0},
> + {ACPI_DMT_UINT24, ACPI_MADT7_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MADT7_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (Uid), "Processor UID", 0},
> + {ACPI_DMT_STRING, ACPI_MADT7_OFFSET (UidString[0]), "Processor UID String", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 8: Platform Interrupt Source */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT8_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAGS0, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> + {ACPI_DMT_FLAGS2, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Type), "InterruptType", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Id), "Processor ID", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Eid), "Processor EID", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (IoSapicVector), "I/O Sapic Vector", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (GlobalIrq), "Interrupt", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MADT8_OFFSET (Flags), "CPEI Override", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 9: Processor Local X2_APIC (ACPI 4.0) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt9[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT9_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (LocalApicId), "Processor x2Apic ID", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MADT9_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (Uid), "Processor UID", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 10: Local X2_APIC NMI (ACPI 4.0) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt10[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT10_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAGS0, ACPI_MADT10_FLAG_OFFSET (IntiFlags,0), "Polarity", 0},
> + {ACPI_DMT_FLAGS2, ACPI_MADT10_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT10_OFFSET (Uid), "Processor UID", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT10_OFFSET (Lint), "Interrupt Input LINT", 0},
> + {ACPI_DMT_UINT24, ACPI_MADT10_OFFSET (Reserved[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 11: Generic Interrupt Controller (ACPI 5.0) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (CpuInterfaceNumber), "CPU Interface Number", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Uid), "Processor UID", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Processor Enabled", 0},
> + {ACPI_DMT_FLAG1, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Performance Interrupt Trigger Mode", 0},
> + {ACPI_DMT_FLAG2, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Virtual GIC Interrupt Trigger Mode", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (ParkingVersion), "Parking Protocol Version", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (PerformanceInterrupt), "Performance Interrupt", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ParkedAddress), "Parked Address", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicvBaseAddress), "Virtual GIC Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GichBaseAddress), "Hypervisor GIC Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (VgicInterrupt), "Virtual GIC Interrupt", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (GicrBaseAddress), "Redistributor Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ArmMpidr), "ARM MPIDR", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT11_OFFSET (EfficiencyClass), "Efficiency Class", 0},
> + {ACPI_DMT_UINT24, ACPI_MADT11_OFFSET (Reserved2[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 12: Generic Interrupt Distributor (ACPI 5.0) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT12_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GicId), "Local GIC Hardware ID", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT12_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GlobalIrqBase), "Interrupt Base", 0},
> + {ACPI_DMT_UINT8, ACPI_MADT12_OFFSET (Version), "Version", 0},
> + {ACPI_DMT_UINT24, ACPI_MADT12_OFFSET (Reserved2[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 13: Generic MSI Frame (ACPI 5.1) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt13[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT13_OFFSET (MsiFrameId), "MSI Frame ID", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT13_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT13_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MADT13_FLAG_OFFSET (Flags,0), "Select SPI", 0},
> + {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (SpiCount), "SPI Count", 0},
> + {ACPI_DMT_UINT16, ACPI_MADT13_OFFSET (SpiBase), "SPI Base", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 14: Generic Redistributor (ACPI 5.1) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt14[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT14_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT14_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT14_OFFSET (Length), "Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 15: Generic Translator (ACPI 6.0) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMadt15[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MADT15_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT15_OFFSET (TranslationId), "Translation ID", 0},
> + {ACPI_DMT_UINT64, ACPI_MADT15_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_MADT15_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * MCFG - PCI Memory Mapped Configuration table and Subtable
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_MCFG_OFFSET (Reserved[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_MCFG0_OFFSET (Address), "Base Address", 0},
> + {ACPI_DMT_UINT16, ACPI_MCFG0_OFFSET (PciSegment), "Segment Group Number", 0},
> + {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (StartBusNumber), "Start Bus Number", 0},
> + {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (EndBusNumber), "End Bus Number", 0},
> + {ACPI_DMT_UINT32, ACPI_MCFG0_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * MCHI - Management Controller Host Interface table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterfaceType), "Interface Type", 0},
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Protocol), "Protocol", 0},
> + {ACPI_DMT_UINT64, ACPI_MCHI_OFFSET (ProtocolData), "Protocol Data", 0},
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterruptType), "Interrupt Type", 0},
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Gpe), "Gpe", 0},
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDeviceFlag), "Pci Device Flag", 0},
> + {ACPI_DMT_UINT32, ACPI_MCHI_OFFSET (GlobalInterrupt), "Global Interrupt", 0},
> + {ACPI_DMT_GAS, ACPI_MCHI_OFFSET (ControlRegister), "Control Register", 0},
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciSegment), "Pci Segment", 0},
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciBus), "Pci Bus", 0},
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDevice), "Pci Device", 0},
> + {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciFunction), "Pci Function", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * MPST - Memory Power State Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MPST_OFFSET (ChannelId), "Channel ID", 0},
> + {ACPI_DMT_UINT24, ACPI_MPST_OFFSET (Reserved1[0]), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (PowerNodeCount), "Power Node Count", 0},
> + {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* MPST subtables */
> +
> +/* 0: Memory Power Node Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Node Enabled", 0},
> + {ACPI_DMT_FLAG1, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Power Managed", 0},
> + {ACPI_DMT_FLAG2, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Hot Plug Capable", 0},
> +
> + {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (NodeId), "Node ID", 0},
> + {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (Length), "Length", 0},
> + {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeAddress), "Range Address", 0},
> + {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeLength), "Range Length", 0},
> + {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0},
> + {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0A: Sub-subtable - Memory Power State Structure (follows Memory Power Node above) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0A[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (PowerState), "Power State", 0},
> + {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (InfoIndex), "InfoIndex", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0B: Sub-subtable - Physical Component ID Structure (follows Memory Power State(s) above) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MPST0B_OFFSET (ComponentId), "Component Id", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 01: Power Characteristics Count (follows all Power Node(s) above) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (CharacteristicsCount), "Characteristics Count", 0},
> + {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 02: Memory Power State Characteristics Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (StructureId), "Structure ID", 0},
> + {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Memory Preserved", 0},
> + {ACPI_DMT_FLAG1, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Entry", 0},
> + {ACPI_DMT_FLAG2, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Exit", 0},
> +
> + {ACPI_DMT_UINT16, ACPI_MPST2_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (AveragePower), "Average Power", 0},
> + {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (PowerSaving), "Power Saving", 0},
> + {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (ExitLatency), "Exit Latency", 0},
> + {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * MSCT - Maximum System Characteristics Table (ACPI 4.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMsct[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (ProximityOffset), "Proximity Offset", 0},
> + {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (MaxProximityDomains), "Max Proximity Domains", 0},
> + {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (MaxClockDomains), "Max Clock Domains", 0},
> + {ACPI_DMT_UINT64, ACPI_MSCT_OFFSET (MaxAddress), "Max Physical Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Subtable - Maximum Proximity Domain Information. Version 1 */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMsct0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_MSCT0_OFFSET (Revision), "Revision", 0},
> + {ACPI_DMT_UINT8, ACPI_MSCT0_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (RangeStart), "Domain Range Start", 0},
> + {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (RangeEnd), "Domain Range End", 0},
> + {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (ProcessorCapacity), "Processor Capacity", 0},
> + {ACPI_DMT_UINT64, ACPI_MSCT0_OFFSET (MemoryCapacity), "Memory Capacity", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * MTMR - MID Timer Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr[] =
> +{
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* MTMR Subtables - MTMR Entry */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr0[] =
> +{
> + {ACPI_DMT_GAS, ACPI_MTMR0_OFFSET (PhysicalAddress), "PhysicalAddress", 0},
> + {ACPI_DMT_UINT32, ACPI_MTMR0_OFFSET (Frequency), "Frequency", 0},
> + {ACPI_DMT_UINT32, ACPI_MTMR0_OFFSET (Irq), "IRQ", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * NFIT - NVDIMM Firmware Interface Table and Subtables - (ACPI 6.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_NFIT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfitHdr[] =
> +{
> + {ACPI_DMT_NFIT, ACPI_NFITH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT16, ACPI_NFITH_OFFSET (Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: System Physical Address Range Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit0[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_NFIT0_OFFSET (RangeIndex), "Range Index", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Add/Online Operation Only", 0},
> + {ACPI_DMT_FLAG1, ACPI_NFIT0_FLAG_OFFSET (Flags,0), "Proximity Domain Valid", 0},
> + {ACPI_DMT_UINT32, ACPI_NFIT0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_NFIT0_OFFSET (ProximityDomain), "Proximity Domain", 0},
> + {ACPI_DMT_UUID, ACPI_NFIT0_OFFSET (RangeGuid[0]), "Address Range GUID", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (Address), "Address Range Base", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (Length), "Address Range Length", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT0_OFFSET (MemoryMapping), "Memory Map Attribute", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Memory Device to System Address Range Map Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_NFIT1_OFFSET (DeviceHandle), "Device Handle", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (PhysicalId), "Physical Id", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RegionId), "Region Id", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RangeIndex), "Range Index", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (RegionIndex), "Control Region Index", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (RegionSize), "Region Size", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (RegionOffset), "Region Offset", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT1_OFFSET (Address), "Address Region Base", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (InterleaveIndex), "Interleave Index", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (InterleaveWays), "Interleave Ways", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (Flags), "Flags", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Save to device failed", 0},
> + {ACPI_DMT_FLAG1, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Restore from device failed", 0},
> + {ACPI_DMT_FLAG2, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Platform flush failed", 0},
> + {ACPI_DMT_FLAG3, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Device not armed", 0},
> + {ACPI_DMT_FLAG4, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Health events observed", 0},
> + {ACPI_DMT_FLAG5, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Health events enabled", 0},
> + {ACPI_DMT_FLAG6, ACPI_NFIT1_FLAG_OFFSET (Flags,0), "Mapping failed", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT1_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: Interleave Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit2[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_NFIT2_OFFSET (InterleaveIndex), "Interleave Index", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT2_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_NFIT2_OFFSET (LineCount), "Line Count", 0},
> + {ACPI_DMT_UINT32, ACPI_NFIT2_OFFSET (LineSize), "Line Size", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit2a[] =
> +{
> + {ACPI_DMT_UINT32, 0, "Line Offset", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 3: SMBIOS Management Information Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit3[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_NFIT3_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit3a[] =
> +{
> + {ACPI_DMT_RAW_BUFFER, 0, "SMBIOS Table Entries", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 4: NVDIMM Control Region Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit4[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (RegionIndex), "Region Index", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (VendorId), "Vendor Id", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (DeviceId), "Device Id", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (RevisionId), "Revision Id", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemVendorId), "Subsystem Vendor Id", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemDeviceId), "Subsystem Device Id", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemRevisionId), "Subsystem Revision Id", 0},
> + {ACPI_DMT_UINT8, ACPI_NFIT4_OFFSET (ValidFields), "Valid Fields", 0},
> + {ACPI_DMT_UINT8, ACPI_NFIT4_OFFSET (ManufacturingLocation), "Manufacturing Location", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (ManufacturingDate), "Manufacturing Date", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_NFIT4_OFFSET (SerialNumber), "Serial Number", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Code), "Code", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Windows), "Window Count", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (WindowSize), "Window Size", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (CommandOffset), "Command Offset", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (CommandSize), "Command Size", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (StatusOffset), "Status Offset", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT4_OFFSET (StatusSize), "Status Size", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Flags), "Flags", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_NFIT4_FLAG_OFFSET (Flags,0), "Windows buffered", 0},
> + {ACPI_DMT_UINT48, ACPI_NFIT4_OFFSET (Reserved1[0]), "Reserved1", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 5: NVDIMM Block Data Window Region Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit5[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_NFIT5_OFFSET (RegionIndex), "Region Index", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT5_OFFSET (Windows), "Window Count", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Offset), "Offset", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Size), "Size", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (Capacity), "Capacity", 0},
> + {ACPI_DMT_UINT64, ACPI_NFIT5_OFFSET (StartAddress), "Start Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 6: Flush Hint Address Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_NFIT6_OFFSET (DeviceHandle), "Device Handle", 0},
> + {ACPI_DMT_UINT16, ACPI_NFIT6_OFFSET (HintCount), "Hint Count", 0},
> + {ACPI_DMT_UINT48, ACPI_NFIT6_OFFSET (Reserved[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit6a[] =
> +{
> + {ACPI_DMT_UINT64, 0, "Hint Address", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoNfit7[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_NFIT7_OFFSET (HighestCapability), "Highest Capability", 0},
> + {ACPI_DMT_UINT24, ACPI_NFIT7_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_NFIT7_OFFSET (Capabilities), "Capabilities (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Cache Flush to NVDIMM", 0},
> + {ACPI_DMT_FLAG1, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Memory Flush to MVDIMM", 0},
> + {ACPI_DMT_FLAG2, ACPI_NFIT7_FLAG_OFFSET (Capabilities,0), "Memory Mirroring", 0},
> + {ACPI_DMT_UINT32, ACPI_NFIT7_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * PCCT - Platform Communications Channel Table (ACPI 5.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcct[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PCCT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PCCT_FLAG_OFFSET (Flags,0), "Platform", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* PCCT subtables */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcctHdr[] =
> +{
> + {ACPI_DMT_PCCT, ACPI_PCCT0_OFFSET (Header.Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT0_OFFSET (Header.Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: Generic Communications Subspace */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcct0[] =
> +{
> + {ACPI_DMT_UINT48, ACPI_PCCT0_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (Length), "Address Length", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT0_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (PreserveMask), "Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (WriteMask), "Write Mask", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT0_OFFSET (Latency), "Command Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT0_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> + {ACPI_DMT_UINT16, ACPI_PCCT0_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: HW-reduced Communications Subspace (ACPI 5.1) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcct1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (PlatformInterrupt), "Platform Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT1_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PCCT1_FLAG_OFFSET (Flags,0), "Polarity", 0},
> + {ACPI_DMT_FLAG1, ACPI_PCCT1_FLAG_OFFSET (Flags,0), "Mode", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (Length), "Address Length", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT1_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (PreserveMask), "Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT1_OFFSET (WriteMask), "Write Mask", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (Latency), "Command Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT1_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> + {ACPI_DMT_UINT16, ACPI_PCCT1_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcct2[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PCCT2_OFFSET (PlatformInterrupt), "Platform Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT2_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PCCT2_FLAG_OFFSET (Flags,0), "Polarity", 0},
> + {ACPI_DMT_FLAG1, ACPI_PCCT2_FLAG_OFFSET (Flags,0), "Mode", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT2_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (Length), "Address Length", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT2_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (PreserveMask), "Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (WriteMask), "Write Mask", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT2_OFFSET (Latency), "Command Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT2_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> + {ACPI_DMT_UINT16, ACPI_PCCT2_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT2_OFFSET (PlatformAckRegister), "Platform ACK Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (AckPreserveMask), "ACK Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT2_OFFSET (AckWriteMask), "ACK Write Mask", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 3: Extended PCC Master Subspace Type 3 (ACPI 6.2) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcct3[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (PlatformInterrupt), "Platform Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT3_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PCCT3_FLAG_OFFSET (Flags,0), "Polarity", 0},
> + {ACPI_DMT_FLAG1, ACPI_PCCT3_FLAG_OFFSET (Flags,0), "Mode", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT3_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (Length), "Address Length", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (PreserveMask), "Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (WriteMask), "Write Mask", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (Latency), "Command Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT3_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (PlatformAckRegister), "Platform ACK Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (AckPreserveMask), "ACK Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (AckSetMask), "ACK Set Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (Reserved2), "Reserved", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (CmdCompleteRegister), "Command Complete Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (CmdCompleteMask), "Command Complete Check Mask", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (CmdUpdateRegister), "Command Update Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (CmdUpdatePreserveMask), "Command Update Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (CmdUpdateSetMask), "Command Update Set Mask", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT3_OFFSET (ErrorStatusRegister), "Error Status Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT3_OFFSET (ErrorStatusMask), "Error Status Mask", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 4: Extended PCC Slave Subspace Type 4 (ACPI 6.2) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPcct4[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (PlatformInterrupt), "Platform Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT4_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PCCT4_FLAG_OFFSET (Flags,0), "Polarity", 0},
> + {ACPI_DMT_FLAG1, ACPI_PCCT4_FLAG_OFFSET (Flags,0), "Mode", 0},
> + {ACPI_DMT_UINT8, ACPI_PCCT4_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (Length), "Address Length", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (DoorbellRegister), "Doorbell Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (PreserveMask), "Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (WriteMask), "Write Mask", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (Latency), "Command Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (MaxAccessRate), "Maximum Access Rate", 0},
> + {ACPI_DMT_UINT32, ACPI_PCCT4_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (PlatformAckRegister), "Platform ACK Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (AckPreserveMask), "ACK Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (AckSetMask), "ACK Set Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (Reserved2), "Reserved", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (CmdCompleteRegister), "Command Complete Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (CmdCompleteMask), "Command Complete Check Mask", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (CmdUpdateRegister), "Command Update Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (CmdUpdatePreserveMask), "Command Update Preserve Mask", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (CmdUpdateSetMask), "Command Update Set Mask", 0},
> + {ACPI_DMT_GAS, ACPI_PCCT4_OFFSET (ErrorStatusRegister), "Error Status Register", 0},
> + {ACPI_DMT_UINT64, ACPI_PCCT4_OFFSET (ErrorStatusMask), "Error Status Mask", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * PDTT - Platform Debug Trigger Table (ACPI 6.2)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_PDTT_OFFSET (TriggerCount), "Trigger Count", 0},
> + {ACPI_DMT_UINT24, ACPI_PDTT_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_PDTT_OFFSET (ArrayOffset), "Array Offset", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPdtt0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_PDTT0_OFFSET (SubchannelId), "Subchannel Id", 0},
> + {ACPI_DMT_UINT8, ACPI_PDTT0_OFFSET (Flags), "Flags (Decoded Below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PDTT0_FLAG_OFFSET (Flags,0), "Runtime Trigger", 0},
> + {ACPI_DMT_FLAG1, ACPI_PDTT0_FLAG_OFFSET (Flags,0), "Wait for Completion", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * PMTT - Platform Memory Topology Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PMTT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[] =
> +{
> + {ACPI_DMT_PMTT, ACPI_PMTTH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_PMTTH_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Top-level Device", 0},
> + {ACPI_DMT_FLAG1, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Physical Element", 0},
> + {ACPI_DMT_FLAGS2, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Memory Type", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* PMTT Subtables */
> +
> +/* 0: Socket */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (SocketId), "Socket ID", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Memory Controller */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadLatency), "Read Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteLatency), "Write Latency", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadBandwidth), "Read Bandwidth", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteBandwidth), "Write Bandwidth", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (AccessWidth), "Access Width", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Alignment), "Alignment", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (DomainCount), "Domain Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1a: Proximity Domain */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_PMTT1A_OFFSET (ProximityDomain), "Proximity Domain", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: Physical Component */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (ComponentId), "Component ID", 0},
> + {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (MemorySize), "Memory Size", 0},
> + {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (BiosHandle), "Bios Handle", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * PPTT - Processor Properties Topology Table (ACPI 6.2)
> + *
> + ******************************************************************************/
> +
> +/* Main table consists of only the standard ACPI header - subtables follow */
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPpttHdr[] =
> +{
> + {ACPI_DMT_PPTT, ACPI_PPTTH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_PPTTH_OFFSET (Length), "Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: Processor hierarchy node */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPptt0[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_PPTT0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT0_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_PPTT0_FLAG_OFFSET (Flags,0), "Physical package", 0},
> + {ACPI_DMT_FLAG1, ACPI_PPTT0_FLAG_OFFSET (Flags,0), "ACPI Processor ID valid", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT0_OFFSET (Parent), "Parent", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT0_OFFSET (AcpiProcessorId), "ACPI Processor ID", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT0_OFFSET (NumberOfPrivResources), "Private Resource Number", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPptt0a[] =
> +{
> + {ACPI_DMT_UINT32, 0, "Private Resource", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Cache type */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_PPTT1_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Size valid", 0},
> + {ACPI_DMT_FLAG1, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Number of Sets valid", 0},
> + {ACPI_DMT_FLAG2, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Associativity valid", 0},
> + {ACPI_DMT_FLAG3, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Allocation Type valid", 0},
> + {ACPI_DMT_FLAG4, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Cache Type valid", 0},
> + {ACPI_DMT_FLAG5, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Write Policy valid", 0},
> + {ACPI_DMT_FLAG6, ACPI_PPTT1_FLAG_OFFSET (Flags,0), "Line Size valid", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (NextLevelOfCache), "Next Level of Cache", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (Size), "Size", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT1_OFFSET (NumberOfSets), "Number of Sets", 0},
> + {ACPI_DMT_UINT8, ACPI_PPTT1_OFFSET (Associativity), "Associativity", 0},
> + {ACPI_DMT_UINT8, ACPI_PPTT1_OFFSET (Attributes), "Attributes", 0},
> + {ACPI_DMT_FLAGS0, ACPI_PPTT1_OFFSET (Attributes), "Allocation Type", 0},
> + {ACPI_DMT_FLAGS2, ACPI_PPTT1_OFFSET (Attributes), "Cache Type", 0},
> + {ACPI_DMT_FLAG4, ACPI_PPTT1_OFFSET (Attributes), "Write Policy", 0},
> + {ACPI_DMT_UINT16, ACPI_PPTT1_OFFSET (LineSize), "Line Size", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: ID */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoPptt2[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_PPTT2_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_PPTT2_OFFSET (VendorId), "VENDOR_ID", 0},
> + {ACPI_DMT_UINT64, ACPI_PPTT2_OFFSET (Level1Id), "LEVEL_1_ID", 0},
> + {ACPI_DMT_UINT64, ACPI_PPTT2_OFFSET (Level2Id), "LEVEL_2_ID", 0},
> + {ACPI_DMT_UINT16, ACPI_PPTT2_OFFSET (MajorRev), "MAJOR_REV", 0},
> + {ACPI_DMT_UINT16, ACPI_PPTT2_OFFSET (MinorRev), "MINOR_REV", 0},
> + {ACPI_DMT_UINT16, ACPI_PPTT2_OFFSET (SpinRev), "SPIN_REV", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * RASF - RAS Feature table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[] =
> +{
> + {ACPI_DMT_BUF12, ACPI_RASF_OFFSET (ChannelId[0]), "Channel ID", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * S3PT - S3 Performance Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[] =
> +{
> + {ACPI_DMT_SIG, ACPI_S3PT_OFFSET (Signature[0]), "Signature", 0},
> + {ACPI_DMT_UINT32, ACPI_S3PT_OFFSET (Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* S3PT subtable header */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoS3ptHdr[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_S3PTH_OFFSET (Type), "Type", 0},
> + {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Length), "Length", DT_LENGTH},
> + {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Revision), "Revision", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 0: Basic S3 Resume Performance Record */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt0[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_S3PT0_OFFSET (ResumeCount), "Resume Count", 0},
> + {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (FullResume), "Full Resume", 0},
> + {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (AverageResume), "Average Resume", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Basic S3 Suspend Performance Record */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt1[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendStart), "Suspend Start", 0},
> + {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendEnd), "Suspend End", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * SBST - Smart Battery Specification Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (WarningLevel), "Warning Level", 0},
> + {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (LowLevel), "Low Level", 0},
> + {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (CriticalLevel), "Critical Level", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * SDEI - Software Delegated Execption Interface Descriptor Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSdei[] =
> +{
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * SDEV - Secure Devices Table (ACPI 6.2)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSdev[] =
> +{
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSdevHdr[] =
> +{
> + {ACPI_DMT_SDEV, ACPI_SDEVH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_SDEVH_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_SDEVH_FLAG_OFFSET (Flags,0), "Allow handoff to unsecure OS", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEVH_OFFSET (Length), "Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* SDEV Subtables */
> +
> +/* 0: Namespace Device Based Secure Device Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_SDEV0_OFFSET (DeviceIdOffset), "Device ID Offset", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEV0_OFFSET (DeviceIdLength), "Device ID Length", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEV0_OFFSET (VendorDataOffset), "Vendor Data Offset", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEV0_OFFSET (VendorDataLength), "Vendor Data Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSdev0a[] =
> +{
> + {ACPI_DMT_STRING, 0, "Namepath", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: PCIe Endpoint Device Based Device Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (Segment), "Segment", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (StartBus), "Start Bus", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (PathOffset), "Path Offset", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (PathLength), "Path Length", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (VendorDataOffset), "Vendor Data Offset", 0},
> + {ACPI_DMT_UINT16, ACPI_SDEV1_OFFSET (VendorDataLength), "Vendor Data Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1a[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_SDEV1A_OFFSET (Device), "Device", 0},
> + {ACPI_DMT_UINT8, ACPI_SDEV1A_OFFSET (Function), "Function", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1b[] =
> +{
> + {ACPI_DMT_RAW_BUFFER, 0, "Vendor Data", 0}, /*, DT_OPTIONAL}, */
> + ACPI_DMT_TERMINATOR
> +};
> +/*! [End] no source code translation !*/
> diff --git a/src/acpica/source/common/dmtbinfo3.c b/src/acpica/source/common/dmtbinfo3.c
> new file mode 100644
> index 00000000..c82e3db5
> --- /dev/null
> +++ b/src/acpica/source/common/dmtbinfo3.c
> @@ -0,0 +1,733 @@
> +/******************************************************************************
> + *
> + * Module Name: dmtbinfo3 - Table info for non-AML tables
> + *
> + *****************************************************************************/
> +
> +/******************************************************************************
> + *
> + * 1. Copyright Notice
> + *
> + * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
> + * All rights reserved.
> + *
> + * 2. License
> + *
> + * 2.1. This is your license from Intel Corp. under its intellectual property
> + * rights. You may have additional license terms from the party that provided
> + * you this software, covering your right to use that party's intellectual
> + * property rights.
> + *
> + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
> + * copy of the source code appearing in this file ("Covered Code") an
> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the
> + * base code distributed originally by Intel ("Original Intel Code") to copy,
> + * make derivatives, distribute, use and display any portion of the Covered
> + * Code in any form, with the right to sublicense such rights; and
> + *
> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
> + * license (with the right to sublicense), under only those claims of Intel
> + * patents that are infringed by the Original Intel Code, to make, use, sell,
> + * offer to sell, and import the Covered Code and derivative works thereof
> + * solely to the minimum extent necessary to exercise the above copyright
> + * license, and in no event shall the patent license extend to any additions
> + * to or modifications of the Original Intel Code. No other license or right
> + * is granted directly or by implication, estoppel or otherwise;
> + *
> + * The above copyright and patent license is granted only if the following
> + * conditions are met:
> + *
> + * 3. Conditions
> + *
> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification with rights to further distribute source must include
> + * the above Copyright Notice, the above License, this list of Conditions,
> + * and the following Disclaimer and Export Compliance provision. In addition,
> + * Licensee must cause all Covered Code to which Licensee contributes to
> + * contain a file documenting the changes Licensee made to create that Covered
> + * Code and the date of any change. Licensee must include in that file the
> + * documentation of any changes made by any predecessor Licensee. Licensee
> + * must include a prominent statement that the modification is derived,
> + * directly or indirectly, from Original Intel Code.
> + *
> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
> + * Redistribution of source code of any substantial portion of the Covered
> + * Code or modification without rights to further distribute source must
> + * include the following Disclaimer and Export Compliance provision in the
> + * documentation and/or other materials provided with distribution. In
> + * addition, Licensee may not authorize further sublicense of source of any
> + * portion of the Covered Code, and must include terms to the effect that the
> + * license from Licensee to its licensee is limited to the intellectual
> + * property embodied in the software Licensee provides to its licensee, and
> + * not to intellectual property embodied in modifications its licensee may
> + * make.
> + *
> + * 3.3. Redistribution of Executable. Redistribution in executable form of any
> + * substantial portion of the Covered Code or modification must reproduce the
> + * above Copyright Notice, and the following Disclaimer and Export Compliance
> + * provision in the documentation and/or other materials provided with the
> + * distribution.
> + *
> + * 3.4. Intel retains all right, title, and interest in and to the Original
> + * Intel Code.
> + *
> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by
> + * Intel shall be used in advertising or otherwise to promote the sale, use or
> + * other dealings in products derived from or relating to the Covered Code
> + * without prior written authorization from Intel.
> + *
> + * 4. Disclaimer and Export Compliance
> + *
> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
> + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
> + * PARTICULAR PURPOSE.
> + *
> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
> + * LIMITED REMEDY.
> + *
> + * 4.3. Licensee shall not export, either directly or indirectly, any of this
> + * software or system incorporating such software without first obtaining any
> + * required license or other approval from the U. S. Department of Commerce or
> + * any other agency or department of the United States Government. In the
> + * event Licensee exports any such software from the United States or
> + * re-exports any such software from a foreign destination, Licensee shall
> + * ensure that the distribution and export/re-export of the software is in
> + * compliance with all laws, regulations, orders, or other restrictions of the
> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor
> + * any of its subsidiaries will export/re-export any technical data, process,
> + * software, or service, directly or indirectly, to any country for which the
> + * United States government or any agency thereof requires an export license,
> + * other governmental approval, or letter of assurance, without first obtaining
> + * such license, approval or letter.
> + *
> + *****************************************************************************
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * following license:
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions, and the following disclaimer,
> + * without modification.
> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer
> + * substantially similar to the "NO WARRANTY" disclaimer below
> + * ("Disclaimer") and any redistribution must be conditioned upon
> + * including a substantially similar Disclaimer requirement for further
> + * binary redistribution.
> + * 3. Neither the names of the above-listed copyright holders nor the names
> + * of any contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * Alternatively, you may choose to be licensed under the terms of the
> + * GNU General Public License ("GPL") version 2 as published by the Free
> + * Software Foundation.
> + *
> + *****************************************************************************/
> +
> +#include "acpi.h"
> +#include "accommon.h"
> +#include "acdisasm.h"
> +#include "actbinfo.h"
> +
> +/* This module used for application-level code only */
> +
> +#define _COMPONENT ACPI_CA_DISASSEMBLER
> + ACPI_MODULE_NAME ("dmtbinfo3")
> +
> +/*
> + * How to add a new table:
> + *
> + * - Add the C table definition to the actbl1.h or actbl2.h header.
> + * - Add ACPI_xxxx_OFFSET macro(s) for the table (and subtables) to list below.
> + * - Define the table in this file (for the disassembler). If any
> + * new data types are required (ACPI_DMT_*), see below.
> + * - Add an external declaration for the new table definition (AcpiDmTableInfo*)
> + * in acdisam.h
> + * - Add new table definition to the dispatch table in dmtable.c (AcpiDmTableData)
> + * If a simple table (with no subtables), no disassembly code is needed.
> + * Otherwise, create the AcpiDmDump* function for to disassemble the table
> + * and add it to the dmtbdump.c file.
> + * - Add an external declaration for the new AcpiDmDump* function in acdisasm.h
> + * - Add the new AcpiDmDump* function to the dispatch table in dmtable.c
> + * - Create a template for the new table
> + * - Add data table compiler support
> + *
> + * How to add a new data type (ACPI_DMT_*):
> + *
> + * - Add new type at the end of the ACPI_DMT list in acdisasm.h
> + * - Add length and implementation cases in dmtable.c (disassembler)
> + * - Add type and length cases in dtutils.c (DT compiler)
> + */
> +
> +/*
> + * ACPI Table Information, used to dump formatted ACPI tables
> + *
> + * Each entry is of the form: <Field Type, Field Offset, Field Name>
> + */
> +
> +/*******************************************************************************
> + *
> + * SLIC - Software Licensing Description Table. This table contains the standard
> + * ACPI header followed by proprietary data structures
> + *
> + ******************************************************************************/
> +
> +/* Single subtable, a proprietary format, so treat it as a buffer */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSlic[] =
> +{
> + {ACPI_DMT_RAW_BUFFER, 0, "Software Licensing Structure", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * SLIT - System Locality Information Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_SLIT_OFFSET (LocalityCount), "Localities", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * SPCR - Serial Port Console Redirection table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterfaceType), "Interface Type", 0},
> + {ACPI_DMT_UINT24, ACPI_SPCR_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_GAS, ACPI_SPCR_OFFSET (SerialPort), "Serial Port Register", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterruptType), "Interrupt Type", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PcInterrupt), "PCAT-compatible IRQ", 0},
> + {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Interrupt), "Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (BaudRate), "Baud Rate", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Parity), "Parity", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (StopBits), "Stop Bits", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (FlowControl), "Flow Control", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (TerminalType), "Terminal Type", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0},
> + {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciDeviceId), "PCI Device ID", 0},
> + {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciVendorId), "PCI Vendor ID", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciBus), "PCI Bus", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciDevice), "PCI Device", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciFunction), "PCI Function", 0},
> + {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PciFlags), "PCI Flags", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciSegment), "PCI Segment", 0},
> + {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * SPMI - Server Platform Management Interface table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterfaceType), "Interface Type", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved), "Reserved", DT_NON_ZERO}, /* Value must be 1 */
> + {ACPI_DMT_UINT16, ACPI_SPMI_OFFSET (SpecRevision), "IPMI Spec Version", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterruptType), "Interrupt Type", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (GpeNumber), "GPE Number", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDeviceFlag), "PCI Device Flag", 0},
> + {ACPI_DMT_UINT32, ACPI_SPMI_OFFSET (Interrupt), "Interrupt", 0},
> + {ACPI_DMT_GAS, ACPI_SPMI_OFFSET (IpmiRegister), "IPMI Register", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciSegment), "PCI Segment", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciBus), "PCI Bus", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDevice), "PCI Device", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciFunction), "PCI Function", 0},
> + {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved2), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * SRAT - System Resource Affinity Table and Subtables
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSrat[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_SRAT_OFFSET (TableRevision), "Table Revision", 0},
> + {ACPI_DMT_UINT64, ACPI_SRAT_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common Subtable header (one per Subtable) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSratHdr[] =
> +{
> + {ACPI_DMT_SRAT, ACPI_SRATH_OFFSET (Type), "Subtable Type", 0},
> + {ACPI_DMT_UINT8, ACPI_SRATH_OFFSET (Length), "Length", DT_LENGTH},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* SRAT Subtables */
> +
> +/* 0: Processor Local APIC/SAPIC Affinity */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSrat0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ProximityDomainLo), "Proximity Domain Low(8)", 0},
> + {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ApicId), "Apic ID", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_SRAT0_FLAG_OFFSET (Flags,0), "Enabled", 0},
> + {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (LocalSapicEid), "Local Sapic EID", 0},
> + {ACPI_DMT_UINT24, ACPI_SRAT0_OFFSET (ProximityDomainHi[0]), "Proximity Domain High(24)", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (ClockDomain), "Clock Domain", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 1: Memory Affinity */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSrat1[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (ProximityDomain), "Proximity Domain", 0},
> + {ACPI_DMT_UINT16, ACPI_SRAT1_OFFSET (Reserved), "Reserved1", 0},
> + {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (BaseAddress), "Base Address", 0},
> + {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Length), "Address Length", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Reserved1), "Reserved2", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Enabled", 0},
> + {ACPI_DMT_FLAG1, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Hot Pluggable", 0},
> + {ACPI_DMT_FLAG2, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Non-Volatile", 0},
> + {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Reserved2), "Reserved3", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSrat2[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_SRAT2_OFFSET (Reserved), "Reserved1", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ProximityDomain), "Proximity Domain", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ApicId), "Apic ID", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_SRAT2_FLAG_OFFSET (Flags,0), "Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ClockDomain), "Clock Domain", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (Reserved2), "Reserved2", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 3: GICC Affinity (ACPI 5.1) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSrat3[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (ProximityDomain), "Proximity Domain", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (AcpiProcessorUid), "Acpi Processor UID", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_SRAT3_FLAG_OFFSET (Flags,0), "Enabled", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT3_OFFSET (ClockDomain), "Clock Domain", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 4: GCC ITS Affinity (ACPI 6.2) */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoSrat4[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_SRAT4_OFFSET (ProximityDomain), "Proximity Domain", 0},
> + {ACPI_DMT_UINT16, ACPI_SRAT4_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_SRAT4_OFFSET (ItsId), "ITS ID", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * STAO - Status Override Table (_STA override) - ACPI 6.0
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoStao[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_STAO_OFFSET (IgnoreUart), "Ignore UART", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[] =
> +{
> + {ACPI_DMT_STRING, 0, "Namepath", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * TCPA - Trusted Computing Platform Alliance table (Client)
> + *
> + * NOTE: There are two versions of the table with the same signature --
> + * the client version and the server version. The common PlatformClass
> + * field is used to differentiate the two types of tables.
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_TCPA_OFFSET (PlatformClass), "Platform Class", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_TCPA_CLIENT_OFFSET (MinimumLogLength), "Min Event Log Length", 0},
> + {ACPI_DMT_UINT64, ACPI_TCPA_CLIENT_OFFSET (LogAddress), "Event Log Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_TCPA_SERVER_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_TCPA_SERVER_OFFSET (MinimumLogLength), "Min Event Log Length", 0},
> + {ACPI_DMT_UINT64, ACPI_TCPA_SERVER_OFFSET (LogAddress), "Event Log Address", 0},
> + {ACPI_DMT_UINT16, ACPI_TCPA_SERVER_OFFSET (SpecRevision), "Specification Revision", 0},
> + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Device Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Pci Device", 0},
> + {ACPI_DMT_FLAG1, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Bus is Pnp", 0},
> + {ACPI_DMT_FLAG2, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Address Valid", 0},
> + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Interrupt Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Mode", 0},
> + {ACPI_DMT_FLAG1, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Polarity", 0},
> + {ACPI_DMT_FLAG2, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "GPE SCI Triggered", 0},
> + {ACPI_DMT_FLAG3, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Global System Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (GpeNumber), "Gpe Number", 0},
> + {ACPI_DMT_UINT24, ACPI_TCPA_SERVER_OFFSET (Reserved2[0]), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_TCPA_SERVER_OFFSET (GlobalInterrupt), "Global Interrupt", 0},
> + {ACPI_DMT_GAS, ACPI_TCPA_SERVER_OFFSET (Address), "Address", 0},
> + {ACPI_DMT_UINT32, ACPI_TCPA_SERVER_OFFSET (Reserved3), "Reserved", 0},
> + {ACPI_DMT_GAS, ACPI_TCPA_SERVER_OFFSET (ConfigAddress), "Configuration Address", 0},
> + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Group), "Pci Group", 0},
> + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Bus), "Pci Bus", 0},
> + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Device), "Pci Device", 0},
> + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Function), "Pci Function", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (PlatformClass), "Platform Class", 0},
> + {ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT64, ACPI_TPM2_OFFSET (ControlAddress), "Control Address", 0},
> + {ACPI_DMT_TPM2, ACPI_TPM2_OFFSET (StartMethod), "Start Method", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Optional trailer. LogLength and LogAddress are additionally optional */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2a[] =
> +{
> + {ACPI_DMT_BUF12, ACPI_TPM2A_OFFSET (MethodParameters), "Method Parameters", DT_OPTIONAL},
> + {ACPI_DMT_UINT32, ACPI_TPM2A_OFFSET (MinimumLogLength), "Minimum Log Length", DT_OPTIONAL},
> + {ACPI_DMT_UINT64, ACPI_TPM2A_OFFSET (LogAddress), "Log Address", DT_OPTIONAL},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 11: Start Method for ARM SMC */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoTpm211[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_TPM211_OFFSET (GlobalInterrupt), "Global Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_TPM211_OFFSET (InterruptFlags), "Interrupt Flags", 0},
> + {ACPI_DMT_UINT8, ACPI_TPM211_OFFSET (OperationFlags), "Operation Flags", 0},
> + {ACPI_DMT_UINT16, ACPI_TPM211_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_TPM211_OFFSET (FunctionId), "Function ID", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * UEFI - UEFI Boot optimization Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[] =
> +{
> + {ACPI_DMT_UUID, ACPI_UEFI_OFFSET (Identifier[0]), "UUID Identifier", 0},
> + {ACPI_DMT_UINT16, ACPI_UEFI_OFFSET (DataOffset), "Data Offset", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * VRTC - Virtual Real Time Clock Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[] =
> +{
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* VRTC Subtables - VRTC Entry */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc0[] =
> +{
> + {ACPI_DMT_GAS, ACPI_VRTC0_OFFSET (PhysicalAddress), "PhysicalAddress", 0},
> + {ACPI_DMT_UINT32, ACPI_VRTC0_OFFSET (Irq), "IRQ", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * WAET - Windows ACPI Emulated devices Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoWaet[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_WAET_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_WAET_OFFSET (Flags), "RTC needs no INT ack", 0},
> + {ACPI_DMT_FLAG1, ACPI_WAET_OFFSET (Flags), "PM timer, one read only", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * WDAT - Watchdog Action Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoWdat[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (HeaderLength), "Header Length", DT_LENGTH},
> + {ACPI_DMT_UINT16, ACPI_WDAT_OFFSET (PciSegment), "PCI Segment", 0},
> + {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciBus), "PCI Bus", 0},
> + {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciDevice), "PCI Device", 0},
> + {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciFunction), "PCI Function", 0},
> + {ACPI_DMT_UINT24, ACPI_WDAT_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (TimerPeriod), "Timer Period", 0},
> + {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (MaxCount), "Max Count", 0},
> + {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (MinCount), "Min Count", 0},
> + {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
> + {ACPI_DMT_FLAG0, ACPI_WDAT_OFFSET (Flags), "Enabled", 0},
> + {ACPI_DMT_FLAG7, ACPI_WDAT_OFFSET (Flags), "Stopped When Asleep", 0},
> + {ACPI_DMT_UINT24, ACPI_WDAT_OFFSET (Reserved2[0]), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (Entries), "Watchdog Entry Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* WDAT Subtables - Watchdog Instruction Entries */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoWdat0[] =
> +{
> + {ACPI_DMT_UINT8, ACPI_WDAT0_OFFSET (Action), "Watchdog Action", 0},
> + {ACPI_DMT_UINT8, ACPI_WDAT0_OFFSET (Instruction), "Instruction", 0},
> + {ACPI_DMT_UINT16, ACPI_WDAT0_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_GAS, ACPI_WDAT0_OFFSET (RegisterRegion), "Register Region", 0},
> + {ACPI_DMT_UINT32, ACPI_WDAT0_OFFSET (Value), "Value", 0},
> + {ACPI_DMT_UINT32, ACPI_WDAT0_OFFSET (Mask), "Register Mask", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * WDDT - Watchdog Description Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoWddt[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (SpecVersion), "Specification Version", 0},
> + {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (TableVersion), "Table Version", 0},
> + {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (PciVendorId), "PCI Vendor ID", 0},
> + {ACPI_DMT_GAS, ACPI_WDDT_OFFSET (Address), "Timer Register", 0},
> + {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (MaxCount), "Max Count", 0},
> + {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (MinCount), "Min Count", 0},
> + {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Period), "Period", 0},
> + {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Status), "Status (decoded below)", 0},
> +
> + /* Status Flags byte 0 */
> +
> + {ACPI_DMT_FLAG0, ACPI_WDDT_FLAG_OFFSET (Status,0), "Available", 0},
> + {ACPI_DMT_FLAG1, ACPI_WDDT_FLAG_OFFSET (Status,0), "Active", 0},
> + {ACPI_DMT_FLAG2, ACPI_WDDT_FLAG_OFFSET (Status,0), "OS Owns", 0},
> +
> + /* Status Flags byte 1 */
> +
> + {ACPI_DMT_FLAG3, ACPI_WDDT_FLAG_OFFSET (Status,1), "User Reset", 0},
> + {ACPI_DMT_FLAG4, ACPI_WDDT_FLAG_OFFSET (Status,1), "Timeout Reset", 0},
> + {ACPI_DMT_FLAG5, ACPI_WDDT_FLAG_OFFSET (Status,1), "Power Fail Reset", 0},
> + {ACPI_DMT_FLAG6, ACPI_WDDT_FLAG_OFFSET (Status,1), "Unknown Reset", 0},
> +
> + {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Capability), "Capability (decoded below)", 0},
> +
> + /* Capability Flags byte 0 */
> +
> + {ACPI_DMT_FLAG0, ACPI_WDDT_FLAG_OFFSET (Capability,0), "Auto Reset", 0},
> + {ACPI_DMT_FLAG1, ACPI_WDDT_FLAG_OFFSET (Capability,0), "Timeout Alert", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * WDRT - Watchdog Resource Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[] =
> +{
> + {ACPI_DMT_GAS, ACPI_WDRT_OFFSET (ControlRegister), "Control Register", 0},
> + {ACPI_DMT_GAS, ACPI_WDRT_OFFSET (CountRegister), "Count Register", 0},
> + {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (PciDeviceId), "PCI Device ID", 0},
> + {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (PciVendorId), "PCI Vendor ID", 0},
> + {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciBus), "PCI Bus", 0},
> + {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciDevice), "PCI Device", 0},
> + {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciFunction), "PCI Function", 0},
> + {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciSegment), "PCI Segment", 0},
> + {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (MaxCount), "Max Count", 0},
> + {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (Units), "Counter Units", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * WPBT - Windows Platform Environment Table (ACPI 6.0)
> + * Version 1
> + *
> + * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoWpbt[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_WPBT_OFFSET (HandoffSize), "Handoff Size", 0},
> + {ACPI_DMT_UINT64, ACPI_WPBT_OFFSET (HandoffAddress), "Handoff Address", 0},
> + {ACPI_DMT_UINT8, ACPI_WPBT_OFFSET (Layout), "Layout", 0},
> + {ACPI_DMT_UINT8, ACPI_WPBT_OFFSET (Type), "Type", 0},
> + {ACPI_DMT_UINT16, ACPI_WPBT_OFFSET (ArgumentsLength), "Arguments Length", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoWpbt0[] =
> +{
> + {ACPI_DMT_UNICODE, sizeof (ACPI_TABLE_WPBT), "Command-line Arguments", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * WSMT - Windows SMM Security Migrations Table
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoWsmt[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_WSMT_OFFSET (ProtectionFlags), "Protection Flags", 0},
> + {ACPI_DMT_FLAG0, ACPI_WSMT_FLAG_OFFSET (ProtectionFlags,0), "FIXED_COMM_BUFFERS", 0},
> + {ACPI_DMT_FLAG1, ACPI_WSMT_FLAG_OFFSET (ProtectionFlags,0), "COMM_BUFFER_NESTED_PTR_PROTECTION", 0},
> + {ACPI_DMT_FLAG2, ACPI_WSMT_FLAG_OFFSET (ProtectionFlags,0), "SYSTEM_RESOURCE_PROTECTION", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*******************************************************************************
> + *
> + * XENV - Xen Environment table (ACPI 6.0)
> + *
> + ******************************************************************************/
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoXenv[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_XENV_OFFSET (GrantTableAddress), "Grant Table Address", 0},
> + {ACPI_DMT_UINT64, ACPI_XENV_OFFSET (GrantTableSize), "Grant Table Size", 0},
> + {ACPI_DMT_UINT32, ACPI_XENV_OFFSET (EventInterrupt), "Event Interrupt", 0},
> + {ACPI_DMT_UINT8, ACPI_XENV_OFFSET (EventFlags), "Event Flags", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> +/*! [Begin] no source code translation */
> +
> +/*
> + * Generic types (used in UEFI and custom tables)
> + *
> + * Examples:
> + *
> + * Buffer : cc 04 ff bb
> + * UINT8 : 11
> + * UINT16 : 1122
> + * UINT24 : 112233
> + * UINT32 : 11223344
> + * UINT56 : 11223344556677
> + * UINT64 : 1122334455667788
> + *
> + * String : "This is string"
> + * Unicode : "This string encoded to Unicode"
> + *
> + * GUID : 11223344-5566-7788-99aa-bbccddeeff00
> + * DevicePath : "\PciRoot(0)\Pci(0x1f,1)\Usb(0,0)"
> + */
> +
> +#define ACPI_DM_GENERIC_ENTRY(FieldType, FieldName) \
> + {{FieldType, 0, FieldName, 0}, ACPI_DMT_TERMINATOR}
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGeneric[][2] =
> +{
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT8, "UINT8"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT16, "UINT16"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT24, "UINT24"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT32, "UINT32"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT40, "UINT40"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT48, "UINT48"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT56, "UINT56"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT64, "UINT64"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "String"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UNICODE, "Unicode"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_BUFFER, "Buffer"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UUID, "GUID"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "DevicePath"),
> + ACPI_DM_GENERIC_ENTRY (ACPI_DMT_LABEL, "Label"),
> + {ACPI_DMT_TERMINATOR}
> +};
> +/*! [End] no source code translation !*/
> diff --git a/src/acpica/source/compiler/Makefile.am b/src/acpica/source/compiler/Makefile.am
> index 6191f510..0c25d89d 100644
> --- a/src/acpica/source/compiler/Makefile.am
> +++ b/src/acpica/source/compiler/Makefile.am
> @@ -242,7 +242,13 @@ libfwtsiasl_la_SOURCES = \
> ../common/dmtable.c \
> ../common/dmtables.c \
> ../common/dmtbinfo.c \
> + ../common/dmtbinfo1.c \
> + ../common/dmtbinfo2.c \
> + ../common/dmtbinfo3.c \
> ../common/dmtbdump.c \
> + ../common/dmtbdump1.c \
> + ../common/dmtbdump2.c \
> + ../common/dmtbdump3.c \
> ../common/getopt.c \
> ../components/debugger/dbfileio.c \
> ../components/disassembler/dmbuffer.c \
> diff --git a/src/acpica/source/compiler/aslbtypes.c b/src/acpica/source/compiler/aslbtypes.c
> index be3618ee..f7c2eb0c 100644
> --- a/src/acpica/source/compiler/aslbtypes.c
> +++ b/src/acpica/source/compiler/aslbtypes.c
> @@ -259,6 +259,7 @@ AnMapArgTypeToBtype (
> return (ACPI_BTYPE_DATA | ACPI_BTYPE_DEBUG_OBJECT |
> ACPI_BTYPE_REFERENCE_OBJECT);
>
> + case ARGI_FIXED_TARGET:
> case ARGI_SIMPLE_TARGET:
>
> return (ACPI_BTYPE_OBJECTS_AND_REFS);
> diff --git a/src/acpica/source/compiler/aslerror.c b/src/acpica/source/compiler/aslerror.c
> index ef6342b1..39297a4c 100644
> --- a/src/acpica/source/compiler/aslerror.c
> +++ b/src/acpica/source/compiler/aslerror.c
> @@ -921,6 +921,13 @@ AslCommonError (
> char *Filename,
> char *ExtraMessage)
> {
> + /* Check if user wants to ignore this exception */
> +
> + if (AslIsExceptionIgnored (Level, MessageId))
> + {
> + return;
> + }
> +
> AslLogNewError (Level, MessageId, CurrentLineNumber, LogicalLineNumber,
> LogicalByteOffset, Column, Filename, ExtraMessage,
> NULL, NULL);
> diff --git a/src/acpica/source/compiler/aslfold.c b/src/acpica/source/compiler/aslfold.c
> index 78ec8da2..7957c149 100644
> --- a/src/acpica/source/compiler/aslfold.c
> +++ b/src/acpica/source/compiler/aslfold.c
> @@ -444,7 +444,7 @@ OpcAmlCheckForConstant (
> if (Op->Asl.CompileFlags & OP_IS_TARGET)
> {
> DbgPrint (ASL_PARSE_OUTPUT,
> - "**** Valid Target, transform to Store ****\n");
> + "**** Valid Target, transform to Store or CopyObject ****\n");
> return (AE_CTRL_RETURN_VALUE);
> }
>
> @@ -468,7 +468,7 @@ OpcAmlCheckForConstant (
> if (WalkState->Opcode == AML_BUFFER_OP)
> {
> DbgPrint (ASL_PARSE_OUTPUT,
> - "\nBuffer constant reduction is not supported yet\n");
> + "\nBuffer constant reduction is currently not supported\n");
>
> if (NextOp) /* Found a Name() operator, error */
> {
> @@ -623,6 +623,8 @@ TrTransformToStoreOp (
> ACPI_PARSE_OBJECT *NewParent;
> ACPI_PARSE_OBJECT *OriginalParent;
> ACPI_STATUS Status;
> + UINT16 NewParseOpcode;
> + UINT16 NewAmlOpcode;
>
>
> /* Extract the operands */
> @@ -646,9 +648,45 @@ TrTransformToStoreOp (
> }
> }
>
> - DbgPrint (ASL_PARSE_OUTPUT,
> - "Reduction/Transform to StoreOp: Store(%s, %s)\n",
> - Child1->Asl.ParseOpName, Child2->Asl.ParseOpName);
> + switch (Op->Asl.ParseOpcode)
> + {
> + /*
> + * Folding of the explicit conversion opcodes must use CopyObject
> + * instead of Store. This can change the object type of the target
> + * operand, as per the ACPI specification:
> + *
> + * "If the ASL operator is one of the explicit conversion operators
> + * (ToString, ToInteger, etc., and the CopyObject operator), no
> + * [implicit] conversion is performed. (In other words, the result
> + * object is stored directly to the target and completely overwrites
> + * any existing object already stored at the target)"
> + */
> + case PARSEOP_TOINTEGER:
> + case PARSEOP_TOSTRING:
> + case PARSEOP_TOBUFFER:
> + case PARSEOP_TODECIMALSTRING:
> + case PARSEOP_TOHEXSTRING:
> + case PARSEOP_TOBCD:
> + case PARSEOP_FROMBCD:
> +
> + NewParseOpcode = PARSEOP_COPYOBJECT;
> + NewAmlOpcode = AML_COPY_OBJECT_OP;
> +
> + DbgPrint (ASL_PARSE_OUTPUT,
> + "Reduction/Transform to CopyObjectOp: CopyObject(%s, %s)\n",
> + Child1->Asl.ParseOpName, Child2->Asl.ParseOpName);
> + break;
> +
> + default:
> +
> + NewParseOpcode = PARSEOP_STORE;
> + NewAmlOpcode = AML_STORE_OP;
> +
> + DbgPrint (ASL_PARSE_OUTPUT,
> + "Reduction/Transform to StoreOp: Store(%s, %s)\n",
> + Child1->Asl.ParseOpName, Child2->Asl.ParseOpName);
> + break;
> + }
>
> /*
> * Create a NULL (zero) target so that we can use the
> @@ -709,10 +747,10 @@ TrTransformToStoreOp (
>
> TrInstallReducedConstant (Child1, ObjDesc);
>
> - /* Convert operator to STORE */
> + /* Convert operator to STORE or COPYOBJECT */
>
> - Op->Asl.ParseOpcode = PARSEOP_STORE;
> - Op->Asl.AmlOpcode = AML_STORE_OP;
> + Op->Asl.ParseOpcode = NewParseOpcode;
> + Op->Asl.AmlOpcode = NewAmlOpcode;
> UtSetParseOpName (Op);
> Op->Common.Parent = OriginalParent;
>
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 534d4ca3..f32a7461 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -327,8 +327,8 @@ LdLoadFieldElements (
> * The name already exists in this scope
> * But continue processing the elements
> */
> - AslDualParseOpError (ASL_ERROR, ASL_MSG_NAME_EXISTS, Child,
> - Child->Asl.Value.String, ASL_MSG_FOUND_HERE, Node->Op,
> + AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Child,
> + Child->Asl.Value.String, ASL_MSG_EXTERN_FOUND_HERE, Node->Op,
> Node->Op->Asl.ExternalName);
> }
> }
> @@ -830,8 +830,8 @@ LdNamespace1Begin (
> if (Node->OwnerId == WalkState->OwnerId &&
> !(Node->Flags & IMPLICIT_EXTERNAL))
> {
> - AslDualParseOpError (ASL_ERROR, ASL_MSG_NAME_EXISTS, Op,
> - Op->Asl.ExternalName, ASL_MSG_FOUND_HERE, Node->Op,
> + AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Op,
> + Op->Asl.ExternalName, ASL_MSG_EXTERN_FOUND_HERE, Node->Op,
> Node->Op->Asl.ExternalName);
> }
> if (Node->Flags & IMPLICIT_EXTERNAL)
> @@ -853,8 +853,8 @@ LdNamespace1Begin (
>
> if (Node->OwnerId == WalkState->OwnerId)
> {
> - AslDualParseOpError (ASL_ERROR, ASL_MSG_NAME_EXISTS, Op,
> - Op->Asl.ExternalName, ASL_MSG_FOUND_HERE, Node->Op,
> + AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Op,
> + Op->Asl.ExternalName, ASL_MSG_EXTERN_FOUND_HERE, Node->Op,
> Node->Op->Asl.ExternalName);
> }
> }
> diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
> index 85500846..e816b538 100644
> --- a/src/acpica/source/compiler/aslmessages.c
> +++ b/src/acpica/source/compiler/aslmessages.c
> @@ -352,7 +352,9 @@ const char *AslCompilerMsgs [] =
> /* ASL_MSG_EXCEPTION_NOT_RECEIVED */ "Expected remark, warning, or error did not occur. Message ID:",
> /* ASL_MSG_NULL_RESOURCE_TEMPLATE */ "Empty Resource Template (END_TAG only)",
> /* ASL_MSG_FOUND_HERE */ "Original name creation/declaration below: ",
> -/* ASL_MSG_ILLEGAL_RECURSION */ "Illegal recursive call to method that creates named objects"
> +/* ASL_MSG_ILLEGAL_RECURSION */ "Illegal recursive call to method that creates named objects",
> +/* ASL_MSG_EXTERN_COLLISION */ "A name cannot be defined and declared external in the same table",
> +/* ASL_MSG_FOUND_HERE_EXTERN*/ "Remove one of the declarations indicated above or below:"
> };
>
> /* Table compiler */
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index 77c6759e..3105f0be 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -355,6 +355,8 @@ typedef enum
> ASL_MSG_NULL_RESOURCE_TEMPLATE,
> ASL_MSG_FOUND_HERE,
> ASL_MSG_ILLEGAL_RECURSION,
> + ASL_MSG_EXTERN_COLLISION,
> + ASL_MSG_EXTERN_FOUND_HERE,
>
> /* These messages are used by the Data Table compiler only */
>
> diff --git a/src/acpica/source/compiler/dtcompile.c b/src/acpica/source/compiler/dtcompile.c
> index a8509937..93944146 100644
> --- a/src/acpica/source/compiler/dtcompile.c
> +++ b/src/acpica/source/compiler/dtcompile.c
> @@ -453,7 +453,7 @@ DtCompileDataTable (
> DtInsertCompilerIds (*FieldList);
>
> Status = DtCompileTable (FieldList, AcpiDmTableInfoHeader,
> - &Gbl_RootTable, TRUE);
> + &Gbl_RootTable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -492,7 +492,7 @@ DtCompileDataTable (
> {
> Subtable = NULL;
> Status = DtCompileTable (FieldList, TableData->TableInfo,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -531,7 +531,6 @@ FinishHeader:
> * PARAMETERS: Field - Current field list pointer
> * Info - Info table for this ACPI table
> * RetSubtable - Compile result of table
> - * Required - If this subtable must exist
> *
> * RETURN: Status
> *
> @@ -543,8 +542,7 @@ ACPI_STATUS
> DtCompileTable (
> DT_FIELD **Field,
> ACPI_DMTABLE_INFO *Info,
> - DT_SUBTABLE **RetSubtable,
> - BOOLEAN Required)
> + DT_SUBTABLE **RetSubtable)
> {
> DT_FIELD *LocalField;
> UINT32 Length;
> @@ -682,19 +680,19 @@ DtCompileTable (
> case ACPI_DMT_GAS:
>
> Status = DtCompileTable (Field, AcpiDmTableInfoGas,
> - &InlineSubtable, TRUE);
> + &InlineSubtable);
> break;
>
> case ACPI_DMT_HESTNTFY:
>
> Status = DtCompileTable (Field, AcpiDmTableInfoHestNotify,
> - &InlineSubtable, TRUE);
> + &InlineSubtable);
> break;
>
> case ACPI_DMT_IORTMEM:
>
> Status = DtCompileTable (Field, AcpiDmTableInfoIortAcc,
> - &InlineSubtable, TRUE);
> + &InlineSubtable);
> break;
>
> default:
> @@ -783,7 +781,7 @@ DtCompileTwoSubtables (
> DT_FIELD **PFieldList = (DT_FIELD **) List;
>
>
> - Status = DtCompileTable (PFieldList, TableInfo1, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, TableInfo1, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -794,7 +792,7 @@ DtCompileTwoSubtables (
>
> while (*PFieldList)
> {
> - Status = DtCompileTable (PFieldList, TableInfo2, &Subtable, FALSE);
> + Status = DtCompileTable (PFieldList, TableInfo2, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h
> index 7ecb14e1..48d308b4 100644
> --- a/src/acpica/source/compiler/dtcompiler.h
> +++ b/src/acpica/source/compiler/dtcompiler.h
> @@ -275,8 +275,7 @@ ACPI_STATUS
> DtCompileTable (
> DT_FIELD **Field,
> ACPI_DMTABLE_INFO *Info,
> - DT_SUBTABLE **RetSubtable,
> - BOOLEAN Required);
> + DT_SUBTABLE **RetSubtable);
>
> ACPI_STATUS
> DtCompileTwoSubtables (
> diff --git a/src/acpica/source/compiler/dtexpress.c b/src/acpica/source/compiler/dtexpress.c
> index ef19122b..aa68cf1e 100644
> --- a/src/acpica/source/compiler/dtexpress.c
> +++ b/src/acpica/source/compiler/dtexpress.c
> @@ -209,7 +209,7 @@ DtResolveIntegerExpression (
> * FUNCTION: DtDoOperator
> *
> * PARAMETERS: LeftValue - First 64-bit operand
> - * Operator - Parse token for the operator (EXPOP_*)
> + * Operator - Parse token for the operator (OP_EXP_*)
> * RightValue - Second 64-bit operand
> *
> * RETURN: 64-bit result of the requested operation
> @@ -231,22 +231,22 @@ DtDoOperator (
>
> switch (Operator)
> {
> - case EXPOP_ONES_COMPLIMENT:
> + case OP_EXP_ONES_COMPLIMENT:
>
> Result = ~RightValue;
> break;
>
> - case EXPOP_LOGICAL_NOT:
> + case OP_EXP_LOGICAL_NOT:
>
> Result = !RightValue;
> break;
>
> - case EXPOP_MULTIPLY:
> + case OP_EXP_MULTIPLY:
>
> Result = LeftValue * RightValue;
> break;
>
> - case EXPOP_DIVIDE:
> + case OP_EXP_DIVIDE:
>
> if (!RightValue)
> {
> @@ -258,7 +258,7 @@ DtDoOperator (
> Result = LeftValue / RightValue;
> break;
>
> - case EXPOP_MODULO:
> + case OP_EXP_MODULO:
>
> if (!RightValue)
> {
> @@ -270,76 +270,76 @@ DtDoOperator (
> Result = LeftValue % RightValue;
> break;
>
> - case EXPOP_ADD:
> + case OP_EXP_ADD:
> Result = LeftValue + RightValue;
> break;
>
> - case EXPOP_SUBTRACT:
> + case OP_EXP_SUBTRACT:
>
> Result = LeftValue - RightValue;
> break;
>
> - case EXPOP_SHIFT_RIGHT:
> + case OP_EXP_SHIFT_RIGHT:
>
> Result = LeftValue >> RightValue;
> break;
>
> - case EXPOP_SHIFT_LEFT:
> + case OP_EXP_SHIFT_LEFT:
>
> Result = LeftValue << RightValue;
> break;
>
> - case EXPOP_LESS:
> + case OP_EXP_LESS:
>
> Result = LeftValue < RightValue;
> break;
>
> - case EXPOP_GREATER:
> + case OP_EXP_GREATER:
>
> Result = LeftValue > RightValue;
> break;
>
> - case EXPOP_LESS_EQUAL:
> + case OP_EXP_LESS_EQUAL:
>
> Result = LeftValue <= RightValue;
> break;
>
> - case EXPOP_GREATER_EQUAL:
> + case OP_EXP_GREATER_EQUAL:
>
> Result = LeftValue >= RightValue;
> break;
>
> - case EXPOP_EQUAL:
> + case OP_EXP_EQUAL:
>
> Result = LeftValue == RightValue;
> break;
>
> - case EXPOP_NOT_EQUAL:
> + case OP_EXP_NOT_EQUAL:
>
> Result = LeftValue != RightValue;
> break;
>
> - case EXPOP_AND:
> + case OP_EXP_AND:
>
> Result = LeftValue & RightValue;
> break;
>
> - case EXPOP_XOR:
> + case OP_EXP_XOR:
>
> Result = LeftValue ^ RightValue;
> break;
>
> - case EXPOP_OR:
> + case OP_EXP_OR:
>
> Result = LeftValue | RightValue;
> break;
>
> - case EXPOP_LOGICAL_AND:
> + case OP_EXP_LOGICAL_AND:
>
> Result = LeftValue && RightValue;
> break;
>
> - case EXPOP_LOGICAL_OR:
> + case OP_EXP_LOGICAL_OR:
>
> Result = LeftValue || RightValue;
> break;
> diff --git a/src/acpica/source/compiler/dtparser.l b/src/acpica/source/compiler/dtparser.l
> index 3e5bc8c7..fae32dba 100644
> --- a/src/acpica/source/compiler/dtparser.l
> +++ b/src/acpica/source/compiler/dtparser.l
> @@ -171,37 +171,37 @@ NewLine [\n]
>
> %%
>
> -\( return (EXPOP_PAREN_OPEN);
> -\) return (EXPOP_PAREN_CLOSE);
> -\~ return (EXPOP_ONES_COMPLIMENT);
> -\! return (EXPOP_LOGICAL_NOT);
> -\* return (EXPOP_MULTIPLY);
> -\/ return (EXPOP_DIVIDE);
> -\% return (EXPOP_MODULO);
> -\+ return (EXPOP_ADD);
> -\- return (EXPOP_SUBTRACT);
> -">>" return (EXPOP_SHIFT_RIGHT);
> -"<<" return (EXPOP_SHIFT_LEFT);
> -\< return (EXPOP_LESS);
> -\> return (EXPOP_GREATER);
> -"<=" return (EXPOP_LESS_EQUAL);
> -">=" return (EXPOP_GREATER_EQUAL);
> -"==" return (EXPOP_EQUAL);
> -"!=" return (EXPOP_NOT_EQUAL);
> -\& return (EXPOP_AND);
> -\^ return (EXPOP_XOR);
> -\| return (EXPOP_OR);
> -"&&" return (EXPOP_LOGICAL_AND);
> -"||" return (EXPOP_LOGICAL_OR);
> -<<EOF>> return (EXPOP_EOF); /* null end-of-string */
> -
> -{LabelRef} return (EXPOP_LABEL);
> -{Number} return (EXPOP_NUMBER);
> -{HexNumber} return (EXPOP_HEX_NUMBER);
> -{NewLine} return (EXPOP_NEW_LINE);
> +\( return (OP_EXP_PAREN_OPEN);
> +\) return (OP_EXP_PAREN_CLOSE);
> +\~ return (OP_EXP_ONES_COMPLIMENT);
> +\! return (OP_EXP_LOGICAL_NOT);
> +\* return (OP_EXP_MULTIPLY);
> +\/ return (OP_EXP_DIVIDE);
> +\% return (OP_EXP_MODULO);
> +\+ return (OP_EXP_ADD);
> +\- return (OP_EXP_SUBTRACT);
> +">>" return (OP_EXP_SHIFT_RIGHT);
> +"<<" return (OP_EXP_SHIFT_LEFT);
> +\< return (OP_EXP_LESS);
> +\> return (OP_EXP_GREATER);
> +"<=" return (OP_EXP_LESS_EQUAL);
> +">=" return (OP_EXP_GREATER_EQUAL);
> +"==" return (OP_EXP_EQUAL);
> +"!=" return (OP_EXP_NOT_EQUAL);
> +\& return (OP_EXP_AND);
> +\^ return (OP_EXP_XOR);
> +\| return (OP_EXP_OR);
> +"&&" return (OP_EXP_LOGICAL_AND);
> +"||" return (OP_EXP_LOGICAL_OR);
> +<<EOF>> return (OP_EXP_EOF); /* null end-of-string */
> +
> +{LabelRef} return (OP_EXP_LABEL);
> +{Number} return (OP_EXP_NUMBER);
> +{HexNumber} return (OP_EXP_HEX_NUMBER);
> +{NewLine} return (OP_EXP_NEW_LINE);
> {WhiteSpace} /* Ignore */
>
> -. return (EXPOP_EOF);
> +. return (OP_EXP_EOF);
>
> %%
>
> diff --git a/src/acpica/source/compiler/dtparser.y b/src/acpica/source/compiler/dtparser.y
> index 43f7f04e..1c445712 100644
> --- a/src/acpica/source/compiler/dtparser.y
> +++ b/src/acpica/source/compiler/dtparser.y
> @@ -193,26 +193,26 @@ UINT64 DtParserResult; /* Expression return value */
>
> %type <value> Expression
>
> -%token <op> EXPOP_EOF
> -%token <op> EXPOP_NEW_LINE
> -%token <op> EXPOP_NUMBER
> -%token <op> EXPOP_HEX_NUMBER
> -%token <op> EXPOP_DECIMAL_NUMBER
> -%token <op> EXPOP_LABEL
> -%token <op> EXPOP_PAREN_OPEN
> -%token <op> EXPOP_PAREN_CLOSE
> -
> -%left <op> EXPOP_LOGICAL_OR
> -%left <op> EXPOP_LOGICAL_AND
> -%left <op> EXPOP_OR
> -%left <op> EXPOP_XOR
> -%left <op> EXPOP_AND
> -%left <op> EXPOP_EQUAL EXPOP_NOT_EQUAL
> -%left <op> EXPOP_GREATER EXPOP_LESS EXPOP_GREATER_EQUAL EXPOP_LESS_EQUAL
> -%left <op> EXPOP_SHIFT_RIGHT EXPOP_SHIFT_LEFT
> -%left <op> EXPOP_ADD EXPOP_SUBTRACT
> -%left <op> EXPOP_MULTIPLY EXPOP_DIVIDE EXPOP_MODULO
> -%right <op> EXPOP_ONES_COMPLIMENT EXPOP_LOGICAL_NOT
> +%token <op> OP_EXP_EOF
> +%token <op> OP_EXP_NEW_LINE
> +%token <op> OP_EXP_NUMBER
> +%token <op> OP_EXP_HEX_NUMBER
> +%token <op> OP_EXP_DECIMAL_NUMBER
> +%token <op> OP_EXP_LABEL
> +%token <op> OP_EXP_PAREN_OPEN
> +%token <op> OP_EXP_PAREN_CLOSE
> +
> +%left <op> OP_EXP_LOGICAL_OR
> +%left <op> OP_EXP_LOGICAL_AND
> +%left <op> OP_EXP_OR
> +%left <op> OP_EXP_XOR
> +%left <op> OP_EXP_AND
> +%left <op> OP_EXP_EQUAL OP_EXP_NOT_EQUAL
> +%left <op> OP_EXP_GREATER OP_EXP_LESS OP_EXP_GREATER_EQUAL OP_EXP_LESS_EQUAL
> +%left <op> OP_EXP_SHIFT_RIGHT OP_EXP_SHIFT_LEFT
> +%left <op> OP_EXP_ADD OP_EXP_SUBTRACT
> +%left <op> OP_EXP_MULTIPLY OP_EXP_DIVIDE OP_EXP_MODULO
> +%right <op> OP_EXP_ONES_COMPLIMENT OP_EXP_LOGICAL_NOT
>
> %%
>
> @@ -233,46 +233,46 @@ UINT64 DtParserResult; /* Expression return value */
> * 12) ||
> */
> Value
> - : Expression EXPOP_NEW_LINE { DtParserResult=$1; return 0; } /* End of line (newline) */
> - | Expression EXPOP_EOF { DtParserResult=$1; return 0; } /* End of string (0) */
> + : Expression OP_EXP_NEW_LINE { DtParserResult=$1; return 0; } /* End of line (newline) */
> + | Expression OP_EXP_EOF { DtParserResult=$1; return 0; } /* End of string (0) */
> ;
>
> Expression
>
> /* Unary operators */
>
> - : EXPOP_LOGICAL_NOT Expression { $$ = DtDoOperator ($2, EXPOP_LOGICAL_NOT, $2);}
> - | EXPOP_ONES_COMPLIMENT Expression { $$ = DtDoOperator ($2, EXPOP_ONES_COMPLIMENT, $2);}
> + : OP_EXP_LOGICAL_NOT Expression { $$ = DtDoOperator ($2, OP_EXP_LOGICAL_NOT, $2);}
> + | OP_EXP_ONES_COMPLIMENT Expression { $$ = DtDoOperator ($2, OP_EXP_ONES_COMPLIMENT, $2);}
>
> /* Binary operators */
>
> - | Expression EXPOP_MULTIPLY Expression { $$ = DtDoOperator ($1, EXPOP_MULTIPLY, $3);}
> - | Expression EXPOP_DIVIDE Expression { $$ = DtDoOperator ($1, EXPOP_DIVIDE, $3);}
> - | Expression EXPOP_MODULO Expression { $$ = DtDoOperator ($1, EXPOP_MODULO, $3);}
> - | Expression EXPOP_ADD Expression { $$ = DtDoOperator ($1, EXPOP_ADD, $3);}
> - | Expression EXPOP_SUBTRACT Expression { $$ = DtDoOperator ($1, EXPOP_SUBTRACT, $3);}
> - | Expression EXPOP_SHIFT_RIGHT Expression { $$ = DtDoOperator ($1, EXPOP_SHIFT_RIGHT, $3);}
> - | Expression EXPOP_SHIFT_LEFT Expression { $$ = DtDoOperator ($1, EXPOP_SHIFT_LEFT, $3);}
> - | Expression EXPOP_GREATER Expression { $$ = DtDoOperator ($1, EXPOP_GREATER, $3);}
> - | Expression EXPOP_LESS Expression { $$ = DtDoOperator ($1, EXPOP_LESS, $3);}
> - | Expression EXPOP_GREATER_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_GREATER_EQUAL, $3);}
> - | Expression EXPOP_LESS_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_LESS_EQUAL, $3);}
> - | Expression EXPOP_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_EQUAL, $3);}
> - | Expression EXPOP_NOT_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_NOT_EQUAL, $3);}
> - | Expression EXPOP_AND Expression { $$ = DtDoOperator ($1, EXPOP_AND, $3);}
> - | Expression EXPOP_XOR Expression { $$ = DtDoOperator ($1, EXPOP_XOR, $3);}
> - | Expression EXPOP_OR Expression { $$ = DtDoOperator ($1, EXPOP_OR, $3);}
> - | Expression EXPOP_LOGICAL_AND Expression { $$ = DtDoOperator ($1, EXPOP_LOGICAL_AND, $3);}
> - | Expression EXPOP_LOGICAL_OR Expression { $$ = DtDoOperator ($1, EXPOP_LOGICAL_OR, $3);}
> + | Expression OP_EXP_MULTIPLY Expression { $$ = DtDoOperator ($1, OP_EXP_MULTIPLY, $3);}
> + | Expression OP_EXP_DIVIDE Expression { $$ = DtDoOperator ($1, OP_EXP_DIVIDE, $3);}
> + | Expression OP_EXP_MODULO Expression { $$ = DtDoOperator ($1, OP_EXP_MODULO, $3);}
> + | Expression OP_EXP_ADD Expression { $$ = DtDoOperator ($1, OP_EXP_ADD, $3);}
> + | Expression OP_EXP_SUBTRACT Expression { $$ = DtDoOperator ($1, OP_EXP_SUBTRACT, $3);}
> + | Expression OP_EXP_SHIFT_RIGHT Expression { $$ = DtDoOperator ($1, OP_EXP_SHIFT_RIGHT, $3);}
> + | Expression OP_EXP_SHIFT_LEFT Expression { $$ = DtDoOperator ($1, OP_EXP_SHIFT_LEFT, $3);}
> + | Expression OP_EXP_GREATER Expression { $$ = DtDoOperator ($1, OP_EXP_GREATER, $3);}
> + | Expression OP_EXP_LESS Expression { $$ = DtDoOperator ($1, OP_EXP_LESS, $3);}
> + | Expression OP_EXP_GREATER_EQUAL Expression { $$ = DtDoOperator ($1, OP_EXP_GREATER_EQUAL, $3);}
> + | Expression OP_EXP_LESS_EQUAL Expression { $$ = DtDoOperator ($1, OP_EXP_LESS_EQUAL, $3);}
> + | Expression OP_EXP_EQUAL Expression { $$ = DtDoOperator ($1, OP_EXP_EQUAL, $3);}
> + | Expression OP_EXP_NOT_EQUAL Expression { $$ = DtDoOperator ($1, OP_EXP_NOT_EQUAL, $3);}
> + | Expression OP_EXP_AND Expression { $$ = DtDoOperator ($1, OP_EXP_AND, $3);}
> + | Expression OP_EXP_XOR Expression { $$ = DtDoOperator ($1, OP_EXP_XOR, $3);}
> + | Expression OP_EXP_OR Expression { $$ = DtDoOperator ($1, OP_EXP_OR, $3);}
> + | Expression OP_EXP_LOGICAL_AND Expression { $$ = DtDoOperator ($1, OP_EXP_LOGICAL_AND, $3);}
> + | Expression OP_EXP_LOGICAL_OR Expression { $$ = DtDoOperator ($1, OP_EXP_LOGICAL_OR, $3);}
>
> /* Parentheses: '(' Expression ')' */
>
> - | EXPOP_PAREN_OPEN Expression
> - EXPOP_PAREN_CLOSE { $$ = $2;}
> + | OP_EXP_PAREN_OPEN Expression
> + OP_EXP_PAREN_CLOSE { $$ = $2;}
>
> /* Label references (prefixed with $) */
>
> - | EXPOP_LABEL { $$ = DtResolveLabel (DtParsertext);}
> + | OP_EXP_LABEL { $$ = DtResolveLabel (DtParsertext);}
>
> /*
> * All constants for the data table compiler are in hex, whether a (optional) 0x
> @@ -283,15 +283,15 @@ Expression
>
> /* Non-prefixed hex number */
>
> - | EXPOP_NUMBER { $$ = DtDoConstant (DtParsertext);}
> + | OP_EXP_NUMBER { $$ = DtDoConstant (DtParsertext);}
>
> /* Standard hex number (0x1234) */
>
> - | EXPOP_HEX_NUMBER { $$ = DtDoConstant (DtParsertext);}
> + | OP_EXP_HEX_NUMBER { $$ = DtDoConstant (DtParsertext);}
>
> /* Possible TBD: Decimal number with prefix (0d1234) - Not supported this time */
>
> - | EXPOP_DECIMAL_NUMBER { $$ = DtDoConstant (DtParsertext);}
> + | OP_EXP_DECIMAL_NUMBER { $$ = DtDoConstant (DtParsertext);}
> ;
> %%
>
> @@ -300,7 +300,7 @@ Expression
> /*
> * Local support functions, including parser entry point
> */
> -#define PR_FIRST_PARSE_OPCODE EXPOP_EOF
> +#define PR_FIRST_PARSE_OPCODE OP_EXP_EOF
> #define PR_YYTNAME_START 3
>
>
> @@ -329,7 +329,7 @@ DtParsererror (
> *
> * FUNCTION: DtGetOpName
> *
> - * PARAMETERS: ParseOpcode - Parser token (EXPOP_*)
> + * PARAMETERS: ParseOpcode - Parser token (OP_EXP_*)
> *
> * RETURN: Pointer to the opcode name
> *
> @@ -344,7 +344,7 @@ DtGetOpName (
> #ifdef ASL_YYTNAME_START
> /*
> * First entries (PR_YYTNAME_START) in yytname are special reserved names.
> - * Ignore first 6 characters of name (EXPOP_)
> + * Ignore first 6 characters of name (OP_EXP_)
> */
> return ((char *) yytname
> [(ParseOpcode - PR_FIRST_PARSE_OPCODE) + PR_YYTNAME_START] + 6);
> diff --git a/src/acpica/source/compiler/dttable.c b/src/acpica/source/compiler/dttable.c
> index 75f34d5d..44efbee4 100644
> --- a/src/acpica/source/compiler/dttable.c
> +++ b/src/acpica/source/compiler/dttable.c
> @@ -182,7 +182,7 @@ DtCompileRsdp (
> /* Compile the "common" RSDP (ACPI 1.0) */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoRsdp1,
> - &Gbl_RootTable, TRUE);
> + &Gbl_RootTable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -196,7 +196,7 @@ DtCompileRsdp (
> /* Compile the "extended" part of the RSDP as a subtable */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoRsdp2,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -240,7 +240,7 @@ DtCompileFadt (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt1,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -255,7 +255,7 @@ DtCompileFadt (
> if (Revision == 2)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt2,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -266,7 +266,7 @@ DtCompileFadt (
> else if (Revision >= 2)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt3,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -277,7 +277,7 @@ DtCompileFadt (
> if (Revision >= 5)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt5,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -289,7 +289,7 @@ DtCompileFadt (
> if (Revision >= 6)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt6,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -326,7 +326,7 @@ DtCompileFacs (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoFacs,
> - &Gbl_RootTable, TRUE);
> + &Gbl_RootTable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> diff --git a/src/acpica/source/compiler/dttable1.c b/src/acpica/source/compiler/dttable1.c
> index bc74799c..084adc3e 100644
> --- a/src/acpica/source/compiler/dttable1.c
> +++ b/src/acpica/source/compiler/dttable1.c
> @@ -202,7 +202,7 @@ DtCompileAsf (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoAsfHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -247,7 +247,7 @@ DtCompileAsf (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -307,7 +307,7 @@ DtCompileAsf (
> while (DataCount > 0)
> {
> Status = DtCompileTable (PFieldList, DataInfoTable,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -323,7 +323,7 @@ DtCompileAsf (
> for (i = 0; i < DataCount; i++)
> {
> Status = DtCompileTable (PFieldList, DataInfoTable,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -399,7 +399,7 @@ DtCompileCsrt (
> /* Resource group subtable */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt0,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -424,7 +424,7 @@ DtCompileCsrt (
> /* Shared info subtable (One per resource group) */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt1,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -438,7 +438,7 @@ DtCompileCsrt (
> {
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt2,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -451,7 +451,7 @@ DtCompileCsrt (
> if (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt2a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -504,7 +504,7 @@ DtCompileDbg2 (
>
> /* Main table */
>
> - Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -529,7 +529,7 @@ DtCompileDbg2 (
> /* Subtable: Debug Device Information */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Device,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -550,7 +550,7 @@ DtCompileDbg2 (
> for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Addr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -566,7 +566,7 @@ DtCompileDbg2 (
> for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Size,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -580,7 +580,7 @@ DtCompileDbg2 (
>
> DeviceInfo->NamepathOffset = CurrentOffset;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Name,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -595,7 +595,7 @@ DtCompileDbg2 (
> /* OemData - Variable-length data (Optional, size = OemDataLength) */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2OemData,
> - &Subtable, TRUE);
> + &Subtable);
> if (Status == AE_END_OF_TABLE)
> {
> /* optional field was not found and we're at the end of the file */
> @@ -659,7 +659,7 @@ DtCompileDmar (
> UINT32 PciPathLength;
>
>
> - Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmar, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmar, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -675,7 +675,7 @@ DtCompileDmar (
>
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmarHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -722,7 +722,7 @@ DtCompileDmar (
>
> /* DMAR Subtable */
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -749,7 +749,7 @@ DtCompileDmar (
> while (DeviceScopeLength)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmarScope,
> - &Subtable, FALSE);
> + &Subtable);
> if (Status == AE_NOT_FOUND)
> {
> break;
> @@ -767,7 +767,7 @@ DtCompileDmar (
> while (PciPathLength)
> {
> Status = DtCompileTable (PFieldList, TableInfoDmarPciPath,
> - &Subtable, FALSE);
> + &Subtable);
> if (Status == AE_NOT_FOUND)
> {
> DtPopSubtable ();
> @@ -823,7 +823,7 @@ DtCompileDrtm (
> /* Compile DRTM header */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -841,7 +841,7 @@ DtCompileDrtm (
> /* Compile VTL */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm0,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -857,7 +857,7 @@ DtCompileDrtm (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm0a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -877,7 +877,7 @@ DtCompileDrtm (
> /* Compile RL */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm1,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -893,7 +893,7 @@ DtCompileDrtm (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm1a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -915,7 +915,7 @@ DtCompileDrtm (
> /* Compile DPS */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm2,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1005,7 +1005,7 @@ DtCompileGtdt (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoGtdt,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1018,7 +1018,7 @@ DtCompileGtdt (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoGtdtHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1048,7 +1048,7 @@ DtCompileGtdt (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1074,7 +1074,7 @@ DtCompileGtdt (
> while (GtCount)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoGtdt0a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1128,7 +1128,7 @@ DtCompileFpdt (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoFpdtHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1159,7 +1159,7 @@ DtCompileFpdt (
> break;
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1201,7 +1201,7 @@ DtCompileHest (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoHest,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1272,7 +1272,7 @@ DtCompileHest (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1312,7 +1312,7 @@ DtCompileHest (
> while (BankCount)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoHestBank,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1362,7 +1362,7 @@ DtCompileHmat (
> ParentTable = DtPeekSubtable ();
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoHmat,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1375,7 +1375,7 @@ DtCompileHmat (
>
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoHmatHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1410,7 +1410,7 @@ DtCompileHmat (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1433,7 +1433,7 @@ DtCompileHmat (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList,
> - AcpiDmTableInfoHmat1a, &Subtable, TRUE);
> + AcpiDmTableInfoHmat1a, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1454,7 +1454,7 @@ DtCompileHmat (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList,
> - AcpiDmTableInfoHmat1b, &Subtable, TRUE);
> + AcpiDmTableInfoHmat1b, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1479,7 +1479,7 @@ DtCompileHmat (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList,
> - AcpiDmTableInfoHmat1c, &Subtable, TRUE);
> + AcpiDmTableInfoHmat1c, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1513,7 +1513,7 @@ DtCompileHmat (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList,
> - AcpiDmTableInfoHmat2a, &Subtable, TRUE);
> + AcpiDmTableInfoHmat2a, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1576,7 +1576,7 @@ DtCompileIort (
> ParentTable = DtPeekSubtable ();
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1598,7 +1598,7 @@ DtCompileIort (
> */
> Iort->NodeOffset = sizeof (ACPI_TABLE_IORT);
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortPad,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1624,7 +1624,7 @@ DtCompileIort (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1642,7 +1642,7 @@ DtCompileIort (
> case ACPI_IORT_NODE_ITS_GROUP:
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort0,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1656,7 +1656,7 @@ DtCompileIort (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort0a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1677,7 +1677,7 @@ DtCompileIort (
> case ACPI_IORT_NODE_NAMED_COMPONENT:
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort1,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1692,7 +1692,7 @@ DtCompileIort (
> * for filling this field.
> */
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort1a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1729,7 +1729,7 @@ DtCompileIort (
> case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort2,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1742,7 +1742,7 @@ DtCompileIort (
> case ACPI_IORT_NODE_SMMU:
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1756,7 +1756,7 @@ DtCompileIort (
>
> IortSmmu->GlobalInterruptOffset = NodeLength;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1772,7 +1772,7 @@ DtCompileIort (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3b,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1797,7 +1797,7 @@ DtCompileIort (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3c,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1819,7 +1819,7 @@ DtCompileIort (
> case ACPI_IORT_NODE_SMMU_V3:
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort4,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1842,7 +1842,7 @@ DtCompileIort (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortMap,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1905,7 +1905,7 @@ DtCompileIvrs (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrs,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1918,7 +1918,7 @@ DtCompileIvrs (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1950,7 +1950,7 @@ DtCompileIvrs (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -2012,7 +2012,7 @@ DtCompileIvrs (
> }
>
> Status = DtCompileTable (PFieldList, InfoTable,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> diff --git a/src/acpica/source/compiler/dttable2.c b/src/acpica/source/compiler/dttable2.c
> index a2960e9b..785bc7a1 100644
> --- a/src/acpica/source/compiler/dttable2.c
> +++ b/src/acpica/source/compiler/dttable2.c
> @@ -191,7 +191,7 @@ DtCompileLpit (
> /* LPIT Subtable header */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoLpitHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -218,7 +218,7 @@ DtCompileLpit (
>
> /* LPIT Subtable */
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -259,7 +259,7 @@ DtCompileMadt (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoMadt,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -272,7 +272,7 @@ DtCompileMadt (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoMadtHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -372,7 +372,7 @@ DtCompileMadt (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -442,7 +442,7 @@ DtCompileMpst (
>
> /* Main table */
>
> - Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -460,7 +460,7 @@ DtCompileMpst (
> /* Subtable: Memory Power Node(s) */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -481,7 +481,7 @@ DtCompileMpst (
> while (*PFieldList && PowerStateCount)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0A,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -496,7 +496,7 @@ DtCompileMpst (
> while (*PFieldList && ComponentCount)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0B,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -514,7 +514,7 @@ DtCompileMpst (
>
> DtPopSubtable ();
>
> - Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst1, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst1, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -534,7 +534,7 @@ DtCompileMpst (
> while (*PFieldList && SubtableCount)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst2,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -630,7 +630,7 @@ DtCompileNfit (
> /* Main table */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoNfit,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -646,7 +646,7 @@ DtCompileNfit (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoNfitHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -708,7 +708,7 @@ DtCompileNfit (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -727,7 +727,7 @@ DtCompileNfit (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoNfit2a,
> - &Subtable, FALSE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -752,7 +752,7 @@ DtCompileNfit (
> if (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoNfit3a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -772,7 +772,7 @@ DtCompileNfit (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoNfit6a,
> - &Subtable, FALSE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -829,7 +829,7 @@ DtCompilePcct (
> /* Main table */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPcct,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -844,7 +844,7 @@ DtCompilePcct (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPcctHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -889,7 +889,7 @@ DtCompilePcct (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -930,7 +930,7 @@ DtCompilePdtt (
>
> /* Main table */
>
> - Status = DtCompileTable (PFieldList, AcpiDmTableInfoPdtt, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPdtt, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -949,7 +949,7 @@ DtCompilePdtt (
> /* List of subchannel IDs, each 2 bytes */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPdtt0,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -993,7 +993,7 @@ DtCompilePmtt (
>
> /* Main table */
>
> - Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1007,7 +1007,7 @@ DtCompilePmtt (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmttHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1039,7 +1039,7 @@ DtCompilePmtt (
> /* Subtable: Socket Structure */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt0,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1054,7 +1054,7 @@ DtCompilePmtt (
> /* Subtable: Memory Controller Structure */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1070,7 +1070,7 @@ DtCompilePmtt (
> while (DomainCount)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1086,7 +1086,7 @@ DtCompilePmtt (
> /* Subtable: Physical Component Structure */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt2,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1141,7 +1141,7 @@ DtCompilePptt (
> /* Compile PPTT subtable header */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoPpttHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1175,7 +1175,7 @@ DtCompilePptt (
>
> /* Compile PPTT subtable body */
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1199,7 +1199,7 @@ DtCompilePptt (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList,
> - AcpiDmTableInfoPptt0a, &Subtable, TRUE);
> + AcpiDmTableInfoPptt0a, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1288,7 +1288,7 @@ DtCompileS3pt (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt,
> - &Gbl_RootTable, TRUE);
> + &Gbl_RootTable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1300,7 +1300,7 @@ DtCompileS3pt (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3ptHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1330,7 +1330,7 @@ DtCompileS3pt (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1381,7 +1381,7 @@ DtCompileSdev (
>
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdevHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1416,7 +1416,7 @@ DtCompileSdev (
>
> /* Compile SDEV subtable body */
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1434,7 +1434,7 @@ DtCompileSdev (
> /* Append DeviceId namespace string */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdev0a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1459,7 +1459,7 @@ DtCompileSdev (
> if (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdev1b,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1491,7 +1491,7 @@ DtCompileSdev (
> while (*PFieldList && !strcmp ((*PFieldList)->Name, "Device"))
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdev1a,
> - &Subtable, FALSE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1522,7 +1522,7 @@ DtCompileSdev (
> if (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSdev1b,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1583,7 +1583,7 @@ DtCompileSlic (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSlic,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1625,7 +1625,7 @@ DtCompileSlit (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSlit,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1681,7 +1681,7 @@ DtCompileSrat (
>
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSrat,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1694,7 +1694,7 @@ DtCompileSrat (
> {
> SubtableStart = *PFieldList;
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoSratHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1739,7 +1739,7 @@ DtCompileSrat (
> return (AE_ERROR);
> }
>
> - Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE);
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1779,7 +1779,7 @@ DtCompileStao (
> /* Compile the main table */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoStao,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1793,7 +1793,7 @@ DtCompileStao (
> while (*PFieldList)
> {
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoStaoStr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1833,7 +1833,7 @@ DtCompileTcpa (
> /* Compile the main table */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoTcpaHdr,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1853,13 +1853,13 @@ DtCompileTcpa (
> case ACPI_TCPA_CLIENT_TABLE:
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoTcpaClient,
> - &Subtable, TRUE);
> + &Subtable);
> break;
>
> case ACPI_TCPA_SERVER_TABLE:
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoTcpaServer,
> - &Subtable, TRUE);
> + &Subtable);
> break;
>
> default:
> @@ -1902,7 +1902,7 @@ DtCompileTpm2 (
> /* Compile the main table */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoTpm2,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1919,7 +1919,7 @@ DtCompileTpm2 (
> /* TBD: Optional fields above not fully implemented (not optional at this time) */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoTpm2a,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -1938,7 +1938,7 @@ DtCompileTpm2 (
> /* Subtable specific to to ARM_SMC */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoTpm211,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -2053,7 +2053,7 @@ DtCompileUefi (
> /* Compile the predefined portion of the UEFI table */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoUefi,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -2152,7 +2152,7 @@ DtCompileWpbt (
> /* Compile the main table */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoWpbt,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -2164,7 +2164,7 @@ DtCompileWpbt (
> /* Compile the argument list subtable */
>
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoWpbt0,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -2284,7 +2284,7 @@ DtCompileGeneric (
> }
>
> Status = DtCompileTable (PFieldList, Info,
> - &Subtable, TRUE);
> + &Subtable);
> if (ACPI_SUCCESS (Status))
> {
> DtInsertSubtable (ParentTable, Subtable);
> diff --git a/src/acpica/source/components/dispatcher/dsargs.c b/src/acpica/source/components/dispatcher/dsargs.c
> index 26adfb0b..dd8c30f0 100644
> --- a/src/acpica/source/components/dispatcher/dsargs.c
> +++ b/src/acpica/source/components/dispatcher/dsargs.c
> @@ -481,6 +481,7 @@ AcpiDsGetPackageArguments (
>
> Status = AcpiDsExecuteArguments (Node, Node,
> ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart);
> +
> return_ACPI_STATUS (Status);
> }
>
> diff --git a/src/acpica/source/components/dispatcher/dsopcode.c b/src/acpica/source/components/dispatcher/dsopcode.c
> index 71928fb7..038993c7 100644
> --- a/src/acpica/source/components/dispatcher/dsopcode.c
> +++ b/src/acpica/source/components/dispatcher/dsopcode.c
> @@ -752,8 +752,8 @@ AcpiDsEvalDataObjectOperands (
> if (!Op->Common.Value.Arg)
> {
> ACPI_ERROR ((AE_INFO,
> - "Dispatch: Missing child while executing TermArg for %X",
> - Op->Common.AmlOpcode));
> + "Missing child while evaluating opcode %4.4X, Op %p",
> + Op->Common.AmlOpcode, Op));
> return_ACPI_STATUS (AE_OK);
> }
>
> diff --git a/src/acpica/source/components/dispatcher/dspkginit.c b/src/acpica/source/components/dispatcher/dspkginit.c
> index 647f5d0d..a034df0d 100644
> --- a/src/acpica/source/components/dispatcher/dspkginit.c
> +++ b/src/acpica/source/components/dispatcher/dspkginit.c
> @@ -155,6 +155,7 @@
> #include "amlcode.h"
> #include "acdispat.h"
> #include "acinterp.h"
> +#include "acparser.h"
>
>
> #define _COMPONENT ACPI_NAMESPACE
> @@ -208,6 +209,7 @@ AcpiDsBuildInternalPackageObj (
> ACPI_PARSE_OBJECT *Parent;
> ACPI_OPERAND_OBJECT *ObjDesc = NULL;
> ACPI_STATUS Status = AE_OK;
> + BOOLEAN ModuleLevelCode = FALSE;
> UINT16 ReferenceCount;
> UINT32 Index;
> UINT32 i;
> @@ -216,6 +218,13 @@ AcpiDsBuildInternalPackageObj (
> ACPI_FUNCTION_TRACE (DsBuildInternalPackageObj);
>
>
> + /* Check if we are executing module level code */
> +
> + if (WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)
> + {
> + ModuleLevelCode = TRUE;
> + }
> +
> /* Find the parent of a possibly nested package */
>
> Parent = Op->Common.Parent;
> @@ -250,25 +259,43 @@ AcpiDsBuildInternalPackageObj (
>
> /*
> * Allocate the element array (array of pointers to the individual
> - * objects) based on the NumElements parameter. Add an extra pointer slot
> - * so that the list is always null terminated.
> + * objects) if necessary. the count is based on the NumElements
> + * parameter. Add an extra pointer slot so that the list is always
> + * null terminated.
> */
> - ObjDesc->Package.Elements = ACPI_ALLOCATE_ZEROED (
> - ((ACPI_SIZE) ElementCount + 1) * sizeof (void *));
> -
> if (!ObjDesc->Package.Elements)
> {
> - AcpiUtDeleteObjectDesc (ObjDesc);
> - return_ACPI_STATUS (AE_NO_MEMORY);
> + ObjDesc->Package.Elements = ACPI_ALLOCATE_ZEROED (
> + ((ACPI_SIZE) ElementCount + 1) * sizeof (void *));
> +
> + if (!ObjDesc->Package.Elements)
> + {
> + AcpiUtDeleteObjectDesc (ObjDesc);
> + return_ACPI_STATUS (AE_NO_MEMORY);
> + }
> +
> + ObjDesc->Package.Count = ElementCount;
> }
>
> - ObjDesc->Package.Count = ElementCount;
> + /* First arg is element count. Second arg begins the initializer list */
> +
> Arg = Op->Common.Value.Arg;
> Arg = Arg->Common.Next;
>
> - if (Arg)
> + /*
> + * If we are executing module-level code, we will defer the
> + * full resolution of the package elements in order to support
> + * forward references from the elements. This provides
> + * compatibility with other ACPI implementations.
> + */
> + if (ModuleLevelCode)
> {
> - ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;
> + ObjDesc->Package.AmlStart = WalkState->Aml;
> + ObjDesc->Package.AmlLength = 0;
> +
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> + "%s: Deferring resolution of Package elements\n",
> + ACPI_GET_FUNCTION_NAME));
> }
>
> /*
> @@ -308,12 +335,17 @@ AcpiDsBuildInternalPackageObj (
> ACPI_ERROR ((AE_INFO, "%-48s", "****DS namepath not found"));
> }
>
> - /*
> - * Initialize this package element. This function handles the
> - * resolution of named references within the package.
> - */
> - AcpiDsInitPackageElement (0, ObjDesc->Package.Elements[i],
> - NULL, &ObjDesc->Package.Elements[i]);
> + if (!ModuleLevelCode)
> + {
> + /*
> + * Initialize this package element. This function handles the
> + * resolution of named references within the package.
> + * Forward references from module-level code are deferred
> + * until all ACPI tables are loaded.
> + */
> + AcpiDsInitPackageElement (0, ObjDesc->Package.Elements[i],
> + NULL, &ObjDesc->Package.Elements[i]);
> + }
> }
>
> if (*ObjDescPtr)
> @@ -383,15 +415,21 @@ AcpiDsBuildInternalPackageObj (
> * NumElements count.
> *
> * Note: this is not an error, the package is padded out
> - * with NULLs.
> + * with NULLs as per the ACPI specification.
> */
> - ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
> - "Package List length (%u) smaller than NumElements "
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO,
> + "%s: Package List length (%u) smaller than NumElements "
> "count (%u), padded with null elements\n",
> - i, ElementCount));
> + ACPI_GET_FUNCTION_NAME, i, ElementCount));
> + }
> +
> + /* Module-level packages will be resolved later */
> +
> + if (!ModuleLevelCode)
> + {
> + ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;
> }
>
> - ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;
> Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjDesc);
> return_ACPI_STATUS (Status);
> }
> @@ -481,11 +519,12 @@ AcpiDsResolvePackageElement (
> ACPI_OPERAND_OBJECT **ElementPtr)
> {
> ACPI_STATUS Status;
> + ACPI_STATUS Status2;
> ACPI_GENERIC_STATE ScopeInfo;
> ACPI_OPERAND_OBJECT *Element = *ElementPtr;
> ACPI_NAMESPACE_NODE *ResolvedNode;
> ACPI_NAMESPACE_NODE *OriginalNode;
> - char *ExternalPath = NULL;
> + char *ExternalPath = "";
> ACPI_OBJECT_TYPE Type;
>
>
> @@ -496,6 +535,10 @@ AcpiDsResolvePackageElement (
>
> if (Element->Reference.Resolved)
> {
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> + "%s: Package element is already resolved\n",
> + ACPI_GET_FUNCTION_NAME));
> +
> return_VOID;
> }
>
> @@ -510,14 +553,41 @@ AcpiDsResolvePackageElement (
> NULL, &ResolvedNode);
> if (ACPI_FAILURE (Status))
> {
> - Status = AcpiNsExternalizeName (ACPI_UINT32_MAX,
> - (char *) Element->Reference.Aml,
> - NULL, &ExternalPath);
> +#if defined ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS && !defined ACPI_APPLICATION
> + /*
> + * For the kernel-resident ACPICA, optionally be silent about the
> + * NOT_FOUND case. Although this is potentially a serious problem,
> + * it can generate a lot of noise/errors on platforms whose
> + * firmware carries around a bunch of unused Package objects.
> + * To disable these errors, define ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS
> + * in the OS-specific header.
> + *
> + * All errors are always reported for ACPICA applications such as
> + * AcpiExec.
> + */
> + if (Status == AE_NOT_FOUND)
> + {
> + /* Reference name not found, set the element to NULL */
> +
> + AcpiUtRemoveReference (*ElementPtr);
> + *ElementPtr = NULL;
> + return_VOID;
> + }
> +#endif
> + Status2 = AcpiNsExternalizeName (ACPI_UINT32_MAX,
> + (char *) Element->Reference.Aml, NULL, &ExternalPath);
>
> ACPI_EXCEPTION ((AE_INFO, Status,
> - "Could not find/resolve named package element: %s", ExternalPath));
> + "While resolving a named reference package element - %s",
> + ExternalPath));
> + if (ACPI_SUCCESS (Status2))
> + {
> + ACPI_FREE (ExternalPath);
> + }
> +
> + /* Could not resolve name, set the element to NULL */
>
> - ACPI_FREE (ExternalPath);
> + AcpiUtRemoveReference (*ElementPtr);
> *ElementPtr = NULL;
> return_VOID;
> }
> @@ -531,24 +601,6 @@ AcpiDsResolvePackageElement (
> *ElementPtr = NULL;
> return_VOID;
> }
> -#if 0
> - else if (ResolvedNode->Flags & ANOBJ_TEMPORARY)
> - {
> - /*
> - * A temporary node found here indicates that the reference is
> - * to a node that was created within this method. We are not
> - * going to allow it (especially if the package is returned
> - * from the method) -- the temporary node will be deleted out
> - * from under the method. (05/2017).
> - */
> - ACPI_ERROR ((AE_INFO,
> - "Package element refers to a temporary name [%4.4s], "
> - "inserting a NULL element",
> - ResolvedNode->Name.Ascii));
> - *ElementPtr = NULL;
> - return_VOID;
> - }
> -#endif
>
> /*
> * Special handling for Alias objects. We need ResolvedNode to point
> @@ -587,22 +639,6 @@ AcpiDsResolvePackageElement (
> return_VOID;
> }
>
> -#if 0
> -/* TBD - alias support */
> - /*
> - * Special handling for Alias objects. We need to setup the type
> - * and the Op->Common.Node to point to the Alias target. Note,
> - * Alias has at most one level of indirection internally.
> - */
> - Type = Op->Common.Node->Type;
> - if (Type == ACPI_TYPE_LOCAL_ALIAS)
> - {
> - Type = ObjDesc->Common.Type;
> - Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE,
> - Op->Common.Node->Object);
> - }
> -#endif
> -
> switch (Type)
> {
> /*
> diff --git a/src/acpica/source/components/dispatcher/dswexec.c b/src/acpica/source/components/dispatcher/dswexec.c
> index d3a69fdd..c39095f6 100644
> --- a/src/acpica/source/components/dispatcher/dswexec.c
> +++ b/src/acpica/source/components/dispatcher/dswexec.c
> @@ -723,8 +723,8 @@ AcpiDsExecEndOp (
> case AML_TYPE_CREATE_OBJECT:
>
> ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
> - "Executing CreateObject (Buffer/Package) Op=%p AMLPtr=%p\n",
> - Op, Op->Named.Data));
> + "Executing CreateObject (Buffer/Package) Op=%p Child=%p ParentOpcode=%4.4X\n",
> + Op, Op->Named.Value.Arg, Op->Common.Parent->Common.AmlOpcode));
>
> switch (Op->Common.Parent->Common.AmlOpcode)
> {
> diff --git a/src/acpica/source/components/dispatcher/dswload.c b/src/acpica/source/components/dispatcher/dswload.c
> index 9a5da369..91f5b305 100644
> --- a/src/acpica/source/components/dispatcher/dswload.c
> +++ b/src/acpica/source/components/dispatcher/dswload.c
> @@ -264,7 +264,7 @@ AcpiDsLoad1BeginOp (
> UINT32 Flags;
>
>
> - ACPI_FUNCTION_TRACE (DsLoad1BeginOp);
> + ACPI_FUNCTION_TRACE_PTR (DsLoad1BeginOp, WalkState->Op);
>
>
> Op = WalkState->Op;
> diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
> index 844f9549..5c58746e 100644
> --- a/src/acpica/source/components/executer/exconvrt.c
> +++ b/src/acpica/source/components/executer/exconvrt.c
> @@ -757,6 +757,7 @@ AcpiExConvertToTargetType (
> switch (GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs))
> {
> case ARGI_SIMPLE_TARGET:
> + case ARGI_FIXED_TARGET:
> case ARGI_INTEGER_REF: /* Handles Increment, Decrement cases */
>
> switch (DestinationType)
> diff --git a/src/acpica/source/components/executer/exnames.c b/src/acpica/source/components/executer/exnames.c
> index 3dc19986..ce000e5d 100644
> --- a/src/acpica/source/components/executer/exnames.c
> +++ b/src/acpica/source/components/executer/exnames.c
> @@ -309,14 +309,11 @@ AcpiExNameSegment (
> return_ACPI_STATUS (AE_CTRL_PENDING);
> }
>
> - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Bytes from stream:\n"));
> -
> for (Index = 0;
> (Index < ACPI_NAME_SIZE) && (AcpiUtValidNameChar (*AmlAddress, 0));
> Index++)
> {
> CharBuf[Index] = *AmlAddress++;
> - ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "%c\n", CharBuf[Index]));
> }
>
>
> @@ -330,9 +327,9 @@ AcpiExNameSegment (
>
> if (NameString)
> {
> - strcat (NameString, CharBuf);
> ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
> - "Appended to - %s\n", NameString));
> + "Appending NameSeg %s\n", CharBuf));
> + strcat (NameString, CharBuf);
> }
> else
> {
> diff --git a/src/acpica/source/components/executer/exresop.c b/src/acpica/source/components/executer/exresop.c
> index c6fa853d..7fd24535 100644
> --- a/src/acpica/source/components/executer/exresop.c
> +++ b/src/acpica/source/components/executer/exresop.c
> @@ -429,6 +429,7 @@ AcpiExResolveOperands (
> case ARGI_OBJECT_REF:
> case ARGI_DEVICE_REF:
> case ARGI_TARGETREF: /* Allows implicit conversion rules before store */
> + case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */
> case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */
> case ARGI_STORE_TARGET:
>
> diff --git a/src/acpica/source/components/namespace/nseval.c b/src/acpica/source/components/namespace/nseval.c
> index 14fcb953..b1e1af9a 100644
> --- a/src/acpica/source/components/namespace/nseval.c
> +++ b/src/acpica/source/components/namespace/nseval.c
> @@ -308,6 +308,7 @@ AcpiNsEvaluate (
> */
> switch (AcpiNsGetType (Info->Node))
> {
> + case ACPI_TYPE_ANY:
> case ACPI_TYPE_DEVICE:
> case ACPI_TYPE_EVENT:
> case ACPI_TYPE_MUTEX:
> @@ -315,13 +316,13 @@ AcpiNsEvaluate (
> case ACPI_TYPE_THERMAL:
> case ACPI_TYPE_LOCAL_SCOPE:
> /*
> - * 1) Disallow evaluation of certain object types. For these,
> - * object evaluation is undefined and not supported.
> + * 1) Disallow evaluation of these object types. For these,
> + * object evaluation is undefined.
> */
> ACPI_ERROR ((AE_INFO,
> - "%s: Evaluation of object type [%s] is not supported",
> - Info->FullPathname,
> - AcpiUtGetTypeName (Info->Node->Type)));
> + "%s: This object type [%s] "
> + "never contains data and cannot be evaluated",
> + Info->FullPathname, AcpiUtGetTypeName (Info->Node->Type)));
>
> Status = AE_TYPE;
> goto Cleanup;
> diff --git a/src/acpica/source/components/namespace/nsinit.c b/src/acpica/source/components/namespace/nsinit.c
> index 4a075bed..dc76db9f 100644
> --- a/src/acpica/source/components/namespace/nsinit.c
> +++ b/src/acpica/source/components/namespace/nsinit.c
> @@ -418,7 +418,7 @@ ErrorExit:
> * RETURN: Status
> *
> * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every object
> - * within the namespace.
> + * within the namespace.
> *
> * Currently, the only objects that require initialization are:
> * 1) Methods
> @@ -540,6 +540,10 @@ AcpiNsInitOneObject (
> break;
> }
>
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> + "%s: Completing resolution of Package elements\n",
> + ACPI_GET_FUNCTION_NAME));
> +
> /*
> * Resolve all named references in package objects (and all
> * sub-packages). This action has been deferred until the entire
> @@ -548,6 +552,7 @@ AcpiNsInitOneObject (
> */
> Status = AcpiUtWalkPackageTree (ObjDesc, NULL,
> AcpiDsInitPackageElement, NULL);
> +
> ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;
> break;
>
> diff --git a/src/acpica/source/components/namespace/nsnames.c b/src/acpica/source/components/namespace/nsnames.c
> index b29eac42..097037cb 100644
> --- a/src/acpica/source/components/namespace/nsnames.c
> +++ b/src/acpica/source/components/namespace/nsnames.c
> @@ -511,6 +511,9 @@ AcpiNsGetNormalizedPathname (
>
> (void) AcpiNsBuildNormalizedPath (Node, NameBuffer, Size, NoTrailing);
>
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, "%s: Path \"%s\"\n",
> + ACPI_GET_FUNCTION_NAME, NameBuffer));
> +
> return_PTR (NameBuffer);
> }
>
> diff --git a/src/acpica/source/components/namespace/nsparse.c b/src/acpica/source/components/namespace/nsparse.c
> index baa37d26..bb24bab9 100644
> --- a/src/acpica/source/components/namespace/nsparse.c
> +++ b/src/acpica/source/components/namespace/nsparse.c
> @@ -232,8 +232,9 @@ AcpiNsExecuteTable (
> goto Cleanup;
> }
>
> - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> - "Create table code block: %p\n", MethodObj));
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> + "%s: Create table pseudo-method for [%4.4s] @%p, method %p\n",
> + ACPI_GET_FUNCTION_NAME, Table->Signature, Table, MethodObj));
>
> MethodObj->Method.AmlStart = AmlStart;
> MethodObj->Method.AmlLength = AmlLength;
> @@ -404,7 +405,8 @@ AcpiNsParseTable (
>
> if (AcpiGbl_ParseTableAsTermList)
> {
> - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start load pass\n"));
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> + "%s: **** Start table execution pass\n", ACPI_GET_FUNCTION_NAME));
>
> Status = AcpiNsExecuteTable (TableIndex, StartNode);
> if (ACPI_FAILURE (Status))
> diff --git a/src/acpica/source/components/parser/psargs.c b/src/acpica/source/components/parser/psargs.c
> index 0e0b1002..c9c17371 100644
> --- a/src/acpica/source/components/parser/psargs.c
> +++ b/src/acpica/source/components/parser/psargs.c
> @@ -1067,10 +1067,9 @@ AcpiPsGetNextArg (
> case ARGP_DATAOBJ:
> case ARGP_TERMARG:
>
> -
> - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> - "**** TermArg/DataObj: %s (%2.2X)\n",
> - AcpiUtGetArgumentTypeName (ArgType), ArgType));
> + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> + "**** TermArg/DataObj: %s (%2.2X)\n",
> + AcpiUtGetArgumentTypeName (ArgType), ArgType));
>
> /* Single complex argument, nothing returned */
>
> diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
> index fd868f50..74e8f0d6 100644
> --- a/src/acpica/source/components/parser/psloop.c
> +++ b/src/acpica/source/components/parser/psloop.c
> @@ -283,7 +283,7 @@ AcpiPsGetArguments (
> }
>
> ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> - "Final argument count: %u pass %u\n",
> + "Final argument count: %8.8X pass %u\n",
> WalkState->ArgCount, WalkState->PassNumber));
>
> /*
> @@ -697,7 +697,7 @@ AcpiPsParseLoop (
> /* Check for arguments that need to be processed */
>
> ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> - "Parseloop: argument count: %u\n", WalkState->ArgCount));
> + "Parseloop: argument count: %8.8X\n", WalkState->ArgCount));
>
> if (WalkState->ArgCount)
> {
> diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
> index ce7ae94a..0ad62b77 100644
> --- a/src/acpica/source/components/parser/psparse.c
> +++ b/src/acpica/source/components/parser/psparse.c
> @@ -576,7 +576,7 @@ AcpiPsParseAml (
>
> if (!WalkState->ParserState.Aml)
> {
> - return_ACPI_STATUS (AE_NULL_OBJECT);
> + return_ACPI_STATUS (AE_BAD_ADDRESS);
> }
>
> /* Create and initialize a new thread state */
> diff --git a/src/acpica/source/components/parser/pstree.c b/src/acpica/source/components/parser/pstree.c
> index da1d222d..baed9256 100644
> --- a/src/acpica/source/components/parser/pstree.c
> +++ b/src/acpica/source/components/parser/pstree.c
> @@ -438,6 +438,7 @@ AcpiPsGetChild (
>
> case AML_BUFFER_OP:
> case AML_PACKAGE_OP:
> + case AML_VARIABLE_PACKAGE_OP:
> case AML_METHOD_OP:
> case AML_IF_OP:
> case AML_WHILE_OP:
> diff --git a/src/acpica/source/components/utilities/utcache.c b/src/acpica/source/components/utilities/utcache.c
> index 881dbf35..b324f28c 100644
> --- a/src/acpica/source/components/utilities/utcache.c
> +++ b/src/acpica/source/components/utilities/utcache.c
> @@ -415,8 +415,9 @@ AcpiOsAcquireObject (
> Cache->CurrentDepth--;
>
> ACPI_MEM_TRACKING (Cache->Hits++);
> - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
> - "Object %p from %s cache\n", Object, Cache->ListName));
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC,
> + "%s: Object %p from %s cache\n",
> + ACPI_GET_FUNCTION_NAME, Object, Cache->ListName));
>
> Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES);
> if (ACPI_FAILURE (Status))
> diff --git a/src/acpica/source/components/utilities/utdelete.c b/src/acpica/source/components/utilities/utdelete.c
> index 377ddfe5..4565d8fa 100644
> --- a/src/acpica/source/components/utilities/utdelete.c
> +++ b/src/acpica/source/components/utilities/utdelete.c
> @@ -454,8 +454,8 @@ AcpiUtDeleteInternalObj (
>
> /* Now the object can be safely deleted */
>
> - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Deleting Object %p [%s]\n",
> - Object, AcpiUtGetObjectTypeName (Object)));
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS, "%s: Deleting Object %p [%s]\n",
> + ACPI_GET_FUNCTION_NAME, Object, AcpiUtGetObjectTypeName (Object)));
>
> AcpiUtDeleteObjectDesc (Object);
> return_VOID;
> @@ -581,9 +581,9 @@ AcpiUtUpdateRefCount (
> Object));
> }
>
> - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
> - "Obj %p Type %.2X Refs %.2X [Decremented]\n",
> - Object, Object->Common.Type, NewCount));
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
> + "%s: Obj %p Type %.2X Refs %.2X [Decremented]\n",
> + ACPI_GET_FUNCTION_NAME, Object, Object->Common.Type, NewCount));
>
> /* Actually delete the object on a reference count of zero */
>
> @@ -906,9 +906,9 @@ AcpiUtRemoveReference (
> return;
> }
>
> - ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
> - "Obj %p Current Refs=%X [To Be Decremented]\n",
> - Object, Object->Common.ReferenceCount));
> + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS,
> + "%s: Obj %p Current Refs=%X [To Be Decremented]\n",
> + ACPI_GET_FUNCTION_NAME, Object, Object->Common.ReferenceCount));
>
> /*
> * Decrement the reference count, and only actually delete the object
> diff --git a/src/acpica/source/include/acopcode.h b/src/acpica/source/include/acopcode.h
> index 56f13663..6dbeac68 100644
> --- a/src/acpica/source/include/acopcode.h
> +++ b/src/acpica/source/include/acopcode.h
> @@ -361,7 +361,7 @@
> #define ARGI_FIELD_OP ARGI_INVALID_OPCODE
> #define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
> #define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
> -#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
> +#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)
> #define ARGI_IF_OP ARGI_INVALID_OPCODE
> #define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_TARGETREF)
> #define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE
> @@ -425,12 +425,12 @@
> #define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
> #define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE
> #define ARGI_TIMER_OP ARG_NONE
> -#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
> -#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_TARGETREF)
> -#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_TARGETREF)
> -#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_TARGETREF)
> -#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_TARGETREF)
> -#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_TARGETREF)
> +#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)
> +#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
> +#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
> +#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
> +#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
> +#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET)
> #define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE)
> #define ARGI_VAR_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER)
> #define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER)
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index 864d1275..2f0ac564 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>
> /* Current ACPICA subsystem version in YYYYMMDD format */
>
> -#define ACPI_CA_VERSION 0x20180105
> +#define ACPI_CA_VERSION 0x20180209
>
> #include "acconfig.h"
> #include "actypes.h"
> @@ -302,6 +302,8 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE);
>
> /*
> * Optionally support group module level code.
> + * NOTE, this is essentially obsolete and will be removed soon
> + * (01/2018).
> */
> ACPI_INIT_GLOBAL (UINT8, AcpiGbl_GroupModuleLevelCode, FALSE);
>
> @@ -309,8 +311,10 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_GroupModuleLevelCode, FALSE);
> * Optionally support module level code by parsing the entire table as
> * a TermList. Default is FALSE, do not execute entire table until some
> * lock order issues are fixed.
> + * NOTE, this is essentially obsolete and will be removed soon
> + * (01/2018).
> */
> -ACPI_INIT_GLOBAL (UINT8, AcpiGbl_ParseTableAsTermList, FALSE);
> +ACPI_INIT_GLOBAL (UINT8, AcpiGbl_ParseTableAsTermList, TRUE);
>
> /*
> * Optionally use 32-bit FADT addresses if and when there is a conflict
> diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h
> index a9db6fc7..4f03ab05 100644
> --- a/src/acpica/source/include/actbl1.h
> +++ b/src/acpica/source/include/actbl1.h
> @@ -155,13 +155,11 @@
>
> /*******************************************************************************
> *
> - * Additional ACPI Tables (1)
> + * Additional ACPI Tables
> *
> * These tables are not consumed directly by the ACPICA subsystem, but are
> * included here to support device drivers and the AML disassembler.
> *
> - * The tables in this file are fully defined within the ACPI specification.
> - *
> ******************************************************************************/
>
>
> @@ -170,24 +168,44 @@
> * file. Useful because they make it more difficult to inadvertently type in
> * the wrong signature.
> */
> +#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
> #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
> +#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */
> +#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
> #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
> +#define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */
> +#define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */
> +#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
> +#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
> +#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */
> #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
> #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */
> #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */
> -#define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */
> +#define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */
> +#define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */
> #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */
> -#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */
> -#define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */
> -#define ACPI_SIG_PDTT "PDTT" /* Platform Debug Trigger Table */
> -#define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */
> -#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
> -#define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */
> -#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */
> -#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */
> -#define ACPI_SIG_NFIT "NFIT" /* NVDIMM Firmware Interface Table */
> +#define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */
> +#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
> +#define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */
> +
> +#define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */
> +#define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */
>
>
> +/* Reserved table signatures */
> +
> +#define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */
> +#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */
> +
> +/*
> + * These tables have been seen in the field, but no definition has been found
> + */
> +#ifdef ACPI_UNDEFINED_TABLES
> +#define ACPI_SIG_ATKG "ATKG"
> +#define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */
> +#define ACPI_SIG_IEIT "IEIT"
> +#endif
> +
> /*
> * All tables must be byte-packed to match the ACPI specification, since
> * the tables are provided by the system BIOS.
> @@ -238,6 +256,146 @@ typedef struct acpi_whea_header
> } ACPI_WHEA_HEADER;
>
>
> +/*******************************************************************************
> + *
> + * ASF - Alert Standard Format table (Signature "ASF!")
> + * Revision 0x10
> + *
> + * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
> + *
> + ******************************************************************************/
> +
> +typedef struct acpi_table_asf
> +{
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> +
> +} ACPI_TABLE_ASF;
> +
> +
> +/* ASF subtable header */
> +
> +typedef struct acpi_asf_header
> +{
> + UINT8 Type;
> + UINT8 Reserved;
> + UINT16 Length;
> +
> +} ACPI_ASF_HEADER;
> +
> +
> +/* Values for Type field above */
> +
> +enum AcpiAsfType
> +{
> + ACPI_ASF_TYPE_INFO = 0,
> + ACPI_ASF_TYPE_ALERT = 1,
> + ACPI_ASF_TYPE_CONTROL = 2,
> + ACPI_ASF_TYPE_BOOT = 3,
> + ACPI_ASF_TYPE_ADDRESS = 4,
> + ACPI_ASF_TYPE_RESERVED = 5
> +};
> +
> +/*
> + * ASF subtables
> + */
> +
> +/* 0: ASF Information */
> +
> +typedef struct acpi_asf_info
> +{
> + ACPI_ASF_HEADER Header;
> + UINT8 MinResetValue;
> + UINT8 MinPollInterval;
> + UINT16 SystemId;
> + UINT32 MfgId;
> + UINT8 Flags;
> + UINT8 Reserved2[3];
> +
> +} ACPI_ASF_INFO;
> +
> +/* Masks for Flags field above */
> +
> +#define ACPI_ASF_SMBUS_PROTOCOLS (1)
> +
> +
> +/* 1: ASF Alerts */
> +
> +typedef struct acpi_asf_alert
> +{
> + ACPI_ASF_HEADER Header;
> + UINT8 AssertMask;
> + UINT8 DeassertMask;
> + UINT8 Alerts;
> + UINT8 DataLength;
> +
> +} ACPI_ASF_ALERT;
> +
> +typedef struct acpi_asf_alert_data
> +{
> + UINT8 Address;
> + UINT8 Command;
> + UINT8 Mask;
> + UINT8 Value;
> + UINT8 SensorType;
> + UINT8 Type;
> + UINT8 Offset;
> + UINT8 SourceType;
> + UINT8 Severity;
> + UINT8 SensorNumber;
> + UINT8 Entity;
> + UINT8 Instance;
> +
> +} ACPI_ASF_ALERT_DATA;
> +
> +
> +/* 2: ASF Remote Control */
> +
> +typedef struct acpi_asf_remote
> +{
> + ACPI_ASF_HEADER Header;
> + UINT8 Controls;
> + UINT8 DataLength;
> + UINT16 Reserved2;
> +
> +} ACPI_ASF_REMOTE;
> +
> +typedef struct acpi_asf_control_data
> +{
> + UINT8 Function;
> + UINT8 Address;
> + UINT8 Command;
> + UINT8 Value;
> +
> +} ACPI_ASF_CONTROL_DATA;
> +
> +
> +/* 3: ASF RMCP Boot Options */
> +
> +typedef struct acpi_asf_rmcp
> +{
> + ACPI_ASF_HEADER Header;
> + UINT8 Capabilities[7];
> + UINT8 CompletionCode;
> + UINT32 EnterpriseId;
> + UINT8 Command;
> + UINT16 Parameter;
> + UINT16 BootOptions;
> + UINT16 OemParameters;
> +
> +} ACPI_ASF_RMCP;
> +
> +
> +/* 4: ASF Address */
> +
> +typedef struct acpi_asf_address
> +{
> + ACPI_ASF_HEADER Header;
> + UINT8 EpromAddress;
> + UINT8 Devices;
> +
> +} ACPI_ASF_ADDRESS;
> +
> +
> /*******************************************************************************
> *
> * BERT - Boot Error Record Table (ACPI 4.0)
> @@ -291,6 +449,49 @@ enum AcpiBertErrorSeverity
> */
>
>
> +/*******************************************************************************
> + *
> + * BGRT - Boot Graphics Resource Table (ACPI 5.0)
> + * Version 1
> + *
> + ******************************************************************************/
> +
> +typedef struct acpi_table_bgrt
> +{
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> + UINT16 Version;
> + UINT8 Status;
> + UINT8 ImageType;
> + UINT64 ImageAddress;
> + UINT32 ImageOffsetX;
> + UINT32 ImageOffsetY;
> +
> +} ACPI_TABLE_BGRT;
> +
> +/* Flags for Status field above */
> +
> +#define ACPI_BGRT_DISPLAYED (1)
> +#define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1)
> +
> +
> +/*******************************************************************************
> + *
> + * BOOT - Simple Boot Flag Table
> + * Version 1
> + *
> + * Conforms to the "Simple Boot Flag Specification", Version 2.1
> + *
> + ******************************************************************************/
> +
> +typedef struct acpi_table_boot
> +{
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> + UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */
> + UINT8 Reserved[3];
> +
> +} ACPI_TABLE_BOOT;
> +
> +
> /*******************************************************************************
> *
> * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
> @@ -320,1725 +521,1522 @@ typedef struct acpi_cpep_polling
>
> /*******************************************************************************
> *
> - * ECDT - Embedded Controller Boot Resources Table
> - * Version 1
> + * CSRT - Core System Resource Table
> + * Version 0
> + *
> + * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
> *
> ******************************************************************************/
>
> -typedef struct acpi_table_ecdt
> +typedef struct acpi_table_csrt
> {
> ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */
> - ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */
> - UINT32 Uid; /* Unique ID - must be same as the EC _UID method */
> - UINT8 Gpe; /* The GPE for the EC */
> - UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */
>
> -} ACPI_TABLE_ECDT;
> +} ACPI_TABLE_CSRT;
>
>
> -/*******************************************************************************
> - *
> - * EINJ - Error Injection Table (ACPI 4.0)
> - * Version 1
> - *
> - ******************************************************************************/
> +/* Resource Group subtable */
>
> -typedef struct acpi_table_einj
> +typedef struct acpi_csrt_group
> {
> - ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 HeaderLength;
> - UINT8 Flags;
> - UINT8 Reserved[3];
> - UINT32 Entries;
> + UINT32 Length;
> + UINT32 VendorId;
> + UINT32 SubvendorId;
> + UINT16 DeviceId;
> + UINT16 SubdeviceId;
> + UINT16 Revision;
> + UINT16 Reserved;
> + UINT32 SharedInfoLength;
>
> -} ACPI_TABLE_EINJ;
> + /* Shared data immediately follows (Length = SharedInfoLength) */
>
> +} ACPI_CSRT_GROUP;
>
> -/* EINJ Injection Instruction Entries (actions) */
> +/* Shared Info subtable */
>
> -typedef struct acpi_einj_entry
> +typedef struct acpi_csrt_shared_info
> {
> - ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
> -
> -} ACPI_EINJ_ENTRY;
> + UINT16 MajorVersion;
> + UINT16 MinorVersion;
> + UINT32 MmioBaseLow;
> + UINT32 MmioBaseHigh;
> + UINT32 GsiInterrupt;
> + UINT8 InterruptPolarity;
> + UINT8 InterruptMode;
> + UINT8 NumChannels;
> + UINT8 DmaAddressWidth;
> + UINT16 BaseRequestLine;
> + UINT16 NumHandshakeSignals;
> + UINT32 MaxBlockSize;
>
> -/* Masks for Flags field above */
> + /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
>
> -#define ACPI_EINJ_PRESERVE (1)
> +} ACPI_CSRT_SHARED_INFO;
>
> -/* Values for Action field above */
> +/* Resource Descriptor subtable */
>
> -enum AcpiEinjActions
> +typedef struct acpi_csrt_descriptor
> {
> - ACPI_EINJ_BEGIN_OPERATION = 0,
> - ACPI_EINJ_GET_TRIGGER_TABLE = 1,
> - ACPI_EINJ_SET_ERROR_TYPE = 2,
> - ACPI_EINJ_GET_ERROR_TYPE = 3,
> - ACPI_EINJ_END_OPERATION = 4,
> - ACPI_EINJ_EXECUTE_OPERATION = 5,
> - ACPI_EINJ_CHECK_BUSY_STATUS = 6,
> - ACPI_EINJ_GET_COMMAND_STATUS = 7,
> - ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8,
> - ACPI_EINJ_GET_EXECUTE_TIMINGS = 9,
> - ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved */
> - ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */
> -};
> + UINT32 Length;
> + UINT16 Type;
> + UINT16 Subtype;
> + UINT32 Uid;
>
> -/* Values for Instruction field above */
> + /* Resource-specific information immediately follows */
>
> -enum AcpiEinjInstructions
> -{
> - ACPI_EINJ_READ_REGISTER = 0,
> - ACPI_EINJ_READ_REGISTER_VALUE = 1,
> - ACPI_EINJ_WRITE_REGISTER = 2,
> - ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
> - ACPI_EINJ_NOOP = 4,
> - ACPI_EINJ_FLUSH_CACHELINE = 5,
> - ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */
> -};
> +} ACPI_CSRT_DESCRIPTOR;
>
> -typedef struct acpi_einj_error_type_with_addr
> +
> +/* Resource Types */
> +
> +#define ACPI_CSRT_TYPE_INTERRUPT 0x0001
> +#define ACPI_CSRT_TYPE_TIMER 0x0002
> +#define ACPI_CSRT_TYPE_DMA 0x0003
> +
> +/* Resource Subtypes */
> +
> +#define ACPI_CSRT_XRUPT_LINE 0x0000
> +#define ACPI_CSRT_XRUPT_CONTROLLER 0x0001
> +#define ACPI_CSRT_TIMER 0x0000
> +#define ACPI_CSRT_DMA_CHANNEL 0x0000
> +#define ACPI_CSRT_DMA_CONTROLLER 0x0001
> +
> +
> +/*******************************************************************************
> + *
> + * DBG2 - Debug Port Table 2
> + * Version 0 (Both main table and subtables)
> + *
> + * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015
> + *
> + ******************************************************************************/
> +
> +typedef struct acpi_table_dbg2
> {
> - UINT32 ErrorType;
> - UINT32 VendorStructOffset;
> - UINT32 Flags;
> - UINT32 ApicId;
> - UINT64 Address;
> - UINT64 Range;
> - UINT32 PcieId;
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> + UINT32 InfoOffset;
> + UINT32 InfoCount;
>
> -} ACPI_EINJ_ERROR_TYPE_WITH_ADDR;
> +} ACPI_TABLE_DBG2;
>
> -typedef struct acpi_einj_vendor
> +
> +typedef struct acpi_dbg2_header
> {
> - UINT32 Length;
> - UINT32 PcieId;
> - UINT16 VendorId;
> - UINT16 DeviceId;
> - UINT8 RevisionId;
> - UINT8 Reserved[3];
> + UINT32 InfoOffset;
> + UINT32 InfoCount;
>
> -} ACPI_EINJ_VENDOR;
> +} ACPI_DBG2_HEADER;
>
>
> -/* EINJ Trigger Error Action Table */
> +/* Debug Device Information Subtable */
>
> -typedef struct acpi_einj_trigger
> +typedef struct acpi_dbg2_device
> {
> - UINT32 HeaderSize;
> - UINT32 Revision;
> - UINT32 TableSize;
> - UINT32 EntryCount;
> + UINT8 Revision;
> + UINT16 Length;
> + UINT8 RegisterCount; /* Number of BaseAddress registers */
> + UINT16 NamepathLength;
> + UINT16 NamepathOffset;
> + UINT16 OemDataLength;
> + UINT16 OemDataOffset;
> + UINT16 PortType;
> + UINT16 PortSubtype;
> + UINT16 Reserved;
> + UINT16 BaseAddressOffset;
> + UINT16 AddressSizeOffset;
> + /*
> + * Data that follows:
> + * BaseAddress (required) - Each in 12-byte Generic Address Structure format.
> + * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
> + * Namepath (required) - Null terminated string. Single dot if not supported.
> + * OemData (optional) - Length is OemDataLength.
> + */
> +} ACPI_DBG2_DEVICE;
>
> -} ACPI_EINJ_TRIGGER;
> +/* Types for PortType field above */
>
> -/* Command status return values */
> +#define ACPI_DBG2_SERIAL_PORT 0x8000
> +#define ACPI_DBG2_1394_PORT 0x8001
> +#define ACPI_DBG2_USB_PORT 0x8002
> +#define ACPI_DBG2_NET_PORT 0x8003
>
> -enum AcpiEinjCommandStatus
> -{
> - ACPI_EINJ_SUCCESS = 0,
> - ACPI_EINJ_FAILURE = 1,
> - ACPI_EINJ_INVALID_ACCESS = 2,
> - ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */
> -};
> +/* Subtypes for PortSubtype field above */
>
> +#define ACPI_DBG2_16550_COMPATIBLE 0x0000
> +#define ACPI_DBG2_16550_SUBSET 0x0001
> +#define ACPI_DBG2_ARM_PL011 0x0003
> +#define ACPI_DBG2_ARM_SBSA_32BIT 0x000D
> +#define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E
> +#define ACPI_DBG2_ARM_DCC 0x000F
> +#define ACPI_DBG2_BCM2835 0x0010
>
> -/* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
> +#define ACPI_DBG2_1394_STANDARD 0x0000
>
> -#define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)
> -#define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)
> -#define ACPI_EINJ_PROCESSOR_FATAL (1<<2)
> -#define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)
> -#define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)
> -#define ACPI_EINJ_MEMORY_FATAL (1<<5)
> -#define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)
> -#define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)
> -#define ACPI_EINJ_PCIX_FATAL (1<<8)
> -#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
> -#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
> -#define ACPI_EINJ_PLATFORM_FATAL (1<<11)
> -#define ACPI_EINJ_VENDOR_DEFINED (1<<31)
> +#define ACPI_DBG2_USB_XHCI 0x0000
> +#define ACPI_DBG2_USB_EHCI 0x0001
>
>
> /*******************************************************************************
> *
> - * ERST - Error Record Serialization Table (ACPI 4.0)
> + * DBGP - Debug Port table
> * Version 1
> *
> + * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
> + *
> ******************************************************************************/
>
> -typedef struct acpi_table_erst
> +typedef struct acpi_table_dbgp
> {
> ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 HeaderLength;
> - UINT32 Reserved;
> - UINT32 Entries;
> + UINT8 Type; /* 0=full 16550, 1=subset of 16550 */
> + UINT8 Reserved[3];
> + ACPI_GENERIC_ADDRESS DebugPort;
>
> -} ACPI_TABLE_ERST;
> +} ACPI_TABLE_DBGP;
>
>
> -/* ERST Serialization Entries (actions) */
> +/*******************************************************************************
> + *
> + * DMAR - DMA Remapping table
> + * Version 1
> + *
> + * Conforms to "Intel Virtualization Technology for Directed I/O",
> + * Version 2.3, October 2014
> + *
> + ******************************************************************************/
>
> -typedef struct acpi_erst_entry
> +typedef struct acpi_table_dmar
> {
> - ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> + UINT8 Width; /* Host Address Width */
> + UINT8 Flags;
> + UINT8 Reserved[10];
>
> -} ACPI_ERST_ENTRY;
> +} ACPI_TABLE_DMAR;
>
> /* Masks for Flags field above */
>
> -#define ACPI_ERST_PRESERVE (1)
> +#define ACPI_DMAR_INTR_REMAP (1)
> +#define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)
> +#define ACPI_DMAR_X2APIC_MODE (1<<2)
>
> -/* Values for Action field above */
>
> -enum AcpiErstActions
> +/* DMAR subtable header */
> +
> +typedef struct acpi_dmar_header
> {
> - ACPI_ERST_BEGIN_WRITE = 0,
> - ACPI_ERST_BEGIN_READ = 1,
> - ACPI_ERST_BEGIN_CLEAR = 2,
> - ACPI_ERST_END = 3,
> - ACPI_ERST_SET_RECORD_OFFSET = 4,
> - ACPI_ERST_EXECUTE_OPERATION = 5,
> - ACPI_ERST_CHECK_BUSY_STATUS = 6,
> - ACPI_ERST_GET_COMMAND_STATUS = 7,
> - ACPI_ERST_GET_RECORD_ID = 8,
> - ACPI_ERST_SET_RECORD_ID = 9,
> - ACPI_ERST_GET_RECORD_COUNT = 10,
> - ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
> - ACPI_ERST_NOT_USED = 12,
> - ACPI_ERST_GET_ERROR_RANGE = 13,
> - ACPI_ERST_GET_ERROR_LENGTH = 14,
> - ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
> - ACPI_ERST_EXECUTE_TIMINGS = 16,
> - ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */
> -};
> + UINT16 Type;
> + UINT16 Length;
>
> -/* Values for Instruction field above */
> +} ACPI_DMAR_HEADER;
>
> -enum AcpiErstInstructions
> -{
> - ACPI_ERST_READ_REGISTER = 0,
> - ACPI_ERST_READ_REGISTER_VALUE = 1,
> - ACPI_ERST_WRITE_REGISTER = 2,
> - ACPI_ERST_WRITE_REGISTER_VALUE = 3,
> - ACPI_ERST_NOOP = 4,
> - ACPI_ERST_LOAD_VAR1 = 5,
> - ACPI_ERST_LOAD_VAR2 = 6,
> - ACPI_ERST_STORE_VAR1 = 7,
> - ACPI_ERST_ADD = 8,
> - ACPI_ERST_SUBTRACT = 9,
> - ACPI_ERST_ADD_VALUE = 10,
> - ACPI_ERST_SUBTRACT_VALUE = 11,
> - ACPI_ERST_STALL = 12,
> - ACPI_ERST_STALL_WHILE_TRUE = 13,
> - ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
> - ACPI_ERST_GOTO = 15,
> - ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
> - ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
> - ACPI_ERST_MOVE_DATA = 18,
> - ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */
> -};
> -
> -/* Command status return values */
> +/* Values for subtable type in ACPI_DMAR_HEADER */
>
> -enum AcpiErstCommandStatus
> +enum AcpiDmarType
> {
> - ACPI_ERST_SUCESS = 0,
> - ACPI_ERST_NO_SPACE = 1,
> - ACPI_ERST_NOT_AVAILABLE = 2,
> - ACPI_ERST_FAILURE = 3,
> - ACPI_ERST_RECORD_EMPTY = 4,
> - ACPI_ERST_NOT_FOUND = 5,
> - ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */
> + ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
> + ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
> + ACPI_DMAR_TYPE_ROOT_ATS = 2,
> + ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,
> + ACPI_DMAR_TYPE_NAMESPACE = 4,
> + ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */
> };
>
>
> -/* Error Record Serialization Information */
> +/* DMAR Device Scope structure */
>
> -typedef struct acpi_erst_info
> +typedef struct acpi_dmar_device_scope
> {
> - UINT16 Signature; /* Should be "ER" */
> - UINT8 Data[48];
> -
> -} ACPI_ERST_INFO;
> + UINT8 EntryType;
> + UINT8 Length;
> + UINT16 Reserved;
> + UINT8 EnumerationId;
> + UINT8 Bus;
>
> +} ACPI_DMAR_DEVICE_SCOPE;
>
> -/*******************************************************************************
> - *
> - * HEST - Hardware Error Source Table (ACPI 4.0)
> - * Version 1
> - *
> - ******************************************************************************/
> +/* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
>
> -typedef struct acpi_table_hest
> +enum AcpiDmarScopeType
> {
> - ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 ErrorSourceCount;
> -
> -} ACPI_TABLE_HEST;
> -
> -
> -/* HEST subtable header */
> + ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
> + ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
> + ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
> + ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
> + ACPI_DMAR_SCOPE_TYPE_HPET = 4,
> + ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,
> + ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */
> +};
>
> -typedef struct acpi_hest_header
> +typedef struct acpi_dmar_pci_path
> {
> - UINT16 Type;
> - UINT16 SourceId;
> -
> -} ACPI_HEST_HEADER;
> + UINT8 Device;
> + UINT8 Function;
>
> -
> -/* Values for Type field above for subtables */
> -
> -enum AcpiHestTypes
> -{
> - ACPI_HEST_TYPE_IA32_CHECK = 0,
> - ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
> - ACPI_HEST_TYPE_IA32_NMI = 2,
> - ACPI_HEST_TYPE_NOT_USED3 = 3,
> - ACPI_HEST_TYPE_NOT_USED4 = 4,
> - ACPI_HEST_TYPE_NOT_USED5 = 5,
> - ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
> - ACPI_HEST_TYPE_AER_ENDPOINT = 7,
> - ACPI_HEST_TYPE_AER_BRIDGE = 8,
> - ACPI_HEST_TYPE_GENERIC_ERROR = 9,
> - ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10,
> - ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11,
> - ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */
> -};
> +} ACPI_DMAR_PCI_PATH;
>
>
> /*
> - * HEST substructures contained in subtables
> + * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
> */
>
> -/*
> - * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
> - * ACPI_HEST_IA_CORRECTED structures.
> - */
> -typedef struct acpi_hest_ia_error_bank
> -{
> - UINT8 BankNumber;
> - UINT8 ClearStatusOnInit;
> - UINT8 StatusFormat;
> - UINT8 Reserved;
> - UINT32 ControlRegister;
> - UINT64 ControlData;
> - UINT32 StatusRegister;
> - UINT32 AddressRegister;
> - UINT32 MiscRegister;
> -
> -} ACPI_HEST_IA_ERROR_BANK;
> -
> -
> -/* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
> +/* 0: Hardware Unit Definition */
>
> -typedef struct acpi_hest_aer_common
> +typedef struct acpi_dmar_hardware_unit
> {
> - UINT16 Reserved1;
> + ACPI_DMAR_HEADER Header;
> UINT8 Flags;
> - UINT8 Enabled;
> - UINT32 RecordsToPreallocate;
> - UINT32 MaxSectionsPerRecord;
> - UINT32 Bus; /* Bus and Segment numbers */
> - UINT16 Device;
> - UINT16 Function;
> - UINT16 DeviceControl;
> - UINT16 Reserved2;
> - UINT32 UncorrectableMask;
> - UINT32 UncorrectableSeverity;
> - UINT32 CorrectableMask;
> - UINT32 AdvancedCapabilities;
> -
> -} ACPI_HEST_AER_COMMON;
> -
> -/* Masks for HEST Flags fields */
> -
> -#define ACPI_HEST_FIRMWARE_FIRST (1)
> -#define ACPI_HEST_GLOBAL (1<<1)
> -#define ACPI_HEST_GHES_ASSIST (1<<2)
> -
> -/*
> - * Macros to access the bus/segment numbers in Bus field above:
> - * Bus number is encoded in bits 7:0
> - * Segment number is encoded in bits 23:8
> - */
> -#define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF)
> -#define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF)
> + UINT8 Reserved;
> + UINT16 Segment;
> + UINT64 Address; /* Register Base Address */
>
> +} ACPI_DMAR_HARDWARE_UNIT;
>
> -/* Hardware Error Notification */
> +/* Masks for Flags field above */
>
> -typedef struct acpi_hest_notify
> -{
> - UINT8 Type;
> - UINT8 Length;
> - UINT16 ConfigWriteEnable;
> - UINT32 PollInterval;
> - UINT32 Vector;
> - UINT32 PollingThresholdValue;
> - UINT32 PollingThresholdWindow;
> - UINT32 ErrorThresholdValue;
> - UINT32 ErrorThresholdWindow;
> +#define ACPI_DMAR_INCLUDE_ALL (1)
>
> -} ACPI_HEST_NOTIFY;
>
> -/* Values for Notify Type field above */
> +/* 1: Reserved Memory Defininition */
>
> -enum AcpiHestNotifyTypes
> +typedef struct acpi_dmar_reserved_memory
> {
> - ACPI_HEST_NOTIFY_POLLED = 0,
> - ACPI_HEST_NOTIFY_EXTERNAL = 1,
> - ACPI_HEST_NOTIFY_LOCAL = 2,
> - ACPI_HEST_NOTIFY_SCI = 3,
> - ACPI_HEST_NOTIFY_NMI = 4,
> - ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */
> - ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */
> - ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */
> - ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */
> - ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */
> - ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */
> - ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */
> - ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */
> -};
> + ACPI_DMAR_HEADER Header;
> + UINT16 Reserved;
> + UINT16 Segment;
> + UINT64 BaseAddress; /* 4K aligned base address */
> + UINT64 EndAddress; /* 4K aligned limit address */
>
> -/* Values for ConfigWriteEnable bitfield above */
> +} ACPI_DMAR_RESERVED_MEMORY;
>
> -#define ACPI_HEST_TYPE (1)
> -#define ACPI_HEST_POLL_INTERVAL (1<<1)
> -#define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)
> -#define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
> -#define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)
> -#define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)
> +/* Masks for Flags field above */
>
> +#define ACPI_DMAR_ALLOW_ALL (1)
>
> -/*
> - * HEST subtables
> - */
>
> -/* 0: IA32 Machine Check Exception */
> +/* 2: Root Port ATS Capability Reporting Structure */
>
> -typedef struct acpi_hest_ia_machine_check
> +typedef struct acpi_dmar_atsr
> {
> - ACPI_HEST_HEADER Header;
> - UINT16 Reserved1;
> - UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
> - UINT8 Enabled;
> - UINT32 RecordsToPreallocate;
> - UINT32 MaxSectionsPerRecord;
> - UINT64 GlobalCapabilityData;
> - UINT64 GlobalControlData;
> - UINT8 NumHardwareBanks;
> - UINT8 Reserved3[7];
> -
> -} ACPI_HEST_IA_MACHINE_CHECK;
> -
> + ACPI_DMAR_HEADER Header;
> + UINT8 Flags;
> + UINT8 Reserved;
> + UINT16 Segment;
>
> -/* 1: IA32 Corrected Machine Check */
> +} ACPI_DMAR_ATSR;
>
> -typedef struct acpi_hest_ia_corrected
> -{
> - ACPI_HEST_HEADER Header;
> - UINT16 Reserved1;
> - UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
> - UINT8 Enabled;
> - UINT32 RecordsToPreallocate;
> - UINT32 MaxSectionsPerRecord;
> - ACPI_HEST_NOTIFY Notify;
> - UINT8 NumHardwareBanks;
> - UINT8 Reserved2[3];
> +/* Masks for Flags field above */
>
> -} ACPI_HEST_IA_CORRECTED;
> +#define ACPI_DMAR_ALL_PORTS (1)
>
>
> -/* 2: IA32 Non-Maskable Interrupt */
> +/* 3: Remapping Hardware Static Affinity Structure */
>
> -typedef struct acpi_hest_ia_nmi
> +typedef struct acpi_dmar_rhsa
> {
> - ACPI_HEST_HEADER Header;
> + ACPI_DMAR_HEADER Header;
> UINT32 Reserved;
> - UINT32 RecordsToPreallocate;
> - UINT32 MaxSectionsPerRecord;
> - UINT32 MaxRawDataLength;
> + UINT64 BaseAddress;
> + UINT32 ProximityDomain;
>
> -} ACPI_HEST_IA_NMI;
> +} ACPI_DMAR_RHSA;
>
>
> -/* 3,4,5: Not used */
> +/* 4: ACPI Namespace Device Declaration Structure */
>
> -/* 6: PCI Express Root Port AER */
> -
> -typedef struct acpi_hest_aer_root
> +typedef struct acpi_dmar_andd
> {
> - ACPI_HEST_HEADER Header;
> - ACPI_HEST_AER_COMMON Aer;
> - UINT32 RootErrorCommand;
> + ACPI_DMAR_HEADER Header;
> + UINT8 Reserved[3];
> + UINT8 DeviceNumber;
> + char DeviceName[1];
>
> -} ACPI_HEST_AER_ROOT;
> +} ACPI_DMAR_ANDD;
>
>
> -/* 7: PCI Express AER (AER Endpoint) */
> +/*******************************************************************************
> + *
> + * DRTM - Dynamic Root of Trust for Measurement table
> + * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
> + * Table version 1
> + *
> + ******************************************************************************/
>
> -typedef struct acpi_hest_aer
> +typedef struct acpi_table_drtm
> {
> - ACPI_HEST_HEADER Header;
> - ACPI_HEST_AER_COMMON Aer;
> -
> -} ACPI_HEST_AER;
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> + UINT64 EntryBaseAddress;
> + UINT64 EntryLength;
> + UINT32 EntryAddress32;
> + UINT64 EntryAddress64;
> + UINT64 ExitAddress;
> + UINT64 LogAreaAddress;
> + UINT32 LogAreaLength;
> + UINT64 ArchDependentAddress;
> + UINT32 Flags;
>
> +} ACPI_TABLE_DRTM;
>
> -/* 8: PCI Express/PCI-X Bridge AER */
> -
> -typedef struct acpi_hest_aer_bridge
> -{
> - ACPI_HEST_HEADER Header;
> - ACPI_HEST_AER_COMMON Aer;
> - UINT32 UncorrectableMask2;
> - UINT32 UncorrectableSeverity2;
> - UINT32 AdvancedCapabilities2;
> +/* Flag Definitions for above */
>
> -} ACPI_HEST_AER_BRIDGE;
> +#define ACPI_DRTM_ACCESS_ALLOWED (1)
> +#define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)
> +#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)
> +#define ACPI_DRTM_AUTHORITY_ORDER (1<<3)
>
>
> -/* 9: Generic Hardware Error Source */
> +/* 1) Validated Tables List (64-bit addresses) */
>
> -typedef struct acpi_hest_generic
> +typedef struct acpi_drtm_vtable_list
> {
> - ACPI_HEST_HEADER Header;
> - UINT16 RelatedSourceId;
> - UINT8 Reserved;
> - UINT8 Enabled;
> - UINT32 RecordsToPreallocate;
> - UINT32 MaxSectionsPerRecord;
> - UINT32 MaxRawDataLength;
> - ACPI_GENERIC_ADDRESS ErrorStatusAddress;
> - ACPI_HEST_NOTIFY Notify;
> - UINT32 ErrorBlockLength;
> + UINT32 ValidatedTableCount;
> + UINT64 ValidatedTables[1];
>
> -} ACPI_HEST_GENERIC;
> +} ACPI_DRTM_VTABLE_LIST;
>
> +/* 2) Resources List (of Resource Descriptors) */
>
> -/* 10: Generic Hardware Error Source, version 2 */
> +/* Resource Descriptor */
>
> -typedef struct acpi_hest_generic_v2
> +typedef struct acpi_drtm_resource
> {
> - ACPI_HEST_HEADER Header;
> - UINT16 RelatedSourceId;
> - UINT8 Reserved;
> - UINT8 Enabled;
> - UINT32 RecordsToPreallocate;
> - UINT32 MaxSectionsPerRecord;
> - UINT32 MaxRawDataLength;
> - ACPI_GENERIC_ADDRESS ErrorStatusAddress;
> - ACPI_HEST_NOTIFY Notify;
> - UINT32 ErrorBlockLength;
> - ACPI_GENERIC_ADDRESS ReadAckRegister;
> - UINT64 ReadAckPreserve;
> - UINT64 ReadAckWrite;
> -
> -} ACPI_HEST_GENERIC_V2;
> -
> -
> -/* Generic Error Status block */
> -
> -typedef struct acpi_hest_generic_status
> -{
> - UINT32 BlockStatus;
> - UINT32 RawDataOffset;
> - UINT32 RawDataLength;
> - UINT32 DataLength;
> - UINT32 ErrorSeverity;
> -
> -} ACPI_HEST_GENERIC_STATUS;
> -
> -/* Values for BlockStatus flags above */
> -
> -#define ACPI_HEST_UNCORRECTABLE (1)
> -#define ACPI_HEST_CORRECTABLE (1<<1)
> -#define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)
> -#define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)
> -#define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
> + UINT8 Size[7];
> + UINT8 Type;
> + UINT64 Address;
>
> +} ACPI_DRTM_RESOURCE;
>
> -/* Generic Error Data entry */
> -
> -typedef struct acpi_hest_generic_data
> +typedef struct acpi_drtm_resource_list
> {
> - UINT8 SectionType[16];
> - UINT32 ErrorSeverity;
> - UINT16 Revision;
> - UINT8 ValidationBits;
> - UINT8 Flags;
> - UINT32 ErrorDataLength;
> - UINT8 FruId[16];
> - UINT8 FruText[20];
> + UINT32 ResourceCount;
> + ACPI_DRTM_RESOURCE Resources[1];
>
> -} ACPI_HEST_GENERIC_DATA;
> +} ACPI_DRTM_RESOURCE_LIST;
>
> -/* Extension for revision 0x0300 */
> +/* 3) Platform-specific Identifiers List */
>
> -typedef struct acpi_hest_generic_data_v300
> +typedef struct acpi_drtm_dps_id
> {
> - UINT8 SectionType[16];
> - UINT32 ErrorSeverity;
> - UINT16 Revision;
> - UINT8 ValidationBits;
> - UINT8 Flags;
> - UINT32 ErrorDataLength;
> - UINT8 FruId[16];
> - UINT8 FruText[20];
> - UINT64 TimeStamp;
> + UINT32 DpsIdLength;
> + UINT8 DpsId[16];
>
> -} ACPI_HEST_GENERIC_DATA_V300;
> +} ACPI_DRTM_DPS_ID;
>
> -/* Values for ErrorSeverity above */
>
> -#define ACPI_HEST_GEN_ERROR_RECOVERABLE 0
> -#define ACPI_HEST_GEN_ERROR_FATAL 1
> -#define ACPI_HEST_GEN_ERROR_CORRECTED 2
> -#define ACPI_HEST_GEN_ERROR_NONE 3
> -
> -/* Flags for ValidationBits above */
> -
> -#define ACPI_HEST_GEN_VALID_FRU_ID (1)
> -#define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)
> -#define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)
> -
> -
> -/* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */
> +/*******************************************************************************
> + *
> + * ECDT - Embedded Controller Boot Resources Table
> + * Version 1
> + *
> + ******************************************************************************/
>
> -typedef struct acpi_hest_ia_deferred_check
> +typedef struct acpi_table_ecdt
> {
> - ACPI_HEST_HEADER Header;
> - UINT16 Reserved1;
> - UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
> - UINT8 Enabled;
> - UINT32 RecordsToPreallocate;
> - UINT32 MaxSectionsPerRecord;
> - ACPI_HEST_NOTIFY Notify;
> - UINT8 NumHardwareBanks;
> - UINT8 Reserved2[3];
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> + ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */
> + ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */
> + UINT32 Uid; /* Unique ID - must be same as the EC _UID method */
> + UINT8 Gpe; /* The GPE for the EC */
> + UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */
>
> -} ACPI_HEST_IA_DEFERRED_CHECK;
> +} ACPI_TABLE_ECDT;
>
>
> /*******************************************************************************
> *
> - * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2)
> + * EINJ - Error Injection Table (ACPI 4.0)
> * Version 1
> *
> ******************************************************************************/
>
> -typedef struct acpi_table_hmat
> +typedef struct acpi_table_einj
> {
> ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 Reserved;
> + UINT32 HeaderLength;
> + UINT8 Flags;
> + UINT8 Reserved[3];
> + UINT32 Entries;
>
> -} ACPI_TABLE_HMAT;
> +} ACPI_TABLE_EINJ;
>
>
> -/* Values for HMAT structure types */
> -
> -enum AcpiHmatType
> -{
> - ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subystem address range */
> - ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */
> - ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */
> - ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */
> -};
> +/* EINJ Injection Instruction Entries (actions) */
>
> -typedef struct acpi_hmat_structure
> +typedef struct acpi_einj_entry
> {
> - UINT16 Type;
> - UINT16 Reserved;
> - UINT32 Length;
> + ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
>
> -} ACPI_HMAT_STRUCTURE;
> +} ACPI_EINJ_ENTRY;
>
> +/* Masks for Flags field above */
>
> -/*
> - * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
> - */
> +#define ACPI_EINJ_PRESERVE (1)
>
> -/* 0: Memory subystem address range */
> +/* Values for Action field above */
>
> -typedef struct acpi_hmat_address_range
> +enum AcpiEinjActions
> {
> - ACPI_HMAT_STRUCTURE Header;
> - UINT16 Flags;
> - UINT16 Reserved1;
> - UINT32 ProcessorPD; /* Processor proximity domain */
> - UINT32 MemoryPD; /* Memory proximity domain */
> - UINT32 Reserved2;
> - UINT64 PhysicalAddressBase; /* Physical address range base */
> - UINT64 PhysicalAddressLength; /* Physical address range length */
> -
> -} ACPI_HMAT_ADDRESS_RANGE;
> -
> -/* Masks for Flags field above */
> -
> -#define ACPI_HMAT_PROCESSOR_PD_VALID (1) /* 1: ProcessorPD field is valid */
> -#define ACPI_HMAT_MEMORY_PD_VALID (1<<1) /* 1: MemoryPD field is valid */
> -#define ACPI_HMAT_RESERVATION_HINT (1<<2) /* 1: Reservation hint */
> -
> + ACPI_EINJ_BEGIN_OPERATION = 0,
> + ACPI_EINJ_GET_TRIGGER_TABLE = 1,
> + ACPI_EINJ_SET_ERROR_TYPE = 2,
> + ACPI_EINJ_GET_ERROR_TYPE = 3,
> + ACPI_EINJ_END_OPERATION = 4,
> + ACPI_EINJ_EXECUTE_OPERATION = 5,
> + ACPI_EINJ_CHECK_BUSY_STATUS = 6,
> + ACPI_EINJ_GET_COMMAND_STATUS = 7,
> + ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8,
> + ACPI_EINJ_GET_EXECUTE_TIMINGS = 9,
> + ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved */
> + ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */
> +};
>
> -/* 1: System locality latency and bandwidth information */
> +/* Values for Instruction field above */
>
> -typedef struct acpi_hmat_locality
> +enum AcpiEinjInstructions
> {
> - ACPI_HMAT_STRUCTURE Header;
> - UINT8 Flags;
> - UINT8 DataType;
> - UINT16 Reserved1;
> - UINT32 NumberOfInitiatorPDs;
> - UINT32 NumberOfTargetPDs;
> - UINT32 Reserved2;
> - UINT64 EntryBaseUnit;
> -
> -} ACPI_HMAT_LOCALITY;
> -
> -/* Masks for Flags field above */
> -
> -#define ACPI_HMAT_MEMORY_HIERARCHY (0x0F)
> + ACPI_EINJ_READ_REGISTER = 0,
> + ACPI_EINJ_READ_REGISTER_VALUE = 1,
> + ACPI_EINJ_WRITE_REGISTER = 2,
> + ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
> + ACPI_EINJ_NOOP = 4,
> + ACPI_EINJ_FLUSH_CACHELINE = 5,
> + ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */
> +};
>
> -/* Values for Memory Hierarchy flag */
> +typedef struct acpi_einj_error_type_with_addr
> +{
> + UINT32 ErrorType;
> + UINT32 VendorStructOffset;
> + UINT32 Flags;
> + UINT32 ApicId;
> + UINT64 Address;
> + UINT64 Range;
> + UINT32 PcieId;
>
> -#define ACPI_HMAT_MEMORY 0
> -#define ACPI_HMAT_LAST_LEVEL_CACHE 1
> -#define ACPI_HMAT_1ST_LEVEL_CACHE 2
> -#define ACPI_HMAT_2ND_LEVEL_CACHE 3
> -#define ACPI_HMAT_3RD_LEVEL_CACHE 4
> +} ACPI_EINJ_ERROR_TYPE_WITH_ADDR;
>
> -/* Values for DataType field above */
> +typedef struct acpi_einj_vendor
> +{
> + UINT32 Length;
> + UINT32 PcieId;
> + UINT16 VendorId;
> + UINT16 DeviceId;
> + UINT8 RevisionId;
> + UINT8 Reserved[3];
>
> -#define ACPI_HMAT_ACCESS_LATENCY 0
> -#define ACPI_HMAT_READ_LATENCY 1
> -#define ACPI_HMAT_WRITE_LATENCY 2
> -#define ACPI_HMAT_ACCESS_BANDWIDTH 3
> -#define ACPI_HMAT_READ_BANDWIDTH 4
> -#define ACPI_HMAT_WRITE_BANDWIDTH 5
> +} ACPI_EINJ_VENDOR;
>
>
> -/* 2: Memory side cache information */
> +/* EINJ Trigger Error Action Table */
>
> -typedef struct acpi_hmat_cache
> +typedef struct acpi_einj_trigger
> {
> - ACPI_HMAT_STRUCTURE Header;
> - UINT32 MemoryPD;
> - UINT32 Reserved1;
> - UINT64 CacheSize;
> - UINT32 CacheAttributes;
> - UINT16 Reserved2;
> - UINT16 NumberOfSMBIOSHandles;
> -
> -} ACPI_HMAT_CACHE;
> + UINT32 HeaderSize;
> + UINT32 Revision;
> + UINT32 TableSize;
> + UINT32 EntryCount;
>
> -/* Masks for CacheAttributes field above */
> +} ACPI_EINJ_TRIGGER;
>
> -#define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)
> -#define ACPI_HMAT_CACHE_LEVEL (0x000000F0)
> -#define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)
> -#define ACPI_HMAT_WRITE_POLICY (0x0000F000)
> -#define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
> +/* Command status return values */
>
> -/* Values for cache associativity flag */
> +enum AcpiEinjCommandStatus
> +{
> + ACPI_EINJ_SUCCESS = 0,
> + ACPI_EINJ_FAILURE = 1,
> + ACPI_EINJ_INVALID_ACCESS = 2,
> + ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */
> +};
>
> -#define ACPI_HMAT_CA_NONE (0)
> -#define ACPI_HMAT_CA_DIRECT_MAPPED (1)
> -#define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)
>
> -/* Values for write policy flag */
> +/* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
>
> -#define ACPI_HMAT_CP_NONE (0)
> -#define ACPI_HMAT_CP_WB (1)
> -#define ACPI_HMAT_CP_WT (2)
> +#define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)
> +#define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)
> +#define ACPI_EINJ_PROCESSOR_FATAL (1<<2)
> +#define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)
> +#define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)
> +#define ACPI_EINJ_MEMORY_FATAL (1<<5)
> +#define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)
> +#define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)
> +#define ACPI_EINJ_PCIX_FATAL (1<<8)
> +#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
> +#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
> +#define ACPI_EINJ_PLATFORM_FATAL (1<<11)
> +#define ACPI_EINJ_VENDOR_DEFINED (1<<31)
>
>
> /*******************************************************************************
> *
> - * MADT - Multiple APIC Description Table
> - * Version 3
> + * ERST - Error Record Serialization Table (ACPI 4.0)
> + * Version 1
> *
> ******************************************************************************/
>
> -typedef struct acpi_table_madt
> +typedef struct acpi_table_erst
> {
> ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 Address; /* Physical address of local APIC */
> - UINT32 Flags;
> + UINT32 HeaderLength;
> + UINT32 Reserved;
> + UINT32 Entries;
> +
> +} ACPI_TABLE_ERST;
>
> -} ACPI_TABLE_MADT;
>
> -/* Masks for Flags field above */
> +/* ERST Serialization Entries (actions) */
>
> -#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */
> +typedef struct acpi_erst_entry
> +{
> + ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
>
> -/* Values for PCATCompat flag */
> +} ACPI_ERST_ENTRY;
>
> -#define ACPI_MADT_DUAL_PIC 1
> -#define ACPI_MADT_MULTIPLE_APIC 0
> +/* Masks for Flags field above */
>
> +#define ACPI_ERST_PRESERVE (1)
>
> -/* Values for MADT subtable type in ACPI_SUBTABLE_HEADER */
> +/* Values for Action field above */
>
> -enum AcpiMadtType
> +enum AcpiErstActions
> {
> - ACPI_MADT_TYPE_LOCAL_APIC = 0,
> - ACPI_MADT_TYPE_IO_APIC = 1,
> - ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2,
> - ACPI_MADT_TYPE_NMI_SOURCE = 3,
> - ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4,
> - ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5,
> - ACPI_MADT_TYPE_IO_SAPIC = 6,
> - ACPI_MADT_TYPE_LOCAL_SAPIC = 7,
> - ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8,
> - ACPI_MADT_TYPE_LOCAL_X2APIC = 9,
> - ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10,
> - ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11,
> - ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12,
> - ACPI_MADT_TYPE_GENERIC_MSI_FRAME = 13,
> - ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14,
> - ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15,
> - ACPI_MADT_TYPE_RESERVED = 16 /* 16 and greater are reserved */
> + ACPI_ERST_BEGIN_WRITE = 0,
> + ACPI_ERST_BEGIN_READ = 1,
> + ACPI_ERST_BEGIN_CLEAR = 2,
> + ACPI_ERST_END = 3,
> + ACPI_ERST_SET_RECORD_OFFSET = 4,
> + ACPI_ERST_EXECUTE_OPERATION = 5,
> + ACPI_ERST_CHECK_BUSY_STATUS = 6,
> + ACPI_ERST_GET_COMMAND_STATUS = 7,
> + ACPI_ERST_GET_RECORD_ID = 8,
> + ACPI_ERST_SET_RECORD_ID = 9,
> + ACPI_ERST_GET_RECORD_COUNT = 10,
> + ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
> + ACPI_ERST_NOT_USED = 12,
> + ACPI_ERST_GET_ERROR_RANGE = 13,
> + ACPI_ERST_GET_ERROR_LENGTH = 14,
> + ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
> + ACPI_ERST_EXECUTE_TIMINGS = 16,
> + ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */
> };
>
> +/* Values for Instruction field above */
>
> -/*
> - * MADT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER
> - */
> -
> -/* 0: Processor Local APIC */
> -
> -typedef struct acpi_madt_local_apic
> +enum AcpiErstInstructions
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT8 ProcessorId; /* ACPI processor id */
> - UINT8 Id; /* Processor's local APIC id */
> - UINT32 LapicFlags;
> -
> -} ACPI_MADT_LOCAL_APIC;
> -
> + ACPI_ERST_READ_REGISTER = 0,
> + ACPI_ERST_READ_REGISTER_VALUE = 1,
> + ACPI_ERST_WRITE_REGISTER = 2,
> + ACPI_ERST_WRITE_REGISTER_VALUE = 3,
> + ACPI_ERST_NOOP = 4,
> + ACPI_ERST_LOAD_VAR1 = 5,
> + ACPI_ERST_LOAD_VAR2 = 6,
> + ACPI_ERST_STORE_VAR1 = 7,
> + ACPI_ERST_ADD = 8,
> + ACPI_ERST_SUBTRACT = 9,
> + ACPI_ERST_ADD_VALUE = 10,
> + ACPI_ERST_SUBTRACT_VALUE = 11,
> + ACPI_ERST_STALL = 12,
> + ACPI_ERST_STALL_WHILE_TRUE = 13,
> + ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
> + ACPI_ERST_GOTO = 15,
> + ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
> + ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
> + ACPI_ERST_MOVE_DATA = 18,
> + ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */
> +};
>
> -/* 1: IO APIC */
> +/* Command status return values */
>
> -typedef struct acpi_madt_io_apic
> +enum AcpiErstCommandStatus
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT8 Id; /* I/O APIC ID */
> - UINT8 Reserved; /* Reserved - must be zero */
> - UINT32 Address; /* APIC physical address */
> - UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */
> -
> -} ACPI_MADT_IO_APIC;
> + ACPI_ERST_SUCESS = 0,
> + ACPI_ERST_NO_SPACE = 1,
> + ACPI_ERST_NOT_AVAILABLE = 2,
> + ACPI_ERST_FAILURE = 3,
> + ACPI_ERST_RECORD_EMPTY = 4,
> + ACPI_ERST_NOT_FOUND = 5,
> + ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */
> +};
>
>
> -/* 2: Interrupt Override */
> +/* Error Record Serialization Information */
>
> -typedef struct acpi_madt_interrupt_override
> +typedef struct acpi_erst_info
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT8 Bus; /* 0 - ISA */
> - UINT8 SourceIrq; /* Interrupt source (IRQ) */
> - UINT32 GlobalIrq; /* Global system interrupt */
> - UINT16 IntiFlags;
> + UINT16 Signature; /* Should be "ER" */
> + UINT8 Data[48];
>
> -} ACPI_MADT_INTERRUPT_OVERRIDE;
> +} ACPI_ERST_INFO;
>
>
> -/* 3: NMI Source */
> +/*******************************************************************************
> + *
> + * FPDT - Firmware Performance Data Table (ACPI 5.0)
> + * Version 1
> + *
> + ******************************************************************************/
>
> -typedef struct acpi_madt_nmi_source
> +typedef struct acpi_table_fpdt
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 IntiFlags;
> - UINT32 GlobalIrq; /* Global system interrupt */
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
>
> -} ACPI_MADT_NMI_SOURCE;
> +} ACPI_TABLE_FPDT;
>
>
> -/* 4: Local APIC NMI */
> +/* FPDT subtable header (Performance Record Structure) */
>
> -typedef struct acpi_madt_local_apic_nmi
> +typedef struct acpi_fpdt_header
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT8 ProcessorId; /* ACPI processor id */
> - UINT16 IntiFlags;
> - UINT8 Lint; /* LINTn to which NMI is connected */
> -
> -} ACPI_MADT_LOCAL_APIC_NMI;
> + UINT16 Type;
> + UINT8 Length;
> + UINT8 Revision;
>
> +} ACPI_FPDT_HEADER;
>
> -/* 5: Address Override */
> +/* Values for Type field above */
>
> -typedef struct acpi_madt_local_apic_override
> +enum AcpiFpdtType
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved; /* Reserved, must be zero */
> - UINT64 Address; /* APIC physical address */
> + ACPI_FPDT_TYPE_BOOT = 0,
> + ACPI_FPDT_TYPE_S3PERF = 1
> +};
>
> -} ACPI_MADT_LOCAL_APIC_OVERRIDE;
>
> +/*
> + * FPDT subtables
> + */
>
> -/* 6: I/O Sapic */
> +/* 0: Firmware Basic Boot Performance Record */
>
> -typedef struct acpi_madt_io_sapic
> +typedef struct acpi_fpdt_boot_pointer
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT8 Id; /* I/O SAPIC ID */
> - UINT8 Reserved; /* Reserved, must be zero */
> - UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */
> - UINT64 Address; /* SAPIC physical address */
> + ACPI_FPDT_HEADER Header;
> + UINT8 Reserved[4];
> + UINT64 Address;
>
> -} ACPI_MADT_IO_SAPIC;
> +} ACPI_FPDT_BOOT_POINTER;
>
>
> -/* 7: Local Sapic */
> +/* 1: S3 Performance Table Pointer Record */
>
> -typedef struct acpi_madt_local_sapic
> +typedef struct acpi_fpdt_s3pt_pointer
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT8 ProcessorId; /* ACPI processor id */
> - UINT8 Id; /* SAPIC ID */
> - UINT8 Eid; /* SAPIC EID */
> - UINT8 Reserved[3]; /* Reserved, must be zero */
> - UINT32 LapicFlags;
> - UINT32 Uid; /* Numeric UID - ACPI 3.0 */
> - char UidString[1]; /* String UID - ACPI 3.0 */
> -
> -} ACPI_MADT_LOCAL_SAPIC;
> + ACPI_FPDT_HEADER Header;
> + UINT8 Reserved[4];
> + UINT64 Address;
>
> +} ACPI_FPDT_S3PT_POINTER;
>
> -/* 8: Platform Interrupt Source */
>
> -typedef struct acpi_madt_interrupt_source
> +/*
> + * S3PT - S3 Performance Table. This table is pointed to by the
> + * S3 Pointer Record above.
> + */
> +typedef struct acpi_table_s3pt
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 IntiFlags;
> - UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */
> - UINT8 Id; /* Processor ID */
> - UINT8 Eid; /* Processor EID */
> - UINT8 IoSapicVector; /* Vector value for PMI interrupts */
> - UINT32 GlobalIrq; /* Global system interrupt */
> - UINT32 Flags; /* Interrupt Source Flags */
> -
> -} ACPI_MADT_INTERRUPT_SOURCE;
> + UINT8 Signature[4]; /* "S3PT" */
> + UINT32 Length;
>
> -/* Masks for Flags field above */
> +} ACPI_TABLE_S3PT;
>
> -#define ACPI_MADT_CPEI_OVERRIDE (1)
>
> +/*
> + * S3PT Subtables (Not part of the actual FPDT)
> + */
>
> -/* 9: Processor Local X2APIC (ACPI 4.0) */
> +/* Values for Type field in S3PT header */
>
> -typedef struct acpi_madt_local_x2apic
> +enum AcpiS3ptType
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved; /* Reserved - must be zero */
> - UINT32 LocalApicId; /* Processor x2APIC ID */
> - UINT32 LapicFlags;
> - UINT32 Uid; /* ACPI processor UID */
> -
> -} ACPI_MADT_LOCAL_X2APIC;
> + ACPI_S3PT_TYPE_RESUME = 0,
> + ACPI_S3PT_TYPE_SUSPEND = 1,
> + ACPI_FPDT_BOOT_PERFORMANCE = 2
> +};
>
> +typedef struct acpi_s3pt_resume
> +{
> + ACPI_FPDT_HEADER Header;
> + UINT32 ResumeCount;
> + UINT64 FullResume;
> + UINT64 AverageResume;
>
> -/* 10: Local X2APIC NMI (ACPI 4.0) */
> +} ACPI_S3PT_RESUME;
>
> -typedef struct acpi_madt_local_x2apic_nmi
> +typedef struct acpi_s3pt_suspend
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 IntiFlags;
> - UINT32 Uid; /* ACPI processor UID */
> - UINT8 Lint; /* LINTn to which NMI is connected */
> - UINT8 Reserved[3]; /* Reserved - must be zero */
> + ACPI_FPDT_HEADER Header;
> + UINT64 SuspendStart;
> + UINT64 SuspendEnd;
>
> -} ACPI_MADT_LOCAL_X2APIC_NMI;
> +} ACPI_S3PT_SUSPEND;
>
>
> -/* 11: Generic Interrupt (ACPI 5.0 + ACPI 6.0 changes) */
> -
> -typedef struct acpi_madt_generic_interrupt
> +/*
> + * FPDT Boot Performance Record (Not part of the actual FPDT)
> + */
> +typedef struct acpi_fpdt_boot
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved; /* Reserved - must be zero */
> - UINT32 CpuInterfaceNumber;
> - UINT32 Uid;
> - UINT32 Flags;
> - UINT32 ParkingVersion;
> - UINT32 PerformanceInterrupt;
> - UINT64 ParkedAddress;
> - UINT64 BaseAddress;
> - UINT64 GicvBaseAddress;
> - UINT64 GichBaseAddress;
> - UINT32 VgicInterrupt;
> - UINT64 GicrBaseAddress;
> - UINT64 ArmMpidr;
> - UINT8 EfficiencyClass;
> - UINT8 Reserved2[3];
> -
> -} ACPI_MADT_GENERIC_INTERRUPT;
> -
> -/* Masks for Flags field above */
> + ACPI_FPDT_HEADER Header;
> + UINT8 Reserved[4];
> + UINT64 ResetEnd;
> + UINT64 LoadStart;
> + UINT64 StartupStart;
> + UINT64 ExitServicesEntry;
> + UINT64 ExitServicesExit;
>
> -/* ACPI_MADT_ENABLED (1) Processor is usable if set */
> -#define ACPI_MADT_PERFORMANCE_IRQ_MODE (1<<1) /* 01: Performance Interrupt Mode */
> -#define ACPI_MADT_VGIC_IRQ_MODE (1<<2) /* 02: VGIC Maintenance Interrupt mode */
> +} ACPI_FPDT_BOOT;
>
>
> -/* 12: Generic Distributor (ACPI 5.0 + ACPI 6.0 changes) */
> +/*******************************************************************************
> + *
> + * GTDT - Generic Timer Description Table (ACPI 5.1)
> + * Version 2
> + *
> + ******************************************************************************/
>
> -typedef struct acpi_madt_generic_distributor
> +typedef struct acpi_table_gtdt
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved; /* Reserved - must be zero */
> - UINT32 GicId;
> - UINT64 BaseAddress;
> - UINT32 GlobalIrqBase;
> - UINT8 Version;
> - UINT8 Reserved2[3]; /* Reserved - must be zero */
> + ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> + UINT64 CounterBlockAddresss;
> + UINT32 Reserved;
> + UINT32 SecureEl1Interrupt;
> + UINT32 SecureEl1Flags;
> + UINT32 NonSecureEl1Interrupt;
> + UINT32 NonSecureEl1Flags;
> + UINT32 VirtualTimerInterrupt;
> + UINT32 VirtualTimerFlags;
> + UINT32 NonSecureEl2Interrupt;
> + UINT32 NonSecureEl2Flags;
> + UINT64 CounterReadBlockAddress;
> + UINT32 PlatformTimerCount;
> + UINT32 PlatformTimerOffset;
>
> -} ACPI_MADT_GENERIC_DISTRIBUTOR;
> +} ACPI_TABLE_GTDT;
>
> -/* Values for Version field above */
> +/* Flag Definitions: Timer Block Physical Timers and Virtual timers */
>
> -enum AcpiMadtGicVersion
> -{
> - ACPI_MADT_GIC_VERSION_NONE = 0,
> - ACPI_MADT_GIC_VERSION_V1 = 1,
> - ACPI_MADT_GIC_VERSION_V2 = 2,
> - ACPI_MADT_GIC_VERSION_V3 = 3,
> - ACPI_MADT_GIC_VERSION_V4 = 4,
> - ACPI_MADT_GIC_VERSION_RESERVED = 5 /* 5 and greater are reserved */
> -};
> +#define ACPI_GTDT_INTERRUPT_MODE (1)
> +#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)
> +#define ACPI_GTDT_ALWAYS_ON (1<<2)
>
>
> -/* 13: Generic MSI Frame (ACPI 5.1) */
> +/* Common GTDT subtable header */
>
> -typedef struct acpi_madt_generic_msi_frame
> +typedef struct acpi_gtdt_header
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved; /* Reserved - must be zero */
> - UINT32 MsiFrameId;
> - UINT64 BaseAddress;
> - UINT32 Flags;
> - UINT16 SpiCount;
> - UINT16 SpiBase;
> + UINT8 Type;
> + UINT16 Length;
>
> -} ACPI_MADT_GENERIC_MSI_FRAME;
> +} ACPI_GTDT_HEADER;
>
> -/* Masks for Flags field above */
> +/* Values for GTDT subtable type above */
> +
> +enum AcpiGtdtType
> +{
> + ACPI_GTDT_TYPE_TIMER_BLOCK = 0,
> + ACPI_GTDT_TYPE_WATCHDOG = 1,
> + ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */
> +};
>
> -#define ACPI_MADT_OVERRIDE_SPI_VALUES (1)
>
> +/* GTDT Subtables, correspond to Type in acpi_gtdt_header */
>
> -/* 14: Generic Redistributor (ACPI 5.1) */
> +/* 0: Generic Timer Block */
>
> -typedef struct acpi_madt_generic_redistributor
> +typedef struct acpi_gtdt_timer_block
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved; /* reserved - must be zero */
> - UINT64 BaseAddress;
> - UINT32 Length;
> -
> -} ACPI_MADT_GENERIC_REDISTRIBUTOR;
> + ACPI_GTDT_HEADER Header;
> + UINT8 Reserved;
> + UINT64 BlockAddress;
> + UINT32 TimerCount;
> + UINT32 TimerOffset;
>
> +} ACPI_GTDT_TIMER_BLOCK;
>
> -/* 15: Generic Translator (ACPI 6.0) */
> +/* Timer Sub-Structure, one per timer */
>
> -typedef struct acpi_madt_generic_translator
> +typedef struct acpi_gtdt_timer_entry
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved; /* reserved - must be zero */
> - UINT32 TranslationId;
> + UINT8 FrameNumber;
> + UINT8 Reserved[3];
> UINT64 BaseAddress;
> - UINT32 Reserved2;
> + UINT64 El0BaseAddress;
> + UINT32 TimerInterrupt;
> + UINT32 TimerFlags;
> + UINT32 VirtualTimerInterrupt;
> + UINT32 VirtualTimerFlags;
> + UINT32 CommonFlags;
>
> -} ACPI_MADT_GENERIC_TRANSLATOR;
> +} ACPI_GTDT_TIMER_ENTRY;
>
> +/* Flag Definitions: TimerFlags and VirtualTimerFlags above */
>
> -/*
> - * Common flags fields for MADT subtables
> - */
> +#define ACPI_GTDT_GT_IRQ_MODE (1)
> +#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)
> +
> +/* Flag Definitions: CommonFlags above */
>
> -/* MADT Local APIC flags */
> +#define ACPI_GTDT_GT_IS_SECURE_TIMER (1)
> +#define ACPI_GTDT_GT_ALWAYS_ON (1<<1)
>
> -#define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */
>
> -/* MADT MPS INTI flags (IntiFlags) */
> +/* 1: SBSA Generic Watchdog Structure */
>
> -#define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */
> -#define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */
> +typedef struct acpi_gtdt_watchdog
> +{
> + ACPI_GTDT_HEADER Header;
> + UINT8 Reserved;
> + UINT64 RefreshFrameAddress;
> + UINT64 ControlFrameAddress;
> + UINT32 TimerInterrupt;
> + UINT32 TimerFlags;
>
> -/* Values for MPS INTI flags */
> +} ACPI_GTDT_WATCHDOG;
>
> -#define ACPI_MADT_POLARITY_CONFORMS 0
> -#define ACPI_MADT_POLARITY_ACTIVE_HIGH 1
> -#define ACPI_MADT_POLARITY_RESERVED 2
> -#define ACPI_MADT_POLARITY_ACTIVE_LOW 3
> +/* Flag Definitions: TimerFlags above */
>
> -#define ACPI_MADT_TRIGGER_CONFORMS (0)
> -#define ACPI_MADT_TRIGGER_EDGE (1<<2)
> -#define ACPI_MADT_TRIGGER_RESERVED (2<<2)
> -#define ACPI_MADT_TRIGGER_LEVEL (3<<2)
> +#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)
> +#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)
> +#define ACPI_GTDT_WATCHDOG_SECURE (1<<2)
>
>
> /*******************************************************************************
> *
> - * MSCT - Maximum System Characteristics Table (ACPI 4.0)
> + * HEST - Hardware Error Source Table (ACPI 4.0)
> * Version 1
> *
> ******************************************************************************/
>
> -typedef struct acpi_table_msct
> +typedef struct acpi_table_hest
> {
> ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 ProximityOffset; /* Location of proximity info struct(s) */
> - UINT32 MaxProximityDomains;/* Max number of proximity domains */
> - UINT32 MaxClockDomains; /* Max number of clock domains */
> - UINT64 MaxAddress; /* Max physical address in system */
> + UINT32 ErrorSourceCount;
>
> -} ACPI_TABLE_MSCT;
> +} ACPI_TABLE_HEST;
>
>
> -/* Subtable - Maximum Proximity Domain Information. Version 1 */
> +/* HEST subtable header */
>
> -typedef struct acpi_msct_proximity
> +typedef struct acpi_hest_header
> {
> - UINT8 Revision;
> - UINT8 Length;
> - UINT32 RangeStart; /* Start of domain range */
> - UINT32 RangeEnd; /* End of domain range */
> - UINT32 ProcessorCapacity;
> - UINT64 MemoryCapacity; /* In bytes */
> + UINT16 Type;
> + UINT16 SourceId;
>
> -} ACPI_MSCT_PROXIMITY;
> +} ACPI_HEST_HEADER;
>
>
> -/*******************************************************************************
> - *
> - * NFIT - NVDIMM Interface Table (ACPI 6.0+)
> - * Version 1
> - *
> - ******************************************************************************/
> +/* Values for Type field above for subtables */
>
> -typedef struct acpi_table_nfit
> +enum AcpiHestTypes
> {
> - ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 Reserved; /* Reserved, must be zero */
> + ACPI_HEST_TYPE_IA32_CHECK = 0,
> + ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
> + ACPI_HEST_TYPE_IA32_NMI = 2,
> + ACPI_HEST_TYPE_NOT_USED3 = 3,
> + ACPI_HEST_TYPE_NOT_USED4 = 4,
> + ACPI_HEST_TYPE_NOT_USED5 = 5,
> + ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
> + ACPI_HEST_TYPE_AER_ENDPOINT = 7,
> + ACPI_HEST_TYPE_AER_BRIDGE = 8,
> + ACPI_HEST_TYPE_GENERIC_ERROR = 9,
> + ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10,
> + ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11,
> + ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */
> +};
>
> -} ACPI_TABLE_NFIT;
>
> -/* Subtable header for NFIT */
> +/*
> + * HEST substructures contained in subtables
> + */
>
> -typedef struct acpi_nfit_header
> +/*
> + * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
> + * ACPI_HEST_IA_CORRECTED structures.
> + */
> +typedef struct acpi_hest_ia_error_bank
> {
> - UINT16 Type;
> - UINT16 Length;
> + UINT8 BankNumber;
> + UINT8 ClearStatusOnInit;
> + UINT8 StatusFormat;
> + UINT8 Reserved;
> + UINT32 ControlRegister;
> + UINT64 ControlData;
> + UINT32 StatusRegister;
> + UINT32 AddressRegister;
> + UINT32 MiscRegister;
>
> -} ACPI_NFIT_HEADER;
> +} ACPI_HEST_IA_ERROR_BANK;
>
>
> -/* Values for subtable type in ACPI_NFIT_HEADER */
> +/* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
>
> -enum AcpiNfitType
> +typedef struct acpi_hest_aer_common
> {
> - ACPI_NFIT_TYPE_SYSTEM_ADDRESS = 0,
> - ACPI_NFIT_TYPE_MEMORY_MAP = 1,
> - ACPI_NFIT_TYPE_INTERLEAVE = 2,
> - ACPI_NFIT_TYPE_SMBIOS = 3,
> - ACPI_NFIT_TYPE_CONTROL_REGION = 4,
> - ACPI_NFIT_TYPE_DATA_REGION = 5,
> - ACPI_NFIT_TYPE_FLUSH_ADDRESS = 6,
> - ACPI_NFIT_TYPE_CAPABILITIES = 7,
> - ACPI_NFIT_TYPE_RESERVED = 8 /* 8 and greater are reserved */
> -};
> + UINT16 Reserved1;
> + UINT8 Flags;
> + UINT8 Enabled;
> + UINT32 RecordsToPreallocate;
> + UINT32 MaxSectionsPerRecord;
> + UINT32 Bus; /* Bus and Segment numbers */
> + UINT16 Device;
> + UINT16 Function;
> + UINT16 DeviceControl;
> + UINT16 Reserved2;
> + UINT32 UncorrectableMask;
> + UINT32 UncorrectableSeverity;
> + UINT32 CorrectableMask;
> + UINT32 AdvancedCapabilities;
> +
> +} ACPI_HEST_AER_COMMON;
> +
> +/* Masks for HEST Flags fields */
> +
> +#define ACPI_HEST_FIRMWARE_FIRST (1)
> +#define ACPI_HEST_GLOBAL (1<<1)
> +#define ACPI_HEST_GHES_ASSIST (1<<2)
>
> /*
> - * NFIT Subtables
> + * Macros to access the bus/segment numbers in Bus field above:
> + * Bus number is encoded in bits 7:0
> + * Segment number is encoded in bits 23:8
> */
> +#define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF)
> +#define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF)
> +
>
> -/* 0: System Physical Address Range Structure */
> +/* Hardware Error Notification */
>
> -typedef struct acpi_nfit_system_address
> +typedef struct acpi_hest_notify
> {
> - ACPI_NFIT_HEADER Header;
> - UINT16 RangeIndex;
> - UINT16 Flags;
> - UINT32 Reserved; /* Reserved, must be zero */
> - UINT32 ProximityDomain;
> - UINT8 RangeGuid[16];
> - UINT64 Address;
> - UINT64 Length;
> - UINT64 MemoryMapping;
> + UINT8 Type;
> + UINT8 Length;
> + UINT16 ConfigWriteEnable;
> + UINT32 PollInterval;
> + UINT32 Vector;
> + UINT32 PollingThresholdValue;
> + UINT32 PollingThresholdWindow;
> + UINT32 ErrorThresholdValue;
> + UINT32 ErrorThresholdWindow;
>
> -} ACPI_NFIT_SYSTEM_ADDRESS;
> +} ACPI_HEST_NOTIFY;
>
> -/* Flags */
> +/* Values for Notify Type field above */
>
> -#define ACPI_NFIT_ADD_ONLINE_ONLY (1) /* 00: Add/Online Operation Only */
> -#define ACPI_NFIT_PROXIMITY_VALID (1<<1) /* 01: Proximity Domain Valid */
> +enum AcpiHestNotifyTypes
> +{
> + ACPI_HEST_NOTIFY_POLLED = 0,
> + ACPI_HEST_NOTIFY_EXTERNAL = 1,
> + ACPI_HEST_NOTIFY_LOCAL = 2,
> + ACPI_HEST_NOTIFY_SCI = 3,
> + ACPI_HEST_NOTIFY_NMI = 4,
> + ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */
> + ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */
> + ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */
> + ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */
> + ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */
> + ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */
> + ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */
> + ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */
> +};
>
> -/* Range Type GUIDs appear in the include/acuuid.h file */
> +/* Values for ConfigWriteEnable bitfield above */
>
> +#define ACPI_HEST_TYPE (1)
> +#define ACPI_HEST_POLL_INTERVAL (1<<1)
> +#define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)
> +#define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
> +#define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)
> +#define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)
>
> -/* 1: Memory Device to System Address Range Map Structure */
>
> -typedef struct acpi_nfit_memory_map
> -{
> - ACPI_NFIT_HEADER Header;
> - UINT32 DeviceHandle;
> - UINT16 PhysicalId;
> - UINT16 RegionId;
> - UINT16 RangeIndex;
> - UINT16 RegionIndex;
> - UINT64 RegionSize;
> - UINT64 RegionOffset;
> - UINT64 Address;
> - UINT16 InterleaveIndex;
> - UINT16 InterleaveWays;
> - UINT16 Flags;
> - UINT16 Reserved; /* Reserved, must be zero */
> +/*
> + * HEST subtables
> + */
>
> -} ACPI_NFIT_MEMORY_MAP;
> +/* 0: IA32 Machine Check Exception */
>
> -/* Flags */
> +typedef struct acpi_hest_ia_machine_check
> +{
> + ACPI_HEST_HEADER Header;
> + UINT16 Reserved1;
> + UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
> + UINT8 Enabled;
> + UINT32 RecordsToPreallocate;
> + UINT32 MaxSectionsPerRecord;
> + UINT64 GlobalCapabilityData;
> + UINT64 GlobalControlData;
> + UINT8 NumHardwareBanks;
> + UINT8 Reserved3[7];
>
> -#define ACPI_NFIT_MEM_SAVE_FAILED (1) /* 00: Last SAVE to Memory Device failed */
> -#define ACPI_NFIT_MEM_RESTORE_FAILED (1<<1) /* 01: Last RESTORE from Memory Device failed */
> -#define ACPI_NFIT_MEM_FLUSH_FAILED (1<<2) /* 02: Platform flush failed */
> -#define ACPI_NFIT_MEM_NOT_ARMED (1<<3) /* 03: Memory Device is not armed */
> -#define ACPI_NFIT_MEM_HEALTH_OBSERVED (1<<4) /* 04: Memory Device observed SMART/health events */
> -#define ACPI_NFIT_MEM_HEALTH_ENABLED (1<<5) /* 05: SMART/health events enabled */
> -#define ACPI_NFIT_MEM_MAP_FAILED (1<<6) /* 06: Mapping to SPA failed */
> +} ACPI_HEST_IA_MACHINE_CHECK;
>
>
> -/* 2: Interleave Structure */
> +/* 1: IA32 Corrected Machine Check */
>
> -typedef struct acpi_nfit_interleave
> +typedef struct acpi_hest_ia_corrected
> {
> - ACPI_NFIT_HEADER Header;
> - UINT16 InterleaveIndex;
> - UINT16 Reserved; /* Reserved, must be zero */
> - UINT32 LineCount;
> - UINT32 LineSize;
> - UINT32 LineOffset[1]; /* Variable length */
> + ACPI_HEST_HEADER Header;
> + UINT16 Reserved1;
> + UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
> + UINT8 Enabled;
> + UINT32 RecordsToPreallocate;
> + UINT32 MaxSectionsPerRecord;
> + ACPI_HEST_NOTIFY Notify;
> + UINT8 NumHardwareBanks;
> + UINT8 Reserved2[3];
>
> -} ACPI_NFIT_INTERLEAVE;
> +} ACPI_HEST_IA_CORRECTED;
>
>
> -/* 3: SMBIOS Management Information Structure */
> +/* 2: IA32 Non-Maskable Interrupt */
>
> -typedef struct acpi_nfit_smbios
> +typedef struct acpi_hest_ia_nmi
> {
> - ACPI_NFIT_HEADER Header;
> - UINT32 Reserved; /* Reserved, must be zero */
> - UINT8 Data[1]; /* Variable length */
> + ACPI_HEST_HEADER Header;
> + UINT32 Reserved;
> + UINT32 RecordsToPreallocate;
> + UINT32 MaxSectionsPerRecord;
> + UINT32 MaxRawDataLength;
> +
> +} ACPI_HEST_IA_NMI;
>
> -} ACPI_NFIT_SMBIOS;
>
> +/* 3,4,5: Not used */
>
> -/* 4: NVDIMM Control Region Structure */
> +/* 6: PCI Express Root Port AER */
>
> -typedef struct acpi_nfit_control_region
> +typedef struct acpi_hest_aer_root
> {
> - ACPI_NFIT_HEADER Header;
> - UINT16 RegionIndex;
> - UINT16 VendorId;
> - UINT16 DeviceId;
> - UINT16 RevisionId;
> - UINT16 SubsystemVendorId;
> - UINT16 SubsystemDeviceId;
> - UINT16 SubsystemRevisionId;
> - UINT8 ValidFields;
> - UINT8 ManufacturingLocation;
> - UINT16 ManufacturingDate;
> - UINT8 Reserved[2]; /* Reserved, must be zero */
> - UINT32 SerialNumber;
> - UINT16 Code;
> - UINT16 Windows;
> - UINT64 WindowSize;
> - UINT64 CommandOffset;
> - UINT64 CommandSize;
> - UINT64 StatusOffset;
> - UINT64 StatusSize;
> - UINT16 Flags;
> - UINT8 Reserved1[6]; /* Reserved, must be zero */
> + ACPI_HEST_HEADER Header;
> + ACPI_HEST_AER_COMMON Aer;
> + UINT32 RootErrorCommand;
>
> -} ACPI_NFIT_CONTROL_REGION;
> +} ACPI_HEST_AER_ROOT;
>
> -/* Flags */
>
> -#define ACPI_NFIT_CONTROL_BUFFERED (1) /* Block Data Windows implementation is buffered */
> +/* 7: PCI Express AER (AER Endpoint) */
>
> -/* ValidFields bits */
> +typedef struct acpi_hest_aer
> +{
> + ACPI_HEST_HEADER Header;
> + ACPI_HEST_AER_COMMON Aer;
>
> -#define ACPI_NFIT_CONTROL_MFG_INFO_VALID (1) /* Manufacturing fields are valid */
> +} ACPI_HEST_AER;
>
>
> -/* 5: NVDIMM Block Data Window Region Structure */
> +/* 8: PCI Express/PCI-X Bridge AER */
>
> -typedef struct acpi_nfit_data_region
> +typedef struct acpi_hest_aer_bridge
> {
> - ACPI_NFIT_HEADER Header;
> - UINT16 RegionIndex;
> - UINT16 Windows;
> - UINT64 Offset;
> - UINT64 Size;
> - UINT64 Capacity;
> - UINT64 StartAddress;
> + ACPI_HEST_HEADER Header;
> + ACPI_HEST_AER_COMMON Aer;
> + UINT32 UncorrectableMask2;
> + UINT32 UncorrectableSeverity2;
> + UINT32 AdvancedCapabilities2;
>
> -} ACPI_NFIT_DATA_REGION;
> +} ACPI_HEST_AER_BRIDGE;
>
>
> -/* 6: Flush Hint Address Structure */
> +/* 9: Generic Hardware Error Source */
>
> -typedef struct acpi_nfit_flush_address
> +typedef struct acpi_hest_generic
> {
> - ACPI_NFIT_HEADER Header;
> - UINT32 DeviceHandle;
> - UINT16 HintCount;
> - UINT8 Reserved[6]; /* Reserved, must be zero */
> - UINT64 HintAddress[1]; /* Variable length */
> + ACPI_HEST_HEADER Header;
> + UINT16 RelatedSourceId;
> + UINT8 Reserved;
> + UINT8 Enabled;
> + UINT32 RecordsToPreallocate;
> + UINT32 MaxSectionsPerRecord;
> + UINT32 MaxRawDataLength;
> + ACPI_GENERIC_ADDRESS ErrorStatusAddress;
> + ACPI_HEST_NOTIFY Notify;
> + UINT32 ErrorBlockLength;
>
> -} ACPI_NFIT_FLUSH_ADDRESS;
> +} ACPI_HEST_GENERIC;
>
>
> -/* 7: Platform Capabilities Structure */
> +/* 10: Generic Hardware Error Source, version 2 */
>
> -typedef struct acpi_nfit_capabilities
> +typedef struct acpi_hest_generic_v2
> {
> - ACPI_NFIT_HEADER Header;
> - UINT8 HighestCapability;
> - UINT8 Reserved[3]; /* Reserved, must be zero */
> - UINT32 Capabilities;
> - UINT32 Reserved2;
> -
> -} ACPI_NFIT_CAPABILITIES;
> + ACPI_HEST_HEADER Header;
> + UINT16 RelatedSourceId;
> + UINT8 Reserved;
> + UINT8 Enabled;
> + UINT32 RecordsToPreallocate;
> + UINT32 MaxSectionsPerRecord;
> + UINT32 MaxRawDataLength;
> + ACPI_GENERIC_ADDRESS ErrorStatusAddress;
> + ACPI_HEST_NOTIFY Notify;
> + UINT32 ErrorBlockLength;
> + ACPI_GENERIC_ADDRESS ReadAckRegister;
> + UINT64 ReadAckPreserve;
> + UINT64 ReadAckWrite;
>
> -/* Capabilities Flags */
> +} ACPI_HEST_GENERIC_V2;
>
> -#define ACPI_NFIT_CAPABILITY_CACHE_FLUSH (1) /* 00: Cache Flush to NVDIMM capable */
> -#define ACPI_NFIT_CAPABILITY_MEM_FLUSH (1<<1) /* 01: Memory Flush to NVDIMM capable */
> -#define ACPI_NFIT_CAPABILITY_MEM_MIRRORING (1<<2) /* 02: Memory Mirroring capable */
>
> +/* Generic Error Status block */
>
> -/*
> - * NFIT/DVDIMM device handle support - used as the _ADR for each NVDIMM
> - */
> -typedef struct nfit_device_handle
> +typedef struct acpi_hest_generic_status
> {
> - UINT32 Handle;
> -
> -} NFIT_DEVICE_HANDLE;
> + UINT32 BlockStatus;
> + UINT32 RawDataOffset;
> + UINT32 RawDataLength;
> + UINT32 DataLength;
> + UINT32 ErrorSeverity;
>
> -/* Device handle construction and extraction macros */
> +} ACPI_HEST_GENERIC_STATUS;
>
> -#define ACPI_NFIT_DIMM_NUMBER_MASK 0x0000000F
> -#define ACPI_NFIT_CHANNEL_NUMBER_MASK 0x000000F0
> -#define ACPI_NFIT_MEMORY_ID_MASK 0x00000F00
> -#define ACPI_NFIT_SOCKET_ID_MASK 0x0000F000
> -#define ACPI_NFIT_NODE_ID_MASK 0x0FFF0000
> +/* Values for BlockStatus flags above */
>
> -#define ACPI_NFIT_DIMM_NUMBER_OFFSET 0
> -#define ACPI_NFIT_CHANNEL_NUMBER_OFFSET 4
> -#define ACPI_NFIT_MEMORY_ID_OFFSET 8
> -#define ACPI_NFIT_SOCKET_ID_OFFSET 12
> -#define ACPI_NFIT_NODE_ID_OFFSET 16
> +#define ACPI_HEST_UNCORRECTABLE (1)
> +#define ACPI_HEST_CORRECTABLE (1<<1)
> +#define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)
> +#define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)
> +#define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
>
> -/* Macro to construct a NFIT/NVDIMM device handle */
>
> -#define ACPI_NFIT_BUILD_DEVICE_HANDLE(dimm, channel, memory, socket, node) \
> - ((dimm) | \
> - ((channel) << ACPI_NFIT_CHANNEL_NUMBER_OFFSET) | \
> - ((memory) << ACPI_NFIT_MEMORY_ID_OFFSET) | \
> - ((socket) << ACPI_NFIT_SOCKET_ID_OFFSET) | \
> - ((node) << ACPI_NFIT_NODE_ID_OFFSET))
> +/* Generic Error Data entry */
>
> -/* Macros to extract individual fields from a NFIT/NVDIMM device handle */
> +typedef struct acpi_hest_generic_data
> +{
> + UINT8 SectionType[16];
> + UINT32 ErrorSeverity;
> + UINT16 Revision;
> + UINT8 ValidationBits;
> + UINT8 Flags;
> + UINT32 ErrorDataLength;
> + UINT8 FruId[16];
> + UINT8 FruText[20];
>
> -#define ACPI_NFIT_GET_DIMM_NUMBER(handle) \
> - ((handle) & ACPI_NFIT_DIMM_NUMBER_MASK)
> +} ACPI_HEST_GENERIC_DATA;
>
> -#define ACPI_NFIT_GET_CHANNEL_NUMBER(handle) \
> - (((handle) & ACPI_NFIT_CHANNEL_NUMBER_MASK) >> ACPI_NFIT_CHANNEL_NUMBER_OFFSET)
> +/* Extension for revision 0x0300 */
>
> -#define ACPI_NFIT_GET_MEMORY_ID(handle) \
> - (((handle) & ACPI_NFIT_MEMORY_ID_MASK) >> ACPI_NFIT_MEMORY_ID_OFFSET)
> +typedef struct acpi_hest_generic_data_v300
> +{
> + UINT8 SectionType[16];
> + UINT32 ErrorSeverity;
> + UINT16 Revision;
> + UINT8 ValidationBits;
> + UINT8 Flags;
> + UINT32 ErrorDataLength;
> + UINT8 FruId[16];
> + UINT8 FruText[20];
> + UINT64 TimeStamp;
>
> -#define ACPI_NFIT_GET_SOCKET_ID(handle) \
> - (((handle) & ACPI_NFIT_SOCKET_ID_MASK) >> ACPI_NFIT_SOCKET_ID_OFFSET)
> +} ACPI_HEST_GENERIC_DATA_V300;
>
> -#define ACPI_NFIT_GET_NODE_ID(handle) \
> - (((handle) & ACPI_NFIT_NODE_ID_MASK) >> ACPI_NFIT_NODE_ID_OFFSET)
> +/* Values for ErrorSeverity above */
>
> +#define ACPI_HEST_GEN_ERROR_RECOVERABLE 0
> +#define ACPI_HEST_GEN_ERROR_FATAL 1
> +#define ACPI_HEST_GEN_ERROR_CORRECTED 2
> +#define ACPI_HEST_GEN_ERROR_NONE 3
>
> -/*******************************************************************************
> - *
> - * PDTT - Platform Debug Trigger Table (ACPI 6.2)
> - * Version 0
> - *
> - ******************************************************************************/
> +/* Flags for ValidationBits above */
>
> -typedef struct acpi_table_pdtt
> -{
> - ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT8 TriggerCount;
> - UINT8 Reserved[3];
> - UINT32 ArrayOffset;
> +#define ACPI_HEST_GEN_VALID_FRU_ID (1)
> +#define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)
> +#define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)
>
> -} ACPI_TABLE_PDTT;
>
> +/* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */
>
> -/*
> - * PDTT Communication Channel Identifier Structure.
> - * The number of these structures is defined by TriggerCount above,
> - * starting at ArrayOffset.
> - */
> -typedef struct acpi_pdtt_channel
> +typedef struct acpi_hest_ia_deferred_check
> {
> - UINT8 SubchannelId;
> - UINT8 Flags;
> -
> -} ACPI_PDTT_CHANNEL;
> -
> -/* Flags for above */
> + ACPI_HEST_HEADER Header;
> + UINT16 Reserved1;
> + UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
> + UINT8 Enabled;
> + UINT32 RecordsToPreallocate;
> + UINT32 MaxSectionsPerRecord;
> + ACPI_HEST_NOTIFY Notify;
> + UINT8 NumHardwareBanks;
> + UINT8 Reserved2[3];
>
> -#define ACPI_PDTT_RUNTIME_TRIGGER (1)
> -#define ACPI_PDTT_WAIT_COMPLETION (1<<1)
> +} ACPI_HEST_IA_DEFERRED_CHECK;
>
>
> /*******************************************************************************
> *
> - * PPTT - Processor Properties Topology Table (ACPI 6.2)
> + * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2)
> * Version 1
> *
> ******************************************************************************/
>
> -typedef struct acpi_table_pptt
> +typedef struct acpi_table_hmat
> {
> ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> + UINT32 Reserved;
>
> -} ACPI_TABLE_PPTT;
> +} ACPI_TABLE_HMAT;
>
> -/* Values for Type field above */
>
> -enum AcpiPpttType
> +/* Values for HMAT structure types */
> +
> +enum AcpiHmatType
> {
> - ACPI_PPTT_TYPE_PROCESSOR = 0,
> - ACPI_PPTT_TYPE_CACHE = 1,
> - ACPI_PPTT_TYPE_ID = 2,
> - ACPI_PPTT_TYPE_RESERVED = 3
> + ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subystem address range */
> + ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */
> + ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */
> + ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */
> };
>
> +typedef struct acpi_hmat_structure
> +{
> + UINT16 Type;
> + UINT16 Reserved;
> + UINT32 Length;
> +
> +} ACPI_HMAT_STRUCTURE;
> +
> +
> +/*
> + * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
> + */
>
> -/* 0: Processor Hierarchy Node Structure */
> +/* 0: Memory subystem address range */
>
> -typedef struct acpi_pptt_processor
> +typedef struct acpi_hmat_address_range
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved;
> - UINT32 Flags;
> - UINT32 Parent;
> - UINT32 AcpiProcessorId;
> - UINT32 NumberOfPrivResources;
> + ACPI_HMAT_STRUCTURE Header;
> + UINT16 Flags;
> + UINT16 Reserved1;
> + UINT32 ProcessorPD; /* Processor proximity domain */
> + UINT32 MemoryPD; /* Memory proximity domain */
> + UINT32 Reserved2;
> + UINT64 PhysicalAddressBase; /* Physical address range base */
> + UINT64 PhysicalAddressLength; /* Physical address range length */
>
> -} ACPI_PPTT_PROCESSOR;
> +} ACPI_HMAT_ADDRESS_RANGE;
>
> -/* Flags */
> +/* Masks for Flags field above */
>
> -#define ACPI_PPTT_PHYSICAL_PACKAGE (1) /* Physical package */
> -#define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID (2) /* ACPI Processor ID valid */
> +#define ACPI_HMAT_PROCESSOR_PD_VALID (1) /* 1: ProcessorPD field is valid */
> +#define ACPI_HMAT_MEMORY_PD_VALID (1<<1) /* 1: MemoryPD field is valid */
> +#define ACPI_HMAT_RESERVATION_HINT (1<<2) /* 1: Reservation hint */
>
>
> -/* 1: Cache Type Structure */
> +/* 1: System locality latency and bandwidth information */
>
> -typedef struct acpi_pptt_cache
> +typedef struct acpi_hmat_locality
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved;
> - UINT32 Flags;
> - UINT32 NextLevelOfCache;
> - UINT32 Size;
> - UINT32 NumberOfSets;
> - UINT8 Associativity;
> - UINT8 Attributes;
> - UINT16 LineSize;
> + ACPI_HMAT_STRUCTURE Header;
> + UINT8 Flags;
> + UINT8 DataType;
> + UINT16 Reserved1;
> + UINT32 NumberOfInitiatorPDs;
> + UINT32 NumberOfTargetPDs;
> + UINT32 Reserved2;
> + UINT64 EntryBaseUnit;
>
> -} ACPI_PPTT_CACHE;
> +} ACPI_HMAT_LOCALITY;
>
> -/* Flags */
> +/* Masks for Flags field above */
>
> -#define ACPI_PPTT_SIZE_PROPERTY_VALID (1) /* Physical property valid */
> -#define ACPI_PPTT_NUMBER_OF_SETS_VALID (1<<1) /* Number of sets valid */
> -#define ACPI_PPTT_ASSOCIATIVITY_VALID (1<<2) /* Associativity valid */
> -#define ACPI_PPTT_ALLOCATION_TYPE_VALID (1<<3) /* Allocation type valid */
> -#define ACPI_PPTT_CACHE_TYPE_VALID (1<<4) /* Cache type valid */
> -#define ACPI_PPTT_WRITE_POLICY_VALID (1<<5) /* Write policy valid */
> -#define ACPI_PPTT_LINE_SIZE_VALID (1<<6) /* Line size valid */
> +#define ACPI_HMAT_MEMORY_HIERARCHY (0x0F)
>
> -/* Masks for Attributes */
> +/* Values for Memory Hierarchy flag */
>
> -#define ACPI_PPTT_MASK_ALLOCATION_TYPE (0x03) /* Allocation type */
> -#define ACPI_PPTT_MASK_CACHE_TYPE (0x0C) /* Cache type */
> -#define ACPI_PPTT_MASK_WRITE_POLICY (0x10) /* Write policy */
> +#define ACPI_HMAT_MEMORY 0
> +#define ACPI_HMAT_LAST_LEVEL_CACHE 1
> +#define ACPI_HMAT_1ST_LEVEL_CACHE 2
> +#define ACPI_HMAT_2ND_LEVEL_CACHE 3
> +#define ACPI_HMAT_3RD_LEVEL_CACHE 4
>
> -/* Attributes describing cache */
> -#define ACPI_PPTT_CACHE_READ_ALLOCATE (0x0) /* Cache line is allocated on read */
> -#define ACPI_PPTT_CACHE_WRITE_ALLOCATE (0x01) /* Cache line is allocated on write */
> -#define ACPI_PPTT_CACHE_RW_ALLOCATE (0x02) /* Cache line is allocated on read and write */
> -#define ACPI_PPTT_CACHE_RW_ALLOCATE_ALT (0x03) /* Alternate representation of above */
> +/* Values for DataType field above */
>
> -#define ACPI_PPTT_CACHE_TYPE_DATA (0x0) /* Data cache */
> -#define ACPI_PPTT_CACHE_TYPE_INSTR (1<<2) /* Instruction cache */
> -#define ACPI_PPTT_CACHE_TYPE_UNIFIED (2<<2) /* Unified I & D cache */
> -#define ACPI_PPTT_CACHE_TYPE_UNIFIED_ALT (3<<2) /* Alternate representation of above */
> +#define ACPI_HMAT_ACCESS_LATENCY 0
> +#define ACPI_HMAT_READ_LATENCY 1
> +#define ACPI_HMAT_WRITE_LATENCY 2
> +#define ACPI_HMAT_ACCESS_BANDWIDTH 3
> +#define ACPI_HMAT_READ_BANDWIDTH 4
> +#define ACPI_HMAT_WRITE_BANDWIDTH 5
>
> -#define ACPI_PPTT_CACHE_POLICY_WB (0x0) /* Cache is write back */
> -#define ACPI_PPTT_CACHE_POLICY_WT (1<<4) /* Cache is write through */
>
> -/* 2: ID Structure */
> +/* 2: Memory side cache information */
>
> -typedef struct acpi_pptt_id
> +typedef struct acpi_hmat_cache
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved;
> - UINT32 VendorId;
> - UINT64 Level1Id;
> - UINT64 Level2Id;
> - UINT16 MajorRev;
> - UINT16 MinorRev;
> - UINT16 SpinRev;
> + ACPI_HMAT_STRUCTURE Header;
> + UINT32 MemoryPD;
> + UINT32 Reserved1;
> + UINT64 CacheSize;
> + UINT32 CacheAttributes;
> + UINT16 Reserved2;
> + UINT16 NumberOfSMBIOSHandles;
> +
> +} ACPI_HMAT_CACHE;
>
> -} ACPI_PPTT_ID;
> +/* Masks for CacheAttributes field above */
>
> +#define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)
> +#define ACPI_HMAT_CACHE_LEVEL (0x000000F0)
> +#define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)
> +#define ACPI_HMAT_WRITE_POLICY (0x0000F000)
> +#define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
>
> -/*******************************************************************************
> - *
> - * SBST - Smart Battery Specification Table
> - * Version 1
> - *
> - ******************************************************************************/
> +/* Values for cache associativity flag */
>
> -typedef struct acpi_table_sbst
> -{
> - ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 WarningLevel;
> - UINT32 LowLevel;
> - UINT32 CriticalLevel;
> +#define ACPI_HMAT_CA_NONE (0)
> +#define ACPI_HMAT_CA_DIRECT_MAPPED (1)
> +#define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)
> +
> +/* Values for write policy flag */
>
> -} ACPI_TABLE_SBST;
> +#define ACPI_HMAT_CP_NONE (0)
> +#define ACPI_HMAT_CP_WB (1)
> +#define ACPI_HMAT_CP_WT (2)
>
>
> /*******************************************************************************
> *
> - * SDEV - Secure Devices Table (ACPI 6.2)
> + * HPET - High Precision Event Timer table
> * Version 1
> *
> + * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
> + * Version 1.0a, October 2004
> + *
> ******************************************************************************/
>
> -typedef struct acpi_table_sdev
> +typedef struct acpi_table_hpet
> {
> ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> -
> -} ACPI_TABLE_SDEV;
> -
> -
> -typedef struct acpi_sdev_header
> -{
> - UINT8 Type;
> + UINT32 Id; /* Hardware ID of event timer block */
> + ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */
> + UINT8 Sequence; /* HPET sequence number */
> + UINT16 MinimumTick; /* Main counter min tick, periodic mode */
> UINT8 Flags;
> - UINT16 Length;
> -
> -} ACPI_SDEV_HEADER;
> -
> -
> -/* Values for subtable type above */
>
> -enum AcpiSdevType
> -{
> - ACPI_SDEV_TYPE_NAMESPACE_DEVICE = 0,
> - ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE = 1,
> - ACPI_SDEV_TYPE_RESERVED = 2 /* 2 and greater are reserved */
> -};
> -
> -/* Values for flags above */
> -
> -#define ACPI_SDEV_HANDOFF_TO_UNSECURE_OS (1)
> -
> -/*
> - * SDEV subtables
> - */
> -
> -/* 0: Namespace Device Based Secure Device Structure */
> +} ACPI_TABLE_HPET;
>
> -typedef struct acpi_sdev_namespace
> -{
> - ACPI_SDEV_HEADER Header;
> - UINT16 DeviceIdOffset;
> - UINT16 DeviceIdLength;
> - UINT16 VendorDataOffset;
> - UINT16 VendorDataLength;
> -
> -} ACPI_SDEV_NAMESPACE;
> -
> -/* 1: PCIe Endpoint Device Based Device Structure */
> -
> -typedef struct acpi_sdev_pcie
> -{
> - ACPI_SDEV_HEADER Header;
> - UINT16 Segment;
> - UINT16 StartBus;
> - UINT16 PathOffset;
> - UINT16 PathLength;
> - UINT16 VendorDataOffset;
> - UINT16 VendorDataLength;
> +/* Masks for Flags field above */
>
> -} ACPI_SDEV_PCIE;
> +#define ACPI_HPET_PAGE_PROTECT_MASK (3)
>
> -/* 1a: PCIe Endpoint path entry */
> +/* Values for Page Protect flags */
>
> -typedef struct acpi_sdev_pcie_path
> +enum AcpiHpetPageProtect
> {
> - UINT8 Device;
> - UINT8 Function;
> -
> -} ACPI_SDEV_PCIE_PATH;
> + ACPI_HPET_NO_PAGE_PROTECT = 0,
> + ACPI_HPET_PAGE_PROTECT4 = 1,
> + ACPI_HPET_PAGE_PROTECT64 = 2
> +};
>
>
> /*******************************************************************************
> *
> - * SLIT - System Locality Distance Information Table
> + * IBFT - Boot Firmware Table
> * Version 1
> *
> - ******************************************************************************/
> -
> -typedef struct acpi_table_slit
> -{
> - ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT64 LocalityCount;
> - UINT8 Entry[1]; /* Real size = localities^2 */
> -
> -} ACPI_TABLE_SLIT;
> -
> -
> -/*******************************************************************************
> + * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
> + * Specification", Version 1.01, March 1, 2007
> *
> - * SRAT - System Resource Affinity Table
> - * Version 3
> + * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
> + * Therefore, it is not currently supported by the disassembler.
> *
> ******************************************************************************/
>
> -typedef struct acpi_table_srat
> +typedef struct acpi_table_ibft
> {
> ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> - UINT32 TableRevision; /* Must be value '1' */
> - UINT64 Reserved; /* Reserved, must be zero */
> -
> -} ACPI_TABLE_SRAT;
> -
> -/* Values for subtable type in ACPI_SUBTABLE_HEADER */
> -
> -enum AcpiSratType
> -{
> - ACPI_SRAT_TYPE_CPU_AFFINITY = 0,
> - ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
> - ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
> - ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
> - ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
> - ACPI_SRAT_TYPE_RESERVED = 5 /* 5 and greater are reserved */
> -};
> -
> -/*
> - * SRAT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER
> - */
> -
> -/* 0: Processor Local APIC/SAPIC Affinity */
> -
> -typedef struct acpi_srat_cpu_affinity
> -{
> - ACPI_SUBTABLE_HEADER Header;
> - UINT8 ProximityDomainLo;
> - UINT8 ApicId;
> - UINT32 Flags;
> - UINT8 LocalSapicEid;
> - UINT8 ProximityDomainHi[3];
> - UINT32 ClockDomain;
> -
> -} ACPI_SRAT_CPU_AFFINITY;
> -
> -/* Flags */
> -
> -#define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */
> -
> -
> -/* 1: Memory Affinity */
> -
> -typedef struct acpi_srat_mem_affinity
> -{
> - ACPI_SUBTABLE_HEADER Header;
> - UINT32 ProximityDomain;
> - UINT16 Reserved; /* Reserved, must be zero */
> - UINT64 BaseAddress;
> - UINT64 Length;
> - UINT32 Reserved1;
> - UINT32 Flags;
> - UINT64 Reserved2; /* Reserved, must be zero */
> + UINT8 Reserved[12];
>
> -} ACPI_SRAT_MEM_AFFINITY;
> +} ACPI_TABLE_IBFT;
>
> -/* Flags */
>
> -#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */
> -#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */
> -#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */
> +/* IBFT common subtable header */
>
> -
> -/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
> -
> -typedef struct acpi_srat_x2apic_cpu_affinity
> +typedef struct acpi_ibft_header
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT16 Reserved; /* Reserved, must be zero */
> - UINT32 ProximityDomain;
> - UINT32 ApicId;
> - UINT32 Flags;
> - UINT32 ClockDomain;
> - UINT32 Reserved2;
> -
> -} ACPI_SRAT_X2APIC_CPU_AFFINITY;
> -
> -/* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */
> -
> -#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */
> + UINT8 Type;
> + UINT8 Version;
> + UINT16 Length;
> + UINT8 Index;
> + UINT8 Flags;
>
> +} ACPI_IBFT_HEADER;
>
> -/* 3: GICC Affinity (ACPI 5.1) */
> +/* Values for Type field above */
>
> -typedef struct acpi_srat_gicc_affinity
> +enum AcpiIbftType
> {
> - ACPI_SUBTABLE_HEADER Header;
> - UINT32 ProximityDomain;
> - UINT32 AcpiProcessorUid;
> - UINT32 Flags;
> - UINT32 ClockDomain;
> -
> -} ACPI_SRAT_GICC_AFFINITY;
> -
> -/* Flags for ACPI_SRAT_GICC_AFFINITY */
> -
> -#define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */
> -
> -
> -/* 4: GCC ITS Affinity (ACPI 6.2) */
> + ACPI_IBFT_TYPE_NOT_USED = 0,
> + ACPI_IBFT_TYPE_CONTROL = 1,
> + ACPI_IBFT_TYPE_INITIATOR = 2,
> + ACPI_IBFT_TYPE_NIC = 3,
> + ACPI_IBFT_TYPE_TARGET = 4,
> + ACPI_IBFT_TYPE_EXTENSIONS = 5,
> + ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */
> +};
>
> -typedef struct acpi_srat_gic_its_affinity
> -{
> - ACPI_SUBTABLE_HEADER Header;
> - UINT32 ProximityDomain;
> - UINT16 Reserved;
> - UINT32 ItsId;
>
> -} ACPI_SRAT_GIC_ITS_AFFINITY;
> +/* IBFT subtables */
> +
> +typedef struct acpi_ibft_control
> +{
> + ACPI_IBFT_HEADER Header;
> + UINT16 Extensions;
> + UINT16 InitiatorOffset;
> + UINT16 Nic0Offset;
> + UINT16 Target0Offset;
> + UINT16 Nic1Offset;
> + UINT16 Target1Offset;
> +
> +} ACPI_IBFT_CONTROL;
> +
> +typedef struct acpi_ibft_initiator
> +{
> + ACPI_IBFT_HEADER Header;
> + UINT8 SnsServer[16];
> + UINT8 SlpServer[16];
> + UINT8 PrimaryServer[16];
> + UINT8 SecondaryServer[16];
> + UINT16 NameLength;
> + UINT16 NameOffset;
> +
> +} ACPI_IBFT_INITIATOR;
> +
> +typedef struct acpi_ibft_nic
> +{
> + ACPI_IBFT_HEADER Header;
> + UINT8 IpAddress[16];
> + UINT8 SubnetMaskPrefix;
> + UINT8 Origin;
> + UINT8 Gateway[16];
> + UINT8 PrimaryDns[16];
> + UINT8 SecondaryDns[16];
> + UINT8 Dhcp[16];
> + UINT16 Vlan;
> + UINT8 MacAddress[6];
> + UINT16 PciAddress;
> + UINT16 NameLength;
> + UINT16 NameOffset;
> +
> +} ACPI_IBFT_NIC;
> +
> +typedef struct acpi_ibft_target
> +{
> + ACPI_IBFT_HEADER Header;
> + UINT8 TargetIpAddress[16];
> + UINT16 TargetIpSocket;
> + UINT8 TargetBootLun[8];
> + UINT8 ChapType;
> + UINT8 NicAssociation;
> + UINT16 TargetNameLength;
> + UINT16 TargetNameOffset;
> + UINT16 ChapNameLength;
> + UINT16 ChapNameOffset;
> + UINT16 ChapSecretLength;
> + UINT16 ChapSecretOffset;
> + UINT16 ReverseChapNameLength;
> + UINT16 ReverseChapNameOffset;
> + UINT16 ReverseChapSecretLength;
> + UINT16 ReverseChapSecretOffset;
> +
> +} ACPI_IBFT_TARGET;
>
>
> /* Reset to default packing */
> diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h
> index cad2fb24..4b3d460d 100644
> --- a/src/acpica/source/include/actbl2.h
> +++ b/src/acpica/source/include/actbl2.h
> @@ -160,9 +160,6 @@
> * These tables are not consumed directly by the ACPICA subsystem, but are
> * included here to support device drivers and the AML disassembler.
> *
> - * Generally, the tables in this file are defined by third-party specifications,
> - * and are not defined directly by the ACPI specification itself.
> - *
> ******************************************************************************/
>
>
> @@ -171,44 +168,26 @@
> * file. Useful because they make it more difficult to inadvertently type in
> * the wrong signature.
> */
> -#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
> -#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
> -#define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */
> -#define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */
> -#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
> -#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
> -#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
> -#define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */
> #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */
> #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
> #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */
> +#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */
> #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
> #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */
> +#define ACPI_SIG_MPST "MPST" /* Memory Power State Table */
> +#define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */
> #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */
> #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */
> +#define ACPI_SIG_NFIT "NFIT" /* NVDIMM Firmware Interface Table */
> +#define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */
> +#define ACPI_SIG_PDTT "PDTT" /* Platform Debug Trigger Table */
> +#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */
> +#define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */
> +#define ACPI_SIG_RASF "RASF" /* RAS Feature table */
> +#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
> #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */
> -#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */
> -#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */
> -#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
> -#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
> -#define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */
> -#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
> -#define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */
> -#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
> -#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
> -#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */
> -#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */
> -#define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Migrations Table */
> -#define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */
> -
> -#ifdef ACPI_UNDEFINED_TABLES
> -/*
> - * These tables have been seen in the field, but no definition has been found
> - */
> -#define ACPI_SIG_ATKG "ATKG"
> -#define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */
> -#define ACPI_SIG_IEIT "IEIT"
> -#endif
> +#define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */
> +
>
> /*
> * All tables must be byte-packed to match the ACPI specification, since
> @@ -231,1712 +210,1937 @@
>
> /*******************************************************************************
> *
> - * ASF - Alert Standard Format table (Signature "ASF!")
> - * Revision 0x10
> + * IORT - IO Remapping Table
> *
> - * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
> + * Conforms to "IO Remapping Table System Software on ARM Platforms",
> + * Document number: ARM DEN 0049C, May 2017
> *
> ******************************************************************************/
>
> -typedef struct acpi_table_asf
> +typedef struct acpi_table_iort
> {
> - ACPI_TABLE_HEADER Header; /* Common ACPI table header */
> -
> -} ACPI_TABLE_ASF;
> + ACPI_TABLE_HEADER Header;
> + UINT32 NodeCount;
> + UINT32 NodeOffset;
> + UINT32 Reserved;
>
> +} ACPI_TABLE_IORT;
>
> -/* ASF subtable header */
>
> -typedef struct acpi_asf_header
> +/*
> + * IORT subtables
> + */
> +typedef struct acpi_iort_node
> {
> UINT8 Type;
> - UINT8 Reserved;
> UINT16 Length;
> + UINT8 Revision;
> + UINT32 Reserved;
> + UINT32 MappingCount;
> + UINT32 MappingOffset;
> + char NodeData[1];
>
> -} ACPI_ASF_HEADER;
> -
> +} ACPI_IORT_NODE;
>
> -/* Values for Type field above */
> +/* Values for subtable Type above */
>
> -enum AcpiAsfType
> +enum AcpiIortNodeType
> {
> - ACPI_ASF_TYPE_INFO = 0,
> - ACPI_ASF_TYPE_ALERT = 1,
> - ACPI_ASF_TYPE_CONTROL = 2,
> - ACPI_ASF_TYPE_BOOT = 3,
> - ACPI_ASF_TYPE_ADDRESS = 4,
> - ACPI_ASF_TYPE_RESERVED = 5
> + ACPI_IORT_NODE_ITS_GROUP = 0x00,
> + ACPI_IORT_NODE_NAMED_COMPONENT = 0x01,
> + ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02,
> + ACPI_IORT_NODE_SMMU = 0x03,
> + ACPI_IORT_NODE_SMMU_V3 = 0x04
> };
>
> -/*
> - * ASF subtables
> - */
> -
> -/* 0: ASF Information */
>
> -typedef struct acpi_asf_info
> +typedef struct acpi_iort_id_mapping
> {
> - ACPI_ASF_HEADER Header;
> - UINT8 MinResetValue;
> - UINT8 MinPollInterval;
> - UINT16 SystemId;
> - UINT32 MfgId;
> - UINT8 Flags;
> - UINT8 Reserved2[3];
> -
> -} ACPI_ASF_INFO;
> -
> -/* Masks for Flags field above */
> -
> -#define ACPI_ASF_SMBUS_PROTOCOLS (1)
> + UINT32 InputBase; /* Lowest value in input range */
> + UINT32 IdCount; /* Number of IDs */
> + UINT32 OutputBase; /* Lowest value in output range */
> + UINT32 OutputReference; /* A reference to the output node */
> + UINT32 Flags;
>
> +} ACPI_IORT_ID_MAPPING;
>
> -/* 1: ASF Alerts */
> +/* Masks for Flags field above for IORT subtable */
>
> -typedef struct acpi_asf_alert
> -{
> - ACPI_ASF_HEADER Header;
> - UINT8 AssertMask;
> - UINT8 DeassertMask;
> - UINT8 Alerts;
> - UINT8 DataLength;
> +#define ACPI_IORT_ID_SINGLE_MAPPING (1)
>
> -} ACPI_ASF_ALERT;
>
> -typedef struct acpi_asf_alert_data
> +typedef struct acpi_iort_memory_access
> {
> - UINT8 Address;
> - UINT8 Command;
> - UINT8 Mask;
> - UINT8 Value;
> - UINT8 SensorType;
> - UINT8 Type;
> - UINT8 Offset;
> - UINT8 SourceType;
> - UINT8 Severity;
> - UINT8 SensorNumber;
> - UINT8 Entity;
> - UINT8 Instance;
> -
> -} ACPI_ASF_ALERT_DATA;
> + UINT32 CacheCoherency;
> + UINT8 Hints;
> + UINT16 Reserved;
> + UINT8 MemoryFlags;
>
> +} ACPI_IORT_MEMORY_ACCESS;
>
> -/* 2: ASF Remote Control */
> +/* Values for CacheCoherency field above */
>
> -typedef struct acpi_asf_remote
> -{
> - ACPI_ASF_HEADER Header;
> - UINT8 Controls;
> - UINT8 DataLength;
> - UINT16 Reserved2;
> +#define ACPI_IORT_NODE_COHERENT 0x00000001 /* The device node is fully coherent */
> +#define ACPI_IORT_NODE_NOT_COHERENT 0x00000000 /* The device node is not coherent */
>
> -} ACPI_ASF_REMOTE;
> +/* Masks for Hints field above */
>
> -typedef struct acpi_asf_control_data
> -{
> - UINT8 Function;
> - UINT8 Address;
> - UINT8 Command;
> - UINT8 Value;
> +#define ACPI_IORT_HT_TRANSIENT (1)
> +#define ACPI_IORT_HT_WRITE (1<<1)
> +#define ACPI_IORT_HT_READ (1<<2)
> +#define ACPI_IORT_HT_OVERRIDE (1<<3)
>
> -} ACPI_ASF_CONTROL_DATA;
> +/* Masks for MemoryFlags field above */
>