svn commit: r329072 - in vendor-sys/acpica/dist: . generate/unix/iasl source/common source/compiler source/components/dispatcher source/components/executer source/components/namespace source/compon...
Jung-uk Kim
jkim at FreeBSD.org
Fri Feb 9 18:18:01 UTC 2018
Author: jkim
Date: Fri Feb 9 18:18:00 2018
New Revision: 329072
URL: https://svnweb.freebsd.org/changeset/base/329072
Log:
Import ACPICA 20180209.
Added:
vendor-sys/acpica/dist/source/common/dmtbdump1.c (contents, props changed)
vendor-sys/acpica/dist/source/common/dmtbdump2.c (contents, props changed)
vendor-sys/acpica/dist/source/common/dmtbdump3.c (contents, props changed)
vendor-sys/acpica/dist/source/common/dmtbinfo1.c (contents, props changed)
vendor-sys/acpica/dist/source/common/dmtbinfo2.c (contents, props changed)
vendor-sys/acpica/dist/source/common/dmtbinfo3.c (contents, props changed)
Modified:
vendor-sys/acpica/dist/changes.txt
vendor-sys/acpica/dist/generate/unix/iasl/Makefile
vendor-sys/acpica/dist/source/common/dmtbdump.c
vendor-sys/acpica/dist/source/common/dmtbinfo.c
vendor-sys/acpica/dist/source/compiler/aslbtypes.c
vendor-sys/acpica/dist/source/compiler/aslerror.c
vendor-sys/acpica/dist/source/compiler/aslfold.c
vendor-sys/acpica/dist/source/compiler/aslload.c
vendor-sys/acpica/dist/source/compiler/aslmessages.c
vendor-sys/acpica/dist/source/compiler/aslmessages.h
vendor-sys/acpica/dist/source/compiler/dtcompile.c
vendor-sys/acpica/dist/source/compiler/dtcompiler.h
vendor-sys/acpica/dist/source/compiler/dtexpress.c
vendor-sys/acpica/dist/source/compiler/dtparser.l
vendor-sys/acpica/dist/source/compiler/dtparser.y
vendor-sys/acpica/dist/source/compiler/dttable.c
vendor-sys/acpica/dist/source/compiler/dttable1.c
vendor-sys/acpica/dist/source/compiler/dttable2.c
vendor-sys/acpica/dist/source/components/dispatcher/dsargs.c
vendor-sys/acpica/dist/source/components/dispatcher/dsopcode.c
vendor-sys/acpica/dist/source/components/dispatcher/dspkginit.c
vendor-sys/acpica/dist/source/components/dispatcher/dswexec.c
vendor-sys/acpica/dist/source/components/dispatcher/dswload.c
vendor-sys/acpica/dist/source/components/executer/exconvrt.c
vendor-sys/acpica/dist/source/components/executer/exnames.c
vendor-sys/acpica/dist/source/components/executer/exresop.c
vendor-sys/acpica/dist/source/components/namespace/nseval.c
vendor-sys/acpica/dist/source/components/namespace/nsinit.c
vendor-sys/acpica/dist/source/components/namespace/nsnames.c
vendor-sys/acpica/dist/source/components/namespace/nsparse.c
vendor-sys/acpica/dist/source/components/parser/psargs.c
vendor-sys/acpica/dist/source/components/parser/psloop.c
vendor-sys/acpica/dist/source/components/parser/psparse.c
vendor-sys/acpica/dist/source/components/parser/pstree.c
vendor-sys/acpica/dist/source/components/utilities/utcache.c
vendor-sys/acpica/dist/source/components/utilities/utdelete.c
vendor-sys/acpica/dist/source/include/acopcode.h
vendor-sys/acpica/dist/source/include/acpixf.h
vendor-sys/acpica/dist/source/include/actbl1.h
vendor-sys/acpica/dist/source/include/actbl2.h
vendor-sys/acpica/dist/source/include/actbl3.h
vendor-sys/acpica/dist/source/include/amlcode.h
vendor-sys/acpica/dist/source/include/platform/aclinux.h
vendor-sys/acpica/dist/source/tools/acpiexec/aemain.c
Modified: vendor-sys/acpica/dist/changes.txt
==============================================================================
--- vendor-sys/acpica/dist/changes.txt Fri Feb 9 17:46:33 2018 (r329071)
+++ vendor-sys/acpica/dist/changes.txt Fri Feb 9 18:18:00 2018 (r329072)
@@ -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: vendor-sys/acpica/dist/generate/unix/iasl/Makefile
==============================================================================
--- vendor-sys/acpica/dist/generate/unix/iasl/Makefile Fri Feb 9 17:46:33 2018 (r329071)
+++ vendor-sys/acpica/dist/generate/unix/iasl/Makefile Fri Feb 9 18:18:00 2018 (r329072)
@@ -128,7 +128,13 @@ OBJECTS = \
$(OBJDIR)/dmtable.o\
$(OBJDIR)/dmtables.o\
$(OBJDIR)/dmtbdump.o\
+ $(OBJDIR)/dmtbdump1.o\
+ $(OBJDIR)/dmtbdump2.o\
+ $(OBJDIR)/dmtbdump3.o\
$(OBJDIR)/dmtbinfo.o\
+ $(OBJDIR)/dmtbinfo1.o\
+ $(OBJDIR)/dmtbinfo2.o\
+ $(OBJDIR)/dmtbinfo3.o\
$(OBJDIR)/dmutils.o\
$(OBJDIR)/dmwalk.o\
$(OBJDIR)/dsargs.o\
Modified: vendor-sys/acpica/dist/source/common/dmtbdump.c
==============================================================================
--- vendor-sys/acpica/dist/source/common/dmtbdump.c Fri Feb 9 17:46:33 2018 (r329071)
+++ vendor-sys/acpica/dist/source/common/dmtbdump.c Fri Feb 9 18:18:00 2018 (r329072)
@@ -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;
- }
-
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-all
mailing list