Author: jkim
Date: Mon May 18 23:46:11 2015
New Revision: 283092
URL: https://svnweb.freebsd.org/changeset/base/283092

Log:
  Merge ACPICA 20150515.

Added:
  head/sys/contrib/dev/acpica/common/ahtable.c   (contents, props changed)
     - copied, changed from r283090, 
vendor-sys/acpica/dist/source/common/ahtable.c
     - copied unchanged from r283090, 
vendor-sys/acpica/dist/source/include/acuuid.h
Directory Properties:
  head/sys/contrib/dev/acpica/include/acuuid.h   (props changed)
Modified:
  head/sys/contrib/dev/acpica/changes.txt
  head/sys/contrib/dev/acpica/common/adisasm.c
  head/sys/contrib/dev/acpica/common/ahpredef.c
  head/sys/contrib/dev/acpica/common/dmextern.c
  head/sys/contrib/dev/acpica/common/dmtable.c
  head/sys/contrib/dev/acpica/common/dmtbdump.c
  head/sys/contrib/dev/acpica/common/dmtbinfo.c
  head/sys/contrib/dev/acpica/compiler/aslascii.c
  head/sys/contrib/dev/acpica/compiler/aslcompiler.h
  head/sys/contrib/dev/acpica/compiler/aslcompiler.l
  head/sys/contrib/dev/acpica/compiler/asldefine.h
  head/sys/contrib/dev/acpica/compiler/aslfiles.c
  head/sys/contrib/dev/acpica/compiler/aslmessages.c
  head/sys/contrib/dev/acpica/compiler/aslmessages.h
  head/sys/contrib/dev/acpica/compiler/aslprepkg.c
  head/sys/contrib/dev/acpica/compiler/aslstartup.c
  head/sys/contrib/dev/acpica/compiler/aslutils.c
  head/sys/contrib/dev/acpica/compiler/dtcompile.c
  head/sys/contrib/dev/acpica/compiler/dtcompiler.h
  head/sys/contrib/dev/acpica/compiler/dtio.c
  head/sys/contrib/dev/acpica/compiler/dtsubtable.c
  head/sys/contrib/dev/acpica/compiler/dttable.c
  head/sys/contrib/dev/acpica/compiler/dttemplate.c
  head/sys/contrib/dev/acpica/compiler/dttemplate.h
  head/sys/contrib/dev/acpica/compiler/dtutils.c
  head/sys/contrib/dev/acpica/compiler/preprocess.h
  head/sys/contrib/dev/acpica/compiler/prscan.c
  head/sys/contrib/dev/acpica/compiler/prutils.c
  head/sys/contrib/dev/acpica/components/debugger/dbfileio.c
  head/sys/contrib/dev/acpica/components/debugger/dbinput.c
  head/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c
  head/sys/contrib/dev/acpica/components/hardware/hwpci.c
  head/sys/contrib/dev/acpica/components/namespace/nsprepkg.c
  head/sys/contrib/dev/acpica/components/namespace/nsrepair.c
  head/sys/contrib/dev/acpica/components/parser/psopinfo.c
  head/sys/contrib/dev/acpica/components/utilities/utfileio.c
  head/sys/contrib/dev/acpica/components/utilities/uthex.c
  head/sys/contrib/dev/acpica/components/utilities/utxferror.c
  head/sys/contrib/dev/acpica/include/acdebug.h
  head/sys/contrib/dev/acpica/include/acdisasm.h
  head/sys/contrib/dev/acpica/include/aclocal.h
  head/sys/contrib/dev/acpica/include/acparser.h
  head/sys/contrib/dev/acpica/include/acpixf.h
  head/sys/contrib/dev/acpica/include/acpredef.h
  head/sys/contrib/dev/acpica/include/actbl.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/actypes.h
  head/sys/contrib/dev/acpica/include/acutils.h
  head/sys/contrib/dev/acpica/include/platform/acenv.h
  head/sys/contrib/dev/acpica/include/platform/acenvex.h
  head/usr.sbin/acpi/acpidb/acpidb.c
  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     Mon May 18 23:17:34 2015        
(r283091)
+++ head/sys/contrib/dev/acpica/changes.txt     Mon May 18 23:46:11 2015        
(r283092)
@@ -1,4 +1,52 @@
 ----------------------------------------
+08 April 2015. Summary of changes for version 20150515:
+
+This release implements most of ACPI 6.0 as described below.
+
+1) ACPICA kernel-resident subsystem:
+
+Implemented runtime argument checking and return value checking for all 
+new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 
+_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
+
+Example Code and Data Size: These are the sizes for the OS-independent 
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 
+debug version of the code includes the debug output trace mechanism and 
+has a much larger code and data size.
+
+  Current Release:
+    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
+    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
+  Previous Release:
+    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
+    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 
+names (argument count validation and return value typechecking.)
+
+iASL disassembler and table compiler: implemented support for all new 
+ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 
+
+iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 
+tables: FADT, MADT.
+
+iASL preprocessor: Added a new directive to enable inclusion of binary 
+blobs into ASL code. The new directive is #includebinary. It takes a 
+binary file as input and emits a named ascii buffer object into the ASL 
+code.
+
+AcpiHelp: Added support for all new ACPI 6.0 predefined names.
+
+AcpiHelp: Added a new option, -d, to display all iASL preprocessor 
+directives.
+
+AcpiHelp: Added a new option, -t, to display all known/supported ACPI 
+tables.
+
+----------------------------------------
 10 April 2015. Summary of changes for version 20150410:
 
 Reverted a change introduced in version 20150408 that caused

