svn commit: r344398 - in head/sys/contrib/dev/acpica: . common compiler components/debugger components/disassembler components/dispatcher components/events components/executer components/namespace ...

Jung-uk Kim jkim at FreeBSD.org
Wed Feb 20 23:53:48 UTC 2019


Author: jkim
Date: Wed Feb 20 23:53:39 2019
New Revision: 344398
URL: https://svnweb.freebsd.org/changeset/base/344398

Log:
  MFV:	r344395
  
  Import ACPICA 20190215.

Modified:
  head/sys/contrib/dev/acpica/changes.txt
  head/sys/contrib/dev/acpica/common/ahpredef.c
  head/sys/contrib/dev/acpica/common/ahuuids.c
  head/sys/contrib/dev/acpica/common/dmextern.c
  head/sys/contrib/dev/acpica/common/dmrestag.c
  head/sys/contrib/dev/acpica/common/dmtable.c
  head/sys/contrib/dev/acpica/common/dmtbdump1.c
  head/sys/contrib/dev/acpica/common/dmtbdump3.c
  head/sys/contrib/dev/acpica/common/dmtbinfo1.c
  head/sys/contrib/dev/acpica/common/dmtbinfo2.c
  head/sys/contrib/dev/acpica/common/dmtbinfo3.c
  head/sys/contrib/dev/acpica/compiler/aslcompile.c
  head/sys/contrib/dev/acpica/compiler/aslcompiler.h
  head/sys/contrib/dev/acpica/compiler/aslcompiler.l
  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/asloperands.c
  head/sys/contrib/dev/acpica/compiler/aslopt.c
  head/sys/contrib/dev/acpica/compiler/aslpredef.c
  head/sys/contrib/dev/acpica/compiler/aslprintf.c
  head/sys/contrib/dev/acpica/compiler/aslresources.y
  head/sys/contrib/dev/acpica/compiler/aslsupport.l
  head/sys/contrib/dev/acpica/compiler/aslxref.c
  head/sys/contrib/dev/acpica/compiler/cvcompiler.c
  head/sys/contrib/dev/acpica/compiler/cvparser.c
  head/sys/contrib/dev/acpica/compiler/dtexpress.c
  head/sys/contrib/dev/acpica/compiler/dtio.c
  head/sys/contrib/dev/acpica/compiler/dttable1.c
  head/sys/contrib/dev/acpica/compiler/dttable2.c
  head/sys/contrib/dev/acpica/compiler/dttemplate.h
  head/sys/contrib/dev/acpica/components/debugger/dbdisply.c
  head/sys/contrib/dev/acpica/components/debugger/dbexec.c
  head/sys/contrib/dev/acpica/components/debugger/dbnames.c
  head/sys/contrib/dev/acpica/components/debugger/dbobject.c
  head/sys/contrib/dev/acpica/components/debugger/dbtest.c
  head/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
  head/sys/contrib/dev/acpica/components/disassembler/dmcstyle.c
  head/sys/contrib/dev/acpica/components/disassembler/dmnames.c
  head/sys/contrib/dev/acpica/components/disassembler/dmresrc.c
  head/sys/contrib/dev/acpica/components/disassembler/dmresrcs.c
  head/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
  head/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
  head/sys/contrib/dev/acpica/components/dispatcher/dswload2.c
  head/sys/contrib/dev/acpica/components/events/evgpe.c
  head/sys/contrib/dev/acpica/components/events/evregion.c
  head/sys/contrib/dev/acpica/components/events/evrgnini.c
  head/sys/contrib/dev/acpica/components/events/evxfgpe.c
  head/sys/contrib/dev/acpica/components/executer/exconvrt.c
  head/sys/contrib/dev/acpica/components/executer/exfield.c
  head/sys/contrib/dev/acpica/components/executer/exserial.c
  head/sys/contrib/dev/acpica/components/executer/exutils.c
  head/sys/contrib/dev/acpica/components/namespace/nsload.c
  head/sys/contrib/dev/acpica/components/namespace/nsparse.c
  head/sys/contrib/dev/acpica/components/namespace/nsutils.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/resources/rsdumpinfo.c
  head/sys/contrib/dev/acpica/components/resources/rsirq.c
  head/sys/contrib/dev/acpica/components/resources/rsserial.c
  head/sys/contrib/dev/acpica/components/tables/tbfadt.c
  head/sys/contrib/dev/acpica/components/tables/tbxface.c
  head/sys/contrib/dev/acpica/components/tables/tbxfload.c
  head/sys/contrib/dev/acpica/components/utilities/utdecode.c
  head/sys/contrib/dev/acpica/components/utilities/utdelete.c
  head/sys/contrib/dev/acpica/components/utilities/uterror.c
  head/sys/contrib/dev/acpica/include/acclib.h
  head/sys/contrib/dev/acpica/include/acconfig.h
  head/sys/contrib/dev/acpica/include/acdebug.h
  head/sys/contrib/dev/acpica/include/acdisasm.h
  head/sys/contrib/dev/acpica/include/acexcep.h
  head/sys/contrib/dev/acpica/include/aclocal.h
  head/sys/contrib/dev/acpica/include/acmacros.h
  head/sys/contrib/dev/acpica/include/acobject.h
  head/sys/contrib/dev/acpica/include/acpixf.h
  head/sys/contrib/dev/acpica/include/acpredef.h
  head/sys/contrib/dev/acpica/include/acrestyp.h
  head/sys/contrib/dev/acpica/include/actbinfo.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
Directory Properties:
  head/sys/contrib/dev/acpica/   (props changed)

Modified: head/sys/contrib/dev/acpica/changes.txt
==============================================================================
--- head/sys/contrib/dev/acpica/changes.txt	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/changes.txt	Wed Feb 20 23:53:39 2019	(r344398)
@@ -1,11 +1,100 @@
 ----------------------------------------
-08 January 2019. Summary of changes for version 20190108:
+15 February 2019. Summary of changes for version 20190215:
 
 This release is available at https://acpica.org/downloads
 
 
