svn commit: r342198 - in stable/12/sys/contrib/dev/acpica: . common compiler components/debugger components/dispatcher components/executer components/namespace components/parser components/tables c...

Jung-uk Kim jkim at FreeBSD.org
Tue Dec 18 19:38:34 UTC 2018


Author: jkim
Date: Tue Dec 18 19:38:28 2018
New Revision: 342198
URL: https://svnweb.freebsd.org/changeset/base/342198

Log:
  MFC:	r340090, r342056
  
  Merge ACPICA 20181031 and 20181213.

Modified:
  stable/12/sys/contrib/dev/acpica/changes.txt
  stable/12/sys/contrib/dev/acpica/common/ahpredef.c
  stable/12/sys/contrib/dev/acpica/common/dmswitch.c
  stable/12/sys/contrib/dev/acpica/common/dmtbdump3.c
  stable/12/sys/contrib/dev/acpica/common/dmtbinfo3.c
  stable/12/sys/contrib/dev/acpica/compiler/aslcodegen.c
  stable/12/sys/contrib/dev/acpica/compiler/aslcompile.c
  stable/12/sys/contrib/dev/acpica/compiler/aslcompiler.h
  stable/12/sys/contrib/dev/acpica/compiler/aslerror.c
  stable/12/sys/contrib/dev/acpica/compiler/aslglobal.h
  stable/12/sys/contrib/dev/acpica/compiler/aslhelp.c
  stable/12/sys/contrib/dev/acpica/compiler/asllength.c
  stable/12/sys/contrib/dev/acpica/compiler/aslload.c
  stable/12/sys/contrib/dev/acpica/compiler/aslmain.c
  stable/12/sys/contrib/dev/acpica/compiler/aslmessages.c
  stable/12/sys/contrib/dev/acpica/compiler/aslmessages.h
  stable/12/sys/contrib/dev/acpica/compiler/aslopcodes.c
  stable/12/sys/contrib/dev/acpica/compiler/asloptions.c
  stable/12/sys/contrib/dev/acpica/compiler/aslpredef.c
  stable/12/sys/contrib/dev/acpica/compiler/asltransform.c
  stable/12/sys/contrib/dev/acpica/compiler/aslxref.c
  stable/12/sys/contrib/dev/acpica/compiler/dtio.c
  stable/12/sys/contrib/dev/acpica/compiler/dttable2.c
  stable/12/sys/contrib/dev/acpica/compiler/prscan.c
  stable/12/sys/contrib/dev/acpica/components/debugger/dbxface.c
  stable/12/sys/contrib/dev/acpica/components/dispatcher/dsmethod.c
  stable/12/sys/contrib/dev/acpica/components/dispatcher/dsobject.c
  stable/12/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
  stable/12/sys/contrib/dev/acpica/components/dispatcher/dspkginit.c
  stable/12/sys/contrib/dev/acpica/components/dispatcher/dsutils.c
  stable/12/sys/contrib/dev/acpica/components/dispatcher/dswload.c
  stable/12/sys/contrib/dev/acpica/components/dispatcher/dswload2.c
  stable/12/sys/contrib/dev/acpica/components/dispatcher/dswstate.c
  stable/12/sys/contrib/dev/acpica/components/executer/exconvrt.c
  stable/12/sys/contrib/dev/acpica/components/executer/excreate.c
  stable/12/sys/contrib/dev/acpica/components/executer/exoparg2.c
  stable/12/sys/contrib/dev/acpica/components/executer/exserial.c
  stable/12/sys/contrib/dev/acpica/components/executer/exutils.c
  stable/12/sys/contrib/dev/acpica/components/namespace/nsaccess.c
  stable/12/sys/contrib/dev/acpica/components/namespace/nseval.c
  stable/12/sys/contrib/dev/acpica/components/namespace/nsload.c
  stable/12/sys/contrib/dev/acpica/components/namespace/nsparse.c
  stable/12/sys/contrib/dev/acpica/components/parser/psloop.c
  stable/12/sys/contrib/dev/acpica/components/parser/psobject.c
  stable/12/sys/contrib/dev/acpica/components/parser/psparse.c
  stable/12/sys/contrib/dev/acpica/components/parser/psxface.c
  stable/12/sys/contrib/dev/acpica/components/tables/tbxfload.c
  stable/12/sys/contrib/dev/acpica/components/utilities/utglobal.c
  stable/12/sys/contrib/dev/acpica/components/utilities/utmisc.c
  stable/12/sys/contrib/dev/acpica/components/utilities/utosi.c
  stable/12/sys/contrib/dev/acpica/include/acdisasm.h
  stable/12/sys/contrib/dev/acpica/include/acglobal.h
  stable/12/sys/contrib/dev/acpica/include/acnamesp.h
  stable/12/sys/contrib/dev/acpica/include/acoutput.h
  stable/12/sys/contrib/dev/acpica/include/acpixf.h
  stable/12/sys/contrib/dev/acpica/include/acstruct.h
  stable/12/sys/contrib/dev/acpica/include/actbinfo.h
  stable/12/sys/contrib/dev/acpica/include/actbl.h
  stable/12/sys/contrib/dev/acpica/include/actbl3.h
  stable/12/sys/contrib/dev/acpica/include/actypes.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/contrib/dev/acpica/changes.txt
==============================================================================
--- stable/12/sys/contrib/dev/acpica/changes.txt	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/changes.txt	Tue Dec 18 19:38:28 2018	(r342198)
@@ -1,4 +1,115 @@
 ----------------------------------------
