svn commit: r329085 - in head: sys/contrib/dev/acpica sys/contrib/dev/acpica/common sys/contrib/dev/acpica/compiler sys/contrib/dev/acpica/components/dispatcher sys/contrib/dev/acpica/components/ex...

Jung-uk Kim jkim at FreeBSD.org
Fri Feb 9 21:49:39 UTC 2018


Author: jkim
Date: Fri Feb  9 21:49:38 2018
New Revision: 329085
URL: https://svnweb.freebsd.org/changeset/base/329085

Log:
  MFV:	r329072
  
  Merge ACPICA 20180209.

Added:
  head/sys/contrib/dev/acpica/common/dmtbdump1.c
     - copied, changed from r329072, vendor-sys/acpica/dist/source/common/dmtbdump1.c
  head/sys/contrib/dev/acpica/common/dmtbdump2.c
     - copied, changed from r329072, vendor-sys/acpica/dist/source/common/dmtbdump2.c
  head/sys/contrib/dev/acpica/common/dmtbdump3.c
     - copied, changed from r329072, vendor-sys/acpica/dist/source/common/dmtbdump3.c
  head/sys/contrib/dev/acpica/common/dmtbinfo1.c
     - copied, changed from r329072, vendor-sys/acpica/dist/source/common/dmtbinfo1.c
  head/sys/contrib/dev/acpica/common/dmtbinfo2.c
     - copied, changed from r329072, vendor-sys/acpica/dist/source/common/dmtbinfo2.c
  head/sys/contrib/dev/acpica/common/dmtbinfo3.c
     - copied, changed from r329072, vendor-sys/acpica/dist/source/common/dmtbinfo3.c
Modified:
  head/sys/contrib/dev/acpica/changes.txt
  head/sys/contrib/dev/acpica/common/dmtbdump.c
  head/sys/contrib/dev/acpica/common/dmtbinfo.c
  head/sys/contrib/dev/acpica/compiler/aslbtypes.c
  head/sys/contrib/dev/acpica/compiler/aslerror.c
  head/sys/contrib/dev/acpica/compiler/aslfold.c
  head/sys/contrib/dev/acpica/compiler/aslload.c
  head/sys/contrib/dev/acpica/compiler/aslmessages.c
  head/sys/contrib/dev/acpica/compiler/aslmessages.h
  head/sys/contrib/dev/acpica/compiler/dtcompile.c
  head/sys/contrib/dev/acpica/compiler/dtcompiler.h
  head/sys/contrib/dev/acpica/compiler/dtexpress.c
  head/sys/contrib/dev/acpica/compiler/dtparser.l
  head/sys/contrib/dev/acpica/compiler/dtparser.y
  head/sys/contrib/dev/acpica/compiler/dttable.c
  head/sys/contrib/dev/acpica/compiler/dttable1.c
  head/sys/contrib/dev/acpica/compiler/dttable2.c
  head/sys/contrib/dev/acpica/components/dispatcher/dsargs.c
  head/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
  head/sys/contrib/dev/acpica/components/dispatcher/dspkginit.c
  head/sys/contrib/dev/acpica/components/dispatcher/dswexec.c
  head/sys/contrib/dev/acpica/components/dispatcher/dswload.c
  head/sys/contrib/dev/acpica/components/executer/exconvrt.c
  head/sys/contrib/dev/acpica/components/executer/exnames.c
  head/sys/contrib/dev/acpica/components/executer/exresop.c
  head/sys/contrib/dev/acpica/components/namespace/nseval.c
  head/sys/contrib/dev/acpica/components/namespace/nsinit.c
  head/sys/contrib/dev/acpica/components/namespace/nsnames.c
  head/sys/contrib/dev/acpica/components/namespace/nsparse.c
  head/sys/contrib/dev/acpica/components/parser/psargs.c
  head/sys/contrib/dev/acpica/components/parser/psloop.c
  head/sys/contrib/dev/acpica/components/parser/psparse.c
  head/sys/contrib/dev/acpica/components/parser/pstree.c
  head/sys/contrib/dev/acpica/components/utilities/utcache.c
  head/sys/contrib/dev/acpica/components/utilities/utdelete.c
  head/sys/contrib/dev/acpica/include/acopcode.h
  head/sys/contrib/dev/acpica/include/acpixf.h
  head/sys/contrib/dev/acpica/include/actbl1.h
  head/sys/contrib/dev/acpica/include/actbl2.h
  head/sys/contrib/dev/acpica/include/actbl3.h
  head/sys/contrib/dev/acpica/include/amlcode.h
  head/usr.sbin/acpi/iasl/Makefile