+0) Support for ACPI specification version 6.3:
+
+Add PCC operation region support for the AML interpreter. This adds PCC 
+operation region support in the AML interpreter and a default handler for 
+acpiexec. The change also renames the PCC region address space keyword to 
+PlatformCommChannel.
+
+Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 
+These methods provide OSPM with health information and device boot 
+status.
+
+PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 
+defines if the trigger needs to be invoked by OSPM before or at the end 
+of kernel crash dump processing/handling operation.
+
+SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 
+is used for describing devices such as heterogeneous processors, 
+accelerators, GPUs, and IO devices with integrated compute or DMA 
+engines.
+
+MADT: Add support for statistical profiling in GICC. Statistical 
+profiling extension (SPE) is an architecture-specific feature for ARM.
+
+MADT: Add online capable flag. If this bit is set, system hardware 
+supports enabling this processor during OS runtime.
+
+New Error Disconnect Recover Notification value. There are a number of 
+scenarios where system Firmware in collaboration with hardware may 
+disconnect one or more devices from the rest of the system for purposes 
+of error containment. Firmware can use this new notification value to 
+alert OSPM of such a removal.
+
+PPTT: New additional fields in Processor Structure Flags. These flags 
+provide more information about processor topology.
+
+NFIT/Disassembler: Change a field name from "Address Range" to "Region 
+Type".
+
+HMAT updates: make several existing fields to be reserved as well as 
+rename subtable 0 to "memory proximity domain attributes".
+
+GTDT: Add support for new GTDT Revision 3. This revision adds information 
+for the EL2 timer.
+
+iASL: Update the HMAT example template for new fields.
+
+iASL: Add support for the new revision of the GTDT (Rev 3).
+
+
 1) ACPICA kernel-resident subsystem:
 
+AML Parser: fix the main AML parse loop to correctly skip erroneous 
+extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
+byte extended opcodes. If an error occurs during an AML table load, the 
+AML parser will continue loading the table by skipping the offending 
+opcode. This implements a "load table at any cost" philosophy.
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Add checks for illegal object references, such as a reference 
+outside of method to an object within a method. Such an object is only 
+temporary.
+
+iASL: Emit error for creation of a zero-length operation region. Such a 
+region is rather pointless. If encountered, a runtime error is also 
+implemented in the interpeter.
+
+Debugger: Fix a possible fault with the "test objects" command.
+
+iASL: Makefile: support parent directory filenames containing embedded 
+spaces.
+
+iASL: Update the TPM2 template to revision 4.
+
+iASL: Add the ability to report specific warnings or remarks as errors.
+
+Disassembler: Disassemble OEMx tables as actual AML byte code. 
+Previously, these tables were treated as "unknown table".
+
+iASL: Add definition and disassembly for TPM2 revision 3.
+
+iASL: Add support for TPM2 rev 3 compilation.
+
+
+----------------------------------------
+08 January 2019. Summary of changes for version 20190108:
+
+
+1) ACPICA kernel-resident subsystem:
+
 Updated all copyrights to 2019. This affects all source code modules.
 
 
@@ -1218,7 +1307,7 @@ internal cache) is detected and ignored via object poi
 
 Debugger: Fixed an AML interpreter mutex issue during the single stepping 
 of control methods. If certain debugger commands are executed during 
-stepping, a mutex aquire/release error could occur. Lv Zheng.
+stepping, a mutex acquire/release error could occur. Lv Zheng.
 
 Fixed some issues generating ACPICA with the Intel C compiler by 
 restoring the original behavior and compiler-specific include file in 
@@ -6760,7 +6849,7 @@ keyword is not standard across compilers, and this typ
 be 
 configured on a per-compiler basis. Lin Ming.
 
-Made the system global AcpiGbl_SystemAwakeAndRunning publically 
+Made the system global AcpiGbl_SystemAwakeAndRunning publicly
 available. 
 Added an extern for this boolean in acpixf.h. Some hosts utilize this 
 value 
@@ -11427,9 +11516,9 @@ Helgaas.
 Removed the length limit (200) on string objects as per the upcoming ACPI 
 3.0A specification. This affects the following areas of the interpreter: 
 1) 
-any implicit conversion of a Buffer to a String, 2) a String object 
+any implicit conversion of a Buffer to a String, 2) a String object
 result 
-of the ASL Concatentate operator, 3) the String object result of the ASL 
+of the ASL Concatenate operator, 3) the String object result of the ASL
 ToString operator.
 
 Fixed a problem in the Windows OS interface layer (OSL) where a 
@@ -13585,7 +13674,7 @@ next access width boundary (a common coding error.)
 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 
 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, 
 these 
-symbols are lowercased by the latest version of the AcpiSrc tool.
+symbols are lowercase by the latest version of the AcpiSrc tool.
 
 The prototypes for the PCI interfaces in acpiosxf.h have been updated to 
 rename "Register" to simply "Reg" to prevent certain compilers from 
@@ -14957,8 +15046,8 @@ with the Linux coding style.
 Removed the non-Linux SourceSafe module revision number from each
 module header.
 