Modified: head/sys/contrib/dev/acpica/common/adisasm.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/adisasm.c        Mon May 18 23:17:34 
2015        (r283091)
+++ head/sys/contrib/dev/acpica/common/adisasm.c        Mon May 18 23:46:11 
2015        (r283092)
@@ -214,6 +214,7 @@ AdAmlDisassemble (
     char                    **OutFilename)
 {
     ACPI_STATUS             Status;
+    ACPI_STATUS             GlobalStatus = AE_OK;
     char                    *DisasmFilename = NULL;
     char                    *ExternalFilename;
     ACPI_EXTERNAL_FILE      *ExternalFileList = AcpiGbl_ExternalFileList;
@@ -229,7 +230,7 @@ AdAmlDisassemble (
      */
     if (Filename)
     {
-        Status = AcpiDbGetTableFromFile (Filename, &Table);
+        Status = AcpiDbGetTableFromFile (Filename, &Table, FALSE);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
@@ -250,9 +251,16 @@ AdAmlDisassemble (
                 continue;
             }
 
-            Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable);
+            Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable, 
TRUE);
             if (ACPI_FAILURE (Status))
             {
+                if (Status == AE_TYPE)
+                {
+                    ExternalFileList = ExternalFileList->Next;
+                    GlobalStatus = AE_TYPE;
+                    Status = AE_OK;
+                    continue;
+                }
                 return (Status);
             }
 
@@ -282,6 +290,11 @@ AdAmlDisassemble (
             ExternalFileList = ExternalFileList->Next;
         }
 
+        if (ACPI_FAILURE (GlobalStatus))
+        {
+            return (GlobalStatus);
+        }
+
         /* Clear external list generated by Scope in external tables */
 
         if (AcpiGbl_ExternalFileList)

Modified: head/sys/contrib/dev/acpica/common/ahpredef.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/ahpredef.c       Mon May 18 23:17:34 
2015        (r283091)
+++ head/sys/contrib/dev/acpica/common/ahpredef.c       Mon May 18 23:46:11 
2015        (r283092)
@@ -94,6 +94,7 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_BMS",    "Battery Measurement Sampling Time", "Sets the 
battery measurement sampling time"),
     AH_PREDEF ("_BQC",    "Brightness Query Current", "Returns the current 
display brightness level"),
     AH_PREDEF ("_BST",    "Battery Status", "Returns a Control Method Battery 
status block"),
+    AH_PREDEF ("_BTH",    "Battery Throttle Limit", "Thermal limit for 
charging and discharging"),
     AH_PREDEF ("_BTM",    "Battery Time", "Returns the battery runtime"),
     AH_PREDEF ("_BTP",    "Battery Trip Point", "Sets a Control Method Battery 
trip point"),
     AH_PREDEF ("_CBA",    "Configuration Base Address", "Sets the base address 
for a PCI Express host bridge"),
@@ -102,6 +103,7 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_CID",    "Compatible ID", "Returns a device's Plug and Play 
Compatible ID list"),
     AH_PREDEF ("_CLS",    "Class Code", "Returns PCI class code and subclass"),
     AH_PREDEF ("_CPC",    "Continuous Performance Control", "Returns a list of 
performance control interfaces"),
+    AH_PREDEF ("_CR3",    "Warm/Standby Temperature", "Temperature for a fast 
low power state"),
     AH_PREDEF ("_CRS",    "Current Resource Settings", "Returns the current 
resource settings for a device"),
     AH_PREDEF ("_CRT",    "Critical Temperature", "Returns the shutdown 
critical temperature"),
     AH_PREDEF ("_CSD",    "C-State Dependencies", "Returns a list of C-state 
dependencies"),
@@ -175,6 +177,7 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_LIN",    "Lines In Use", "Handshake lines, Resource 
Descriptor field"),
     AH_PREDEF ("_LL_",    "Low Level", "Interrupt polarity, Resource 
Descriptor field"),
     AH_PREDEF ("_LPD",    "Low Power Dependencies", "Returns a list of 
dependencies for low power idle entry"),
+    AH_PREDEF ("_LPI",    "Low Power Idle States", "Returns a list of 
supported low power idle states"),
     AH_PREDEF ("_MAF",    "Maximum Address Fixed", "Resource Descriptor 
field"),
     AH_PREDEF ("_MAT",    "Multiple APIC Table Entry", "Returns a list of MADT 
APIC structure entries"),
     AH_PREDEF ("_MAX",    "Maximum Base Address", "Resource Descriptor field"),
@@ -186,6 +189,7 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_MOD",    "Mode", "Interrupt mode, Resource Descriptor field"),
     AH_PREDEF ("_MSG",    "Message", "Sets the system message waiting status 
indicator"),
     AH_PREDEF ("_MSM",    "Memory Set Monitoring", "Sets bandwidth monitoring 
parameters for a memory device"),
+    AH_PREDEF ("_MTL",    "Minimum Throttle Limit", "Returns the minimum 
throttle limit for a thermal zone"),
     AH_PREDEF ("_MTP",    "Memory Type", "Resource Descriptor field"),
     AH_PREDEF ("_NTT",    "Notification Temperature Threshold", "Returns a 
threshold for device temperature change that requires platform notification"),
     AH_PREDEF ("_OFF",    "Power Off", "Sets a power resource to the off 
state"),
@@ -209,7 +213,7 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_PMD",    "Power Metered Devices", "Returns a list of devices 
that are measured by the power meter device"),
     AH_PREDEF ("_PMM",    "Power Meter Measurement", "Returns the current 
value of the Power Meter"),
     AH_PREDEF ("_POL",    "Polarity", "Interrupt polarity, Resource Descriptor 
field"),
-    AH_PREDEF ("_PPC",    "Performance Present Capabilites", "Returns a list 
of the performance states currently supported by the platform"),
+    AH_PREDEF ("_PPC",    "Performance Present Capabilities", "Returns a list 
of the performance states currently supported by the platform"),
     AH_PREDEF ("_PPE",    "Polling for Platform Error", "Returns the polling 
interval to retrieve Corrected Platform Error information"),
     AH_PREDEF ("_PPI",    "Pin Configuration", "Resource Descriptor field"),
     AH_PREDEF ("_PR",     "Processor", "Predefined scope for processor 
objects"),
@@ -219,6 +223,7 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_PR3",    "Power Resources for D3hot", "Returns a list of 
dependent power resources to enter state D3hot"),
     AH_PREDEF ("_PRE",    "Power Resources for Enumeration", "Returns a list 
of dependent power resources to enumerate devices on a bus"),
     AH_PREDEF ("_PRL",    "Power Source Redundancy List", "Returns a list of 
power source devices in the same redundancy grouping"),
+    AH_PREDEF ("_PRR",    "Power Resource for Reset", "Execute a reset on a 
device"),
     AH_PREDEF ("_PRS",    "Possible Resource Settings", "Returns a list of a 
device's possible resource settings"),
     AH_PREDEF ("_PRT",    "PCI Routing Table", "Returns a list of PCI 
interrupt mappings"),
     AH_PREDEF ("_PRW",    "Power Resources for Wake", "Returns a list of 
dependent power resources for waking"),
@@ -242,10 +247,12 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_Qxx",    "EC Query", "Embedded Controller query and SMBus 
Alarm control method"),
     AH_PREDEF ("_RBO",    "Register Bit Offset", "Resource Descriptor field"),
     AH_PREDEF ("_RBW",    "Register Bit Width", "Resource Descriptor field"),
+    AH_PREDEF ("_RDI",    "Resource Dependencies for Idle", "Returns a list of 
dependencies for idle states"),
     AH_PREDEF ("_REG",    "Region Availability", "Inform AML code of an 
operation region availability change"),
     AH_PREDEF ("_REV",    "Supported ACPI Revision", "Returns the revision of 
the ACPI specification that is implemented"),
     AH_PREDEF ("_RMV",    "Removal Status", "Returns a device's removal 
ability status (docking)"),
     AH_PREDEF ("_RNG",    "Range", "Memory range type, Resource Descriptor 
field"),
+    AH_PREDEF ("_RST",    "Device Reset", "Executes a reset on a device"),
     AH_PREDEF ("_ROM",    "Read-Only Memory", "Returns a copy of the ROM data 
for a display device"),
     AH_PREDEF ("_RT_",    "Resource Type", "Resource Descriptor field"),
     AH_PREDEF ("_RTV",    "Relative Temperature Values", "Returns temperature 
value information"),
@@ -296,6 +303,7 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_TC1",    "Thermal Constant 1", "Returns TC1 for the passive 
cooling formula"),
     AH_PREDEF ("_TC2",    "Thermal Constant 2", "Returns TC2 for the passive 
cooling formula"),
     AH_PREDEF ("_TDL",    "T-State Depth Limit", "Returns the _TSS entry 
number of the lowest power throttling state"),
+    AH_PREDEF ("_TFP",    "Thermal Fast Sampling Period", "Returns the 
sampling period for passive cooling"),
     AH_PREDEF ("_TIP",    "Expired Timer Wake Policy", "Returns timer policies 
of the wake alarm device"),
     AH_PREDEF ("_TIV",    "Timer Values", "Returns remaining time of the wake 
alarm device"),
     AH_PREDEF ("_TMP",    "Temperature", "Returns a thermal zone's current 
temperature"),
@@ -306,6 +314,7 @@ const AH_PREDEFINED_NAME    AslPredefine
     AH_PREDEF ("_TRT",    "Thermal Relationship Table", "Returns thermal 
relationships between platform devices"),
     AH_PREDEF ("_TSD",    "Throttling State Dependencies", "Returns a list of 
T-state dependencies"),
     AH_PREDEF ("_TSF",    "Type-Specific Flags", "Resource Descriptor field"),
+    AH_PREDEF ("_TSN",    "Thermal Sensor Device", "Returns a reference to a 
thermal sensor"),
     AH_PREDEF ("_TSP",    "Thermal Sampling Period", "Returns the thermal 
sampling period for passive cooling"),
     AH_PREDEF ("_TSS",    "Throttling Supported States", "Returns supported 
throttling state information"),
     AH_PREDEF ("_TST",    "Temperature Sensor Threshold", "Returns the minimum 
separation for a device's temperature trip points"),

Copied and modified: head/sys/contrib/dev/acpica/common/ahtable.c (from 
r283090, vendor-sys/acpica/dist/source/common/ahtable.c)
==============================================================================
--- vendor-sys/acpica/dist/source/common/ahtable.c      Mon May 18 23:17:05 
2015        (r283090, copy source)
+++ head/sys/contrib/dev/acpica/common/ahtable.c        Mon May 18 23:46:11 
2015        (r283092)
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#include "acpi.h"
-#include "accommon.h"
+#include <contrib/dev/acpica/include/acpi.h>
+#include <contrib/dev/acpica/include/accommon.h>
 
 
 /* Local prototypes */

Modified: head/sys/contrib/dev/acpica/common/dmextern.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmextern.c       Mon May 18 23:17:34 
2015        (r283091)
+++ head/sys/contrib/dev/acpica/common/dmextern.c       Mon May 18 23:46:11 
2015        (r283092)
@@ -1286,7 +1286,9 @@ AcpiDmUnresolvedWarning (
                 "     * compile because the disassembler did not know how many 
arguments\n"
                 "     * to assign to these methods. To specify the tables 
needed to resolve\n"
                 "     * external control method references, the -e option can 
be used to\n"
-                "     * specify the filenames. Example iASL invocations:\n"
+                "     * specify the filenames. Note: SSDTs can be dynamically 
loaded at\n"
+                "     * runtime and may or may not be available via the host 
OS.\n"
+                "     * Example iASL invocations:\n"
                 "     *     iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d 
dsdt.aml\n"
                 "     *     iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n"
                 "     *     iasl -e ssdt*.aml -d dsdt.aml\n"
@@ -1314,7 +1316,8 @@ AcpiDmUnresolvedWarning (
                 "     * ACPI tables may be required to properly disassemble 
the code. This\n"
                 "     * resulting disassembler output file may not compile 
because the\n"
                 "     * disassembler did not know how many arguments to assign 
to the\n"
-                "     * unresolved methods.\n"
+                "     * unresolved methods. Note: SSDTs can be dynamically 
loaded at\n"
+                "     * runtime and may or may not be available via the host 
OS.\n"
                 "     *\n"
                 "     * If necessary, the -fe option can be used to specify a 
file containing\n"
                 "     * control method external declarations with the 
associated method\n"
@@ -1345,7 +1348,9 @@ AcpiDmUnresolvedWarning (
                 "compile because the disassembler did not know how many 
arguments\n"
                 "to assign to these methods. To specify the tables needed to 
resolve\n"
                 "external control method references, the -e option can be used 
to\n"
-                "specify the filenames. Example iASL invocations:\n"
+                "specify the filenames. Note: SSDTs can be dynamically loaded 
at\n"
+                "runtime and may or may not be available via the host OS.\n"
+                "Example iASL invocations:\n"
                 "    iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n"
                 "    iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n"
                 "    iasl -e ssdt*.aml -d dsdt.aml\n"
@@ -1368,7 +1373,8 @@ AcpiDmUnresolvedWarning (
                 "ACPI tables may be required to properly disassemble the code. 
The\n"
                 "resulting disassembler output file may not compile because 
the\n"
                 "disassembler did not know how many arguments to assign to 
the\n"
-                "unresolved methods.\n"
+                "unresolved methods. Note: SSDTs can be dynamically loaded 
at\n"
+                "runtime and may or may not be available via the host OS.\n"
                 "\n"
                 "If necessary, the -fe option can be used to specify a file 
containing\n"
                 "control method external declarations with the associated 
method\n"

Modified: head/sys/contrib/dev/acpica/common/dmtable.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtable.c        Mon May 18 23:17:34 
2015        (r283091)
+++ head/sys/contrib/dev/acpica/common/dmtable.c        Mon May 18 23:46:11 
2015        (r283092)
@@ -53,6 +53,11 @@
 #define _COMPONENT          ACPI_CA_DISASSEMBLER
         ACPI_MODULE_NAME    ("dmtable")
 
+const AH_TABLE *
+AcpiAhGetTableInfo (
+    char                    *Signature);
+
+
 /* Local Prototypes */
 
 static void
@@ -78,7 +83,7 @@ static const char           *AcpiDmAsfSu
     "ASF Remote Control",
     "ASF RMCP Boot Options",
     "ASF Address",
-    "Unknown SubTable Type"         /* Reserved */
+    "Unknown Subtable Type"         /* Reserved */
 };
 
 static const char           *AcpiDmDmarSubnames[] =
@@ -88,7 +93,7 @@ static const char           *AcpiDmDmarS
     "Root Port ATS Capability",
     "Remapping Hardware Static Affinity",
     "ACPI Namespace Device Declaration",
-    "Unknown SubTable Type"         /* Reserved */
+    "Unknown Subtable Type"         /* Reserved */
 };
 
 static const char           *AcpiDmDmarScope[] =
@@ -176,7 +181,7 @@ static const char           *AcpiDmGtdtS
 {
     "Generic Timer Block",
     "Generic Watchdog Timer",
-    "Unknown SubTable Type"         /* Reserved */
+    "Unknown Subtable Type"         /* Reserved */
 };
 
 static const char           *AcpiDmHestSubnames[] =
@@ -191,7 +196,7 @@ static const char           *AcpiDmHestS
     "PCI Express AER (AER Endpoint)",
     "PCI Express/PCI-X Bridge AER",
     "Generic Hardware Error Source",
-    "Unknown SubTable Type"         /* Reserved */
+    "Unknown Subtable Type"         /* Reserved */
 };
 
 static const char           *AcpiDmHestNotifySubnames[] =
@@ -223,14 +228,27 @@ static const char           *AcpiDmMadtS
     "Generic Interrupt Distributor",    /* ACPI_MADT_GENERIC_DISTRIBUTOR */
     "Generic MSI Frame",                /* ACPI_MADT_GENERIC_MSI_FRAME */
     "Generic Interrupt Redistributor",  /* ACPI_MADT_GENERIC_REDISTRIBUTOR */
-    "Unknown SubTable Type"             /* Reserved */
+    "Generic Interrupt Translator",     /* ACPI_MADT_GENERIC_TRANSLATOR */
+    "Unknown Subtable Type"             /* Reserved */
+};
+
+static const char           *AcpiDmNfitSubnames[] =
+{
+    "System Physical Address Range",    /* ACPI_NFIT_TYPE_SYSTEM_ADDRESS */
+    "Memory Range Map",                 /* ACPI_NFIT_TYPE_MEMORY_MAP */
+    "Interleave Info",                  /* ACPI_NFIT_TYPE_INTERLEAVE */
+    "SMBIOS Information",               /* ACPI_NFIT_TYPE_SMBIOS */
+    "NVDIMM Control Region",            /* ACPI_NFIT_TYPE_CONTROL_REGION */
+    "NVDIMM Block Data Window Region",  /* ACPI_NFIT_TYPE_DATA_REGION */
+    "Flush Hint Address",               /* ACPI_NFIT_TYPE_FLUSH_ADDRESS */
+    "Unknown Subtable Type"             /* Reserved */
 };
 
 static const char           *AcpiDmPcctSubnames[] =
 {
     "Generic Communications Subspace",  /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */
-    "HW-Reduced Communications Subspace",
-    "Unknown SubTable Type"             /* Reserved */
+    "HW-Reduced Comm Subspace",         /* ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE 
*/
+    "Unknown Subtable Type"             /* Reserved */
 };
 
 static const char           *AcpiDmPmttSubnames[] =
@@ -238,7 +256,7 @@ static const char           *AcpiDmPmttS
     "Socket",                       /* ACPI_PMTT_TYPE_SOCKET */
     "Memory Controller",            /* ACPI_PMTT_TYPE_CONTROLLER */
     "Physical Component (DIMM)",    /* ACPI_PMTT_TYPE_DIMM  */
-    "Unknown SubTable Type"         /* Reserved */
+    "Unknown Subtable Type"         /* Reserved */
 };
 
 static const char           *AcpiDmSratSubnames[] =
@@ -247,21 +265,20 @@ static const char           *AcpiDmSratS
     "Memory Affinity",
     "Processor Local x2APIC Affinity",
     "GICC Affinity",
-    "Unknown SubTable Type"         /* Reserved */
+    "Unknown Subtable Type"         /* Reserved */
 };
 
 static const char           *AcpiDmIvrsSubnames[] =
 {
     "Hardware Definition Block",
     "Memory Definition Block",
-    "Unknown SubTable Type"         /* Reserved */
+    "Unknown Subtable Type"         /* Reserved */
 };
 
 static const char           *AcpiDmLpitSubnames[] =
 {
     "Native C-state Idle Structure",
-    "Simple I/O Idle Structure",
-    "Unknown SubTable Type"         /* Reserved */
+    "Unknown Subtable Type"         /* Reserved */
 };
 
 #define ACPI_FADT_PM_RESERVED       9
@@ -304,56 +321,65 @@ static const char           *AcpiDmGasAc
  * handler. This table must be NULL terminated. RSDP and FACS are
  * special-cased elsewhere.
  *
+ * Note: Any tables added here should be duplicated within AcpiSupportedTables
+ * in the file common/ahtable.c
+ *
  
******************************************************************************/
 
-ACPI_DMTABLE_DATA    AcpiDmTableData[] =
+const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
 {
-    {ACPI_SIG_ASF,  NULL,                   AcpiDmDumpAsf,  DtCompileAsf,   
TemplateAsf,    "Alert Standard Format table"},
-    {ACPI_SIG_BERT, AcpiDmTableInfoBert,    NULL,           NULL,           
TemplateBert,   "Boot Error Record Table"},
-    {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt,    NULL,           NULL,           
TemplateBgrt,   "Boot Graphics Resource Table"},
-    {ACPI_SIG_BOOT, AcpiDmTableInfoBoot,    NULL,           NULL,           
TemplateBoot,   "Simple Boot Flag Table"},
-    {ACPI_SIG_CPEP, NULL,                   AcpiDmDumpCpep, DtCompileCpep,  
TemplateCpep,   "Corrected Platform Error Polling table"},
-    {ACPI_SIG_CSRT, NULL,                   AcpiDmDumpCsrt, DtCompileCsrt,  
TemplateCsrt,   "Core System Resource Table"},
-    {ACPI_SIG_DBG2, AcpiDmTableInfoDbg2,    AcpiDmDumpDbg2, DtCompileDbg2,  
TemplateDbg2,   "Debug Port table type 2"},
-    {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp,    NULL,           NULL,           
TemplateDbgp,   "Debug Port table"},
-    {ACPI_SIG_DMAR, NULL,                   AcpiDmDumpDmar, DtCompileDmar,  
TemplateDmar,   "DMA Remapping table"},
-    {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt,    NULL,           NULL,           
TemplateEcdt,   "Embedded Controller Boot Resources Table"},
-    {ACPI_SIG_EINJ, NULL,                   AcpiDmDumpEinj, DtCompileEinj,  
TemplateEinj,   "Error Injection table"},
-    {ACPI_SIG_ERST, NULL,                   AcpiDmDumpErst, DtCompileErst,  
TemplateErst,   "Error Record Serialization Table"},
-    {ACPI_SIG_FADT, NULL,                   AcpiDmDumpFadt, DtCompileFadt,  
TemplateFadt,   "Fixed ACPI Description Table (FADT)"},
-    {ACPI_SIG_FPDT, NULL,                   AcpiDmDumpFpdt, DtCompileFpdt,  
TemplateFpdt,   "Firmware Performance Data Table"},
-    {ACPI_SIG_GTDT, NULL,                   AcpiDmDumpGtdt, DtCompileGtdt,  
TemplateGtdt,   "Generic Timer Description Table"},
-    {ACPI_SIG_HEST, NULL,                   AcpiDmDumpHest, DtCompileHest,  
TemplateHest,   "Hardware Error Source Table"},
-    {ACPI_SIG_HPET, AcpiDmTableInfoHpet,    NULL,           NULL,           
TemplateHpet,   "High Precision Event Timer table"},
-    {ACPI_SIG_IVRS, NULL,                   AcpiDmDumpIvrs, DtCompileIvrs,  
TemplateIvrs,   "I/O Virtualization Reporting Structure"},
-    {ACPI_SIG_LPIT, NULL,                   AcpiDmDumpLpit, DtCompileLpit,  
TemplateLpit,   "Low Power Idle Table"},
-    {ACPI_SIG_MADT, NULL,                   AcpiDmDumpMadt, DtCompileMadt,  
TemplateMadt,   "Multiple APIC Description Table (MADT)"},
-    {ACPI_SIG_MCFG, NULL,                   AcpiDmDumpMcfg, DtCompileMcfg,  
TemplateMcfg,   "Memory Mapped Configuration table"},
-    {ACPI_SIG_MCHI, AcpiDmTableInfoMchi,    NULL,           NULL,           
TemplateMchi,   "Management Controller Host Interface table"},
-    {ACPI_SIG_MPST, AcpiDmTableInfoMpst,    AcpiDmDumpMpst, DtCompileMpst,  
TemplateMpst,   "Memory Power State Table"},
-    {ACPI_SIG_MSCT, NULL,                   AcpiDmDumpMsct, DtCompileMsct,  
TemplateMsct,   "Maximum System Characteristics Table"},
-    {ACPI_SIG_MSDM, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  
TemplateMsdm,   "Microsoft Data Management table"},
-    {ACPI_SIG_MTMR, NULL,                   AcpiDmDumpMtmr, DtCompileMtmr,  
TemplateMtmr,   "MID Timer Table"},
-    {ACPI_SIG_PCCT, AcpiDmTableInfoPcct,    AcpiDmDumpPcct, DtCompilePcct,  
TemplatePcct,   "Platform Communications Channel Table"},
-    {ACPI_SIG_PMTT, NULL,                   AcpiDmDumpPmtt, DtCompilePmtt,  
TemplatePmtt,   "Platform Memory Topology Table"},
-    {ACPI_SIG_RSDT, NULL,                   AcpiDmDumpRsdt, DtCompileRsdt,  
TemplateRsdt,   "Root System Description Table"},
-    {ACPI_SIG_S3PT, NULL,                   NULL,           NULL,           
TemplateS3pt,   "S3 Performance Table"},
-    {ACPI_SIG_SBST, AcpiDmTableInfoSbst,    NULL,           NULL,           
TemplateSbst,   "Smart Battery Specification Table"},
-    {ACPI_SIG_SLIC, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  
TemplateSlic,   "Software Licensing Description Table"},
-    {ACPI_SIG_SLIT, NULL,                   AcpiDmDumpSlit, DtCompileSlit,  
TemplateSlit,   "System Locality Information Table"},
-    {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr,    NULL,           NULL,           
TemplateSpcr,   "Serial Port Console Redirection table"},
-    {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi,    NULL,           NULL,           
TemplateSpmi,   "Server Platform Management Interface table"},
-    {ACPI_SIG_SRAT, NULL,                   AcpiDmDumpSrat, DtCompileSrat,  
TemplateSrat,   "System Resource Affinity Table"},
-    {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa,    NULL,           NULL,           
TemplateTcpa,   "Trusted Computing Platform Alliance table"},
-    {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2,    NULL,           NULL,           
TemplateTpm2,   "Trusted Platform Module hardware interface table"},
-    {ACPI_SIG_UEFI, AcpiDmTableInfoUefi,    NULL,           DtCompileUefi,  
TemplateUefi,   "UEFI Boot Optimization Table"},
-    {ACPI_SIG_VRTC, AcpiDmTableInfoVrtc,    AcpiDmDumpVrtc, DtCompileVrtc,  
TemplateVrtc,   "Virtual Real-Time Clock Table"},
-    {ACPI_SIG_WAET, AcpiDmTableInfoWaet,    NULL,           NULL,           
TemplateWaet,   "Windows ACPI Emulated Devices Table"},
-    {ACPI_SIG_WDAT, NULL,                   AcpiDmDumpWdat, DtCompileWdat,  
TemplateWdat,   "Watchdog Action Table"},
-    {ACPI_SIG_WDDT, AcpiDmTableInfoWddt,    NULL,           NULL,           
TemplateWddt,   "Watchdog Description Table"},
-    {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt,    NULL,           NULL,           
TemplateWdrt,   "Watchdog Resource Table"},
-    {ACPI_SIG_XSDT, NULL,                   AcpiDmDumpXsdt, DtCompileXsdt,  
TemplateXsdt,   "Extended System Description Table"},
-    {NULL,          NULL,                   NULL,           NULL,           
NULL,           NULL}
+    {ACPI_SIG_ASF,  NULL,                   AcpiDmDumpAsf,  DtCompileAsf,   
TemplateAsf},
+    {ACPI_SIG_BERT, AcpiDmTableInfoBert,    NULL,           NULL,           
TemplateBert},
+    {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt,    NULL,           NULL,           
TemplateBgrt},
+    {ACPI_SIG_BOOT, AcpiDmTableInfoBoot,    NULL,           NULL,           
TemplateBoot},
+    {ACPI_SIG_CPEP, NULL,                   AcpiDmDumpCpep, DtCompileCpep,  
TemplateCpep},
+    {ACPI_SIG_CSRT, NULL,                   AcpiDmDumpCsrt, DtCompileCsrt,  
TemplateCsrt},
+    {ACPI_SIG_DBG2, AcpiDmTableInfoDbg2,    AcpiDmDumpDbg2, DtCompileDbg2,  
TemplateDbg2},
+    {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp,    NULL,           NULL,           
TemplateDbgp},
+    {ACPI_SIG_DMAR, NULL,                   AcpiDmDumpDmar, DtCompileDmar,  
TemplateDmar},
+    {ACPI_SIG_DRTM, NULL,                   AcpiDmDumpDrtm, DtCompileDrtm,  
TemplateDrtm},
+    {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt,    NULL,           NULL,           
TemplateEcdt},
+    {ACPI_SIG_EINJ, NULL,                   AcpiDmDumpEinj, DtCompileEinj,  
TemplateEinj},
+    {ACPI_SIG_ERST, NULL,                   AcpiDmDumpErst, DtCompileErst,  
TemplateErst},
+    {ACPI_SIG_FADT, NULL,                   AcpiDmDumpFadt, DtCompileFadt,  
TemplateFadt},
+    {ACPI_SIG_FPDT, NULL,                   AcpiDmDumpFpdt, DtCompileFpdt,  
TemplateFpdt},
+    {ACPI_SIG_GTDT, NULL,                   AcpiDmDumpGtdt, DtCompileGtdt,  
TemplateGtdt},
+    {ACPI_SIG_HEST, NULL,                   AcpiDmDumpHest, DtCompileHest,  
TemplateHest},
+    {ACPI_SIG_HPET, AcpiDmTableInfoHpet,    NULL,           NULL,           
TemplateHpet},
+    {ACPI_SIG_IORT, NULL,                   AcpiDmDumpIort, DtCompileIort,  
TemplateIort},
+    {ACPI_SIG_IVRS, NULL,                   AcpiDmDumpIvrs, DtCompileIvrs,  
TemplateIvrs},
+    {ACPI_SIG_LPIT, NULL,                   AcpiDmDumpLpit, DtCompileLpit,  
TemplateLpit},
+    {ACPI_SIG_MADT, NULL,                   AcpiDmDumpMadt, DtCompileMadt,  
TemplateMadt},
+    {ACPI_SIG_MCFG, NULL,                   AcpiDmDumpMcfg, DtCompileMcfg,  
TemplateMcfg},
+    {ACPI_SIG_MCHI, AcpiDmTableInfoMchi,    NULL,           NULL,           
TemplateMchi},
+    {ACPI_SIG_MPST, AcpiDmTableInfoMpst,    AcpiDmDumpMpst, DtCompileMpst,  
TemplateMpst},
+    {ACPI_SIG_MSCT, NULL,                   AcpiDmDumpMsct, DtCompileMsct,  
TemplateMsct},
+    {ACPI_SIG_MSDM, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  
TemplateMsdm},
+    {ACPI_SIG_MTMR, NULL,                   AcpiDmDumpMtmr, DtCompileMtmr,  
TemplateMtmr},
+    {ACPI_SIG_NFIT, AcpiDmTableInfoNfit,    AcpiDmDumpNfit, DtCompileNfit,  
TemplateNfit},
+    {ACPI_SIG_PCCT, AcpiDmTableInfoPcct,    AcpiDmDumpPcct, DtCompilePcct,  
TemplatePcct},
+    {ACPI_SIG_PMTT, NULL,                   AcpiDmDumpPmtt, DtCompilePmtt,  
TemplatePmtt},
+    {ACPI_SIG_RSDT, NULL,                   AcpiDmDumpRsdt, DtCompileRsdt,  
TemplateRsdt},
+    {ACPI_SIG_S3PT, NULL,                   NULL,           NULL,           
TemplateS3pt},
+    {ACPI_SIG_SBST, AcpiDmTableInfoSbst,    NULL,           NULL,           
TemplateSbst},
+    {ACPI_SIG_SLIC, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  
TemplateSlic},
+    {ACPI_SIG_SLIT, NULL,                   AcpiDmDumpSlit, DtCompileSlit,  
TemplateSlit},
+    {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr,    NULL,           NULL,           
TemplateSpcr},
+    {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi,    NULL,           NULL,           
TemplateSpmi},
+    {ACPI_SIG_SRAT, NULL,                   AcpiDmDumpSrat, DtCompileSrat,  
TemplateSrat},
+    {ACPI_SIG_STAO, NULL,                   AcpiDmDumpStao, DtCompileStao,  
TemplateStao},
+    {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa,    NULL,           NULL,           
TemplateTcpa},
+    {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2,    NULL,           NULL,           
TemplateTpm2},
+    {ACPI_SIG_UEFI, AcpiDmTableInfoUefi,    NULL,           DtCompileUefi,  
TemplateUefi},
+    {ACPI_SIG_VRTC, AcpiDmTableInfoVrtc,    AcpiDmDumpVrtc, DtCompileVrtc,  
TemplateVrtc},
+    {ACPI_SIG_WAET, AcpiDmTableInfoWaet,    NULL,           NULL,           
TemplateWaet},
+    {ACPI_SIG_WDAT, NULL,                   AcpiDmDumpWdat, DtCompileWdat,  
TemplateWdat},
+    {ACPI_SIG_WDDT, AcpiDmTableInfoWddt,    NULL,           NULL,           
TemplateWddt},
+    {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt,    NULL,           NULL,           
TemplateWdrt},
+    {ACPI_SIG_WPBT, NULL,                   AcpiDmDumpWpbt, DtCompileWpbt,  
TemplateWpbt},
+    {ACPI_SIG_XENV, AcpiDmTableInfoXenv,    NULL,           NULL,           
TemplateXenv},
+    {ACPI_SIG_XSDT, NULL,                   AcpiDmDumpXsdt, DtCompileXsdt,  
TemplateXsdt},
+    {NULL,          NULL,                   NULL,           NULL,           
NULL}
 };
 
 
@@ -407,18 +433,18 @@ AcpiDmGenerateChecksum (
  *
  
******************************************************************************/
 
-ACPI_DMTABLE_DATA *
+const ACPI_DMTABLE_DATA *
 AcpiDmGetTableData (
     char                    *Signature)
 {
-    ACPI_DMTABLE_DATA       *TableData;
+    const ACPI_DMTABLE_DATA *Info;
 
 
-    for (TableData = AcpiDmTableData; TableData->Signature; TableData++)
+    for (Info = AcpiDmTableData; Info->Signature; Info++)
     {
-        if (ACPI_COMPARE_NAME (Signature, TableData->Signature))
+        if (ACPI_COMPARE_NAME (Signature, Info->Signature))
         {
-            return (TableData);
+            return (Info);
         }
     }
 
@@ -444,7 +470,7 @@ AcpiDmDumpDataTable (
     ACPI_TABLE_HEADER       *Table)
 {
     ACPI_STATUS             Status;
-    ACPI_DMTABLE_DATA       *TableData;
+    const ACPI_DMTABLE_DATA *TableData;
     UINT32                  Length;
 
 
@@ -558,7 +584,6 @@ AcpiDmDumpDataTable (
  * PARAMETERS:  Offset              - Current byte offset, from table start
  *              ByteLength          - Length of the field in bytes, 0 for flags
  *              Name                - Name of this field
- *              Value               - Optional value, displayed on left of ':'
  *
  * RETURN:      None
  *
@@ -692,7 +717,7 @@ AcpiDmDumpTable (
     UINT16                  Temp16;
     UINT32                  Temp32;
     UINT64                  Value;
-    ACPI_DMTABLE_DATA       *TableData;
+    const AH_TABLE          *TableData;
     const char              *Name;
     BOOLEAN                 LastOutputBlankLine = FALSE;
     char                    RepairedName[8];
@@ -715,13 +740,24 @@ AcpiDmDumpTable (
         Target = ACPI_ADD_PTR (UINT8, Table, Info->Offset);
         CurrentOffset = TableOffset + Info->Offset;
 
-        /* Check for beyond EOT or beyond subtable end */
+        /* Check for beyond subtable end or (worse) beyond EOT */
+
+        if (SubtableLength && (Info->Offset >= SubtableLength))
+        {
+            AcpiOsPrintf (
+                "/**** ACPI subtable terminates early - "
+                "may be older version (dump table) */\n");
 
-        if ((CurrentOffset >= TableLength) ||
-            (SubtableLength && (Info->Offset >= SubtableLength)))
+            /* Move on to next subtable */
+
+            return (AE_OK);
+        }
+
+        if (CurrentOffset >= TableLength)
         {
             AcpiOsPrintf (
-                "**** ACPI table terminates in the middle of a data structure! 
(dump table)\n");
+                "/**** ACPI table terminates "
+                "in the middle of a data structure! (dump table) */\n");
             return (AE_BAD_DATA);
         }
 
@@ -754,6 +790,7 @@ AcpiDmDumpTable (
         case ACPI_DMT_UINT16:
         case ACPI_DMT_DMAR:
         case ACPI_DMT_HEST:
+        case ACPI_DMT_NFIT:
 
             ByteLength = 2;
             break;
@@ -810,6 +847,7 @@ AcpiDmDumpTable (
             ByteLength = 128;
             break;
 
+        case ACPI_DMT_UNICODE:
         case ACPI_DMT_BUFFER:
         case ACPI_DMT_RAW_BUFFER:
 
@@ -841,16 +879,39 @@ AcpiDmDumpTable (
             ByteLength = sizeof (ACPI_HEST_NOTIFY);
             break;
 
+        case ACPI_DMT_IORTMEM:
+
+            if (!LastOutputBlankLine)
+            {
+                LastOutputBlankLine = FALSE;
+            }
+            ByteLength = sizeof (ACPI_IORT_MEMORY_ACCESS);
+            break;
+
         default:
 
             ByteLength = 0;
             break;
         }
 
+        /* Check if we are beyond a subtable, or (worse) beyond EOT */
+
         if (CurrentOffset + ByteLength > TableLength)
         {
+            if (SubtableLength)
+            {
+                AcpiOsPrintf (
+                    "/**** ACPI subtable terminates early - "
+                    "may be older version (dump table) */\n");
+
+                /* Move on to next subtable */
+
+                return (AE_OK);
+            }
+
             AcpiOsPrintf (
-                "**** ACPI table terminates in the middle of a data 
structure!\n");
+                "/**** ACPI table terminates "
+                "in the middle of a data structure! */\n");
             return (AE_BAD_DATA);
         }
 
@@ -980,10 +1041,10 @@ AcpiDmDumpTable (
 
             AcpiDmCheckAscii (Target, RepairedName, 4);
             AcpiOsPrintf ("\"%.4s\"    ", RepairedName);
-            TableData = AcpiDmGetTableData (ACPI_CAST_PTR (char, Target));
+            TableData = AcpiAhGetTableInfo (ACPI_CAST_PTR (char, Target));
             if (TableData)
             {
-                AcpiOsPrintf (STRING_FORMAT, TableData->Name);
+                AcpiOsPrintf (STRING_FORMAT, TableData->Description);
             }
             else
             {
@@ -1209,6 +1270,16 @@ AcpiDmDumpTable (
                 AcpiDmHestNotifySubnames[Temp8]);
             break;
 
+        case ACPI_DMT_IORTMEM:
+
+            AcpiOsPrintf (STRING_FORMAT,
+                "IORT Memory Access Properties");
+
+            AcpiDmDumpTable (TableLength, CurrentOffset, Target,
+                sizeof (ACPI_IORT_MEMORY_ACCESS), AcpiDmTableInfoIortAcc);
+            LastOutputBlankLine = TRUE;
+            break;
+
         case ACPI_DMT_MADT:
 
             /* MADT subtable types */
@@ -1223,6 +1294,20 @@ AcpiDmDumpTable (
                 AcpiDmMadtSubnames[Temp8]);
             break;
 
+        case ACPI_DMT_NFIT:
+
+            /* NFIT subtable types */
+
+            Temp16 = ACPI_GET16 (Target);
+            if (Temp16 > ACPI_NFIT_TYPE_RESERVED)
+            {
+                Temp16 = ACPI_NFIT_TYPE_RESERVED;
+            }
+
+            AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
+                AcpiDmNfitSubnames[Temp16]);
+            break;
+
         case ACPI_DMT_PCCT:
 
             /* PCCT subtable types */
@@ -1251,16 +1336,27 @@ AcpiDmDumpTable (
                 AcpiDmPmttSubnames[Temp8]);
             break;
 
+        case ACPI_DMT_UNICODE:
+
+            if (ByteLength == 0)
+            {
+                AcpiOsPrintf ("/* Zero-length Data */\n");
+                break;
+            }
+
+            AcpiDmDumpUnicode (Table, CurrentOffset, ByteLength);
+            break;
+
         case ACPI_DMT_RAW_BUFFER:
-            /*
-             * Currently only used for SLIC table
-             */
-            AcpiOsPrintf ("/* Proprietary data structure */ ");
 
-            AcpiDmDumpBuffer (Table, sizeof (ACPI_TABLE_HEADER),
-                ByteLength, sizeof (ACPI_TABLE_HEADER),
-                "Licensing Data", TRUE);
-            AcpiOsPrintf ("\n");
+            if (ByteLength == 0)
+            {
+                AcpiOsPrintf ("/* Zero-length Data */\n");
+                break;
+            }
+
+            AcpiDmDumpBuffer (Table, CurrentOffset, ByteLength,
+                CurrentOffset, NULL);
             break;
 
         case ACPI_DMT_SRAT:

Modified: head/sys/contrib/dev/acpica/common/dmtbdump.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtbdump.c       Mon May 18 23:17:34 
2015        (r283091)
+++ head/sys/contrib/dev/acpica/common/dmtbdump.c       Mon May 18 23:46:11 
2015        (r283092)
@@ -70,7 +70,6 @@ AcpiDmValidateFadtLength (
  *              AbsoluteOffset      - Offset of buffer in the main ACPI table
  *              Header              - Name of the buffer field (printed on the
  *                                    first line only.)
- *              MultiLine           - TRUE if a large, multi-line buffer
  *
  * RETURN:      None
  *
@@ -85,8 +84,7 @@ AcpiDmDumpBuffer (
     UINT32                  BufferOffset,
     UINT32                  Length,
     UINT32                  AbsoluteOffset,
-    char                    *Header,
-    BOOLEAN                 MultiLine)
+    char                    *Header)
 {
     UINT8                   *Buffer;
     UINT32                  i;
@@ -104,18 +102,11 @@ AcpiDmDumpBuffer (
     {
         if (!(i % 16))
         {
-            if (MultiLine)
-            {
-                /* Insert a backslash - line continuation character */
+            /* Insert a backslash - line continuation character */
 
-                AcpiOsPrintf ("\\\n    ");
-            }
-            else
+            if (Length > 16)
             {
-                AcpiOsPrintf ("\n");
-                AcpiDmLineHeader (AbsoluteOffset,
-                    ((Length - i) > 16) ? 16 : (Length - i), Header);
-                Header = NULL;
+                AcpiOsPrintf ("\\\n    ");
             }
         }
 
@@ -131,6 +122,74 @@ AcpiDmDumpBuffer (
 
 
/*******************************************************************************
  *
+ * FUNCTION:    AcpiDmDumpUnicode
+ *
+ * PARAMETERS:  Table               - ACPI Table or subtable
+ *              BufferOffset        - Offset of buffer from Table above
+ *              ByteLength          - Length of the buffer
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Validate and dump the contents of a buffer that contains
+ *              unicode data. The output is a standard ASCII string. If it
+ *              appears that the data is not unicode, the buffer is dumped
+ *              as hex characters.
+ *
+ 
******************************************************************************/
+
+void
+AcpiDmDumpUnicode (
+    void                    *Table,
+    UINT32                  BufferOffset,
+    UINT32                  ByteLength)
+{
+    UINT8                   *Buffer;
+    UINT32                  Length;
+    UINT32                  i;
+
+
+    Buffer = ((UINT8 *) Table) + BufferOffset;
+    Length = ByteLength - 2; /* Last two bytes are the null terminator */
+
+    /* Ensure all low bytes are entirely printable ASCII */
+
+    for (i = 0; i < Length; i += 2)
+    {
+        if (!ACPI_IS_PRINT (Buffer[i]))
+        {
+            goto DumpRawBuffer;
+        }
+    }
+
+    /* Ensure all high bytes are zero */
+
+    for (i = 1; i < Length; i += 2)
+    {
+        if (Buffer[i])
+        {
+            goto DumpRawBuffer;
+        }
+    }
+
+    /* Dump the buffer as a normal string */
+
+    AcpiOsPrintf ("\"");
+    for (i = 0; i < Length; i += 2)
+    {
+        AcpiOsPrintf ("%c", Buffer[i]);
+    }
+    AcpiOsPrintf ("\"\n");
+    return;
+
+DumpRawBuffer:
+    AcpiDmDumpBuffer (Table, BufferOffset, ByteLength,
+        BufferOffset, NULL);
+    AcpiOsPrintf ("\n");
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AcpiDmDumpRsdp
  *
  * PARAMETERS:  Table               - A RSDP
@@ -313,6 +372,13 @@ AcpiDmDumpFadt (
         {
             AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5);
         }
+
+        /* Check for FADT revision 6 fields and up (ACPI 6.0+) */
+
+        if (Table->Length > ACPI_FADT_V3_SIZE)
+        {
+            AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt6);
+        }
     }
 
     /* Validate various fields in the FADT, including length */
@@ -693,10 +759,17 @@ AcpiDmDumpCsrt (
             /* Resource-specific info buffer */
 
             InfoLength = SubSubTable->Length - SubSubOffset;
-
-            AcpiDmDumpBuffer (SubSubTable, SubSubOffset, InfoLength,
-                Offset + SubOffset + SubSubOffset, "ResourceInfo", FALSE);
-            SubSubOffset += InfoLength;
+            if (InfoLength)
+            {
+                Status = AcpiDmDumpTable (Length,
+                            Offset + SubOffset + SubSubOffset, Table,
+                            InfoLength, AcpiDmTableInfoCsrt2a);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+                SubSubOffset += InfoLength;
+            }
 
             /* Point to next sub-subtable */
 
@@ -814,8 +887,13 @@ AcpiDmDumpDbg2 (
 
         if (SubTable->OemDataOffset)
         {
-            AcpiDmDumpBuffer (SubTable, SubTable->OemDataOffset, 
SubTable->OemDataLength,
-                Offset + SubTable->OemDataOffset, "OEM Data", FALSE);
+            Status = AcpiDmDumpTable (Length, Offset + SubTable->OemDataOffset,
+                        Table, SubTable->OemDataLength,
+                        AcpiDmTableInfoDbg2OemData);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
         }
 
         /* Point to next subtable */
@@ -840,7 +918,6 @@ AcpiDmDumpDbg2 (
  *
  
******************************************************************************/
 
-
 void
 AcpiDmDumpDmar (
     ACPI_TABLE_HEADER       *Table)
@@ -985,6 +1062,120 @@ NextSubtable:
 
 
/*******************************************************************************
  *
+ * 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");
+    Status = AcpiDmDumpTable (Table->Length, Offset,
+                DrtmDps, sizeof (ACPI_DRTM_DPS_ID),
+                AcpiDmTableInfoDrtm2);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AcpiDmDumpEinj
  *
  * PARAMETERS:  Table               - A EINJ table
@@ -1429,6 +1620,230 @@ AcpiDmDumpHest (
 
 
/*******************************************************************************
  *
+ * FUNCTION:    AcpiDmDumpIort
+ *
+ * PARAMETERS:  Table               - A IORT table
+ *
+ * RETURN:      None
+ *

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to