Directory Properties:
  head/sys/contrib/dev/acpica/   (props changed)

Modified: head/sys/contrib/dev/acpica/changes.txt
==============================================================================
--- head/sys/contrib/dev/acpica/changes.txt	Fri Feb  9 21:33:47 2018	(r329084)
+++ head/sys/contrib/dev/acpica/changes.txt	Fri Feb  9 21:49:38 2018	(r329085)
@@ -1,4 +1,72 @@
 ----------------------------------------
+09 February 2018. Summary of changes for version 20180209:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Completed the final integration of the recent changes to Package Object 
+handling and the module-level AML code support. This allows forward 
+references from individual package elements when the package object is 
+declared from within module-level code blocks. Provides compatibility 
+with other ACPI implementations.
+
+The new architecture for the AML module-level code has been completed and 
+is now the default for the ACPICA code. This new architecture executes 
+the module-level code in-line as the ACPI table is loaded/parsed instead 
+of the previous architecture which deferred this code until after the 
+table was fully loaded. This solves some ASL code ordering issues and 
+provides compatibility with other ACPI implementations. At this time, 
+there is an option to fallback to the earlier architecture, but this 
+support is deprecated and is planned to be completely removed later this 
+year.
+
+Added a compile-time option to ignore AE_NOT_FOUND exceptions during 
+resolution of named reference elements within Package objects. 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.
+
+Fixed a regression related to the explicit type-conversion AML operators 
+(ToXXXX). The regression was introduced early in 2017 but was not seen 
+until recently because these operators are not fully supported by other 
+ACPI implementations and are thus rarely used by firmware developers. The 
+operators are defined by the ACPI specification to not implement the 
+"implicit result object conversion". The regression incorrectly 
+introduced this object conversion for the following explicit conversion 
+operators:
+    ToInteger
+    ToString
+    ToBuffer
+    ToDecimalString
+    ToHexString
+    ToBCD
+    FromBCD
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Fixed a problem with the compiler constant folding feature as 
+related to the ToXXXX explicit conversion operators. These operators do 
+not support the "implicit result object conversion" by definition. Thus, 
+ASL expressions that use these operators cannot be folded to a simple 
+Store operator because Store implements the implicit conversion. This 
+change uses the CopyObject operator for the ToXXXX operator folding 
+instead. CopyObject is defined to not implement implicit result 
+conversions and is thus appropriate for folding the ToXXXX operators.
+
+iASL: Changed the severity of an error condition to a simple warning for 
+the case where a symbol is declared both locally and as an external 
+symbol. This accommodates existing ASL code.
+
+AcpiExec: The -ep option to enable the new architecture for module-level 
+code has been removed. It is replaced by the -dp option which instead has 
+the opposite effect: it disables the new architecture (the default) and 
+enables the legacy architecture. When the legacy code is removed in the 
+future, the -dp option will be removed also.
+
+----------------------------------------
 05 January 2018. Summary of changes for version 20180105:
 
 

Modified: head/sys/contrib/dev/acpica/common/dmtbdump.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtbdump.c	Fri Feb  9 21:33:47 2018	(r329084)
+++ head/sys/contrib/dev/acpica/common/dmtbdump.c	Fri Feb  9 21:49:38 2018	(r329085)
@@ -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
- *

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-head mailing list