-Completed major overhaul of symbols to be lowercased for linux.
-Doubled the number of symbols that are lowercased.
+Completed major overhaul of symbols to be lowercase for linux.
+Doubled the number of symbols that are lowercase.
 
 Fixed a problem where identifiers within procedure headers and
 within quotes were not fully lower cased (they were left with a
@@ -16454,7 +16543,7 @@ Summary of changes for this label: 02_14_02
 Implemented support in AcpiLoadTable to allow loading of FACS and
 FADT tables.
 
-Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
+Support for the now-obsolete interim 0.71 64-bit ACPI tables has
 been removed.  All 64-bit platforms should be migrated to the ACPI
 2.0 tables.  The actbl71.h header has been removed from the source
 tree.
@@ -16804,7 +16893,7 @@ Updated all files to apply cleanly against 2.4.16.
 
 Added basic PCI Interrupt Routing Table (PRT) support for IA32
 (acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
-version supports both static and dyanmic PRT entries, but dynamic
+version supports both static and dynamic PRT entries, but dynamic
 entries are treated as if they were static (not yet
 reconfigurable).  Architecture- specific code to use this data is
 absent on IA32 but should be available shortly.
@@ -16893,7 +16982,7 @@ power-down, and thermal passive cooling issues (coming
 
 Added additional typechecking for Fields within restricted access
 Operation Regions.  All fields within EC and CMOS regions must be
-declared with ByteAcc. All fields withing SMBus regions must be
+declared with ByteAcc. All fields within SMBus regions must be
 declared with the BufferAcc access type.
 
 Fixed a problem where the listing file output of control methods
@@ -17066,7 +17155,7 @@ objects to not be deleted during subsystem termination
 
 Fixed a problem with the external AcpiEvaluateObject interface
 where the subsystem would fault if the named object to be
-evaluated refered to a constant such as Zero, Ones, etc.
+evaluated referred to a constant such as Zero, Ones, etc.
 
 Fixed a problem with IndexFields and BankFields where the
 subsystem would fault if the index, data, or bank registers were
@@ -17133,7 +17222,7 @@ sleeps.)
 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
 support wake-enabled GPEs.  This means that upon entering the
 sleep state, all GPEs that are not wake-enabled are disabled.
-When leaving the sleep state, these GPEs are reenabled.
+When leaving the sleep state, these GPEs are re-enabled.
 
 A local double-precision divide/modulo module has been added to
 enhance portability to OS kernels where a 64-bit math library is

Modified: head/sys/contrib/dev/acpica/common/ahpredef.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/ahpredef.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/ahpredef.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -305,6 +305,11 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     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 ("_NBS",    "NVDIMM Boot Status", "Returns information about NVDIMM device’s status at boot time"),
+    AH_PREDEF ("_NCH",    "NVDIMM Current Health Information", "Returns current health information of the NVDIMM device"),
+    AH_PREDEF ("_NIC",    "NVDIMM Health Error Injection Capabilities", "Returns health error injection capabilities that are supported by the platform"),
+    AH_PREDEF ("_NIG",    "NVDIMM Inject Health Error Status","Returns currently active health errors and their error attributes that are injected by _NIH"),
+    AH_PREDEF ("_NIH",    "NVDIMM Inject/Clear Health Errors", "Returns the status of injecting or clearing Health Errors"),
     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"),
     AH_PREDEF ("_ON_",    "Power On", "Sets a power resource to the on state"),
@@ -393,7 +398,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_SDD",    "Set Device Data", "Sets data for a SATA device"),
     AH_PREDEF ("_SEG",    "PCI Segment", "Returns a device's PCI Segment Group number"),
     AH_PREDEF ("_SHL",    "Set Hardware Limit", "Sets the hardware limit enforced by the Power Meter"),
-    AH_PREDEF ("_SHR",    "Sharable", "Interrupt share status, Resource Descriptor field"),
+    AH_PREDEF ("_SHR",    "Shareable", "Interrupt share status, Resource Descriptor field"),
     AH_PREDEF ("_SI_",    "System Indicators", "Predefined scope"),
     AH_PREDEF ("_SIZ",    "Size", "DMA transfer size, Resource Descriptor field"),
     AH_PREDEF ("_SLI",    "System Locality Information", "Returns a list of NUMA system localities"),

Modified: head/sys/contrib/dev/acpica/common/ahuuids.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/ahuuids.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/ahuuids.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -226,7 +226,7 @@ AcpiAhMatchUuid (
 
     for (Info = Gbl_AcpiUuids; Info->Description; Info++)
     {
-        /* Null string means desciption is a UUID class */
+        /* Null string means description is a UUID class */
 
         if (!Info->String)
         {

Modified: head/sys/contrib/dev/acpica/common/dmextern.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmextern.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/dmextern.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -1216,7 +1216,7 @@ AcpiDmCreateSubobjectForExternal (
  *
  * DESCRIPTION: Add one external to the namespace by resolvign the external
  *              (by performing a namespace lookup) and annotating the resulting
- *              namespace node with the approperiate information if the type
+ *              namespace node with the appropriate information if the type
  *              is ACPI_TYPE_REGION or ACPI_TYPE_METHOD.
  *
  ******************************************************************************/

Modified: head/sys/contrib/dev/acpica/common/dmrestag.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmrestag.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/dmrestag.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -906,7 +906,7 @@ AcpiDmUpdateResourceName (
  *
  * PARAMETERS:  BitIndex            - Index into the resource descriptor
  *              Resource            - Pointer to the raw resource data
- *              ResourceIndex       - Index correspoinding to the resource type
+ *              ResourceIndex       - Index corresponding to the resource type
  *
  * RETURN:      Pointer to the resource tag (ACPI_NAME). NULL if no match.
  *

Modified: head/sys/contrib/dev/acpica/common/dmtable.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtable.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/dmtable.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -320,7 +320,7 @@ static const char           *AcpiDmHestNotifySubnames[
 
 static const char           *AcpiDmHmatSubnames[] =
 {
-    "Memory Subystem Address Range",
+    "Memory Proximity Domain Attributes",
     "System Locality Latency and Bandwidth Information",
     "Memory Side Cache Information",
     "Unknown Structure Type"         /* Reserved */
@@ -400,6 +400,7 @@ static const char           *AcpiDmSratSubnames[] =
     "Processor Local x2APIC Affinity",
     "GICC Affinity",
     "GIC ITS Affinity",             /* Acpi 6.2 */
+    "Generic Initiator Affinity",   /* Acpi 6.3 */
     "Unknown Subtable Type"         /* Reserved */
 };
 

Modified: head/sys/contrib/dev/acpica/common/dmtbdump1.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtbdump1.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/dmtbdump1.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -1106,9 +1106,26 @@ AcpiDmDumpGtdt (
         return;
     }
 
-    /* Subtables */
+    /* Rev 3 fields */
 
     Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
+
+    if (Table->Revision > 2)
+    {
+        SubtableLength = sizeof (ACPI_GTDT_EL2);
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
+            SubtableLength, AcpiDmTableInfoGtdtEl2);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+        Offset += SubtableLength;
+    }
+
+    Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
+
+    /* Subtables */
+
     while (Offset < Table->Length)
     {
         /* Common subtable header */
@@ -1406,7 +1423,7 @@ AcpiDmDumpHmat (
         case ACPI_HMAT_TYPE_ADDRESS_RANGE:
 
             InfoTable = AcpiDmTableInfoHmat0;
-            Length = sizeof (ACPI_HMAT_ADDRESS_RANGE);
+            Length = sizeof (ACPI_HMAT_PROXIMITY_DOMAIN);
             break;
 
         case ACPI_HMAT_TYPE_LOCALITY:

Modified: head/sys/contrib/dev/acpica/common/dmtbdump3.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtbdump3.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/dmtbdump3.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -333,6 +333,11 @@ AcpiDmDumpSrat (
             InfoTable = AcpiDmTableInfoSrat4;
             break;
 
+        case ACPI_SRAT_TYPE_GENERIC_AFFINITY:
+
+            InfoTable = AcpiDmTableInfoSrat5;
+            break;
+
         default:
             AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n",
                 Subtable->Type);

Modified: head/sys/contrib/dev/acpica/common/dmtbinfo1.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtbinfo1.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/dmtbinfo1.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -814,6 +814,15 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* GDTD EL2 timer info. This table is appended to AcpiDmTableInfoGtdt for rev 3 and later */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoGtdtEl2[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerGsiv),  "Virtual EL2 Timer GSIV", 0},
+    {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerFlags), "Virtual EL2 Timer Flags", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 /* GTDT Subtable header (one per Subtable) */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdtHdr[] =
@@ -1105,20 +1114,18 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoHmatHdr[] =
 
 /* HMAT subtables */
 
-/* 0x00: Memory Subsystem Address Range */
+/* 0x00: Memory proximity domain attributes */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat0[] =
 {
     {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
     {ACPI_DMT_FLAG0,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Processor Proximity Domain Valid", 0},
-    {ACPI_DMT_FLAG1,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Memory Proximity Domain Valid", 0},
-    {ACPI_DMT_FLAG2,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Reservation Hint", 0},
     {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Reserved1),              "Reserved1", 0},
     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (ProcessorPD),            "Processor Proximity Domain", 0},
     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (MemoryPD),               "Memory Proximity Domain", 0},
     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (Reserved2),              "Reserved2", 0},
-    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (PhysicalAddressBase),    "Physical Address Range Base", 0},
-    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (PhysicalAddressLength),  "Physical Address Range Size", 0},
+    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved3),              "Reserved3", 0},
+    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved4),              "Reserved4", 0},
     ACPI_DMT_TERMINATOR
 };
 

Modified: head/sys/contrib/dev/acpica/common/dmtbinfo2.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtbinfo2.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/dmtbinfo2.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -535,6 +535,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt0[] =
     {ACPI_DMT_UINT8,    ACPI_MADT0_OFFSET (Id),                     "Local Apic ID", 0},
     {ACPI_DMT_UINT32,   ACPI_MADT0_OFFSET (LapicFlags),             "Flags (decoded below)", DT_FLAG},
     {ACPI_DMT_FLAG0,    ACPI_MADT0_FLAG_OFFSET (LapicFlags,0),      "Processor Enabled", 0},
+    {ACPI_DMT_FLAG1,    ACPI_MADT0_FLAG_OFFSET (LapicFlags,0),      "Runtime Online Capable", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -683,7 +684,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt11[] =
     {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GicrBaseAddress),       "Redistributor Base Address", 0},
     {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ArmMpidr),              "ARM MPIDR", 0},
     {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (EfficiencyClass),       "Efficiency Class", 0},
-    {ACPI_DMT_UINT24,   ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (SpeInterrupt),          "SPE Overflow Interrupt", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -946,7 +948,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoNfit0[] =
     {ACPI_DMT_FLAG1,    ACPI_NFIT0_FLAG_OFFSET (Flags,0),           "Proximity Domain Valid", 0},
     {ACPI_DMT_UINT32,   ACPI_NFIT0_OFFSET (Reserved),               "Reserved", 0},
     {ACPI_DMT_UINT32,   ACPI_NFIT0_OFFSET (ProximityDomain),        "Proximity Domain", 0},
-    {ACPI_DMT_UUID,     ACPI_NFIT0_OFFSET (RangeGuid[0]),           "Address Range GUID", 0},
+    {ACPI_DMT_UUID,     ACPI_NFIT0_OFFSET (RangeGuid[0]),           "Region Type GUID", 0},
     {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (Address),                "Address Range Base", 0},
     {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (Length),                 "Address Range Length", 0},
     {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (MemoryMapping),          "Memory Map Attribute", 0},
@@ -1246,6 +1248,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPdtt0[] =
     {ACPI_DMT_UINT8,    ACPI_PDTT0_OFFSET (Flags),                  "Flags (Decoded Below)", DT_FLAG},
     {ACPI_DMT_FLAG0,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Runtime Trigger", 0},
     {ACPI_DMT_FLAG1,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Wait for Completion", 0},
+    {ACPI_DMT_FLAG2,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Trigger Order", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -1348,6 +1351,9 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt0[] =
     {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
     {ACPI_DMT_FLAG0,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Physical package", 0},
     {ACPI_DMT_FLAG1,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "ACPI Processor ID valid", 0},
+    {ACPI_DMT_FLAG2,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Processor is a thread", 0},
+    {ACPI_DMT_FLAG3,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Node is a leaf", 0},
+    {ACPI_DMT_FLAG4,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Identical Implementation", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (Parent),                 "Parent", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (AcpiProcessorId),        "ACPI Processor ID", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (NumberOfPrivResources),  "Private Resource Number", 0},
@@ -1390,12 +1396,12 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt1[] =
 ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt2[] =
 {
     {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (Reserved),               "Reserved", 0},
-    {ACPI_DMT_UINT32,   ACPI_PPTT2_OFFSET (VendorId),               "VENDOR_ID", 0},
-    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level1Id),               "LEVEL_1_ID", 0},
-    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level2Id),               "LEVEL_2_ID", 0},
-    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MajorRev),               "MAJOR_REV", 0},
-    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MinorRev),               "MINOR_REV", 0},
-    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (SpinRev),                "SPIN_REV", 0},
+    {ACPI_DMT_UINT32,   ACPI_PPTT2_OFFSET (VendorId),               "Vendor ID", 0},
+    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level1Id),               "Level1 ID", 0},
+    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level2Id),               "Level2 ID", 0},
+    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MajorRev),               "Major revision", 0},
+    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MinorRev),               "Minor revision", 0},
+    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (SpinRev),                "Spin revision", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -1473,7 +1479,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSbst[] =
 
 /*******************************************************************************
  *
- * SDEI - Software Delegated Execption Interface Descriptor Table
+ * SDEI - Software Delegated Exception Interface Descriptor Table
  *
  ******************************************************************************/
 