+13 December 2018. Summary of changes for version 20181213:
+
+
+1) ACPICA Kernel-resident Subsystem:
+
+Fixed some buffer length issues with the GenericSerialBus, related to two 
+of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 
+which are rarely seen in the field. For these, the LEN field of the ASL 
+buffer is now ignored. Hans de Goede
+
+Implemented a new object evaluation trace mechanism for control methods 
+and data objects. This includes nested control methods. It is 
+particularly useful for examining the ACPI execution during system 
+initialization since the output is relatively terse. The flag below 
+enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
+   #define ACPI_LV_EVALUATION          0x00080000
+
+Examples:
+   Enter evaluation       :  _SB.PCI0._INI (Method)
+   Exit evaluation        :  _SB.PCI0._INI
+   Enter evaluation       :  _OSI (Method)
+   Exit evaluation        :  _OSI
+   Enter evaluation       :  _SB.PCI0.TEST (Method)
+   Nested method call     :     _SB.PCI0.NST1
+   Exit nested method     :     _SB.PCI0.NST1
+   Exit evaluation        :  _SB.PCI0.TEST
+
+Added two recently-defined _OSI strings. See 
+https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
+osi.
+   "Windows 2018"
+   "Windows 2018.2"
+
+Update for buffer-to-string conversions via the ToHexString ASL operator. 
+A "0x" is now prepended to each of the hex values in the output string. 
+This provides compatibility with other ACPI implementations. The ACPI 
+specification is somewhat vague on this issue.
+   Example output string after conversion: 
+"0x01,0x02,0x03,0x04,0x05,0x06"
+
+Return a run-time error for TermArg expressions within individual package 
+elements. Although this is technically supported by the ASL grammar, 
+other ACPI implementations do not support this either. Also, this fixes a 
+fault if this type of construct is ever encountered (it never has been).
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Implemented a new compile option (-ww) that will promote individual 
+warnings and remarks to errors. This is intended to enhance the firmware 
+build process.
+
+AcpiExec: Implemented a new command-line option (-eo) to support the new 
+object evaluation trace mechanism described above.
+
+Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 
+instead of a "unknown table" message.
+
+AcpiHelp: Improved support for the "special" predefined names such as 
+_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 
+used for "xx" and "x".
+
+----------------------------------------
+31 October 2018. Summary of changes for version 20181031:
+
+
+An Operation Region regression was fixed by properly adding address 
+ranges to a global list during initialization. This allows OS to 
+accurately check for overlapping regions between native devices (such as 
+PCI) and Operation regions as well as checking for region conflicts 
+between two Operation Regions.
+
+Added support for the 2-byte extended opcodes in the code/feature that 
+attempts to continue parsing during the table load phase. Skip parsing 
+Device declarations (and other extended opcodes) when an error occurs 
+during parsing. Previously, only single-byte opcodes were supported.
+
+Cleanup: Simplified the module-level code support by eliminating a 
+useless global variable (AcpiGbl_GroupModuleLeveCode).
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 
+could cause a fault in the preprocessor. This was an inadvertent side-
+effect from moving more allocations/frees to the local cache/memory 
+mechanism.
+
+iASL: Enhanced error detection by validating that all NameSeg elements 
+within a NamePatch actually exist. The previous behavior was spotty at 
+best, and such errors could be improperly ignored at compiler time (never 
+at runtime, however. There are two new error messages, as shown in the 
+examples below:
+
+dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
+Error    6161 -                              ^ One or more objects within 
+the Pathname do not exist (TTTT.BXXX)
+
+dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
+Error    6160 -        One or more prefix Scopes do not exist ^  
+(BBBB.CBF1)
+
+iASL: Disassembler/table-compiler: Added support for the static data 
+table TPM2 revision 3 (an older version of TPM2). The support has been 
+added for the compiler and the disassembler.
+
+Fixed compilation of DOS format data table file on Unix/Linux systems. 
+iASL now properly detects line continuations (\) for DOS format data 
+table definition language files on when executing on Unix/Linux.
+
+----------------------------------------
 03 October 2018. Summary of changes for version 20181003:
 
 

Modified: stable/12/sys/contrib/dev/acpica/common/ahpredef.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/common/ahpredef.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/common/ahpredef.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -171,7 +171,7 @@
  */
 const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
 {
-    AH_PREDEF ("_ACx",    "Active Cooling", "Returns the active cooling policy threshold values"),
+    AH_PREDEF ("_ACx",    "Active Cooling, x=0-9", "Returns the active cooling policy threshold values"),
     AH_PREDEF ("_ADR",    "Address", "Returns address of a device on parent bus, and resource field"),
     AH_PREDEF ("_AEI",    "ACPI Event Interrupts", "Returns a list of GPIO events to be used as ACPI events"),
     AH_PREDEF ("_ALC",    "Ambient Light Chromaticity", "Returns the ambient light color chromaticity"),
@@ -180,7 +180,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_ALP",    "Ambient Light Polling", "Returns the ambient light sensor polling frequency"),
     AH_PREDEF ("_ALR",    "Ambient Light Response", "Returns the ambient light brightness to display brightness mappings"),
     AH_PREDEF ("_ALT",    "Ambient Light Temperature", "Returns the ambient light color temperature"),
-    AH_PREDEF ("_ALx",    "Active List", "Returns a list of active cooling device objects"),
+    AH_PREDEF ("_ALx",    "Active List, x=0-9", "Returns a list of active cooling device objects"),
     AH_PREDEF ("_ART",    "Active Cooling Relationship Table", "Returns thermal relationship information between platform devices and fan devices"),
     AH_PREDEF ("_ASI",    "Address Space Id", "Resource Descriptor field"),
     AH_PREDEF ("_ASZ",    "Access Size", "Resource Descriptor field"),
@@ -237,11 +237,11 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_DSS",    "Device Set State", "Sets the display device state"),
     AH_PREDEF ("_DSW",    "Device Sleep Wake", "Sets the sleep and wake transition states for a device"),
     AH_PREDEF ("_DTI",    "Device Temperature Indication", "Conveys native device temperature to the platform"),
-    AH_PREDEF ("_Exx",    "Edge-Triggered GPE", "Method executed as a result of a general-purpose event"),
+    AH_PREDEF ("_Exx",    "Edge-Triggered GPE, xx=0x00-0xFF", "Method executed as a result of a general-purpose event"),
     AH_PREDEF ("_EC_",    "Embedded Controller", "returns EC offset and query information"),
     AH_PREDEF ("_EDL",    "Eject Device List", "Returns a list of devices that are dependent on a device (docking)"),
     AH_PREDEF ("_EJD",    "Ejection Dependent Device", "Returns the name of dependent (parent) device (docking)"),
-    AH_PREDEF ("_EJx",    "Eject Device", "Begin or cancel a device ejection request (docking)"),
+    AH_PREDEF ("_EJx",    "Eject Device, x=0-9", "Begin or cancel a device ejection request (docking)"),
     AH_PREDEF ("_END",    "Endianness", "Endian orientation, Resource Descriptor field"),
     AH_PREDEF ("_EVT",    "Event", "Event method for GPIO events"),
     AH_PREDEF ("_FDE",    "Floppy Disk Enumerate", "Returns floppy disk configuration information"),
@@ -281,7 +281,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_INT",    "Interrupts", "Interrupt mask bits, Resource Descriptor field"),
     AH_PREDEF ("_IOR",    "I/O Restriction", "Restriction type, Resource Descriptor field"),
     AH_PREDEF ("_IRC",    "Inrush Current", "Presence indicates that a device has a significant inrush current draw"),
-    AH_PREDEF ("_Lxx",    "Level-Triggered GPE", "Control method executed as a result of a general-purpose event"),
+    AH_PREDEF ("_Lxx",    "Level-Triggered GPE, xx=0x00-0xFF", "Control method executed as a result of a general-purpose event"),
     AH_PREDEF ("_LCK",    "Lock Device", "Locks or unlocks a device (docking)"),
     AH_PREDEF ("_LEN",    "Length", "Range length, Resource Descriptor field"),
     AH_PREDEF ("_LID",    "Lid Status", "Returns the open/closed status of the lid on a mobile system"),
@@ -358,7 +358,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_PTS",    "Prepare To Sleep", "Inform the platform of an impending sleep transition"),
     AH_PREDEF ("_PUR",    "Processor Utilization Request", "Returns the number of processors that the platform would like to idle"),
     AH_PREDEF ("_PXM",    "Device Proximity", "Returns a device's proximity domain identifier"),
-    AH_PREDEF ("_Qxx",    "EC Query", "Embedded Controller query and SMBus Alarm control method"),
+    AH_PREDEF ("_Qxx",    "EC Query, xx=0x00-0xFF", "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"),
@@ -413,7 +413,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_SUB",    "Subsystem ID", "Returns the subsystem ID for a device"),
     AH_PREDEF ("_SUN",    "Slot User Number", "Returns the slot unique ID number"),
     AH_PREDEF ("_SWS",    "System Wake Source", "Returns the source event that caused the system to wake"),
-    AH_PREDEF ("_T_x",    "Emitted by ASL Compiler", "Reserved for use by ASL compilers"),
+    AH_PREDEF ("_T_x",    "Emitted by ASL Compiler, x=0-9, A-Z", "Reserved for use by ASL compilers"),
     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"),
@@ -447,7 +447,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_VAL",    "Pin Configuration Value", "Resource Descriptor field"),
     AH_PREDEF ("_VEN",    "Vendor Data", "Resource Descriptor field"),
     AH_PREDEF ("_VPO",    "Video Post Options", "Returns the implemented video post options"),
-    AH_PREDEF ("_Wxx",    "Wake Event", "Method executed as a result of a wake event"),
+    AH_PREDEF ("_Wxx",    "Wake Event, xx=0x00-0xFF", "Method executed as a result of a wake event"),
     AH_PREDEF ("_WAK",    "Wake", "Inform AML that the system has just awakened"),
     AH_PREDEF ("_WPC",    "Wireless Power Calibration", "Calibrate power and notify wireless device"),
     AH_PREDEF ("_WPP",    "Wireless Power Polling", "Get recommended polling interval"),

Modified: stable/12/sys/contrib/dev/acpica/common/dmswitch.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/common/dmswitch.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/common/dmswitch.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -325,6 +325,8 @@ AcpiDmClearTempList (
  * FUNCTION:    AcpiDmIsSwitchBlock
  *
  * PARAMETERS:  Op              - While Object
+ *              Temp            - Where the compiler temp name is returned
+ *                                  (_T_x)
  *
  * RETURN:      TRUE if While block can be converted to a Switch/Case block
  *
@@ -550,6 +552,10 @@ AcpiDmIsSwitchBlock (
     if (CurrentOp->Common.AmlOpcode == AML_ELSE_OP)
     {
         CurrentOp = CurrentOp->Common.Next;
+        if (!CurrentOp)
+        {
+            return (FALSE);
+        }
     }
 
     /* Ignore the Break Op */

Modified: stable/12/sys/contrib/dev/acpica/common/dmtbdump3.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/common/dmtbdump3.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/common/dmtbdump3.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -497,7 +497,52 @@ AcpiDmDumpTcpa (
  * DESCRIPTION: Format the contents of a TPM2.
  *
  ******************************************************************************/
+static void
+AcpiDmDumpTpm2Rev3 (
+    ACPI_TABLE_HEADER       *Table)
+{
+    UINT32                  Offset = sizeof (ACPI_TABLE_TPM23);
+    ACPI_TABLE_TPM23        *CommonHeader = ACPI_CAST_PTR (ACPI_TABLE_TPM23, Table);
+    ACPI_TPM23_TRAILER      *Subtable = ACPI_ADD_PTR (ACPI_TPM23_TRAILER, Table, Offset);
+    ACPI_STATUS             Status;
 
+
+    /* Main table */
+
+    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm23);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+
+    /* Optional subtable if start method is ACPI start method */
+
+    switch (CommonHeader->StartMethod)
+    {
+    case ACPI_TPM23_ACPI_START_METHOD:
+
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+            Table->Length - Offset, AcpiDmTableInfoTpm23a);
+        break;
+
+    default:
+        break;
+    }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpTpm2
+ *
+ * PARAMETERS:  Table               - A TPM2 table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a TPM2.
+ *
+ ******************************************************************************/
+
 void
 AcpiDmDumpTpm2 (
     ACPI_TABLE_HEADER       *Table)
@@ -509,9 +554,16 @@ AcpiDmDumpTpm2 (
     ACPI_STATUS             Status;
 
 
+    if (Table->Revision == 3)
+    {
+        AcpiDmDumpTpm2Rev3(Table);
+        return;
+    }
+
     /* Main table */
 
     Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm2);
+
     if (ACPI_FAILURE (Status))
     {
         return;

Modified: stable/12/sys/contrib/dev/acpica/common/dmtbinfo3.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/common/dmtbinfo3.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/common/dmtbinfo3.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -446,6 +446,26 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoTcpaServer[
  *
  ******************************************************************************/
 
+/* TPM2 revision 3 */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoTpm23[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_TPM23_OFFSET (Reserved),           "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_TPM23_OFFSET (ControlAddress),     "Control Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_TPM23_OFFSET (StartMethod),        "Start Method", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Trailer in the case that StartMethod == 2 */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoTpm23a[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_TPM23A_OFFSET (Reserved),          "Reserved", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+/* TPM2 revision 4 */
+
 ACPI_DMTABLE_INFO           AcpiDmTableInfoTpm2[] =
 {
     {ACPI_DMT_UINT16,   ACPI_TPM2_OFFSET (PlatformClass),           "Platform Class", 0},

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslcodegen.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslcodegen.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslcodegen.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -773,12 +773,6 @@ CgWriteNode (
         return;
     }
 
-    if ((Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) &&
-        AslGbl_DoExternals == FALSE)
-    {
-        return;
-    }
-
     Op->Asl.FinalAmlLength = 0;
 
     switch (Op->Asl.AmlOpcode)

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslcompile.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslcompile.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslcompile.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -388,23 +388,20 @@ CmDoCompile (
 
     /* Resolve External Declarations */
 
-    if (AslGbl_DoExternals)
-    {
-        Event = UtBeginEvent ("Resolve all Externals");
-        DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n");
+    Event = UtBeginEvent ("Resolve all Externals");
+    DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n");
 
-        if (AslGbl_DoExternalsInPlace)
-        {
-            TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD,
-                ExAmlExternalWalkBegin, NULL, NULL);
-        }
-        else
-        {
-            TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE,
-                ExAmlExternalWalkBegin, ExAmlExternalWalkEnd, NULL);
-        }
-        UtEndEvent (Event);
+    if (AslGbl_DoExternalsInPlace)
+    {
+        TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD,
+            ExAmlExternalWalkBegin, NULL, NULL);
     }
+    else
+    {
+        TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE,
+            ExAmlExternalWalkBegin, ExAmlExternalWalkEnd, NULL);
+    }
+    UtEndEvent (Event);
 
     /*
      * Semantic analysis. This can happen only after the
@@ -858,7 +855,7 @@ CmCleanupAndExit (
 
     if (AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
     {
-        printf ("\nMaximum error count (%u) exceeded\n",
+        printf ("\nMaximum error count (%d) exceeded\n",
             ASL_MAX_ERROR_COUNT);
     }
 

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslcompiler.h
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslcompiler.h	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslcompiler.h	Tue Dec 18 19:38:28 2018	(r342198)
@@ -475,6 +475,10 @@ AslExpectException (
     char                    *MessageIdString);
 
 ACPI_STATUS
+AslElevateException (
+    char                    *MessageIdString);
+
+ACPI_STATUS
 AslDisableException (
     char                    *MessageIdString);
 

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslerror.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslerror.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslerror.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -201,7 +201,12 @@ AePrintSubError (
     FILE                    *OutputFile,
     ASL_ERROR_MSG           *Enode);
 
+static UINT8
+GetModifiedLevel (
+    UINT8                   Level,
+    UINT16                  MessageId);
 
+
 /*******************************************************************************
  *
  * FUNCTION:    AslAbort
@@ -968,11 +973,12 @@ AslLogNewError (
     ASL_ERROR_MSG           *SubError)
 {
     ASL_ERROR_MSG           *Enode = NULL;
+    UINT8                   ModifiedLevel = GetModifiedLevel (Level, MessageId);
 
 
-    AslInitEnode (&Enode, Level, MessageId, LineNumber, LogicalLineNumber,
-        LogicalByteOffset, Column, Filename, Message, SourceLine,
-        SubError);
+    AslInitEnode (&Enode, ModifiedLevel, MessageId, LineNumber,
+        LogicalLineNumber, LogicalByteOffset, Column, Filename, Message,
+        SourceLine, SubError);
 
     /* Add the new node to the error node list */
 
@@ -985,7 +991,7 @@ AslLogNewError (
         AePrintException (ASL_FILE_STDERR, Enode, NULL);
     }
 
-    AslGbl_ExceptionCount[Level]++;
+    AslGbl_ExceptionCount[ModifiedLevel]++;
     if (AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
     {
         printf ("\nMaximum error count (%u) exceeded\n", ASL_MAX_ERROR_COUNT);
@@ -999,8 +1005,46 @@ AslLogNewError (
     return;
 }
 
+
 /*******************************************************************************
  *
+ * FUNCTION:    GetModifiedLevel
+ *
+ * PARAMETERS:  Level           - Seriousness (Warning/error, etc.)
+ *              MessageId       - Index into global message buffer
+ *
+ * RETURN:      UINT8           - modified level
+ *
+ * DESCRIPTION: Get the modified level of exception codes that are reported as
+ *              errors from the -ww option.
+ *
+ ******************************************************************************/
+
+static UINT8
+GetModifiedLevel (
+    UINT8                   Level,
+    UINT16                  MessageId)
+{
+    UINT16                  i;
+    UINT16                  ExceptionCode;
+
+
+    ExceptionCode = AeBuildFullExceptionCode (Level, MessageId);
+
+    for (i = 0; i < AslGbl_ElevatedMessagesIndex; i++)
+    {
+        if (ExceptionCode == AslGbl_ElevatedMessages[i])
+        {
+            return (ASL_ERROR);
+        }
+    }
+
+    return (Level);
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AslIsExceptionIgnored
  *
  * PARAMETERS:  Level           - Seriousness (Warning/error, etc.)
@@ -1097,7 +1141,7 @@ AslExpectException (
 
     if (AslGbl_ExpectedMessagesIndex >= ASL_MAX_EXPECTED_MESSAGES)
     {
-        printf ("Too many messages have been registered as expected (max %u)\n",
+        printf ("Too many messages have been registered as expected (max %d)\n",
             ASL_MAX_DISABLED_MESSAGES);
         return (AE_LIMIT);
     }
@@ -1144,7 +1188,7 @@ AslDisableException (
 
     if (AslGbl_DisabledMessagesIndex >= ASL_MAX_DISABLED_MESSAGES)
     {
-        printf ("Too many messages have been disabled (max %u)\n",
+        printf ("Too many messages have been disabled (max %d)\n",
             ASL_MAX_DISABLED_MESSAGES);
         return (AE_LIMIT);
     }
@@ -1154,6 +1198,51 @@ AslDisableException (
     return (AE_OK);
 }
 
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AslElevateException
+ *
+ * PARAMETERS:  MessageIdString     - ID of excepted exception during compile
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Enter a message ID into the global elevated exceptions table.
+ *              These messages will be considered as compilation errors.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AslElevateException (
+    char                    *MessageIdString)
+{
+    UINT32                  MessageId;
+
+
+    /* Convert argument to an integer and validate it */
+
+    MessageId = (UINT32) strtoul (MessageIdString, NULL, 0);
+
+    if (MessageId > 6999)
+    {
+        printf ("\"%s\" is not a valid warning/remark/erro ID\n",
+            MessageIdString);
+        return (AE_BAD_PARAMETER);
+    }
+
+    /* Insert value into the global expected message array */
+
+    if (AslGbl_ElevatedMessagesIndex >= ASL_MAX_ELEVATED_MESSAGES)
+    {
+        printf ("Too many messages have been registered as elevated (max %d)\n",
+            ASL_MAX_DISABLED_MESSAGES);
+        return (AE_LIMIT);
+    }
+
+    AslGbl_ElevatedMessages[AslGbl_ExpectedMessagesIndex] = MessageId;
+    AslGbl_ElevatedMessagesIndex++;
+    return (AE_OK);
+}
 
 /*******************************************************************************
  *

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslglobal.h
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslglobal.h	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslglobal.h	Tue Dec 18 19:38:28 2018	(r342198)
@@ -255,6 +255,7 @@ extern int                  AslCompilerdebug;
 #define ASL_STRING_BUFFER_SIZE          (1024 * 32) /* 32k */
 #define ASL_MAX_DISABLED_MESSAGES       32
 #define ASL_MAX_EXPECTED_MESSAGES       32
+#define ASL_MAX_ELEVATED_MESSAGES       32
 #define HEX_TABLE_LINE_SIZE             8
 #define HEX_LISTING_LINE_SIZE           8
 
@@ -319,7 +320,6 @@ ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (A
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_PruneParseTree, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_DoTypechecking, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_EnableReferenceTypechecking, FALSE);
-ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_DoExternals, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_DoExternalsInPlace, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_DoAslConversion, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_OptimizeTrivialParseNodes, TRUE);
@@ -394,6 +394,7 @@ ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (A
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (AslGbl_CurrentLine, 0);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (AslGbl_DisabledMessagesIndex, 0);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (AslGbl_ExpectedMessagesIndex, 0);
+ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (AslGbl_ElevatedMessagesIndex, 0);
 ASL_EXTERN UINT8                    ASL_INIT_GLOBAL (AslGbl_HexBytesWereWritten, FALSE);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (AslGbl_NumNamespaceObjects, 0);
 ASL_EXTERN UINT32                   ASL_INIT_GLOBAL (AslGbl_ReservedMethods, 0);
@@ -435,6 +436,7 @@ ASL_EXTERN char                     AslGbl_StringBuffe
 ASL_EXTERN char                     AslGbl_StringBuffer2[ASL_STRING_BUFFER_SIZE];
 ASL_EXTERN UINT32                   AslGbl_DisabledMessages[ASL_MAX_DISABLED_MESSAGES];
 ASL_EXTERN ASL_EXPECTED_MESSAGE     AslGbl_ExpectedMessages[ASL_MAX_EXPECTED_MESSAGES];
+ASL_EXTERN UINT32                   AslGbl_ElevatedMessages[ASL_MAX_ELEVATED_MESSAGES];
 
 
 #endif /* __ASLGLOBAL_H */

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslhelp.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslhelp.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslhelp.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -208,6 +208,7 @@ Usage (
     ACPI_OPTION ("-vx <messageid>", "Expect a specific warning, remark, or error");
     ACPI_OPTION ("-w <1|2|3>",      "Set warning reporting level");
     ACPI_OPTION ("-we",             "Report warnings as errors");
+    ACPI_OPTION ("-ww <messageid>", "Report specific warning or remark as error");
 
     printf ("\nAML Bytecode Generation (*.aml):\n");
     ACPI_OPTION ("-oa",             "Disable all optimizations (compatibility mode)");

Modified: stable/12/sys/contrib/dev/acpica/compiler/asllength.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/asllength.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/asllength.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -519,10 +519,7 @@ CgGenerateAmlLengths (
 
     case PARSEOP_EXTERNAL:
 
-        if (AslGbl_DoExternals == TRUE)
-        {
-            CgGenerateAmlOpcodeLength (Op);
-        }
+        CgGenerateAmlOpcodeLength (Op);
         break;
 
     default:

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslload.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslload.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslload.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -417,10 +417,8 @@ LdLoadResourceElements (
         {
             Status = AcpiNsLookup (WalkState->ScopeInfo,
                 InitializerOp->Asl.ExternalName,
-                ACPI_TYPE_LOCAL_RESOURCE_FIELD,
-                ACPI_IMODE_LOAD_PASS1,
-                ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE,
-                NULL, &Node);
+                ACPI_TYPE_LOCAL_RESOURCE_FIELD, ACPI_IMODE_LOAD_PASS1,
+                ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node);
             if (ACPI_FAILURE (Status))
             {
                 return (Status);
@@ -687,8 +685,7 @@ LdNamespace1Begin (
          * handle this case. Perhaps someday this case can go away.
          */
         Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY,
-            ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT,
-            WalkState, &(Node));
+            ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &Node);
         if (ACPI_FAILURE (Status))
         {
             if (Status == AE_NOT_FOUND)
@@ -696,23 +693,26 @@ LdNamespace1Begin (
                 /* The name was not found, go ahead and create it */
 
                 Status = AcpiNsLookup (WalkState->ScopeInfo, Path,
-                    ACPI_TYPE_LOCAL_SCOPE,
-                    ACPI_IMODE_LOAD_PASS1, Flags,
-                    WalkState, &(Node));
+                    ACPI_TYPE_LOCAL_SCOPE, ACPI_IMODE_LOAD_PASS1,
+                    Flags, WalkState, &Node);
                 if (ACPI_FAILURE (Status))
                 {
                     return_ACPI_STATUS (Status);
                 }
 
-                /*
-                 * However, this is an error -- primarily because the MS
-                 * interpreter can't handle a forward reference from the
-                 * Scope() operator.
-                 */
-                AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
-                    Op->Asl.ExternalName);
-                AslError (ASL_ERROR, ASL_MSG_SCOPE_FWD_REF, Op,
-                    Op->Asl.ExternalName);
+                /* However, this is an error -- operand to Scope must exist */
+
+                if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE)
+                {
+                    AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
+                        Op->Asl.ExternalName);
+                }
+                else
+                {
+                    AslError (ASL_ERROR, ASL_MSG_NAMEPATH_NOT_EXIST, Op,
+                        Op->Asl.ExternalName);
+                }
+
                 goto FinishNode;
             }
 
@@ -824,7 +824,6 @@ LdNamespace1Begin (
         break;
     }
 
-
     ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Loading name: %s, (%s)\n",
         Op->Asl.ExternalName, AcpiUtGetTypeName (ObjectType)));
 
@@ -833,6 +832,18 @@ LdNamespace1Begin (
     Flags |= ACPI_NS_ERROR_IF_FOUND;
 
     /*
+     * For opcodes that enter new names into the namespace,
+     * all prefix NameSegs must exist.
+     */
+    WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode);
+    if (((WalkState->OpInfo->Flags & AML_NAMED) ||
+        (WalkState->OpInfo->Flags & AML_CREATE)) &&
+        (Op->Asl.AmlOpcode != AML_EXTERNAL_OP))
+    {
+        Flags |= ACPI_NS_PREFIX_MUST_EXIST;
+    }
+
+    /*
      * Enter the named type into the internal namespace. We enter the name
      * as we go downward in the parse tree. Any necessary subobjects that
      * involve arguments to the opcode must be created as we go back up the
@@ -915,8 +926,20 @@ LdNamespace1Begin (
                 return_ACPI_STATUS (AE_OK);
             }
         }
+        else if (AE_NOT_FOUND)
+        {
+            /*
+             * One or more prefix NameSegs of the NamePath do not exist
+             * (all of them must exist). Attempt to continue compilation
+             * by setting the current scope to the root.
+             */
+            Node = AcpiGbl_RootNode;
+            Status = AE_OK;
+        }
         else
         {
+            /* Flag all other errors as coming from the ACPICA core */
+
             AslCoreSubsystemError (Op, Status,
                 "Failure from namespace lookup", FALSE);
             return_ACPI_STATUS (Status);
@@ -1043,10 +1066,10 @@ LdNamespace2Begin (
 
     if (Op->Asl.ParseOpcode == PARSEOP_ALIAS)
     {
-        /* Complete the alias node by getting and saving the target node */
-
-        /* First child is the alias target */
-
+        /*
+         * Complete the alias node by getting and saving the target node.
+         * First child is the alias target
+         */
         Arg = Op->Asl.Child;
 
         /* Get the target pathname */
@@ -1070,18 +1093,34 @@ LdNamespace2Begin (
         {
             if (Status == AE_NOT_FOUND)
             {
-                AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
-                    Op->Asl.ExternalName);
+                /* Standalone NameSeg vs. NamePath */
 
+                if (strlen (Arg->Asl.ExternalName) == ACPI_NAME_SIZE)
+                {
+                    AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
+                        Arg->Asl.ExternalName);
+                }
+                else
+                {
+                    AslError (ASL_ERROR, ASL_MSG_NAMEPATH_NOT_EXIST, Op,
+                        Arg->Asl.ExternalName);
+                }
+
+#if 0
+/*
+ * NOTE: Removed 10/2018 to enhance compiler error reporting. No
+ * regressions seen.
+ */
                 /*
                  * The name was not found, go ahead and create it.
                  * This prevents more errors later.
                  */
                 Status = AcpiNsLookup (WalkState->ScopeInfo, Path,
-                    ACPI_TYPE_ANY,
-                    ACPI_IMODE_LOAD_PASS1, ACPI_NS_NO_UPSEARCH,
-                    WalkState, &(Node));
-                return (AE_OK);
+                    ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1,
+                    ACPI_NS_NO_UPSEARCH, WalkState, &Node);
+#endif
+                return (Status);
+/* Removed: return (AE_OK)*/
             }
 
             AslCoreSubsystemError (Op, Status,

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslmain.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslmain.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslmain.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -329,7 +329,7 @@ AslSignalHandler (
 
     default:
 
-        printf (ASL_PREFIX "Unknown interrupt signal (%u)\n", Sig);
+        printf (ASL_PREFIX "Unknown interrupt signal (%d)\n", Sig);
         break;
     }
 

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslmessages.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslmessages.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslmessages.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -285,7 +285,7 @@ const char                      *AslCompilerMsgs [] =
 /*    ASL_MSG_NON_ASCII */                  "Invalid characters found in file",
 /*    ASL_MSG_NON_ZERO */                   "Operand evaluates to zero",
 /*    ASL_MSG_NOT_EXIST */                  "Object does not exist",
-/*    ASL_MSG_NOT_FOUND */                  "Object not found or not accessible from scope",
+/*    ASL_MSG_NOT_FOUND */                  "Object not found or not accessible from current scope",
 /*    ASL_MSG_NOT_METHOD */                 "Not a control method, cannot invoke",
 /*    ASL_MSG_NOT_PARAMETER */              "Not a parameter, used as local only",
 /*    ASL_MSG_NOT_REACHABLE */              "Object is not accessible from this scope",
@@ -359,7 +359,9 @@ const char                      *AslCompilerMsgs [] =
 /*    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_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"
 };
 
 /* Table compiler */

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslmessages.h
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslmessages.h	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslmessages.h	Tue Dec 18 19:38:28 2018	(r342198)
@@ -362,6 +362,8 @@ typedef enum
     ASL_MSG_UNLOAD,
     ASL_MSG_OFFSET,
     ASL_MSG_LONG_SLEEP,
+    ASL_MSG_PREFIX_NOT_EXIST,
+    ASL_MSG_NAMEPATH_NOT_EXIST,
 
     /* These messages are used by the Data Table compiler only */
 

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslopcodes.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslopcodes.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslopcodes.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -927,15 +927,6 @@ OpcGenerateAmlOpcode (
         AslGbl_HasIncludeFiles = TRUE;
         break;
 
-    case PARSEOP_EXTERNAL:
-
-        if (AslGbl_DoExternals == FALSE)
-        {
-            Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
-            Op->Asl.Child->Asl.Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
-        }
-        break;
-
     case PARSEOP_TIMER:
 
         if (AcpiGbl_IntegerBitWidth == 32)

Modified: stable/12/sys/contrib/dev/acpica/compiler/asloptions.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/asloptions.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/asloptions.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -976,6 +976,23 @@ AslDoOptions (
             AslGbl_WarningsAsErrors = TRUE;
             break;
 
+        case 'w':
+
+            /* Get the required argument */
+
+            if (AcpiGetoptArgument (argc, argv))
+            {
+                return (-1);
+            }
+
+            Status = AslElevateException (AcpiGbl_Optarg);
+            if (ACPI_FAILURE (Status))
+            {
+                return (-1);
+            }
+            break;
+
+
         default:
 
             printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslpredef.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslpredef.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslpredef.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -222,7 +222,7 @@ ApCheckForPredefinedMethod (
 
         if (MethodInfo->NumArguments != 0)
         {
-            sprintf (AslGbl_MsgBuffer, "%s requires %u", Op->Asl.ExternalName, 0);
+            sprintf (AslGbl_MsgBuffer, "%s requires %d", Op->Asl.ExternalName, 0);
 
             AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_HI, Op,
                 AslGbl_MsgBuffer);

Modified: stable/12/sys/contrib/dev/acpica/compiler/asltransform.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/asltransform.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/asltransform.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -460,11 +460,7 @@ TrTransformSubtree (
 
     case PARSEOP_EXTERNAL:
 
-        if (AslGbl_DoExternals == TRUE)
-        {
-            ExDoExternal (Op);
-        }
-
+        ExDoExternal (Op);
         break;
 
     case PARSEOP___METHOD__:

Modified: stable/12/sys/contrib/dev/acpica/compiler/aslxref.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/aslxref.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/aslxref.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -718,23 +718,55 @@ XfNamespaceLocateBegin (
             }
             else
             {
-                /* Check for a fully qualified path */
+                /* The NamePath contains multiple NameSegs */
 
-                if (Path[0] == AML_ROOT_PREFIX)
+                if ((OpInfo->Flags & AML_CREATE) ||
+                    (OpInfo->ObjectType == ACPI_TYPE_LOCAL_ALIAS))
                 {
-                    /* Gave full path, the object does not exist */
+                    /*
+                     * The new name is the last parameter. For the
+                     * CreateXXXXField and Alias operators
+                     */
+                    NextOp = Op->Asl.Child;
+                    while (!(NextOp->Asl.CompileFlags & OP_IS_NAME_DECLARATION))
+                    {
+                        NextOp = NextOp->Asl.Next;
+                    }
 
+                    AslError (ASL_ERROR, ASL_MSG_PREFIX_NOT_EXIST, NextOp,
+                        NextOp->Asl.ExternalName);
+                }
+                else if (OpInfo->Flags & AML_NAMED)
+                {
+                    /* The new name is the first parameter */
+
+                    AslError (ASL_ERROR, ASL_MSG_PREFIX_NOT_EXIST, Op,
+                        Op->Asl.ExternalName);
+                }
+                else if (Path[0] == AML_ROOT_PREFIX)
+                {
+                    /* Full namepath from root, the object does not exist */
+
                     AslError (ASL_ERROR, ASL_MSG_NOT_EXIST, Op,
                         Op->Asl.ExternalName);
                 }
                 else
                 {
                     /*
-                     * We can't tell whether it doesn't exist or just
-                     * can't be reached.
+                     * Generic "not found" error. Cannot determine whether it
+                     * doesn't exist or just can't be reached. However, we
+                     * can differentiate between a NameSeg vs. NamePath.
                      */
-                    AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
-                        Op->Asl.ExternalName);
+                    if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE)
+                    {
+                        AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
+                            Op->Asl.ExternalName);
+                    }
+                    else
+                    {
+                        AslError (ASL_ERROR, ASL_MSG_NAMEPATH_NOT_EXIST, Op,
+                            Op->Asl.ExternalName);
+                    }
                 }
             }
 

Modified: stable/12/sys/contrib/dev/acpica/compiler/dtio.c
==============================================================================
--- stable/12/sys/contrib/dev/acpica/compiler/dtio.c	Tue Dec 18 19:38:13 2018	(r342197)
+++ stable/12/sys/contrib/dev/acpica/compiler/dtio.c	Tue Dec 18 19:38:28 2018	(r342198)
@@ -236,7 +236,7 @@ DtTrim (
 
     /* Skip lines that start with a space */
 
-    if (!strcmp (String, " "))
+    if (*String == 0 || !strcmp (String, " "))
     {
         ReturnString = UtLocalCacheCalloc (1);
         return (ReturnString);
@@ -258,7 +258,7 @@ DtTrim (
 
     while (End >= Start)
     {
-        if (*End == '\r' || *End == '\n')
+        if (*End == '\n')
         {
             End--;
             continue;
@@ -522,6 +522,7 @@ DtGetNextLine (
     UINT32                  CurrentLineOffset;
     UINT32                  i;
     int                     c;
+    int                     c1;
 
 
     memset (AslGbl_CurrentLineBuffer, 0, AslGbl_LineBufferSize);
@@ -568,6 +569,29 @@ DtGetNextLine (
              */
             c = '\n';
             State = DT_NORMAL_TEXT;
+        }
+        else if (c == '\r')
+        {
+            c1 = getc (Handle);
+            if (c1 == '\n')
+            {
+                /*
+                 * Skip the carriage return as if it didn't exist. This is
+                 * onlt meant for input files in DOS format in unix. fopen in
+                 * unix may not support "text mode" and leaves CRLF intact.
+                 */
+                c = '\n';
+            }
+            else
+            {
+                /* This was not a CRLF. Only a CR */
+
+                ungetc(c1, Handle);
+
+                DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL,

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


More information about the svn-src-all mailing list