Modified: head/sys/contrib/dev/acpica/common/dmtbinfo3.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/dmtbinfo3.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/common/dmtbinfo3.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -368,6 +368,20 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat4[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat5[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_SRAT5_OFFSET (Reserved),               "Reserved1", 0},
+    {ACPI_DMT_UINT8,    ACPI_SRAT5_OFFSET (DeviceHandleType),       "Device Handle Type", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (ProximityDomain),        "Proximity Domain", 0},
+    {ACPI_DMT_BUF16,    ACPI_SRAT5_OFFSET (DeviceHandle),           "Device Handle", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
+    {ACPI_DMT_FLAG0,    ACPI_SRAT5_FLAG_OFFSET (Flags,0),           "Enabled", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (Reserved1),              "Reserved2", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 
 /*******************************************************************************
  *

Modified: head/sys/contrib/dev/acpica/compiler/aslcompile.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslcompile.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslcompile.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -494,6 +494,7 @@ CmDoCompile (
     UtEndEvent (Event);
 
     UtEndEvent (FullCompile);
+    AslCheckExpectedExceptions ();
     CmCleanupAndExit ();
     return (0);
 
@@ -811,7 +812,6 @@ CmCleanupAndExit (
     BOOLEAN                 DeleteAmlFile = FALSE;
 
 
-    AslCheckExpectedExceptions ();
     AePrintErrorLog (ASL_FILE_STDERR);
     if (AslGbl_DebugFlag)
     {

Modified: head/sys/contrib/dev/acpica/compiler/aslcompiler.h
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslcompiler.h	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslcompiler.h	Wed Feb 20 23:53:39 2019	(r344398)
@@ -702,7 +702,7 @@ OpnDoPackage (
 
 
 /*
- * aslopt - optmization
+ * aslopt - optimization
  */
 void
 OptOptimizeNamePath (
@@ -1153,7 +1153,7 @@ OtXrefWalkPart1 (
 
 
 /*
- * aslutils - common compiler utilites
+ * aslutils - common compiler utilities
  */
 void
 DbgPrint (

Modified: head/sys/contrib/dev/acpica/compiler/aslcompiler.l
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslcompiler.l	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslcompiler.l	Wed Feb 20 23:53:39 2019	(r344398)
@@ -692,7 +692,7 @@ NamePathTail                [.]{NameSeg}
 "IPMI"                      { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
 "GeneralPurposeIo"          { count (0); return (PARSEOP_REGIONSPACE_GPIO); }       /* ACPI 5.0 */
 "GenericSerialBus"          { count (0); return (PARSEOP_REGIONSPACE_GSBUS); }      /* ACPI 5.0 */
-"PCC"                       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
+"PlatformCommChannel"       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
 "FFixedHW"                  { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); }
 
     /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */
@@ -816,6 +816,13 @@ NamePathTail                [.]{NameSeg}
                                 s=UtLocalCacheCalloc (ACPI_NAME_SIZE + 1);
                                 if (strcmp (AslCompilertext, "\\"))
                                 {
+                                    /*
+                                     * According to the ACPI specification,
+                                     * NameSegments must have length of 4. If
+                                     * the NameSegment has length less than 4,
+                                     * they are padded with underscores to meet
+                                     * the required length.
+                                     */
                                     strcpy (s, "____");
                                     AcpiUtStrupr (AslCompilertext);
                                 }

Modified: head/sys/contrib/dev/acpica/compiler/aslload.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslload.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslload.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -331,8 +331,8 @@ LdLoadFieldElements (
                      * The name already exists in this scope
                      * But continue processing the elements
                      */
-                    AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Child,
-                        Child->Asl.Value.String, ASL_MSG_EXTERN_FOUND_HERE, Node->Op,
+                    AslDualParseOpError (ASL_WARNING, ASL_MSG_NAME_EXISTS, Child,
+                        Child->Asl.Value.String, ASL_MSG_FOUND_HERE, Node->Op,
                         Node->Op->Asl.ExternalName);
                 }
             }
@@ -575,7 +575,7 @@ LdNamespace1Begin (
         if (Status == AE_NOT_FOUND)
         {
             /*
-             * This is either a foward reference or the object truly
+             * This is either a forward reference or the object truly
              * does not exist. The two cases can only be differentiated
              * during the cross-reference stage later. Mark the Op/Name
              * as not-found for now to indicate the need for further

Modified: head/sys/contrib/dev/acpica/compiler/aslmessages.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslmessages.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslmessages.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -353,15 +353,17 @@ const char                      *AslCompilerMsgs [] =
 /*    ASL_MSG_NULL_RESOURCE_TEMPLATE */     "Empty Resource Template (END_TAG only)",
 /*    ASL_MSG_FOUND_HERE */                 "Original name creation/declaration below: ",
 /*    ASL_MSG_ILLEGAL_RECURSION */          "Illegal recursive call to method that creates named objects",
-/*    ASL_MSG_EXTERN_COLLISION */           "A name cannot be defined and declared external in the same table",
-/*    ASL_MSG_FOUND_HERE_EXTERN */          "Remove one of the declarations indicated above or below:",
+/*    ASL_MSG_PLACE_HOLDER_00 */            "", /* TODO: fill in this slot with a new error message */
+/*    ASL_MSG_PLACE_HOLDER_01 */            "", /* TODO: fill in this slot with a new error message */
 /*    ASL_MSG_OEM_TABLE_ID */               "Invalid OEM Table ID",
 /*    ASL_MSG_OEM_ID */                     "Invalid OEM ID",
 /*    ASL_MSG_UNLOAD */                     "Unload is not supported by all operating systems",
 /*    ASL_MSG_OFFSET */                     "Unnecessary/redundant use of Offset operator",
 /*    ASL_MSG_LONG_SLEEP */                 "Very long Sleep, greater than 1 second",
 /*    ASL_MSG_PREFIX_NOT_EXIST */           "One or more prefix Scopes do not exist",
-/*    ASL_MSG_NAMEPATH_NOT_EXIST */         "One or more objects within the Pathname do not exist"
+/*    ASL_MSG_NAMEPATH_NOT_EXIST */         "One or more objects within the Pathname do not exist",
+/*    ASL_MSG_REGION_LENGTH */              "Operation Region declared with zero length",
+/*    ASL_MSG_TEMPORARY_OBJECT */           "Object is created temporarily in another method and cannot be accessed"
 };
 
 /* Table compiler */

Modified: head/sys/contrib/dev/acpica/compiler/aslmessages.h
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslmessages.h	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslmessages.h	Wed Feb 20 23:53:39 2019	(r344398)
@@ -355,8 +355,8 @@ typedef enum
     ASL_MSG_NULL_RESOURCE_TEMPLATE,
     ASL_MSG_FOUND_HERE,
     ASL_MSG_ILLEGAL_RECURSION,
-    ASL_MSG_EXTERN_COLLISION,
-    ASL_MSG_EXTERN_FOUND_HERE,
+    ASL_MSG_PLACE_HOLDER_00,
+    ASL_MSG_PLACE_HOLDER_01,
     ASL_MSG_OEM_TABLE_ID,
     ASL_MSG_OEM_ID,
     ASL_MSG_UNLOAD,
@@ -364,6 +364,8 @@ typedef enum
     ASL_MSG_LONG_SLEEP,
     ASL_MSG_PREFIX_NOT_EXIST,
     ASL_MSG_NAMEPATH_NOT_EXIST,
+    ASL_MSG_REGION_LENGTH,
+    ASL_MSG_TEMPORARY_OBJECT,
 
     /* These messages are used by the Data Table compiler only */
 

Modified: head/sys/contrib/dev/acpica/compiler/asloperands.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/asloperands.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/asloperands.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -657,6 +657,7 @@ OpnDoRegion (
     ACPI_PARSE_OBJECT       *Op)
 {
     ACPI_PARSE_OBJECT       *Next;
+    ACPI_ADR_SPACE_TYPE     SpaceId;
 
 
     /* Opcode is parent node */
@@ -664,9 +665,10 @@ OpnDoRegion (
 
     Next = Op->Asl.Child;
 
-    /* Second child is the space ID*/
+    /* Second child is the space ID */
 
     Next = Next->Asl.Next;
+    SpaceId = (ACPI_ADR_SPACE_TYPE) Next->Common.Value.Integer;
 
     /* Third child is the region offset */
 
@@ -677,7 +679,13 @@ OpnDoRegion (
     Next = Next->Asl.Next;
     if (Next->Asl.ParseOpcode == PARSEOP_INTEGER)
     {
+        /* Check for zero length */
+
         Op->Asl.Value.Integer = Next->Asl.Value.Integer;
+        if (!Op->Asl.Value.Integer && (SpaceId < ACPI_NUM_PREDEFINED_REGIONS))
+        {
+            AslError (ASL_ERROR, ASL_MSG_REGION_LENGTH, Op, NULL);
+        }
     }
     else
     {

Modified: head/sys/contrib/dev/acpica/compiler/aslopt.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslopt.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslopt.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -814,7 +814,7 @@ OptOptimizeNamePath (
     ACPI_FREE (ExternalNameString);
 
     /*
-     * Attempt an optmization depending on the type of namepath
+     * Attempt an optimization depending on the type of namepath
      */
     if (Flags & (AML_NAMED | AML_CREATE))
     {

Modified: head/sys/contrib/dev/acpica/compiler/aslpredef.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslpredef.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslpredef.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -449,7 +449,7 @@ ApCheckPredefinedReturnValue (
  * DESCRIPTION: Check for a predefined name for a static object (created via
  *              the ASL Name operator). If it is a predefined ACPI name, ensure
  *              that the name does not require any arguments (which would
- *              require a control method implemenation of the name), and that
+ *              require a control method implementation of the name), and that
  *              the type of the object is one of the expected types for the
  *              predefined name.
  *

Modified: head/sys/contrib/dev/acpica/compiler/aslprintf.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslprintf.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslprintf.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -239,7 +239,7 @@ OpcDoFprintf (
  * RETURN:      None
  *
  * DESCRIPTION: Convert printf macro to a Store AML operation. The printf
- *              macro parse tree is layed out as follows:
+ *              macro parse tree is laid out as follows:
  *
  *              Op        - printf parse op
  *              Op->Child - Format string

Modified: head/sys/contrib/dev/acpica/compiler/aslresources.y
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslresources.y	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslresources.y	Wed Feb 20 23:53:39 2019	(r344398)
@@ -866,7 +866,7 @@ UartSerialBusTerm
         OptionalBitsPerByte         /* 05: BitsPerByte */
         OptionalStopBits            /* 06: StopBits */
         ',' ByteConstExpr           /* 08: LinesInUse */
-        OptionalEndian              /* 09: Endianess */
+        OptionalEndian              /* 09: Endianness */
         OptionalParityType          /* 10: Parity */
         OptionalFlowControl         /* 11: FlowControl */
         ',' WordConstExpr           /* 13: Rx BufferSize */
@@ -891,7 +891,7 @@ UartSerialBusTermV2
         OptionalBitsPerByte         /* 05: BitsPerByte */
         OptionalStopBits            /* 06: StopBits */
         ',' ByteConstExpr           /* 08: LinesInUse */
-        OptionalEndian              /* 09: Endianess */
+        OptionalEndian              /* 09: Endianness */
         OptionalParityType          /* 10: Parity */
         OptionalFlowControl         /* 11: FlowControl */
         ',' WordConstExpr           /* 13: Rx BufferSize */

Modified: head/sys/contrib/dev/acpica/compiler/aslsupport.l
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslsupport.l	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslsupport.l	Wed Feb 20 23:53:39 2019	(r344398)
@@ -610,7 +610,7 @@ loop:
 
     /*
      * Check for nested comment -- can help catch cases where a previous
-     * comment was accidently left unterminated
+     * comment was accidentally left unterminated
      */
     if ((c1 == '/') && (c == '*'))
     {

Modified: head/sys/contrib/dev/acpica/compiler/aslxref.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslxref.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/aslxref.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -174,6 +174,12 @@ XfNamespaceLocateEnd (
     UINT32                  Level,
     void                    *Context);
 
+static BOOLEAN
+XfValidateCrossReference (
+    ACPI_PARSE_OBJECT       *Op,
+    const ACPI_OPCODE_INFO  *OpInfo,
+    ACPI_NAMESPACE_NODE     *Node);
+
 static ACPI_PARSE_OBJECT *
 XfGetParentMethod (
     ACPI_PARSE_OBJECT       *Op);
@@ -408,6 +414,7 @@ XfGetParentMethod (
     return (NULL); /* No parent method found */
 }
 
+
 /*******************************************************************************
  *
  * FUNCTION:    XfNamespaceLocateBegin
@@ -488,7 +495,7 @@ XfNamespaceLocateBegin (
             Node->ArgCount = (UINT8)
                 (((UINT8) NextOp->Asl.Value.Integer) & 0x07);
 
-            /* We will track all posible ArgXs */
+            /* We will track all possible ArgXs */
 
             for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
             {
@@ -776,6 +783,15 @@ XfNamespaceLocateBegin (
         return_ACPI_STATUS (Status);
     }
 
+    /* Check for an attempt to access an object in another method */
+
+    if (!XfValidateCrossReference (Op, OpInfo, Node))
+    {
+        AslError (ASL_ERROR, ASL_MSG_TEMPORARY_OBJECT, Op,
+            Op->Asl.ExternalName);
+        return_ACPI_STATUS (Status);
+    }
+
     /* Object was found above, check for an illegal forward reference */
 
     if (Op->Asl.CompileFlags & OP_NOT_FOUND_DURING_LOAD)
@@ -1233,4 +1249,104 @@ XfNamespaceLocateEnd (
     }
 
     return_ACPI_STATUS (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    XfValidateCrossReference
+ *
+ * PARAMETERS:  Op                      - Parse Op that references the object
+ *              OpInfo                  - Parse Op info struct
+ *              Node                    - Node for the referenced object
+ *
+ * RETURN:      TRUE if the reference is legal, FALSE otherwise
+ *
+ * DESCRIPTION: Determine if a reference to another object is allowed.
+ *
+ * EXAMPLE:
+ *      Method (A) {Name (INT1, 1)}     Declaration of object INT1
+ *      Method (B) (Store (2, \A.INT1)} Illegal reference to object INT1
+ *                                      (INT1 is temporary, valid only during
+ *                                      execution of A)
+ *
+ * NOTES:
+ *      A null pointer returned by either XfGetParentMethod or
+ *      UtGetParentMethod indicates that the parameter object is not
+ *      within a control method.
+ *
+ *      Five cases are handled: Case(Op, Node)
+ *      1) Case(0,0): Op is not within a method, Node is not    --> OK
+ *      2) Case(0,1): Op is not within a method, but Node is    --> Illegal
+ *      3) Case(1,0): Op is within a method, Node is not        --> OK
+ *      4) Case(1,1): Both are within the same method           --> OK
+ *      5) Case(1,1): Both are in methods, but not same method  --> Illegal
+ *
+ ******************************************************************************/
+
+static BOOLEAN
+XfValidateCrossReference (
+    ACPI_PARSE_OBJECT       *Op,
+    const ACPI_OPCODE_INFO  *OpInfo,
+    ACPI_NAMESPACE_NODE     *Node)
+{
+    ACPI_PARSE_OBJECT       *ReferencingMethodOp;
+    ACPI_NAMESPACE_NODE     *ReferencedMethodNode;
+
+
+    /* Ignore actual named (and related) object declarations */
+
+    if (OpInfo->Flags & (AML_NAMED | AML_CREATE | AML_DEFER | AML_HAS_ARGS))
+    {
+        return (TRUE);
+    }
+
+    /*
+     * 1) Search upwards in parse tree for owner of the referencing object
+     * 2) Search upwards in namespace to find the owner of the referenced object
+     */
+    ReferencingMethodOp = XfGetParentMethod (Op);
+    ReferencedMethodNode = UtGetParentMethod (Node);
+
+    if (!ReferencingMethodOp && !ReferencedMethodNode)
+    {
+        /*
+         * 1) Case (0,0): Both Op and Node are not within methods
+         * --> OK
+         */
+        return (TRUE);
+    }
+
+    if (!ReferencingMethodOp && ReferencedMethodNode)
+    {
+        /*
+         * 2) Case (0,1): Op is not in a method, but Node is within a
+         * method --> illegal
+         */
+        return (FALSE);
+    }
+    else if (ReferencingMethodOp && !ReferencedMethodNode)
+    {
+        /*
+         * 3) Case (1,0): Op is within a method, but Node is not
+         * --> OK
+         */
+        return (TRUE);
+    }
+    else if (ReferencingMethodOp->Asl.Node == ReferencedMethodNode)
+    {
+        /*
+         * 4) Case (1,1): Both Op and Node are within the same method
+         * --> OK
+         */
+        return (TRUE);
+    }
+    else
+    {
+        /*
+         * 5) Case (1,1), Op and Node are in different methods
+         * --> Illegal
+         */
+        return (FALSE);
+    }
 }

Modified: head/sys/contrib/dev/acpica/compiler/cvcompiler.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/cvcompiler.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/cvcompiler.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -168,7 +168,7 @@
  *
  * DESCRIPTION: Process a single line comment of a c Style comment. This
  *              function captures a line of a c style comment in a char* and
- *              places the comment in the approperiate global buffer.
+ *              places the comment in the appropriate global buffer.
  *
  ******************************************************************************/
 
@@ -294,7 +294,7 @@ CvProcessComment (
  * RETURN:      none
  *
  * DESCRIPTION: Process a single line comment. This function captures a comment
- *              in a char* and places the comment in the approperiate global
+ *              in a char* and places the comment in the appropriate global
  *              buffer through CvPlaceComment
  *
  ******************************************************************************/
@@ -333,7 +333,7 @@ CvProcessCommentType2 (
          *
          * would be lexically analyzed as a single comment.
          *
-         * Create a new string with the approperiate spaces. Since we need
+         * Create a new string with the appropriate spaces. Since we need
          * to account for the proper spacing, the actual comment,
          * extra 2 spaces so that this comment can be converted to the "/ *"
          * style and the null terminator, the string would look something
@@ -380,7 +380,7 @@ CvProcessCommentType2 (
  * RETURN:      TotalCommentLength - Length of all comments within this op.
  *
  * DESCRIPTION: Calculate the length that the each comment takes up within Op.
- *              Comments look like the follwoing: [0xA9 OptionBtye comment 0x00]
+ *              Comments look like the following: [0xA9 OptionBtye comment 0x00]
  *              therefore, we add 1 + 1 + strlen (comment) + 1 to get the actual
  *              length of this comment.
  *
@@ -963,7 +963,7 @@ CvAppendInlineComment (
  * RETURN:      None
  *
  * DESCRIPTION: Given type and CommentString, this function places the
- *              CommentString in the approperiate global comment list or char*
+ *              CommentString in the appropriate global comment list or char*
  *
  ******************************************************************************/
 

Modified: head/sys/contrib/dev/acpica/compiler/cvparser.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/cvparser.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/cvparser.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -276,7 +276,7 @@ CvInitFileTree (
     AcpiGbl_FileTreeRoot->File = AcpiGbl_OutputFile;
 
     /*
-     * Set this to true because we dont need to output
+     * Set this to true because we don't need to output
      * an include statement for the topmost file
      */
     AcpiGbl_FileTreeRoot->IncludeWritten = TRUE;
@@ -514,7 +514,7 @@ CvFileAddressLookup(
  * RETURN:      None
  *
  * DESCRIPTION: Takes a given parse op, looks up its Op->Common.Aml field
- *              within the file tree and fills in approperiate file information
+ *              within the file tree and fills in appropriate file information
  *              from a matching node within the tree.
  *              This is referred as ASL_CV_LABEL_FILENODE.
  *
@@ -1005,7 +1005,7 @@ CvCaptureComments (
  *
  * RETURN:      None
  *
- * DESCRIPTION: Transfer all of the commments stored in global containers to the
+ * DESCRIPTION: Transfer all of the comments stored in global containers to the
  *              given Op. This will be invoked shortly after the parser creates
  *              a ParseOp.
  *              This is referred as ASL_CV_TRANSFER_COMMENTS.

Modified: head/sys/contrib/dev/acpica/compiler/dtexpress.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/dtexpress.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/dtexpress.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -372,7 +372,7 @@ DtDoOperator (
  *
  * RETURN:      Table offset associated with the label
  *
- * DESCRIPTION: Lookup a lable and return its value.
+ * DESCRIPTION: Lookup a label and return its value.
  *
  *****************************************************************************/
 

Modified: head/sys/contrib/dev/acpica/compiler/dtio.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/dtio.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/dtio.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -375,7 +375,7 @@ DtParseLine (
         return (AE_OK);
     }
 
-    /* All lines after "Raw Table Data" are ingored */
+    /* All lines after "Raw Table Data" are ignored */
 
     if (strstr (LineBuffer, ACPI_RAW_TABLE_DATA_HEADER))
     {

Modified: head/sys/contrib/dev/acpica/compiler/dttable1.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/dttable1.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/dttable1.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -831,7 +831,7 @@ DtCompileDrtm (
     DtInsertSubtable (ParentTable, Subtable);
 
     /*
-     * Using ACPI_SUB_PTR, We needn't define a seperate structure. Care
+     * Using ACPI_SUB_PTR, We needn't define a separate structure. Care
      * should be taken to avoid accessing ACPI_TABLE_HADER fields.
      */
 #if 0
@@ -1002,13 +1002,35 @@ DtCompileGtdt (
     ACPI_SUBTABLE_HEADER    *GtdtHeader;
     ACPI_DMTABLE_INFO       *InfoTable;
     UINT32                  GtCount;
+    ACPI_TABLE_HEADER       *Header;
 
 
+    ParentTable = DtPeekSubtable ();
+
+    Header = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
+
+    /* Compile the main table */
+
     Status = DtCompileTable (PFieldList, AcpiDmTableInfoGtdt,
         &Subtable);
     if (ACPI_FAILURE (Status))
     {
         return (Status);
+    }
+
+    /* GTDT revision 3 later contains 2 extra fields before subtables */
+
+    if (Header->Revision > 2)
+    {
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+
+        Status = DtCompileTable (PFieldList,
+            AcpiDmTableInfoGtdtEl2, &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
     }
 
     ParentTable = DtPeekSubtable ();

Modified: head/sys/contrib/dev/acpica/compiler/dttable2.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/dttable2.c	Wed Feb 20 23:42:03 2019	(r344397)
+++ head/sys/contrib/dev/acpica/compiler/dttable2.c	Wed Feb 20 23:53:39 2019	(r344398)
@@ -1733,6 +1733,11 @@ DtCompileSrat (
             InfoTable = AcpiDmTableInfoSrat4;
             break;

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


More information about the svn-src-all mailing list