diff mbox series

[1/2] ACPICA: Update to version 20181213

Message ID 20181213171541.28766-2-colin.king@canonical.com
State Accepted
Headers show
Series ACPICA: Update to version 20181213 | expand

Commit Message

Colin Ian King Dec. 13, 2018, 5:15 p.m. UTC
From: Colin Ian King <colin.king@canonical.com>

changes in this release of ACPICA are detailed at the following
link on the ACPICA developer mailing list:

https://lists.acpica.org/pipermail/devel/2018-December/001849.html

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/acpica/source/common/ahpredef.c           | 16 +--
 src/acpica/source/common/dmswitch.c           |  6 ++
 src/acpica/source/compiler/aslcodegen.c       |  6 --
 src/acpica/source/compiler/aslcompile.c       | 27 +++---
 src/acpica/source/compiler/aslcompiler.h      |  4 +
 src/acpica/source/compiler/aslerror.c         | 97 ++++++++++++++++++-
 src/acpica/source/compiler/aslglobal.h        |  4 +-
 src/acpica/source/compiler/asllength.c        |  5 +-
 src/acpica/source/compiler/aslopcodes.c       |  9 --
 src/acpica/source/compiler/asltransform.c     |  6 +-
 .../source/components/dispatcher/dsmethod.c   | 12 +++
 .../source/components/dispatcher/dsobject.c   | 10 --
 .../source/components/dispatcher/dspkginit.c  | 26 +++++
 .../source/components/dispatcher/dsutils.c    |  2 -
 .../source/components/dispatcher/dswload.c    |  6 +-
 .../source/components/dispatcher/dswload2.c   |  6 --
 .../source/components/dispatcher/dswstate.c   |  2 +-
 .../source/components/executer/exconvrt.c     | 49 +++++++---
 .../source/components/executer/excreate.c     |  2 -
 .../source/components/executer/exoparg2.c     |  6 +-
 .../source/components/executer/exserial.c     | 20 +---
 .../source/components/executer/exutils.c      |  2 -
 .../source/components/namespace/nseval.c      | 12 +++
 .../source/components/namespace/nsload.c      |  2 -
 .../source/components/namespace/nsparse.c     | 10 ++
 src/acpica/source/components/parser/psloop.c  |  2 +-
 src/acpica/source/components/parser/psparse.c | 12 +++
 src/acpica/source/components/parser/psxface.c |  6 ++
 .../source/components/utilities/utglobal.c    |  3 -
 .../source/components/utilities/utmisc.c      |  3 +-
 .../source/components/utilities/utosi.c       |  2 +
 src/acpica/source/include/acglobal.h          |  4 -
 src/acpica/source/include/acoutput.h          |  6 +-
 src/acpica/source/include/acpixf.h            |  2 +-
 src/acpica/source/include/acstruct.h          |  5 +-
 src/acpica/source/include/actbl.h             |  1 +
 src/acpica/source/include/actypes.h           |  6 ++
 37 files changed, 271 insertions(+), 128 deletions(-)

Comments

Ivan Hu Dec. 14, 2018, 9:15 a.m. UTC | #1
On 12/14/18 1:15 AM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> changes in this release of ACPICA are detailed at the following
> link on the ACPICA developer mailing list:
> 
> https://lists.acpica.org/pipermail/devel/2018-December/001849.html
> 
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/acpica/source/common/ahpredef.c           | 16 +--
>   src/acpica/source/common/dmswitch.c           |  6 ++
>   src/acpica/source/compiler/aslcodegen.c       |  6 --
>   src/acpica/source/compiler/aslcompile.c       | 27 +++---
>   src/acpica/source/compiler/aslcompiler.h      |  4 +
>   src/acpica/source/compiler/aslerror.c         | 97 ++++++++++++++++++-
>   src/acpica/source/compiler/aslglobal.h        |  4 +-
>   src/acpica/source/compiler/asllength.c        |  5 +-
>   src/acpica/source/compiler/aslopcodes.c       |  9 --
>   src/acpica/source/compiler/asltransform.c     |  6 +-
>   .../source/components/dispatcher/dsmethod.c   | 12 +++
>   .../source/components/dispatcher/dsobject.c   | 10 --
>   .../source/components/dispatcher/dspkginit.c  | 26 +++++
>   .../source/components/dispatcher/dsutils.c    |  2 -
>   .../source/components/dispatcher/dswload.c    |  6 +-
>   .../source/components/dispatcher/dswload2.c   |  6 --
>   .../source/components/dispatcher/dswstate.c   |  2 +-
>   .../source/components/executer/exconvrt.c     | 49 +++++++---
>   .../source/components/executer/excreate.c     |  2 -
>   .../source/components/executer/exoparg2.c     |  6 +-
>   .../source/components/executer/exserial.c     | 20 +---
>   .../source/components/executer/exutils.c      |  2 -
>   .../source/components/namespace/nseval.c      | 12 +++
>   .../source/components/namespace/nsload.c      |  2 -
>   .../source/components/namespace/nsparse.c     | 10 ++
>   src/acpica/source/components/parser/psloop.c  |  2 +-
>   src/acpica/source/components/parser/psparse.c | 12 +++
>   src/acpica/source/components/parser/psxface.c |  6 ++
>   .../source/components/utilities/utglobal.c    |  3 -
>   .../source/components/utilities/utmisc.c      |  3 +-
>   .../source/components/utilities/utosi.c       |  2 +
>   src/acpica/source/include/acglobal.h          |  4 -
>   src/acpica/source/include/acoutput.h          |  6 +-
>   src/acpica/source/include/acpixf.h            |  2 +-
>   src/acpica/source/include/acstruct.h          |  5 +-
>   src/acpica/source/include/actbl.h             |  1 +
>   src/acpica/source/include/actypes.h           |  6 ++
>   37 files changed, 271 insertions(+), 128 deletions(-)
> 
> diff --git a/src/acpica/source/common/ahpredef.c b/src/acpica/source/common/ahpredef.c
> index 0a558722..1c3af7ef 100644
> --- a/src/acpica/source/common/ahpredef.c
> +++ b/src/acpica/source/common/ahpredef.c
> @@ -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"),
> diff --git a/src/acpica/source/common/dmswitch.c b/src/acpica/source/common/dmswitch.c
> index f04ec743..46546fbb 100644
> --- a/src/acpica/source/common/dmswitch.c
> +++ b/src/acpica/source/common/dmswitch.c
> @@ -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 */
> diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
> index 7b2e3e5c..356011f0 100644
> --- a/src/acpica/source/compiler/aslcodegen.c
> +++ b/src/acpica/source/compiler/aslcodegen.c
> @@ -773,12 +773,6 @@ CgWriteNode (
>           return;
>       }
>   
> -    if ((Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) &&
> -        AslGbl_DoExternals == FALSE)
> -    {
> -        return;
> -    }
> -
>       Op->Asl.FinalAmlLength = 0;
>   
>       switch (Op->Asl.AmlOpcode)
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 4ae19076..1b8838aa 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -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
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index bd02879d..c5e8cb0c 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -474,6 +474,10 @@ ACPI_STATUS
>   AslExpectException (
>       char                    *MessageIdString);
>   
> +ACPI_STATUS
> +AslElevateException (
> +    char                    *MessageIdString);
> +
>   ACPI_STATUS
>   AslDisableException (
>       char                    *MessageIdString);
> diff --git a/src/acpica/source/compiler/aslerror.c b/src/acpica/source/compiler/aslerror.c
> index 10ea3ec1..2a18dded 100644
> --- a/src/acpica/source/compiler/aslerror.c
> +++ b/src/acpica/source/compiler/aslerror.c
> @@ -201,6 +201,11 @@ AePrintSubError (
>       FILE                    *OutputFile,
>       ASL_ERROR_MSG           *Enode);
>   
> +static UINT8
> +GetModifiedLevel (
> +    UINT8                   Level,
> +    UINT16                  MessageId);
> +
>   
>   /*******************************************************************************
>    *
> @@ -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,6 +1005,44 @@ 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
> @@ -1155,6 +1199,51 @@ AslDisableException (
>   }
>   
>   
> +/*******************************************************************************
> + *
> + * 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);
> +}
> +
>   /*******************************************************************************
>    *
>    * FUNCTION:    AslIsExceptionDisabled
> diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
> index c3e69cbb..fd00da78 100644
> --- a/src/acpica/source/compiler/aslglobal.h
> +++ b/src/acpica/source/compiler/aslglobal.h
> @@ -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 (AslGbl_AllExceptionsDisable
>   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 (AslGbl_CurrentAmlOffset, 0)
>   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_StringBuffer[ASL_STRING_BUFFER_SIZE];
>   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 */
> diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
> index 696dc242..8fef83b9 100644
> --- a/src/acpica/source/compiler/asllength.c
> +++ b/src/acpica/source/compiler/asllength.c
> @@ -519,10 +519,7 @@ CgGenerateAmlLengths (
>   
>       case PARSEOP_EXTERNAL:
>   
> -        if (AslGbl_DoExternals == TRUE)
> -        {
> -            CgGenerateAmlOpcodeLength (Op);
> -        }
> +        CgGenerateAmlOpcodeLength (Op);
>           break;
>   
>       default:
> diff --git a/src/acpica/source/compiler/aslopcodes.c b/src/acpica/source/compiler/aslopcodes.c
> index 218223b8..32d04781 100644
> --- a/src/acpica/source/compiler/aslopcodes.c
> +++ b/src/acpica/source/compiler/aslopcodes.c
> @@ -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)
> diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
> index 324b0364..2bf32db4 100644
> --- a/src/acpica/source/compiler/asltransform.c
> +++ b/src/acpica/source/compiler/asltransform.c
> @@ -460,11 +460,7 @@ TrTransformSubtree (
>   
>       case PARSEOP_EXTERNAL:
>   
> -        if (AslGbl_DoExternals == TRUE)
> -        {
> -            ExDoExternal (Op);
> -        }
> -
> +        ExDoExternal (Op);
>           break;
>   
>       case PARSEOP___METHOD__:
> diff --git a/src/acpica/source/components/dispatcher/dsmethod.c b/src/acpica/source/components/dispatcher/dsmethod.c
> index 3db8010f..009151f9 100644
> --- a/src/acpica/source/components/dispatcher/dsmethod.c
> +++ b/src/acpica/source/components/dispatcher/dsmethod.c
> @@ -720,6 +720,8 @@ AcpiDsCallControlMethod (
>           goto Cleanup;
>       }
>   
> +    NextWalkState->MethodNestingDepth = ThisWalkState->MethodNestingDepth + 1;
> +
>       /*
>        * Delete the operands on the previous walkstate operand stack
>        * (they were copied to new objects)
> @@ -738,6 +740,16 @@ AcpiDsCallControlMethod (
>           "**** Begin nested execution of [%4.4s] **** WalkState=%p\n",
>           MethodNode->Name.Ascii, NextWalkState));
>   
> +    ThisWalkState->MethodPathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE);
> +    ThisWalkState->MethodIsNested = TRUE;
> +
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  %*s%s\n", "   Nested method call",
> +        NextWalkState->MethodNestingDepth * 3, " ",
> +        &ThisWalkState->MethodPathname[1]));
> +
>       /* Invoke an internal method if necessary */
>   
>       if (ObjDesc->Method.InfoFlags & ACPI_METHOD_INTERNAL_ONLY)
> diff --git a/src/acpica/source/components/dispatcher/dsobject.c b/src/acpica/source/components/dispatcher/dsobject.c
> index e9b7413a..4ec23d46 100644
> --- a/src/acpica/source/components/dispatcher/dsobject.c
> +++ b/src/acpica/source/components/dispatcher/dsobject.c
> @@ -161,7 +161,6 @@
>           ACPI_MODULE_NAME    ("dsobject")
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiDsBuildInternalObject
> @@ -460,7 +459,6 @@ AcpiDsCreateNode (
>       return_ACPI_STATUS (Status);
>   }
>   
> -#endif /* ACPI_NO_METHOD_EXECUTION */
>   
>   
>   /*******************************************************************************
> @@ -571,9 +569,7 @@ AcpiDsInitObjectFromOp (
>   
>                   /* Truncate value if we are executing from a 32-bit ACPI table */
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>                   (void) AcpiExTruncateFor32bitTable (ObjDesc);
> -#endif
>                   break;
>   
>               case AML_REVISION_OP:
> @@ -594,7 +590,6 @@ AcpiDsInitObjectFromOp (
>   
>               ObjDesc->Integer.Value = Op->Common.Value.Integer;
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>               if (AcpiExTruncateFor32bitTable (ObjDesc))
>               {
>                   /* Warn if we found a 64-bit constant in a 32-bit table */
> @@ -604,7 +599,6 @@ AcpiDsInitObjectFromOp (
>                       ACPI_FORMAT_UINT64 (Op->Common.Value.Integer),
>                       (UINT32) ObjDesc->Integer.Value));
>               }
> -#endif
>               break;
>   
>           default:
> @@ -642,12 +636,10 @@ AcpiDsInitObjectFromOp (
>               ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_LOCAL_OP;
>               ObjDesc->Reference.Class = ACPI_REFCLASS_LOCAL;
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>               Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL,
>                   ObjDesc->Reference.Value, WalkState,
>                   ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
>                       &ObjDesc->Reference.Object));
> -#endif
>               break;
>   
>           case AML_TYPE_METHOD_ARGUMENT:
> @@ -657,12 +649,10 @@ AcpiDsInitObjectFromOp (
>               ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_ARG_OP;
>               ObjDesc->Reference.Class = ACPI_REFCLASS_ARG;
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>               Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG,
>                   ObjDesc->Reference.Value, WalkState,
>                   ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
>                       &ObjDesc->Reference.Object));
> -#endif
>               break;
>   
>           default: /* Object name or Debug object */
> diff --git a/src/acpica/source/components/dispatcher/dspkginit.c b/src/acpica/source/components/dispatcher/dspkginit.c
> index 9e1cd611..1e7e7383 100644
> --- a/src/acpica/source/components/dispatcher/dspkginit.c
> +++ b/src/acpica/source/components/dispatcher/dspkginit.c
> @@ -308,6 +308,32 @@ AcpiDsBuildInternalPackageObj (
>       {
>           if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP)
>           {
> +            if (!Arg->Common.Node)
> +            {
> +                /*
> +                 * This is the case where an expression has returned a value.
> +                 * The use of expressions (TermArgs) within individual
> +                 * package elements is not supported by the AML interpreter,
> +                 * even though the ASL grammar supports it. Example:
> +                 *
> +                 *      Name (INT1, 0x1234)
> +                 *
> +                 *      Name (PKG3, Package () {
> +                 *          Add (INT1, 0xAAAA0000)
> +                 *      })
> +                 *
> +                 *  1) No known AML interpreter supports this type of construct
> +                 *  2) This fixes a fault if the construct is encountered
> +                 */
> +                ACPI_EXCEPTION ((AE_INFO, AE_SUPPORT,
> +                    "Expressions within package elements are not supported"));
> +
> +                /* Cleanup the return object, it is not needed */
> +
> +                AcpiUtRemoveReference (WalkState->Results->Results.ObjDesc[0]);
> +                return_ACPI_STATUS (AE_SUPPORT);
> +            }
> +
>               if (Arg->Common.Node->Type == ACPI_TYPE_METHOD)
>               {
>                   /*
> diff --git a/src/acpica/source/components/dispatcher/dsutils.c b/src/acpica/source/components/dispatcher/dsutils.c
> index c03f9268..20a9e256 100644
> --- a/src/acpica/source/components/dispatcher/dsutils.c
> +++ b/src/acpica/source/components/dispatcher/dsutils.c
> @@ -209,7 +209,6 @@ AcpiDsClearImplicitReturn (
>   }
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiDsDoImplicitReturn
> @@ -583,7 +582,6 @@ AcpiDsClearOperands (
>       WalkState->NumOperands = 0;
>       return_VOID;
>   }
> -#endif
>   
>   
>   /*******************************************************************************
> diff --git a/src/acpica/source/components/dispatcher/dswload.c b/src/acpica/source/components/dispatcher/dswload.c
> index 91f5b305..db0f0e85 100644
> --- a/src/acpica/source/components/dispatcher/dswload.c
> +++ b/src/acpica/source/components/dispatcher/dswload.c
> @@ -221,12 +221,10 @@ AcpiDsInitCallbacks (
>   
>           /* Execution pass */
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>           WalkState->ParseFlags        |= ACPI_PARSE_EXECUTE  |
>                                           ACPI_PARSE_DELETE_TREE;
>           WalkState->DescendingCallback = AcpiDsExecBeginOp;
>           WalkState->AscendingCallback  = AcpiDsExecEndOp;
> -#endif
>           break;
>   
>       default:
> @@ -517,7 +515,7 @@ AcpiDsLoad1BeginOp (
>   
>       /* Initialize the op */
>   
> -#if (defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY))
> +#ifdef ACPI_CONSTANT_EVAL_ONLY
>       Op->Named.Path = Path;
>   #endif
>   
> @@ -580,7 +578,6 @@ AcpiDsLoad1EndOp (
>   
>       ObjectType = WalkState->OpInfo->ObjectType;
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>       if (WalkState->OpInfo->Flags & AML_FIELD)
>       {
>           /*
> @@ -626,7 +623,6 @@ AcpiDsLoad1EndOp (
>               }
>           }
>       }
> -#endif
>   
>       if (Op->Common.AmlOpcode == AML_NAME_OP)
>       {
> diff --git a/src/acpica/source/components/dispatcher/dswload2.c b/src/acpica/source/components/dispatcher/dswload2.c
> index 4b6e41d8..7387690e 100644
> --- a/src/acpica/source/components/dispatcher/dswload2.c
> +++ b/src/acpica/source/components/dispatcher/dswload2.c
> @@ -529,10 +529,8 @@ AcpiDsLoad2EndOp (
>       ACPI_NAMESPACE_NODE     *Node;
>       ACPI_PARSE_OBJECT       *Arg;
>       ACPI_NAMESPACE_NODE     *NewNode;
> -#ifndef ACPI_NO_METHOD_EXECUTION
>       UINT32                  i;
>       UINT8                   RegionSpace;
> -#endif
>   
>   
>       ACPI_FUNCTION_TRACE (DsLoad2EndOp);
> @@ -622,7 +620,6 @@ AcpiDsLoad2EndOp (
>   
>       switch (WalkState->OpInfo->Type)
>       {
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   
>       case AML_TYPE_CREATE_FIELD:
>           /*
> @@ -718,13 +715,11 @@ AcpiDsLoad2EndOp (
>           }
>   
>           break;
> -#endif /* ACPI_NO_METHOD_EXECUTION */
>   
>       case AML_TYPE_NAMED_COMPLEX:
>   
>           switch (Op->Common.AmlOpcode)
>           {
> -#ifndef ACPI_NO_METHOD_EXECUTION
>           case AML_REGION_OP:
>           case AML_DATA_REGION_OP:
>   
> @@ -809,7 +804,6 @@ AcpiDsLoad2EndOp (
>               }
>               break;
>   
> -#endif /* ACPI_NO_METHOD_EXECUTION */
>   
>           default:
>   
> diff --git a/src/acpica/source/components/dispatcher/dswstate.c b/src/acpica/source/components/dispatcher/dswstate.c
> index 7994cb12..409d7f71 100644
> --- a/src/acpica/source/components/dispatcher/dswstate.c
> +++ b/src/acpica/source/components/dispatcher/dswstate.c
> @@ -733,7 +733,7 @@ AcpiDsCreateWalkState (
>   
>       /* Init the method args/local */
>   
> -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY))
> +#ifndef ACPI_CONSTANT_EVAL_ONLY
>       AcpiDsMethodDataInit (WalkState);
>   #endif
>   
> diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
> index 5c58746e..a147ba21 100644
> --- a/src/acpica/source/components/executer/exconvrt.c
> +++ b/src/acpica/source/components/executer/exconvrt.c
> @@ -496,7 +496,7 @@ AcpiExConvertToAscii (
>   
>           /* HexLength: 2 ascii hex chars per data byte */
>   
> -        HexLength = ACPI_MUL_2 (DataWidth);
> +        HexLength = (DataWidth * 2);
>           for (i = 0, j = (HexLength-1); i < HexLength; i++, j--)
>           {
>               /* Get one hex digit, most significant digits first */
> @@ -539,7 +539,8 @@ AcpiExConvertToAscii (
>    *
>    * RETURN:      Status
>    *
> - * DESCRIPTION: Convert an ACPI Object to a string
> + * DESCRIPTION: Convert an ACPI Object to a string. Supports both implicit
> + *              and explicit conversions and related rules.
>    *
>    ******************************************************************************/
>   
> @@ -574,9 +575,11 @@ AcpiExConvertToString (
>           switch (Type)
>           {
>           case ACPI_EXPLICIT_CONVERT_DECIMAL:
> -
> -            /* Make room for maximum decimal number */
> -
> +            /*
> +             * From ToDecimalString, integer source.
> +             *
> +             * Make room for the maximum decimal number size
> +             */
>               StringLength = ACPI_MAX_DECIMAL_DIGITS;
>               Base = 10;
>               break;
> @@ -620,8 +623,10 @@ AcpiExConvertToString (
>           {
>           case ACPI_EXPLICIT_CONVERT_DECIMAL: /* Used by ToDecimalString */
>               /*
> -             * From ACPI: "If Data is a buffer, it is converted to a string of
> -             * decimal values separated by commas."
> +             * Explicit conversion from the ToDecimalString ASL operator.
> +             *
> +             * From ACPI: "If the input is a buffer, it is converted to a
> +             * a string of decimal values separated by commas."
>                */
>               Base = 10;
>   
> @@ -648,20 +653,29 @@ AcpiExConvertToString (
>   
>           case ACPI_IMPLICIT_CONVERT_HEX:
>               /*
> +             * Implicit buffer-to-string conversion
> +             *
>                * From the ACPI spec:
> -             *"The entire contents of the buffer are converted to a string of
> +             * "The entire contents of the buffer are converted to a string of
>                * two-character hexadecimal numbers, each separated by a space."
> +             *
> +             * Each hex number is prefixed with 0x (11/2018)
>                */
>               Separator = ' ';
> -            StringLength = (ObjDesc->Buffer.Length * 3);
> +            StringLength = (ObjDesc->Buffer.Length * 5);
>               break;
>   
> -        case ACPI_EXPLICIT_CONVERT_HEX:     /* Used by ToHexString */
> +        case ACPI_EXPLICIT_CONVERT_HEX:
>               /*
> +             * Explicit conversion from the ToHexString ASL operator.
> +             *
>                * From ACPI: "If Data is a buffer, it is converted to a string of
>                * hexadecimal values separated by commas."
> +             *
> +             * Each hex number is prefixed with 0x (11/2018)
>                */
> -            StringLength = (ObjDesc->Buffer.Length * 3);
> +            Separator = ',';
> +            StringLength = (ObjDesc->Buffer.Length * 5);
>               break;
>   
>           default:
> @@ -692,9 +706,20 @@ AcpiExConvertToString (
>            */
>           for (i = 0; i < ObjDesc->Buffer.Length; i++)
>           {
> +            if (Base == 16)
> +            {
> +                /* Emit 0x prefix for explict/implicit hex conversion */
> +
> +                *NewBuf++ = '0';
> +                *NewBuf++ = 'x';
> +            }
> +
>               NewBuf += AcpiExConvertToAscii (
>                   (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1);
> -            *NewBuf++ = Separator; /* each separated by a comma or space */
> +
> +            /* Each digit is separated by either a comma or space */
> +
> +            *NewBuf++ = Separator;
>           }
>   
>           /*
> diff --git a/src/acpica/source/components/executer/excreate.c b/src/acpica/source/components/executer/excreate.c
> index 524960c2..f4dd8298 100644
> --- a/src/acpica/source/components/executer/excreate.c
> +++ b/src/acpica/source/components/executer/excreate.c
> @@ -161,7 +161,6 @@
>           ACPI_MODULE_NAME    ("excreate")
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiExCreateAlias
> @@ -573,7 +572,6 @@ AcpiExCreatePowerResource (
>       AcpiUtRemoveReference (ObjDesc);
>       return_ACPI_STATUS (Status);
>   }
> -#endif
>   
>   
>   /*******************************************************************************
> diff --git a/src/acpica/source/components/executer/exoparg2.c b/src/acpica/source/components/executer/exoparg2.c
> index 73d0bd26..0693dcbe 100644
> --- a/src/acpica/source/components/executer/exoparg2.c
> +++ b/src/acpica/source/components/executer/exoparg2.c
> @@ -460,9 +460,9 @@ AcpiExOpcode_2A_1T_1R (
>            * NOTE: A length of zero is ok, and will create a zero-length, null
>            *       terminated string.
>            */
> -        while ((Length < Operand[0]->Buffer.Length) &&
> -               (Length < Operand[1]->Integer.Value) &&
> -               (Operand[0]->Buffer.Pointer[Length]))
> +        while ((Length < Operand[0]->Buffer.Length) &&  /* Length of input buffer */
> +               (Length < Operand[1]->Integer.Value) &&  /* Length operand */
> +               (Operand[0]->Buffer.Pointer[Length]))    /* Null terminator */
>           {
>               Length++;
>           }
> diff --git a/src/acpica/source/components/executer/exserial.c b/src/acpica/source/components/executer/exserial.c
> index 73f2aa4a..553aedfb 100644
> --- a/src/acpica/source/components/executer/exserial.c
> +++ b/src/acpica/source/components/executer/exserial.c
> @@ -445,14 +445,12 @@ AcpiExWriteSerialBus (
>       case ACPI_ADR_SPACE_SMBUS:
>   
>           BufferLength = ACPI_SMBUS_BUFFER_SIZE;
> -        DataLength = ACPI_SMBUS_DATA_SIZE;
>           Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16);
>           break;
>   
>       case ACPI_ADR_SPACE_IPMI:
>   
>           BufferLength = ACPI_IPMI_BUFFER_SIZE;
> -        DataLength = ACPI_IPMI_DATA_SIZE;
>           Function = ACPI_WRITE;
>           break;
>   
> @@ -471,7 +469,6 @@ AcpiExWriteSerialBus (
>           /* Add header length to get the full size of the buffer */
>   
>           BufferLength += ACPI_SERIAL_HEADER_SIZE;
> -        DataLength = SourceDesc->Buffer.Pointer[1];
>           Function = ACPI_WRITE | (AccessorType << 16);
>           break;
>   
> @@ -479,21 +476,6 @@ AcpiExWriteSerialBus (
>           return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
>       }
>   
> -#if 0
> -OBSOLETE?
> -    /* Check for possible buffer overflow */
> -
> -    if (DataLength > SourceDesc->Buffer.Length)
> -    {
> -        ACPI_ERROR ((AE_INFO,
> -            "Length in buffer header (%u)(%u) is greater than "
> -            "the physical buffer length (%u) and will overflow",
> -            DataLength, BufferLength, SourceDesc->Buffer.Length));
> -
> -        return_ACPI_STATUS (AE_AML_BUFFER_LIMIT);
> -    }
> -#endif
> -
>       /* Create the transfer/bidirectional/return buffer */
>   
>       BufferDesc = AcpiUtCreateBufferObject (BufferLength);
> @@ -505,6 +487,8 @@ OBSOLETE?
>       /* Copy the input buffer data to the transfer buffer */
>   
>       Buffer = BufferDesc->Buffer.Pointer;
> +    DataLength = (BufferLength < SourceDesc->Buffer.Length ?
> +        BufferLength : SourceDesc->Buffer.Length);
>       memcpy (Buffer, SourceDesc->Buffer.Pointer, DataLength);
>   
>       /* Lock entire transaction if requested */
> diff --git a/src/acpica/source/components/executer/exutils.c b/src/acpica/source/components/executer/exutils.c
> index a38ce940..06ad2b5f 100644
> --- a/src/acpica/source/components/executer/exutils.c
> +++ b/src/acpica/source/components/executer/exutils.c
> @@ -181,7 +181,6 @@ AcpiExDigitsNeeded (
>       UINT32                  Base);
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiExEnterInterpreter
> @@ -615,4 +614,3 @@ AcpiIsValidSpaceId (
>       return (TRUE);
>   }
>   
> -#endif
> diff --git a/src/acpica/source/components/namespace/nseval.c b/src/acpica/source/components/namespace/nseval.c
> index 8262d992..0dbac5bf 100644
> --- a/src/acpica/source/components/namespace/nseval.c
> +++ b/src/acpica/source/components/namespace/nseval.c
> @@ -259,6 +259,12 @@ AcpiNsEvaluate (
>           return_ACPI_STATUS (AE_NO_MEMORY);
>       }
>   
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  %s (%s)\n", "   Enter evaluation",
> +        &Info->FullPathname[1], AcpiUtGetTypeName (Info->Node->Type)));
> +
>       /* Count the number of arguments being passed in */
>   
>       Info->ParamCount = 0;
> @@ -445,6 +451,12 @@ AcpiNsEvaluate (
>           Info->RelativePathname));
>   
>   Cleanup:
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  %s\n", "   Exit evaluation",
> +        &Info->FullPathname[1]));
> +
>       /*
>        * Namespace was unlocked by the handling AcpiNs* function, so we
>        * just free the pathname and return
> diff --git a/src/acpica/source/components/namespace/nsload.c b/src/acpica/source/components/namespace/nsload.c
> index 698d3a57..68946074 100644
> --- a/src/acpica/source/components/namespace/nsload.c
> +++ b/src/acpica/source/components/namespace/nsload.c
> @@ -173,7 +173,6 @@ AcpiNsDeleteSubtree (
>   #endif
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiNsLoadTable
> @@ -477,4 +476,3 @@ AcpiNsUnloadNamespace (
>       return_ACPI_STATUS (Status);
>   }
>   #endif
> -#endif
> diff --git a/src/acpica/source/components/namespace/nsparse.c b/src/acpica/source/components/namespace/nsparse.c
> index 8e86ee4c..e781a4de 100644
> --- a/src/acpica/source/components/namespace/nsparse.c
> +++ b/src/acpica/source/components/namespace/nsparse.c
> @@ -261,8 +261,18 @@ AcpiNsExecuteTable (
>           goto Cleanup;
>       }
>   
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  (Definition Block level)\n", "Module-level evaluation"));
> +
>       Status = AcpiPsExecuteTable (Info);
>   
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  (Definition Block level)\n", "Module-level complete"));
> +
>   Cleanup:
>       if (Info)
>       {
> diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
> index 9625834c..1fa2c880 100644
> --- a/src/acpica/source/components/parser/psloop.c
> +++ b/src/acpica/source/components/parser/psloop.c
> @@ -580,7 +580,7 @@ AcpiPsParseLoop (
>       ParserState = &WalkState->ParserState;
>       WalkState->ArgTypes = 0;
>   
> -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY))
> +#ifndef ACPI_CONSTANT_EVAL_ONLY
>   
>       if (WalkState->WalkType & ACPI_WALK_METHOD_RESTART)
>       {
> diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
> index 0ad62b77..378bfab5 100644
> --- a/src/acpica/source/components/parser/psparse.c
> +++ b/src/acpica/source/components/parser/psparse.c
> @@ -637,6 +637,18 @@ AcpiPsParseAml (
>               "Completed one call to walk loop, %s State=%p\n",
>               AcpiFormatException (Status), WalkState));
>   
> +        if (WalkState->MethodPathname && WalkState->MethodIsNested)
> +        {
> +            /* Optional object evaluation log */
> +
> +            ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION, "%-26s:  %*s%s\n",
> +                "   Exit nested method",
> +                (WalkState->MethodNestingDepth + 1) * 3, " ",
> +                &WalkState->MethodPathname[1]));
> +
> +            ACPI_FREE (WalkState->MethodPathname);
> +            WalkState->MethodIsNested = FALSE;
> +        }
>           if (Status == AE_CTRL_TRANSFER)
>           {
>               /*
> diff --git a/src/acpica/source/components/parser/psxface.c b/src/acpica/source/components/parser/psxface.c
> index 8516fe3a..54f54eab 100644
> --- a/src/acpica/source/components/parser/psxface.c
> +++ b/src/acpica/source/components/parser/psxface.c
> @@ -307,6 +307,9 @@ AcpiPsExecuteMethod (
>           goto Cleanup;
>       }
>   
> +    WalkState->MethodPathname = Info->FullPathname;
> +    WalkState->MethodIsNested = FALSE;
> +
>       if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
>       {
>           WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
> @@ -437,6 +440,9 @@ AcpiPsExecuteTable (
>           goto Cleanup;
>       }
>   
> +    WalkState->MethodPathname = Info->FullPathname;
> +    WalkState->MethodIsNested = FALSE;
> +
>       if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
>       {
>           WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
> diff --git a/src/acpica/source/components/utilities/utglobal.c b/src/acpica/source/components/utilities/utglobal.c
> index a41c17da..d4cde4db 100644
> --- a/src/acpica/source/components/utilities/utglobal.c
> +++ b/src/acpica/source/components/utilities/utglobal.c
> @@ -235,10 +235,7 @@ const ACPI_PREDEFINED_NAMES     AcpiGbl_PreDefinedNames[] =
>       {"_REV",    ACPI_TYPE_INTEGER,          ACPI_CAST_PTR (char, 2)},
>       {"_OS_",    ACPI_TYPE_STRING,           ACPI_OS_NAME},
>       {"_GL_",    ACPI_TYPE_MUTEX,            ACPI_CAST_PTR (char, 1)},
> -
> -#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
>       {"_OSI",    ACPI_TYPE_METHOD,           ACPI_CAST_PTR (char, 1)},
> -#endif
>   
>       /* Table terminator */
>   
> diff --git a/src/acpica/source/components/utilities/utmisc.c b/src/acpica/source/components/utilities/utmisc.c
> index 0e04aff0..c6dbf915 100644
> --- a/src/acpica/source/components/utilities/utmisc.c
> +++ b/src/acpica/source/components/utilities/utmisc.c
> @@ -217,7 +217,8 @@ AcpiUtIsAmlTable (
>       if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) ||
>           ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) ||
>           ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) ||
> -        ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT))
> +        ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT) ||
> +        ACPI_IS_OEM_SIG (Table->Signature))
>       {
>           return (TRUE);
>       }
> diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
> index e6369078..3713d033 100644
> --- a/src/acpica/source/components/utilities/utosi.c
> +++ b/src/acpica/source/components/utilities/utosi.c
> @@ -217,6 +217,8 @@ static ACPI_INTERFACE_INFO    AcpiDefaultSupportedInterfaces[] =
>       {"Windows 2016",        NULL, 0, ACPI_OSI_WIN_10_RS1},       /* Windows 10 version 1607 - Added 12/2017 */
>       {"Windows 2017",        NULL, 0, ACPI_OSI_WIN_10_RS2},       /* Windows 10 version 1703 - Added 12/2017 */
>       {"Windows 2017.2",      NULL, 0, ACPI_OSI_WIN_10_RS3},       /* Windows 10 version 1709 - Added 02/2018 */
> +    {"Windows 2018",        NULL, 0, ACPI_OSI_WIN_10_RS4},       /* Windows 10 version 1803 - Added 11/2018 */
> +    {"Windows 2018.2",      NULL, 0, ACPI_OSI_WIN_10_RS5},       /* Windows 10 version 1809 - Added 11/2018 */
>   
>       /* Feature Group Strings */
>   
> diff --git a/src/acpica/source/include/acglobal.h b/src/acpica/source/include/acglobal.h
> index 3c2a4ed4..b21c92bd 100644
> --- a/src/acpica/source/include/acglobal.h
> +++ b/src/acpica/source/include/acglobal.h
> @@ -317,11 +317,7 @@ ACPI_GLOBAL (BOOLEAN,                   AcpiGbl_DisableMemTracking);
>    *
>    ****************************************************************************/
>   
> -#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
>   #define NUM_PREDEFINED_NAMES            10
> -#else
> -#define NUM_PREDEFINED_NAMES            9
> -#endif
>   
>   ACPI_GLOBAL (ACPI_NAMESPACE_NODE,       AcpiGbl_RootNodeStruct);
>   ACPI_GLOBAL (ACPI_NAMESPACE_NODE *,     AcpiGbl_RootNode);
> diff --git a/src/acpica/source/include/acoutput.h b/src/acpica/source/include/acoutput.h
> index 358ff55a..2a4d3157 100644
> --- a/src/acpica/source/include/acoutput.h
> +++ b/src/acpica/source/include/acoutput.h
> @@ -216,7 +216,8 @@
>   #define ACPI_LV_RESOURCES           0x00010000
>   #define ACPI_LV_USER_REQUESTS       0x00020000
>   #define ACPI_LV_PACKAGE             0x00040000
> -#define ACPI_LV_VERBOSITY1          0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS
> +#define ACPI_LV_EVALUATION          0x00080000
> +#define ACPI_LV_VERBOSITY1          0x000FFF40 | ACPI_LV_ALL_EXCEPTIONS
>   
>   /* Trace verbosity level 2 [Function tracing and memory allocation] */
>   
> @@ -285,6 +286,7 @@
>   #define ACPI_DB_INTERRUPTS          ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS)
>   #define ACPI_DB_USER_REQUESTS       ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS)
>   #define ACPI_DB_PACKAGE             ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE)
> +#define ACPI_DB_EVALUATION          ACPI_DEBUG_LEVEL (ACPI_LV_EVALUATION)
>   #define ACPI_DB_MUTEX               ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX)
>   #define ACPI_DB_EVENTS              ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS)
>   
> @@ -292,7 +294,7 @@
>   
>   /* Defaults for DebugLevel, debug and normal */
>   
> -#define ACPI_DEBUG_DEFAULT          (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
> +#define ACPI_DEBUG_DEFAULT          (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_EVALUATION | ACPI_LV_REPAIR)
>   #define ACPI_NORMAL_DEFAULT         (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
>   #define ACPI_DEBUG_ALL              (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
>   
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index 27e9aa7f..24deae67 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>   
>   /* Current ACPICA subsystem version in YYYYMMDD format */
>   
> -#define ACPI_CA_VERSION                 0x20181031
> +#define ACPI_CA_VERSION                 0x20181213
>   
>   #include "acconfig.h"
>   #include "actypes.h"
> diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
> index 9c55d357..17705726 100644
> --- a/src/acpica/source/include/acstruct.h
> +++ b/src/acpica/source/include/acstruct.h
> @@ -205,6 +205,8 @@ typedef struct acpi_walk_state
>       ACPI_PARSE_STATE                ParserState;        /* Current state of parser */
>       UINT32                          PrevArgTypes;
>       UINT32                          ArgCount;           /* push for fixed or var args */
> +    UINT16                          MethodNestingDepth;
> +    UINT8                           MethodIsNested;
>   
>       struct acpi_namespace_node      Arguments[ACPI_METHOD_NUM_ARGS];        /* Control method arguments */
>       struct acpi_namespace_node      LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
> @@ -219,7 +221,8 @@ typedef struct acpi_walk_state
>       struct acpi_namespace_node      *MethodCallNode;    /* Called method Node*/
>       ACPI_PARSE_OBJECT               *MethodCallOp;      /* MethodCall Op if running a method */
>       union acpi_operand_object       *MethodDesc;        /* Method descriptor if running a method */
> -    struct acpi_namespace_node      *MethodNode;        /* Method node if running a method. */
> +    struct acpi_namespace_node      *MethodNode;        /* Method node if running a method */
> +    char                            *MethodPathname;    /* Full pathname of running method */
>       ACPI_PARSE_OBJECT               *Op;                /* Current parser op */
>       const ACPI_OPCODE_INFO          *OpInfo;            /* Info on current opcode */
>       ACPI_PARSE_OBJECT               *Origin;            /* Start of walk [Obsolete] */
> diff --git a/src/acpica/source/include/actbl.h b/src/acpica/source/include/actbl.h
> index 58a9b734..f6a2f7c5 100644
> --- a/src/acpica/source/include/actbl.h
> +++ b/src/acpica/source/include/actbl.h
> @@ -182,6 +182,7 @@
>   #define ACPI_SIG_XSDT           "XSDT"      /* Extended  System Description Table */
>   #define ACPI_SIG_SSDT           "SSDT"      /* Secondary System Description Table */
>   #define ACPI_RSDP_NAME          "RSDP"      /* Short name for RSDP, not signature */
> +#define ACPI_OEM_NAME           "OEM"       /* Short name for OEM, not signature */
>   
>   
>   /*
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index 4d2438c9..396fb524 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -678,6 +678,10 @@ typedef UINT64                          ACPI_INTEGER;
>   #define ACPI_VALIDATE_RSDP_SIG(a)       (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8))
>   #define ACPI_MAKE_RSDP_SIG(dest)        (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8))
>   
> +/* Support for OEMx signature (x can be any character) */
> +#define ACPI_IS_OEM_SIG(a)        (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_OEM_NAME, 3) &&\
> +                                      strnlen (a, ACPI_NAME_SIZE) == ACPI_NAME_SIZE)
> +
>   /*
>    * Algorithm to obtain access bit width.
>    * Can be used with AccessWidth of ACPI_GENERIC_ADDRESS and AccessSize of
> @@ -1512,6 +1516,8 @@ typedef enum
>   #define ACPI_OSI_WIN_10_RS1             0x0E
>   #define ACPI_OSI_WIN_10_RS2             0x0F
>   #define ACPI_OSI_WIN_10_RS3             0x10
> +#define ACPI_OSI_WIN_10_RS4             0x11
> +#define ACPI_OSI_WIN_10_RS5             0x12
>   
>   
>   /* Definitions of getopt */
> 
Acked-by: Ivan Hu <ivan.hu@canonical.com>
Alex Hung Dec. 17, 2018, 2:56 a.m. UTC | #2
On 2018-12-14 1:15 a.m., Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> changes in this release of ACPICA are detailed at the following
> link on the ACPICA developer mailing list:
> 
> https://lists.acpica.org/pipermail/devel/2018-December/001849.html
> 
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/acpica/source/common/ahpredef.c           | 16 +--
>   src/acpica/source/common/dmswitch.c           |  6 ++
>   src/acpica/source/compiler/aslcodegen.c       |  6 --
>   src/acpica/source/compiler/aslcompile.c       | 27 +++---
>   src/acpica/source/compiler/aslcompiler.h      |  4 +
>   src/acpica/source/compiler/aslerror.c         | 97 ++++++++++++++++++-
>   src/acpica/source/compiler/aslglobal.h        |  4 +-
>   src/acpica/source/compiler/asllength.c        |  5 +-
>   src/acpica/source/compiler/aslopcodes.c       |  9 --
>   src/acpica/source/compiler/asltransform.c     |  6 +-
>   .../source/components/dispatcher/dsmethod.c   | 12 +++
>   .../source/components/dispatcher/dsobject.c   | 10 --
>   .../source/components/dispatcher/dspkginit.c  | 26 +++++
>   .../source/components/dispatcher/dsutils.c    |  2 -
>   .../source/components/dispatcher/dswload.c    |  6 +-
>   .../source/components/dispatcher/dswload2.c   |  6 --
>   .../source/components/dispatcher/dswstate.c   |  2 +-
>   .../source/components/executer/exconvrt.c     | 49 +++++++---
>   .../source/components/executer/excreate.c     |  2 -
>   .../source/components/executer/exoparg2.c     |  6 +-
>   .../source/components/executer/exserial.c     | 20 +---
>   .../source/components/executer/exutils.c      |  2 -
>   .../source/components/namespace/nseval.c      | 12 +++
>   .../source/components/namespace/nsload.c      |  2 -
>   .../source/components/namespace/nsparse.c     | 10 ++
>   src/acpica/source/components/parser/psloop.c  |  2 +-
>   src/acpica/source/components/parser/psparse.c | 12 +++
>   src/acpica/source/components/parser/psxface.c |  6 ++
>   .../source/components/utilities/utglobal.c    |  3 -
>   .../source/components/utilities/utmisc.c      |  3 +-
>   .../source/components/utilities/utosi.c       |  2 +
>   src/acpica/source/include/acglobal.h          |  4 -
>   src/acpica/source/include/acoutput.h          |  6 +-
>   src/acpica/source/include/acpixf.h            |  2 +-
>   src/acpica/source/include/acstruct.h          |  5 +-
>   src/acpica/source/include/actbl.h             |  1 +
>   src/acpica/source/include/actypes.h           |  6 ++
>   37 files changed, 271 insertions(+), 128 deletions(-)
> 
> diff --git a/src/acpica/source/common/ahpredef.c b/src/acpica/source/common/ahpredef.c
> index 0a558722..1c3af7ef 100644
> --- a/src/acpica/source/common/ahpredef.c
> +++ b/src/acpica/source/common/ahpredef.c
> @@ -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"),
> diff --git a/src/acpica/source/common/dmswitch.c b/src/acpica/source/common/dmswitch.c
> index f04ec743..46546fbb 100644
> --- a/src/acpica/source/common/dmswitch.c
> +++ b/src/acpica/source/common/dmswitch.c
> @@ -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 */
> diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
> index 7b2e3e5c..356011f0 100644
> --- a/src/acpica/source/compiler/aslcodegen.c
> +++ b/src/acpica/source/compiler/aslcodegen.c
> @@ -773,12 +773,6 @@ CgWriteNode (
>           return;
>       }
>   
> -    if ((Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) &&
> -        AslGbl_DoExternals == FALSE)
> -    {
> -        return;
> -    }
> -
>       Op->Asl.FinalAmlLength = 0;
>   
>       switch (Op->Asl.AmlOpcode)
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 4ae19076..1b8838aa 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -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
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index bd02879d..c5e8cb0c 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -474,6 +474,10 @@ ACPI_STATUS
>   AslExpectException (
>       char                    *MessageIdString);
>   
> +ACPI_STATUS
> +AslElevateException (
> +    char                    *MessageIdString);
> +
>   ACPI_STATUS
>   AslDisableException (
>       char                    *MessageIdString);
> diff --git a/src/acpica/source/compiler/aslerror.c b/src/acpica/source/compiler/aslerror.c
> index 10ea3ec1..2a18dded 100644
> --- a/src/acpica/source/compiler/aslerror.c
> +++ b/src/acpica/source/compiler/aslerror.c
> @@ -201,6 +201,11 @@ AePrintSubError (
>       FILE                    *OutputFile,
>       ASL_ERROR_MSG           *Enode);
>   
> +static UINT8
> +GetModifiedLevel (
> +    UINT8                   Level,
> +    UINT16                  MessageId);
> +
>   
>   /*******************************************************************************
>    *
> @@ -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,6 +1005,44 @@ 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
> @@ -1155,6 +1199,51 @@ AslDisableException (
>   }
>   
>   
> +/*******************************************************************************
> + *
> + * 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);
> +}
> +
>   /*******************************************************************************
>    *
>    * FUNCTION:    AslIsExceptionDisabled
> diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
> index c3e69cbb..fd00da78 100644
> --- a/src/acpica/source/compiler/aslglobal.h
> +++ b/src/acpica/source/compiler/aslglobal.h
> @@ -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 (AslGbl_AllExceptionsDisable
>   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 (AslGbl_CurrentAmlOffset, 0)
>   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_StringBuffer[ASL_STRING_BUFFER_SIZE];
>   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 */
> diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
> index 696dc242..8fef83b9 100644
> --- a/src/acpica/source/compiler/asllength.c
> +++ b/src/acpica/source/compiler/asllength.c
> @@ -519,10 +519,7 @@ CgGenerateAmlLengths (
>   
>       case PARSEOP_EXTERNAL:
>   
> -        if (AslGbl_DoExternals == TRUE)
> -        {
> -            CgGenerateAmlOpcodeLength (Op);
> -        }
> +        CgGenerateAmlOpcodeLength (Op);
>           break;
>   
>       default:
> diff --git a/src/acpica/source/compiler/aslopcodes.c b/src/acpica/source/compiler/aslopcodes.c
> index 218223b8..32d04781 100644
> --- a/src/acpica/source/compiler/aslopcodes.c
> +++ b/src/acpica/source/compiler/aslopcodes.c
> @@ -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)
> diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
> index 324b0364..2bf32db4 100644
> --- a/src/acpica/source/compiler/asltransform.c
> +++ b/src/acpica/source/compiler/asltransform.c
> @@ -460,11 +460,7 @@ TrTransformSubtree (
>   
>       case PARSEOP_EXTERNAL:
>   
> -        if (AslGbl_DoExternals == TRUE)
> -        {
> -            ExDoExternal (Op);
> -        }
> -
> +        ExDoExternal (Op);
>           break;
>   
>       case PARSEOP___METHOD__:
> diff --git a/src/acpica/source/components/dispatcher/dsmethod.c b/src/acpica/source/components/dispatcher/dsmethod.c
> index 3db8010f..009151f9 100644
> --- a/src/acpica/source/components/dispatcher/dsmethod.c
> +++ b/src/acpica/source/components/dispatcher/dsmethod.c
> @@ -720,6 +720,8 @@ AcpiDsCallControlMethod (
>           goto Cleanup;
>       }
>   
> +    NextWalkState->MethodNestingDepth = ThisWalkState->MethodNestingDepth + 1;
> +
>       /*
>        * Delete the operands on the previous walkstate operand stack
>        * (they were copied to new objects)
> @@ -738,6 +740,16 @@ AcpiDsCallControlMethod (
>           "**** Begin nested execution of [%4.4s] **** WalkState=%p\n",
>           MethodNode->Name.Ascii, NextWalkState));
>   
> +    ThisWalkState->MethodPathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE);
> +    ThisWalkState->MethodIsNested = TRUE;
> +
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  %*s%s\n", "   Nested method call",
> +        NextWalkState->MethodNestingDepth * 3, " ",
> +        &ThisWalkState->MethodPathname[1]));
> +
>       /* Invoke an internal method if necessary */
>   
>       if (ObjDesc->Method.InfoFlags & ACPI_METHOD_INTERNAL_ONLY)
> diff --git a/src/acpica/source/components/dispatcher/dsobject.c b/src/acpica/source/components/dispatcher/dsobject.c
> index e9b7413a..4ec23d46 100644
> --- a/src/acpica/source/components/dispatcher/dsobject.c
> +++ b/src/acpica/source/components/dispatcher/dsobject.c
> @@ -161,7 +161,6 @@
>           ACPI_MODULE_NAME    ("dsobject")
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiDsBuildInternalObject
> @@ -460,7 +459,6 @@ AcpiDsCreateNode (
>       return_ACPI_STATUS (Status);
>   }
>   
> -#endif /* ACPI_NO_METHOD_EXECUTION */
>   
>   
>   /*******************************************************************************
> @@ -571,9 +569,7 @@ AcpiDsInitObjectFromOp (
>   
>                   /* Truncate value if we are executing from a 32-bit ACPI table */
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>                   (void) AcpiExTruncateFor32bitTable (ObjDesc);
> -#endif
>                   break;
>   
>               case AML_REVISION_OP:
> @@ -594,7 +590,6 @@ AcpiDsInitObjectFromOp (
>   
>               ObjDesc->Integer.Value = Op->Common.Value.Integer;
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>               if (AcpiExTruncateFor32bitTable (ObjDesc))
>               {
>                   /* Warn if we found a 64-bit constant in a 32-bit table */
> @@ -604,7 +599,6 @@ AcpiDsInitObjectFromOp (
>                       ACPI_FORMAT_UINT64 (Op->Common.Value.Integer),
>                       (UINT32) ObjDesc->Integer.Value));
>               }
> -#endif
>               break;
>   
>           default:
> @@ -642,12 +636,10 @@ AcpiDsInitObjectFromOp (
>               ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_LOCAL_OP;
>               ObjDesc->Reference.Class = ACPI_REFCLASS_LOCAL;
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>               Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL,
>                   ObjDesc->Reference.Value, WalkState,
>                   ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
>                       &ObjDesc->Reference.Object));
> -#endif
>               break;
>   
>           case AML_TYPE_METHOD_ARGUMENT:
> @@ -657,12 +649,10 @@ AcpiDsInitObjectFromOp (
>               ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_ARG_OP;
>               ObjDesc->Reference.Class = ACPI_REFCLASS_ARG;
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>               Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG,
>                   ObjDesc->Reference.Value, WalkState,
>                   ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
>                       &ObjDesc->Reference.Object));
> -#endif
>               break;
>   
>           default: /* Object name or Debug object */
> diff --git a/src/acpica/source/components/dispatcher/dspkginit.c b/src/acpica/source/components/dispatcher/dspkginit.c
> index 9e1cd611..1e7e7383 100644
> --- a/src/acpica/source/components/dispatcher/dspkginit.c
> +++ b/src/acpica/source/components/dispatcher/dspkginit.c
> @@ -308,6 +308,32 @@ AcpiDsBuildInternalPackageObj (
>       {
>           if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP)
>           {
> +            if (!Arg->Common.Node)
> +            {
> +                /*
> +                 * This is the case where an expression has returned a value.
> +                 * The use of expressions (TermArgs) within individual
> +                 * package elements is not supported by the AML interpreter,
> +                 * even though the ASL grammar supports it. Example:
> +                 *
> +                 *      Name (INT1, 0x1234)
> +                 *
> +                 *      Name (PKG3, Package () {
> +                 *          Add (INT1, 0xAAAA0000)
> +                 *      })
> +                 *
> +                 *  1) No known AML interpreter supports this type of construct
> +                 *  2) This fixes a fault if the construct is encountered
> +                 */
> +                ACPI_EXCEPTION ((AE_INFO, AE_SUPPORT,
> +                    "Expressions within package elements are not supported"));
> +
> +                /* Cleanup the return object, it is not needed */
> +
> +                AcpiUtRemoveReference (WalkState->Results->Results.ObjDesc[0]);
> +                return_ACPI_STATUS (AE_SUPPORT);
> +            }
> +
>               if (Arg->Common.Node->Type == ACPI_TYPE_METHOD)
>               {
>                   /*
> diff --git a/src/acpica/source/components/dispatcher/dsutils.c b/src/acpica/source/components/dispatcher/dsutils.c
> index c03f9268..20a9e256 100644
> --- a/src/acpica/source/components/dispatcher/dsutils.c
> +++ b/src/acpica/source/components/dispatcher/dsutils.c
> @@ -209,7 +209,6 @@ AcpiDsClearImplicitReturn (
>   }
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiDsDoImplicitReturn
> @@ -583,7 +582,6 @@ AcpiDsClearOperands (
>       WalkState->NumOperands = 0;
>       return_VOID;
>   }
> -#endif
>   
>   
>   /*******************************************************************************
> diff --git a/src/acpica/source/components/dispatcher/dswload.c b/src/acpica/source/components/dispatcher/dswload.c
> index 91f5b305..db0f0e85 100644
> --- a/src/acpica/source/components/dispatcher/dswload.c
> +++ b/src/acpica/source/components/dispatcher/dswload.c
> @@ -221,12 +221,10 @@ AcpiDsInitCallbacks (
>   
>           /* Execution pass */
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>           WalkState->ParseFlags        |= ACPI_PARSE_EXECUTE  |
>                                           ACPI_PARSE_DELETE_TREE;
>           WalkState->DescendingCallback = AcpiDsExecBeginOp;
>           WalkState->AscendingCallback  = AcpiDsExecEndOp;
> -#endif
>           break;
>   
>       default:
> @@ -517,7 +515,7 @@ AcpiDsLoad1BeginOp (
>   
>       /* Initialize the op */
>   
> -#if (defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY))
> +#ifdef ACPI_CONSTANT_EVAL_ONLY
>       Op->Named.Path = Path;
>   #endif
>   
> @@ -580,7 +578,6 @@ AcpiDsLoad1EndOp (
>   
>       ObjectType = WalkState->OpInfo->ObjectType;
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>       if (WalkState->OpInfo->Flags & AML_FIELD)
>       {
>           /*
> @@ -626,7 +623,6 @@ AcpiDsLoad1EndOp (
>               }
>           }
>       }
> -#endif
>   
>       if (Op->Common.AmlOpcode == AML_NAME_OP)
>       {
> diff --git a/src/acpica/source/components/dispatcher/dswload2.c b/src/acpica/source/components/dispatcher/dswload2.c
> index 4b6e41d8..7387690e 100644
> --- a/src/acpica/source/components/dispatcher/dswload2.c
> +++ b/src/acpica/source/components/dispatcher/dswload2.c
> @@ -529,10 +529,8 @@ AcpiDsLoad2EndOp (
>       ACPI_NAMESPACE_NODE     *Node;
>       ACPI_PARSE_OBJECT       *Arg;
>       ACPI_NAMESPACE_NODE     *NewNode;
> -#ifndef ACPI_NO_METHOD_EXECUTION
>       UINT32                  i;
>       UINT8                   RegionSpace;
> -#endif
>   
>   
>       ACPI_FUNCTION_TRACE (DsLoad2EndOp);
> @@ -622,7 +620,6 @@ AcpiDsLoad2EndOp (
>   
>       switch (WalkState->OpInfo->Type)
>       {
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   
>       case AML_TYPE_CREATE_FIELD:
>           /*
> @@ -718,13 +715,11 @@ AcpiDsLoad2EndOp (
>           }
>   
>           break;
> -#endif /* ACPI_NO_METHOD_EXECUTION */
>   
>       case AML_TYPE_NAMED_COMPLEX:
>   
>           switch (Op->Common.AmlOpcode)
>           {
> -#ifndef ACPI_NO_METHOD_EXECUTION
>           case AML_REGION_OP:
>           case AML_DATA_REGION_OP:
>   
> @@ -809,7 +804,6 @@ AcpiDsLoad2EndOp (
>               }
>               break;
>   
> -#endif /* ACPI_NO_METHOD_EXECUTION */
>   
>           default:
>   
> diff --git a/src/acpica/source/components/dispatcher/dswstate.c b/src/acpica/source/components/dispatcher/dswstate.c
> index 7994cb12..409d7f71 100644
> --- a/src/acpica/source/components/dispatcher/dswstate.c
> +++ b/src/acpica/source/components/dispatcher/dswstate.c
> @@ -733,7 +733,7 @@ AcpiDsCreateWalkState (
>   
>       /* Init the method args/local */
>   
> -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY))
> +#ifndef ACPI_CONSTANT_EVAL_ONLY
>       AcpiDsMethodDataInit (WalkState);
>   #endif
>   
> diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
> index 5c58746e..a147ba21 100644
> --- a/src/acpica/source/components/executer/exconvrt.c
> +++ b/src/acpica/source/components/executer/exconvrt.c
> @@ -496,7 +496,7 @@ AcpiExConvertToAscii (
>   
>           /* HexLength: 2 ascii hex chars per data byte */
>   
> -        HexLength = ACPI_MUL_2 (DataWidth);
> +        HexLength = (DataWidth * 2);
>           for (i = 0, j = (HexLength-1); i < HexLength; i++, j--)
>           {
>               /* Get one hex digit, most significant digits first */
> @@ -539,7 +539,8 @@ AcpiExConvertToAscii (
>    *
>    * RETURN:      Status
>    *
> - * DESCRIPTION: Convert an ACPI Object to a string
> + * DESCRIPTION: Convert an ACPI Object to a string. Supports both implicit
> + *              and explicit conversions and related rules.
>    *
>    ******************************************************************************/
>   
> @@ -574,9 +575,11 @@ AcpiExConvertToString (
>           switch (Type)
>           {
>           case ACPI_EXPLICIT_CONVERT_DECIMAL:
> -
> -            /* Make room for maximum decimal number */
> -
> +            /*
> +             * From ToDecimalString, integer source.
> +             *
> +             * Make room for the maximum decimal number size
> +             */
>               StringLength = ACPI_MAX_DECIMAL_DIGITS;
>               Base = 10;
>               break;
> @@ -620,8 +623,10 @@ AcpiExConvertToString (
>           {
>           case ACPI_EXPLICIT_CONVERT_DECIMAL: /* Used by ToDecimalString */
>               /*
> -             * From ACPI: "If Data is a buffer, it is converted to a string of
> -             * decimal values separated by commas."
> +             * Explicit conversion from the ToDecimalString ASL operator.
> +             *
> +             * From ACPI: "If the input is a buffer, it is converted to a
> +             * a string of decimal values separated by commas."
>                */
>               Base = 10;
>   
> @@ -648,20 +653,29 @@ AcpiExConvertToString (
>   
>           case ACPI_IMPLICIT_CONVERT_HEX:
>               /*
> +             * Implicit buffer-to-string conversion
> +             *
>                * From the ACPI spec:
> -             *"The entire contents of the buffer are converted to a string of
> +             * "The entire contents of the buffer are converted to a string of
>                * two-character hexadecimal numbers, each separated by a space."
> +             *
> +             * Each hex number is prefixed with 0x (11/2018)
>                */
>               Separator = ' ';
> -            StringLength = (ObjDesc->Buffer.Length * 3);
> +            StringLength = (ObjDesc->Buffer.Length * 5);
>               break;
>   
> -        case ACPI_EXPLICIT_CONVERT_HEX:     /* Used by ToHexString */
> +        case ACPI_EXPLICIT_CONVERT_HEX:
>               /*
> +             * Explicit conversion from the ToHexString ASL operator.
> +             *
>                * From ACPI: "If Data is a buffer, it is converted to a string of
>                * hexadecimal values separated by commas."
> +             *
> +             * Each hex number is prefixed with 0x (11/2018)
>                */
> -            StringLength = (ObjDesc->Buffer.Length * 3);
> +            Separator = ',';
> +            StringLength = (ObjDesc->Buffer.Length * 5);
>               break;
>   
>           default:
> @@ -692,9 +706,20 @@ AcpiExConvertToString (
>            */
>           for (i = 0; i < ObjDesc->Buffer.Length; i++)
>           {
> +            if (Base == 16)
> +            {
> +                /* Emit 0x prefix for explict/implicit hex conversion */
> +
> +                *NewBuf++ = '0';
> +                *NewBuf++ = 'x';
> +            }
> +
>               NewBuf += AcpiExConvertToAscii (
>                   (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1);
> -            *NewBuf++ = Separator; /* each separated by a comma or space */
> +
> +            /* Each digit is separated by either a comma or space */
> +
> +            *NewBuf++ = Separator;
>           }
>   
>           /*
> diff --git a/src/acpica/source/components/executer/excreate.c b/src/acpica/source/components/executer/excreate.c
> index 524960c2..f4dd8298 100644
> --- a/src/acpica/source/components/executer/excreate.c
> +++ b/src/acpica/source/components/executer/excreate.c
> @@ -161,7 +161,6 @@
>           ACPI_MODULE_NAME    ("excreate")
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiExCreateAlias
> @@ -573,7 +572,6 @@ AcpiExCreatePowerResource (
>       AcpiUtRemoveReference (ObjDesc);
>       return_ACPI_STATUS (Status);
>   }
> -#endif
>   
>   
>   /*******************************************************************************
> diff --git a/src/acpica/source/components/executer/exoparg2.c b/src/acpica/source/components/executer/exoparg2.c
> index 73d0bd26..0693dcbe 100644
> --- a/src/acpica/source/components/executer/exoparg2.c
> +++ b/src/acpica/source/components/executer/exoparg2.c
> @@ -460,9 +460,9 @@ AcpiExOpcode_2A_1T_1R (
>            * NOTE: A length of zero is ok, and will create a zero-length, null
>            *       terminated string.
>            */
> -        while ((Length < Operand[0]->Buffer.Length) &&
> -               (Length < Operand[1]->Integer.Value) &&
> -               (Operand[0]->Buffer.Pointer[Length]))
> +        while ((Length < Operand[0]->Buffer.Length) &&  /* Length of input buffer */
> +               (Length < Operand[1]->Integer.Value) &&  /* Length operand */
> +               (Operand[0]->Buffer.Pointer[Length]))    /* Null terminator */
>           {
>               Length++;
>           }
> diff --git a/src/acpica/source/components/executer/exserial.c b/src/acpica/source/components/executer/exserial.c
> index 73f2aa4a..553aedfb 100644
> --- a/src/acpica/source/components/executer/exserial.c
> +++ b/src/acpica/source/components/executer/exserial.c
> @@ -445,14 +445,12 @@ AcpiExWriteSerialBus (
>       case ACPI_ADR_SPACE_SMBUS:
>   
>           BufferLength = ACPI_SMBUS_BUFFER_SIZE;
> -        DataLength = ACPI_SMBUS_DATA_SIZE;
>           Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16);
>           break;
>   
>       case ACPI_ADR_SPACE_IPMI:
>   
>           BufferLength = ACPI_IPMI_BUFFER_SIZE;
> -        DataLength = ACPI_IPMI_DATA_SIZE;
>           Function = ACPI_WRITE;
>           break;
>   
> @@ -471,7 +469,6 @@ AcpiExWriteSerialBus (
>           /* Add header length to get the full size of the buffer */
>   
>           BufferLength += ACPI_SERIAL_HEADER_SIZE;
> -        DataLength = SourceDesc->Buffer.Pointer[1];
>           Function = ACPI_WRITE | (AccessorType << 16);
>           break;
>   
> @@ -479,21 +476,6 @@ AcpiExWriteSerialBus (
>           return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
>       }
>   
> -#if 0
> -OBSOLETE?
> -    /* Check for possible buffer overflow */
> -
> -    if (DataLength > SourceDesc->Buffer.Length)
> -    {
> -        ACPI_ERROR ((AE_INFO,
> -            "Length in buffer header (%u)(%u) is greater than "
> -            "the physical buffer length (%u) and will overflow",
> -            DataLength, BufferLength, SourceDesc->Buffer.Length));
> -
> -        return_ACPI_STATUS (AE_AML_BUFFER_LIMIT);
> -    }
> -#endif
> -
>       /* Create the transfer/bidirectional/return buffer */
>   
>       BufferDesc = AcpiUtCreateBufferObject (BufferLength);
> @@ -505,6 +487,8 @@ OBSOLETE?
>       /* Copy the input buffer data to the transfer buffer */
>   
>       Buffer = BufferDesc->Buffer.Pointer;
> +    DataLength = (BufferLength < SourceDesc->Buffer.Length ?
> +        BufferLength : SourceDesc->Buffer.Length);
>       memcpy (Buffer, SourceDesc->Buffer.Pointer, DataLength);
>   
>       /* Lock entire transaction if requested */
> diff --git a/src/acpica/source/components/executer/exutils.c b/src/acpica/source/components/executer/exutils.c
> index a38ce940..06ad2b5f 100644
> --- a/src/acpica/source/components/executer/exutils.c
> +++ b/src/acpica/source/components/executer/exutils.c
> @@ -181,7 +181,6 @@ AcpiExDigitsNeeded (
>       UINT32                  Base);
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiExEnterInterpreter
> @@ -615,4 +614,3 @@ AcpiIsValidSpaceId (
>       return (TRUE);
>   }
>   
> -#endif
> diff --git a/src/acpica/source/components/namespace/nseval.c b/src/acpica/source/components/namespace/nseval.c
> index 8262d992..0dbac5bf 100644
> --- a/src/acpica/source/components/namespace/nseval.c
> +++ b/src/acpica/source/components/namespace/nseval.c
> @@ -259,6 +259,12 @@ AcpiNsEvaluate (
>           return_ACPI_STATUS (AE_NO_MEMORY);
>       }
>   
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  %s (%s)\n", "   Enter evaluation",
> +        &Info->FullPathname[1], AcpiUtGetTypeName (Info->Node->Type)));
> +
>       /* Count the number of arguments being passed in */
>   
>       Info->ParamCount = 0;
> @@ -445,6 +451,12 @@ AcpiNsEvaluate (
>           Info->RelativePathname));
>   
>   Cleanup:
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  %s\n", "   Exit evaluation",
> +        &Info->FullPathname[1]));
> +
>       /*
>        * Namespace was unlocked by the handling AcpiNs* function, so we
>        * just free the pathname and return
> diff --git a/src/acpica/source/components/namespace/nsload.c b/src/acpica/source/components/namespace/nsload.c
> index 698d3a57..68946074 100644
> --- a/src/acpica/source/components/namespace/nsload.c
> +++ b/src/acpica/source/components/namespace/nsload.c
> @@ -173,7 +173,6 @@ AcpiNsDeleteSubtree (
>   #endif
>   
>   
> -#ifndef ACPI_NO_METHOD_EXECUTION
>   /*******************************************************************************
>    *
>    * FUNCTION:    AcpiNsLoadTable
> @@ -477,4 +476,3 @@ AcpiNsUnloadNamespace (
>       return_ACPI_STATUS (Status);
>   }
>   #endif
> -#endif
> diff --git a/src/acpica/source/components/namespace/nsparse.c b/src/acpica/source/components/namespace/nsparse.c
> index 8e86ee4c..e781a4de 100644
> --- a/src/acpica/source/components/namespace/nsparse.c
> +++ b/src/acpica/source/components/namespace/nsparse.c
> @@ -261,8 +261,18 @@ AcpiNsExecuteTable (
>           goto Cleanup;
>       }
>   
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  (Definition Block level)\n", "Module-level evaluation"));
> +
>       Status = AcpiPsExecuteTable (Info);
>   
> +    /* Optional object evaluation log */
> +
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
> +        "%-26s:  (Definition Block level)\n", "Module-level complete"));
> +
>   Cleanup:
>       if (Info)
>       {
> diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
> index 9625834c..1fa2c880 100644
> --- a/src/acpica/source/components/parser/psloop.c
> +++ b/src/acpica/source/components/parser/psloop.c
> @@ -580,7 +580,7 @@ AcpiPsParseLoop (
>       ParserState = &WalkState->ParserState;
>       WalkState->ArgTypes = 0;
>   
> -#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY))
> +#ifndef ACPI_CONSTANT_EVAL_ONLY
>   
>       if (WalkState->WalkType & ACPI_WALK_METHOD_RESTART)
>       {
> diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
> index 0ad62b77..378bfab5 100644
> --- a/src/acpica/source/components/parser/psparse.c
> +++ b/src/acpica/source/components/parser/psparse.c
> @@ -637,6 +637,18 @@ AcpiPsParseAml (
>               "Completed one call to walk loop, %s State=%p\n",
>               AcpiFormatException (Status), WalkState));
>   
> +        if (WalkState->MethodPathname && WalkState->MethodIsNested)
> +        {
> +            /* Optional object evaluation log */
> +
> +            ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION, "%-26s:  %*s%s\n",
> +                "   Exit nested method",
> +                (WalkState->MethodNestingDepth + 1) * 3, " ",
> +                &WalkState->MethodPathname[1]));
> +
> +            ACPI_FREE (WalkState->MethodPathname);
> +            WalkState->MethodIsNested = FALSE;
> +        }
>           if (Status == AE_CTRL_TRANSFER)
>           {
>               /*
> diff --git a/src/acpica/source/components/parser/psxface.c b/src/acpica/source/components/parser/psxface.c
> index 8516fe3a..54f54eab 100644
> --- a/src/acpica/source/components/parser/psxface.c
> +++ b/src/acpica/source/components/parser/psxface.c
> @@ -307,6 +307,9 @@ AcpiPsExecuteMethod (
>           goto Cleanup;
>       }
>   
> +    WalkState->MethodPathname = Info->FullPathname;
> +    WalkState->MethodIsNested = FALSE;
> +
>       if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
>       {
>           WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
> @@ -437,6 +440,9 @@ AcpiPsExecuteTable (
>           goto Cleanup;
>       }
>   
> +    WalkState->MethodPathname = Info->FullPathname;
> +    WalkState->MethodIsNested = FALSE;
> +
>       if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
>       {
>           WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
> diff --git a/src/acpica/source/components/utilities/utglobal.c b/src/acpica/source/components/utilities/utglobal.c
> index a41c17da..d4cde4db 100644
> --- a/src/acpica/source/components/utilities/utglobal.c
> +++ b/src/acpica/source/components/utilities/utglobal.c
> @@ -235,10 +235,7 @@ const ACPI_PREDEFINED_NAMES     AcpiGbl_PreDefinedNames[] =
>       {"_REV",    ACPI_TYPE_INTEGER,          ACPI_CAST_PTR (char, 2)},
>       {"_OS_",    ACPI_TYPE_STRING,           ACPI_OS_NAME},
>       {"_GL_",    ACPI_TYPE_MUTEX,            ACPI_CAST_PTR (char, 1)},
> -
> -#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
>       {"_OSI",    ACPI_TYPE_METHOD,           ACPI_CAST_PTR (char, 1)},
> -#endif
>   
>       /* Table terminator */
>   
> diff --git a/src/acpica/source/components/utilities/utmisc.c b/src/acpica/source/components/utilities/utmisc.c
> index 0e04aff0..c6dbf915 100644
> --- a/src/acpica/source/components/utilities/utmisc.c
> +++ b/src/acpica/source/components/utilities/utmisc.c
> @@ -217,7 +217,8 @@ AcpiUtIsAmlTable (
>       if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) ||
>           ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) ||
>           ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) ||
> -        ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT))
> +        ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT) ||
> +        ACPI_IS_OEM_SIG (Table->Signature))
>       {
>           return (TRUE);
>       }
> diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
> index e6369078..3713d033 100644
> --- a/src/acpica/source/components/utilities/utosi.c
> +++ b/src/acpica/source/components/utilities/utosi.c
> @@ -217,6 +217,8 @@ static ACPI_INTERFACE_INFO    AcpiDefaultSupportedInterfaces[] =
>       {"Windows 2016",        NULL, 0, ACPI_OSI_WIN_10_RS1},       /* Windows 10 version 1607 - Added 12/2017 */
>       {"Windows 2017",        NULL, 0, ACPI_OSI_WIN_10_RS2},       /* Windows 10 version 1703 - Added 12/2017 */
>       {"Windows 2017.2",      NULL, 0, ACPI_OSI_WIN_10_RS3},       /* Windows 10 version 1709 - Added 02/2018 */
> +    {"Windows 2018",        NULL, 0, ACPI_OSI_WIN_10_RS4},       /* Windows 10 version 1803 - Added 11/2018 */
> +    {"Windows 2018.2",      NULL, 0, ACPI_OSI_WIN_10_RS5},       /* Windows 10 version 1809 - Added 11/2018 */
>   
>       /* Feature Group Strings */
>   
> diff --git a/src/acpica/source/include/acglobal.h b/src/acpica/source/include/acglobal.h
> index 3c2a4ed4..b21c92bd 100644
> --- a/src/acpica/source/include/acglobal.h
> +++ b/src/acpica/source/include/acglobal.h
> @@ -317,11 +317,7 @@ ACPI_GLOBAL (BOOLEAN,                   AcpiGbl_DisableMemTracking);
>    *
>    ****************************************************************************/
>   
> -#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
>   #define NUM_PREDEFINED_NAMES            10
> -#else
> -#define NUM_PREDEFINED_NAMES            9
> -#endif
>   
>   ACPI_GLOBAL (ACPI_NAMESPACE_NODE,       AcpiGbl_RootNodeStruct);
>   ACPI_GLOBAL (ACPI_NAMESPACE_NODE *,     AcpiGbl_RootNode);
> diff --git a/src/acpica/source/include/acoutput.h b/src/acpica/source/include/acoutput.h
> index 358ff55a..2a4d3157 100644
> --- a/src/acpica/source/include/acoutput.h
> +++ b/src/acpica/source/include/acoutput.h
> @@ -216,7 +216,8 @@
>   #define ACPI_LV_RESOURCES           0x00010000
>   #define ACPI_LV_USER_REQUESTS       0x00020000
>   #define ACPI_LV_PACKAGE             0x00040000
> -#define ACPI_LV_VERBOSITY1          0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS
> +#define ACPI_LV_EVALUATION          0x00080000
> +#define ACPI_LV_VERBOSITY1          0x000FFF40 | ACPI_LV_ALL_EXCEPTIONS
>   
>   /* Trace verbosity level 2 [Function tracing and memory allocation] */
>   
> @@ -285,6 +286,7 @@
>   #define ACPI_DB_INTERRUPTS          ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS)
>   #define ACPI_DB_USER_REQUESTS       ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS)
>   #define ACPI_DB_PACKAGE             ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE)
> +#define ACPI_DB_EVALUATION          ACPI_DEBUG_LEVEL (ACPI_LV_EVALUATION)
>   #define ACPI_DB_MUTEX               ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX)
>   #define ACPI_DB_EVENTS              ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS)
>   
> @@ -292,7 +294,7 @@
>   
>   /* Defaults for DebugLevel, debug and normal */
>   
> -#define ACPI_DEBUG_DEFAULT          (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
> +#define ACPI_DEBUG_DEFAULT          (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_EVALUATION | ACPI_LV_REPAIR)
>   #define ACPI_NORMAL_DEFAULT         (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
>   #define ACPI_DEBUG_ALL              (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
>   
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index 27e9aa7f..24deae67 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>   
>   /* Current ACPICA subsystem version in YYYYMMDD format */
>   
> -#define ACPI_CA_VERSION                 0x20181031
> +#define ACPI_CA_VERSION                 0x20181213
>   
>   #include "acconfig.h"
>   #include "actypes.h"
> diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
> index 9c55d357..17705726 100644
> --- a/src/acpica/source/include/acstruct.h
> +++ b/src/acpica/source/include/acstruct.h
> @@ -205,6 +205,8 @@ typedef struct acpi_walk_state
>       ACPI_PARSE_STATE                ParserState;        /* Current state of parser */
>       UINT32                          PrevArgTypes;
>       UINT32                          ArgCount;           /* push for fixed or var args */
> +    UINT16                          MethodNestingDepth;
> +    UINT8                           MethodIsNested;
>   
>       struct acpi_namespace_node      Arguments[ACPI_METHOD_NUM_ARGS];        /* Control method arguments */
>       struct acpi_namespace_node      LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
> @@ -219,7 +221,8 @@ typedef struct acpi_walk_state
>       struct acpi_namespace_node      *MethodCallNode;    /* Called method Node*/
>       ACPI_PARSE_OBJECT               *MethodCallOp;      /* MethodCall Op if running a method */
>       union acpi_operand_object       *MethodDesc;        /* Method descriptor if running a method */
> -    struct acpi_namespace_node      *MethodNode;        /* Method node if running a method. */
> +    struct acpi_namespace_node      *MethodNode;        /* Method node if running a method */
> +    char                            *MethodPathname;    /* Full pathname of running method */
>       ACPI_PARSE_OBJECT               *Op;                /* Current parser op */
>       const ACPI_OPCODE_INFO          *OpInfo;            /* Info on current opcode */
>       ACPI_PARSE_OBJECT               *Origin;            /* Start of walk [Obsolete] */
> diff --git a/src/acpica/source/include/actbl.h b/src/acpica/source/include/actbl.h
> index 58a9b734..f6a2f7c5 100644
> --- a/src/acpica/source/include/actbl.h
> +++ b/src/acpica/source/include/actbl.h
> @@ -182,6 +182,7 @@
>   #define ACPI_SIG_XSDT           "XSDT"      /* Extended  System Description Table */
>   #define ACPI_SIG_SSDT           "SSDT"      /* Secondary System Description Table */
>   #define ACPI_RSDP_NAME          "RSDP"      /* Short name for RSDP, not signature */
> +#define ACPI_OEM_NAME           "OEM"       /* Short name for OEM, not signature */
>   
>   
>   /*
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index 4d2438c9..396fb524 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -678,6 +678,10 @@ typedef UINT64                          ACPI_INTEGER;
>   #define ACPI_VALIDATE_RSDP_SIG(a)       (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8))
>   #define ACPI_MAKE_RSDP_SIG(dest)        (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8))
>   
> +/* Support for OEMx signature (x can be any character) */
> +#define ACPI_IS_OEM_SIG(a)        (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_OEM_NAME, 3) &&\
> +                                      strnlen (a, ACPI_NAME_SIZE) == ACPI_NAME_SIZE)
> +
>   /*
>    * Algorithm to obtain access bit width.
>    * Can be used with AccessWidth of ACPI_GENERIC_ADDRESS and AccessSize of
> @@ -1512,6 +1516,8 @@ typedef enum
>   #define ACPI_OSI_WIN_10_RS1             0x0E
>   #define ACPI_OSI_WIN_10_RS2             0x0F
>   #define ACPI_OSI_WIN_10_RS3             0x10
> +#define ACPI_OSI_WIN_10_RS4             0x11
> +#define ACPI_OSI_WIN_10_RS5             0x12
>   
>   
>   /* Definitions of getopt */
> 

Acked-by: Alex Hung <alex.hung@canonical.com>
diff mbox series

Patch

diff --git a/src/acpica/source/common/ahpredef.c b/src/acpica/source/common/ahpredef.c
index 0a558722..1c3af7ef 100644
--- a/src/acpica/source/common/ahpredef.c
+++ b/src/acpica/source/common/ahpredef.c
@@ -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"),
diff --git a/src/acpica/source/common/dmswitch.c b/src/acpica/source/common/dmswitch.c
index f04ec743..46546fbb 100644
--- a/src/acpica/source/common/dmswitch.c
+++ b/src/acpica/source/common/dmswitch.c
@@ -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 */
diff --git a/src/acpica/source/compiler/aslcodegen.c b/src/acpica/source/compiler/aslcodegen.c
index 7b2e3e5c..356011f0 100644
--- a/src/acpica/source/compiler/aslcodegen.c
+++ b/src/acpica/source/compiler/aslcodegen.c
@@ -773,12 +773,6 @@  CgWriteNode (
         return;
     }
 
-    if ((Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) &&
-        AslGbl_DoExternals == FALSE)
-    {
-        return;
-    }
-
     Op->Asl.FinalAmlLength = 0;
 
     switch (Op->Asl.AmlOpcode)
diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
index 4ae19076..1b8838aa 100644
--- a/src/acpica/source/compiler/aslcompile.c
+++ b/src/acpica/source/compiler/aslcompile.c
@@ -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
diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
index bd02879d..c5e8cb0c 100644
--- a/src/acpica/source/compiler/aslcompiler.h
+++ b/src/acpica/source/compiler/aslcompiler.h
@@ -474,6 +474,10 @@  ACPI_STATUS
 AslExpectException (
     char                    *MessageIdString);
 
+ACPI_STATUS
+AslElevateException (
+    char                    *MessageIdString);
+
 ACPI_STATUS
 AslDisableException (
     char                    *MessageIdString);
diff --git a/src/acpica/source/compiler/aslerror.c b/src/acpica/source/compiler/aslerror.c
index 10ea3ec1..2a18dded 100644
--- a/src/acpica/source/compiler/aslerror.c
+++ b/src/acpica/source/compiler/aslerror.c
@@ -201,6 +201,11 @@  AePrintSubError (
     FILE                    *OutputFile,
     ASL_ERROR_MSG           *Enode);
 
+static UINT8
+GetModifiedLevel (
+    UINT8                   Level,
+    UINT16                  MessageId);
+
 
 /*******************************************************************************
  *
@@ -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,6 +1005,44 @@  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
@@ -1155,6 +1199,51 @@  AslDisableException (
 }
 
 
+/*******************************************************************************
+ *
+ * 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);
+}
+
 /*******************************************************************************
  *
  * FUNCTION:    AslIsExceptionDisabled
diff --git a/src/acpica/source/compiler/aslglobal.h b/src/acpica/source/compiler/aslglobal.h
index c3e69cbb..fd00da78 100644
--- a/src/acpica/source/compiler/aslglobal.h
+++ b/src/acpica/source/compiler/aslglobal.h
@@ -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 (AslGbl_AllExceptionsDisable
 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 (AslGbl_CurrentAmlOffset, 0)
 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_StringBuffer[ASL_STRING_BUFFER_SIZE];
 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 */
diff --git a/src/acpica/source/compiler/asllength.c b/src/acpica/source/compiler/asllength.c
index 696dc242..8fef83b9 100644
--- a/src/acpica/source/compiler/asllength.c
+++ b/src/acpica/source/compiler/asllength.c
@@ -519,10 +519,7 @@  CgGenerateAmlLengths (
 
     case PARSEOP_EXTERNAL:
 
-        if (AslGbl_DoExternals == TRUE)
-        {
-            CgGenerateAmlOpcodeLength (Op);
-        }
+        CgGenerateAmlOpcodeLength (Op);
         break;
 
     default:
diff --git a/src/acpica/source/compiler/aslopcodes.c b/src/acpica/source/compiler/aslopcodes.c
index 218223b8..32d04781 100644
--- a/src/acpica/source/compiler/aslopcodes.c
+++ b/src/acpica/source/compiler/aslopcodes.c
@@ -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)
diff --git a/src/acpica/source/compiler/asltransform.c b/src/acpica/source/compiler/asltransform.c
index 324b0364..2bf32db4 100644
--- a/src/acpica/source/compiler/asltransform.c
+++ b/src/acpica/source/compiler/asltransform.c
@@ -460,11 +460,7 @@  TrTransformSubtree (
 
     case PARSEOP_EXTERNAL:
 
-        if (AslGbl_DoExternals == TRUE)
-        {
-            ExDoExternal (Op);
-        }
-
+        ExDoExternal (Op);
         break;
 
     case PARSEOP___METHOD__:
diff --git a/src/acpica/source/components/dispatcher/dsmethod.c b/src/acpica/source/components/dispatcher/dsmethod.c
index 3db8010f..009151f9 100644
--- a/src/acpica/source/components/dispatcher/dsmethod.c
+++ b/src/acpica/source/components/dispatcher/dsmethod.c
@@ -720,6 +720,8 @@  AcpiDsCallControlMethod (
         goto Cleanup;
     }
 
+    NextWalkState->MethodNestingDepth = ThisWalkState->MethodNestingDepth + 1;
+
     /*
      * Delete the operands on the previous walkstate operand stack
      * (they were copied to new objects)
@@ -738,6 +740,16 @@  AcpiDsCallControlMethod (
         "**** Begin nested execution of [%4.4s] **** WalkState=%p\n",
         MethodNode->Name.Ascii, NextWalkState));
 
+    ThisWalkState->MethodPathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE);
+    ThisWalkState->MethodIsNested = TRUE;
+
+    /* Optional object evaluation log */
+
+    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
+        "%-26s:  %*s%s\n", "   Nested method call",
+        NextWalkState->MethodNestingDepth * 3, " ",
+        &ThisWalkState->MethodPathname[1]));
+
     /* Invoke an internal method if necessary */
 
     if (ObjDesc->Method.InfoFlags & ACPI_METHOD_INTERNAL_ONLY)
diff --git a/src/acpica/source/components/dispatcher/dsobject.c b/src/acpica/source/components/dispatcher/dsobject.c
index e9b7413a..4ec23d46 100644
--- a/src/acpica/source/components/dispatcher/dsobject.c
+++ b/src/acpica/source/components/dispatcher/dsobject.c
@@ -161,7 +161,6 @@ 
         ACPI_MODULE_NAME    ("dsobject")
 
 
-#ifndef ACPI_NO_METHOD_EXECUTION
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDsBuildInternalObject
@@ -460,7 +459,6 @@  AcpiDsCreateNode (
     return_ACPI_STATUS (Status);
 }
 
-#endif /* ACPI_NO_METHOD_EXECUTION */
 
 
 /*******************************************************************************
@@ -571,9 +569,7 @@  AcpiDsInitObjectFromOp (
 
                 /* Truncate value if we are executing from a 32-bit ACPI table */
 
-#ifndef ACPI_NO_METHOD_EXECUTION
                 (void) AcpiExTruncateFor32bitTable (ObjDesc);
-#endif
                 break;
 
             case AML_REVISION_OP:
@@ -594,7 +590,6 @@  AcpiDsInitObjectFromOp (
 
             ObjDesc->Integer.Value = Op->Common.Value.Integer;
 
-#ifndef ACPI_NO_METHOD_EXECUTION
             if (AcpiExTruncateFor32bitTable (ObjDesc))
             {
                 /* Warn if we found a 64-bit constant in a 32-bit table */
@@ -604,7 +599,6 @@  AcpiDsInitObjectFromOp (
                     ACPI_FORMAT_UINT64 (Op->Common.Value.Integer),
                     (UINT32) ObjDesc->Integer.Value));
             }
-#endif
             break;
 
         default:
@@ -642,12 +636,10 @@  AcpiDsInitObjectFromOp (
             ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_LOCAL_OP;
             ObjDesc->Reference.Class = ACPI_REFCLASS_LOCAL;
 
-#ifndef ACPI_NO_METHOD_EXECUTION
             Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL,
                 ObjDesc->Reference.Value, WalkState,
                 ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
                     &ObjDesc->Reference.Object));
-#endif
             break;
 
         case AML_TYPE_METHOD_ARGUMENT:
@@ -657,12 +649,10 @@  AcpiDsInitObjectFromOp (
             ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_ARG_OP;
             ObjDesc->Reference.Class = ACPI_REFCLASS_ARG;
 
-#ifndef ACPI_NO_METHOD_EXECUTION
             Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG,
                 ObjDesc->Reference.Value, WalkState,
                 ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
                     &ObjDesc->Reference.Object));
-#endif
             break;
 
         default: /* Object name or Debug object */
diff --git a/src/acpica/source/components/dispatcher/dspkginit.c b/src/acpica/source/components/dispatcher/dspkginit.c
index 9e1cd611..1e7e7383 100644
--- a/src/acpica/source/components/dispatcher/dspkginit.c
+++ b/src/acpica/source/components/dispatcher/dspkginit.c
@@ -308,6 +308,32 @@  AcpiDsBuildInternalPackageObj (
     {
         if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP)
         {
+            if (!Arg->Common.Node)
+            {
+                /*
+                 * This is the case where an expression has returned a value.
+                 * The use of expressions (TermArgs) within individual
+                 * package elements is not supported by the AML interpreter,
+                 * even though the ASL grammar supports it. Example:
+                 *
+                 *      Name (INT1, 0x1234)
+                 *
+                 *      Name (PKG3, Package () {
+                 *          Add (INT1, 0xAAAA0000)
+                 *      })
+                 *
+                 *  1) No known AML interpreter supports this type of construct
+                 *  2) This fixes a fault if the construct is encountered
+                 */
+                ACPI_EXCEPTION ((AE_INFO, AE_SUPPORT,
+                    "Expressions within package elements are not supported"));
+
+                /* Cleanup the return object, it is not needed */
+
+                AcpiUtRemoveReference (WalkState->Results->Results.ObjDesc[0]);
+                return_ACPI_STATUS (AE_SUPPORT);
+            }
+
             if (Arg->Common.Node->Type == ACPI_TYPE_METHOD)
             {
                 /*
diff --git a/src/acpica/source/components/dispatcher/dsutils.c b/src/acpica/source/components/dispatcher/dsutils.c
index c03f9268..20a9e256 100644
--- a/src/acpica/source/components/dispatcher/dsutils.c
+++ b/src/acpica/source/components/dispatcher/dsutils.c
@@ -209,7 +209,6 @@  AcpiDsClearImplicitReturn (
 }
 
 
-#ifndef ACPI_NO_METHOD_EXECUTION
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDsDoImplicitReturn
@@ -583,7 +582,6 @@  AcpiDsClearOperands (
     WalkState->NumOperands = 0;
     return_VOID;
 }
-#endif
 
 
 /*******************************************************************************
diff --git a/src/acpica/source/components/dispatcher/dswload.c b/src/acpica/source/components/dispatcher/dswload.c
index 91f5b305..db0f0e85 100644
--- a/src/acpica/source/components/dispatcher/dswload.c
+++ b/src/acpica/source/components/dispatcher/dswload.c
@@ -221,12 +221,10 @@  AcpiDsInitCallbacks (
 
         /* Execution pass */
 
-#ifndef ACPI_NO_METHOD_EXECUTION
         WalkState->ParseFlags        |= ACPI_PARSE_EXECUTE  |
                                         ACPI_PARSE_DELETE_TREE;
         WalkState->DescendingCallback = AcpiDsExecBeginOp;
         WalkState->AscendingCallback  = AcpiDsExecEndOp;
-#endif
         break;
 
     default:
@@ -517,7 +515,7 @@  AcpiDsLoad1BeginOp (
 
     /* Initialize the op */
 
-#if (defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY))
+#ifdef ACPI_CONSTANT_EVAL_ONLY
     Op->Named.Path = Path;
 #endif
 
@@ -580,7 +578,6 @@  AcpiDsLoad1EndOp (
 
     ObjectType = WalkState->OpInfo->ObjectType;
 
-#ifndef ACPI_NO_METHOD_EXECUTION
     if (WalkState->OpInfo->Flags & AML_FIELD)
     {
         /*
@@ -626,7 +623,6 @@  AcpiDsLoad1EndOp (
             }
         }
     }
-#endif
 
     if (Op->Common.AmlOpcode == AML_NAME_OP)
     {
diff --git a/src/acpica/source/components/dispatcher/dswload2.c b/src/acpica/source/components/dispatcher/dswload2.c
index 4b6e41d8..7387690e 100644
--- a/src/acpica/source/components/dispatcher/dswload2.c
+++ b/src/acpica/source/components/dispatcher/dswload2.c
@@ -529,10 +529,8 @@  AcpiDsLoad2EndOp (
     ACPI_NAMESPACE_NODE     *Node;
     ACPI_PARSE_OBJECT       *Arg;
     ACPI_NAMESPACE_NODE     *NewNode;
-#ifndef ACPI_NO_METHOD_EXECUTION
     UINT32                  i;
     UINT8                   RegionSpace;
-#endif
 
 
     ACPI_FUNCTION_TRACE (DsLoad2EndOp);
@@ -622,7 +620,6 @@  AcpiDsLoad2EndOp (
 
     switch (WalkState->OpInfo->Type)
     {
-#ifndef ACPI_NO_METHOD_EXECUTION
 
     case AML_TYPE_CREATE_FIELD:
         /*
@@ -718,13 +715,11 @@  AcpiDsLoad2EndOp (
         }
 
         break;
-#endif /* ACPI_NO_METHOD_EXECUTION */
 
     case AML_TYPE_NAMED_COMPLEX:
 
         switch (Op->Common.AmlOpcode)
         {
-#ifndef ACPI_NO_METHOD_EXECUTION
         case AML_REGION_OP:
         case AML_DATA_REGION_OP:
 
@@ -809,7 +804,6 @@  AcpiDsLoad2EndOp (
             }
             break;
 
-#endif /* ACPI_NO_METHOD_EXECUTION */
 
         default:
 
diff --git a/src/acpica/source/components/dispatcher/dswstate.c b/src/acpica/source/components/dispatcher/dswstate.c
index 7994cb12..409d7f71 100644
--- a/src/acpica/source/components/dispatcher/dswstate.c
+++ b/src/acpica/source/components/dispatcher/dswstate.c
@@ -733,7 +733,7 @@  AcpiDsCreateWalkState (
 
     /* Init the method args/local */
 
-#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY))
+#ifndef ACPI_CONSTANT_EVAL_ONLY
     AcpiDsMethodDataInit (WalkState);
 #endif
 
diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
index 5c58746e..a147ba21 100644
--- a/src/acpica/source/components/executer/exconvrt.c
+++ b/src/acpica/source/components/executer/exconvrt.c
@@ -496,7 +496,7 @@  AcpiExConvertToAscii (
 
         /* HexLength: 2 ascii hex chars per data byte */
 
-        HexLength = ACPI_MUL_2 (DataWidth);
+        HexLength = (DataWidth * 2);
         for (i = 0, j = (HexLength-1); i < HexLength; i++, j--)
         {
             /* Get one hex digit, most significant digits first */
@@ -539,7 +539,8 @@  AcpiExConvertToAscii (
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Convert an ACPI Object to a string
+ * DESCRIPTION: Convert an ACPI Object to a string. Supports both implicit
+ *              and explicit conversions and related rules.
  *
  ******************************************************************************/
 
@@ -574,9 +575,11 @@  AcpiExConvertToString (
         switch (Type)
         {
         case ACPI_EXPLICIT_CONVERT_DECIMAL:
-
-            /* Make room for maximum decimal number */
-
+            /*
+             * From ToDecimalString, integer source.
+             *
+             * Make room for the maximum decimal number size
+             */
             StringLength = ACPI_MAX_DECIMAL_DIGITS;
             Base = 10;
             break;
@@ -620,8 +623,10 @@  AcpiExConvertToString (
         {
         case ACPI_EXPLICIT_CONVERT_DECIMAL: /* Used by ToDecimalString */
             /*
-             * From ACPI: "If Data is a buffer, it is converted to a string of
-             * decimal values separated by commas."
+             * Explicit conversion from the ToDecimalString ASL operator.
+             *
+             * From ACPI: "If the input is a buffer, it is converted to a
+             * a string of decimal values separated by commas."
              */
             Base = 10;
 
@@ -648,20 +653,29 @@  AcpiExConvertToString (
 
         case ACPI_IMPLICIT_CONVERT_HEX:
             /*
+             * Implicit buffer-to-string conversion
+             *
              * From the ACPI spec:
-             *"The entire contents of the buffer are converted to a string of
+             * "The entire contents of the buffer are converted to a string of
              * two-character hexadecimal numbers, each separated by a space."
+             *
+             * Each hex number is prefixed with 0x (11/2018)
              */
             Separator = ' ';
-            StringLength = (ObjDesc->Buffer.Length * 3);
+            StringLength = (ObjDesc->Buffer.Length * 5);
             break;
 
-        case ACPI_EXPLICIT_CONVERT_HEX:     /* Used by ToHexString */
+        case ACPI_EXPLICIT_CONVERT_HEX:
             /*
+             * Explicit conversion from the ToHexString ASL operator.
+             *
              * From ACPI: "If Data is a buffer, it is converted to a string of
              * hexadecimal values separated by commas."
+             *
+             * Each hex number is prefixed with 0x (11/2018)
              */
-            StringLength = (ObjDesc->Buffer.Length * 3);
+            Separator = ',';
+            StringLength = (ObjDesc->Buffer.Length * 5);
             break;
 
         default:
@@ -692,9 +706,20 @@  AcpiExConvertToString (
          */
         for (i = 0; i < ObjDesc->Buffer.Length; i++)
         {
+            if (Base == 16)
+            {
+                /* Emit 0x prefix for explict/implicit hex conversion */
+
+                *NewBuf++ = '0';
+                *NewBuf++ = 'x';
+            }
+
             NewBuf += AcpiExConvertToAscii (
                 (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1);
-            *NewBuf++ = Separator; /* each separated by a comma or space */
+
+            /* Each digit is separated by either a comma or space */
+
+            *NewBuf++ = Separator;
         }
 
         /*
diff --git a/src/acpica/source/components/executer/excreate.c b/src/acpica/source/components/executer/excreate.c
index 524960c2..f4dd8298 100644
--- a/src/acpica/source/components/executer/excreate.c
+++ b/src/acpica/source/components/executer/excreate.c
@@ -161,7 +161,6 @@ 
         ACPI_MODULE_NAME    ("excreate")
 
 
-#ifndef ACPI_NO_METHOD_EXECUTION
 /*******************************************************************************
  *
  * FUNCTION:    AcpiExCreateAlias
@@ -573,7 +572,6 @@  AcpiExCreatePowerResource (
     AcpiUtRemoveReference (ObjDesc);
     return_ACPI_STATUS (Status);
 }
-#endif
 
 
 /*******************************************************************************
diff --git a/src/acpica/source/components/executer/exoparg2.c b/src/acpica/source/components/executer/exoparg2.c
index 73d0bd26..0693dcbe 100644
--- a/src/acpica/source/components/executer/exoparg2.c
+++ b/src/acpica/source/components/executer/exoparg2.c
@@ -460,9 +460,9 @@  AcpiExOpcode_2A_1T_1R (
          * NOTE: A length of zero is ok, and will create a zero-length, null
          *       terminated string.
          */
-        while ((Length < Operand[0]->Buffer.Length) &&
-               (Length < Operand[1]->Integer.Value) &&
-               (Operand[0]->Buffer.Pointer[Length]))
+        while ((Length < Operand[0]->Buffer.Length) &&  /* Length of input buffer */
+               (Length < Operand[1]->Integer.Value) &&  /* Length operand */
+               (Operand[0]->Buffer.Pointer[Length]))    /* Null terminator */
         {
             Length++;
         }
diff --git a/src/acpica/source/components/executer/exserial.c b/src/acpica/source/components/executer/exserial.c
index 73f2aa4a..553aedfb 100644
--- a/src/acpica/source/components/executer/exserial.c
+++ b/src/acpica/source/components/executer/exserial.c
@@ -445,14 +445,12 @@  AcpiExWriteSerialBus (
     case ACPI_ADR_SPACE_SMBUS:
 
         BufferLength = ACPI_SMBUS_BUFFER_SIZE;
-        DataLength = ACPI_SMBUS_DATA_SIZE;
         Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16);
         break;
 
     case ACPI_ADR_SPACE_IPMI:
 
         BufferLength = ACPI_IPMI_BUFFER_SIZE;
-        DataLength = ACPI_IPMI_DATA_SIZE;
         Function = ACPI_WRITE;
         break;
 
@@ -471,7 +469,6 @@  AcpiExWriteSerialBus (
         /* Add header length to get the full size of the buffer */
 
         BufferLength += ACPI_SERIAL_HEADER_SIZE;
-        DataLength = SourceDesc->Buffer.Pointer[1];
         Function = ACPI_WRITE | (AccessorType << 16);
         break;
 
@@ -479,21 +476,6 @@  AcpiExWriteSerialBus (
         return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
     }
 
-#if 0
-OBSOLETE?
-    /* Check for possible buffer overflow */
-
-    if (DataLength > SourceDesc->Buffer.Length)
-    {
-        ACPI_ERROR ((AE_INFO,
-            "Length in buffer header (%u)(%u) is greater than "
-            "the physical buffer length (%u) and will overflow",
-            DataLength, BufferLength, SourceDesc->Buffer.Length));
-
-        return_ACPI_STATUS (AE_AML_BUFFER_LIMIT);
-    }
-#endif
-
     /* Create the transfer/bidirectional/return buffer */
 
     BufferDesc = AcpiUtCreateBufferObject (BufferLength);
@@ -505,6 +487,8 @@  OBSOLETE?
     /* Copy the input buffer data to the transfer buffer */
 
     Buffer = BufferDesc->Buffer.Pointer;
+    DataLength = (BufferLength < SourceDesc->Buffer.Length ?
+        BufferLength : SourceDesc->Buffer.Length);
     memcpy (Buffer, SourceDesc->Buffer.Pointer, DataLength);
 
     /* Lock entire transaction if requested */
diff --git a/src/acpica/source/components/executer/exutils.c b/src/acpica/source/components/executer/exutils.c
index a38ce940..06ad2b5f 100644
--- a/src/acpica/source/components/executer/exutils.c
+++ b/src/acpica/source/components/executer/exutils.c
@@ -181,7 +181,6 @@  AcpiExDigitsNeeded (
     UINT32                  Base);
 
 
-#ifndef ACPI_NO_METHOD_EXECUTION
 /*******************************************************************************
  *
  * FUNCTION:    AcpiExEnterInterpreter
@@ -615,4 +614,3 @@  AcpiIsValidSpaceId (
     return (TRUE);
 }
 
-#endif
diff --git a/src/acpica/source/components/namespace/nseval.c b/src/acpica/source/components/namespace/nseval.c
index 8262d992..0dbac5bf 100644
--- a/src/acpica/source/components/namespace/nseval.c
+++ b/src/acpica/source/components/namespace/nseval.c
@@ -259,6 +259,12 @@  AcpiNsEvaluate (
         return_ACPI_STATUS (AE_NO_MEMORY);
     }
 
+    /* Optional object evaluation log */
+
+    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
+        "%-26s:  %s (%s)\n", "   Enter evaluation",
+        &Info->FullPathname[1], AcpiUtGetTypeName (Info->Node->Type)));
+
     /* Count the number of arguments being passed in */
 
     Info->ParamCount = 0;
@@ -445,6 +451,12 @@  AcpiNsEvaluate (
         Info->RelativePathname));
 
 Cleanup:
+    /* Optional object evaluation log */
+
+    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
+        "%-26s:  %s\n", "   Exit evaluation",
+        &Info->FullPathname[1]));
+
     /*
      * Namespace was unlocked by the handling AcpiNs* function, so we
      * just free the pathname and return
diff --git a/src/acpica/source/components/namespace/nsload.c b/src/acpica/source/components/namespace/nsload.c
index 698d3a57..68946074 100644
--- a/src/acpica/source/components/namespace/nsload.c
+++ b/src/acpica/source/components/namespace/nsload.c
@@ -173,7 +173,6 @@  AcpiNsDeleteSubtree (
 #endif
 
 
-#ifndef ACPI_NO_METHOD_EXECUTION
 /*******************************************************************************
  *
  * FUNCTION:    AcpiNsLoadTable
@@ -477,4 +476,3 @@  AcpiNsUnloadNamespace (
     return_ACPI_STATUS (Status);
 }
 #endif
-#endif
diff --git a/src/acpica/source/components/namespace/nsparse.c b/src/acpica/source/components/namespace/nsparse.c
index 8e86ee4c..e781a4de 100644
--- a/src/acpica/source/components/namespace/nsparse.c
+++ b/src/acpica/source/components/namespace/nsparse.c
@@ -261,8 +261,18 @@  AcpiNsExecuteTable (
         goto Cleanup;
     }
 
+    /* Optional object evaluation log */
+
+    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
+        "%-26s:  (Definition Block level)\n", "Module-level evaluation"));
+
     Status = AcpiPsExecuteTable (Info);
 
+    /* Optional object evaluation log */
+
+    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
+        "%-26s:  (Definition Block level)\n", "Module-level complete"));
+
 Cleanup:
     if (Info)
     {
diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
index 9625834c..1fa2c880 100644
--- a/src/acpica/source/components/parser/psloop.c
+++ b/src/acpica/source/components/parser/psloop.c
@@ -580,7 +580,7 @@  AcpiPsParseLoop (
     ParserState = &WalkState->ParserState;
     WalkState->ArgTypes = 0;
 
-#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY))
+#ifndef ACPI_CONSTANT_EVAL_ONLY
 
     if (WalkState->WalkType & ACPI_WALK_METHOD_RESTART)
     {
diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
index 0ad62b77..378bfab5 100644
--- a/src/acpica/source/components/parser/psparse.c
+++ b/src/acpica/source/components/parser/psparse.c
@@ -637,6 +637,18 @@  AcpiPsParseAml (
             "Completed one call to walk loop, %s State=%p\n",
             AcpiFormatException (Status), WalkState));
 
+        if (WalkState->MethodPathname && WalkState->MethodIsNested)
+        {
+            /* Optional object evaluation log */
+
+            ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION, "%-26s:  %*s%s\n",
+                "   Exit nested method",
+                (WalkState->MethodNestingDepth + 1) * 3, " ",
+                &WalkState->MethodPathname[1]));
+
+            ACPI_FREE (WalkState->MethodPathname);
+            WalkState->MethodIsNested = FALSE;
+        }
         if (Status == AE_CTRL_TRANSFER)
         {
             /*
diff --git a/src/acpica/source/components/parser/psxface.c b/src/acpica/source/components/parser/psxface.c
index 8516fe3a..54f54eab 100644
--- a/src/acpica/source/components/parser/psxface.c
+++ b/src/acpica/source/components/parser/psxface.c
@@ -307,6 +307,9 @@  AcpiPsExecuteMethod (
         goto Cleanup;
     }
 
+    WalkState->MethodPathname = Info->FullPathname;
+    WalkState->MethodIsNested = FALSE;
+
     if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
     {
         WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
@@ -437,6 +440,9 @@  AcpiPsExecuteTable (
         goto Cleanup;
     }
 
+    WalkState->MethodPathname = Info->FullPathname;
+    WalkState->MethodIsNested = FALSE;
+
     if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
     {
         WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
diff --git a/src/acpica/source/components/utilities/utglobal.c b/src/acpica/source/components/utilities/utglobal.c
index a41c17da..d4cde4db 100644
--- a/src/acpica/source/components/utilities/utglobal.c
+++ b/src/acpica/source/components/utilities/utglobal.c
@@ -235,10 +235,7 @@  const ACPI_PREDEFINED_NAMES     AcpiGbl_PreDefinedNames[] =
     {"_REV",    ACPI_TYPE_INTEGER,          ACPI_CAST_PTR (char, 2)},
     {"_OS_",    ACPI_TYPE_STRING,           ACPI_OS_NAME},
     {"_GL_",    ACPI_TYPE_MUTEX,            ACPI_CAST_PTR (char, 1)},
-
-#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
     {"_OSI",    ACPI_TYPE_METHOD,           ACPI_CAST_PTR (char, 1)},
-#endif
 
     /* Table terminator */
 
diff --git a/src/acpica/source/components/utilities/utmisc.c b/src/acpica/source/components/utilities/utmisc.c
index 0e04aff0..c6dbf915 100644
--- a/src/acpica/source/components/utilities/utmisc.c
+++ b/src/acpica/source/components/utilities/utmisc.c
@@ -217,7 +217,8 @@  AcpiUtIsAmlTable (
     if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) ||
         ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) ||
         ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) ||
-        ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT))
+        ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT) ||
+        ACPI_IS_OEM_SIG (Table->Signature))
     {
         return (TRUE);
     }
diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
index e6369078..3713d033 100644
--- a/src/acpica/source/components/utilities/utosi.c
+++ b/src/acpica/source/components/utilities/utosi.c
@@ -217,6 +217,8 @@  static ACPI_INTERFACE_INFO    AcpiDefaultSupportedInterfaces[] =
     {"Windows 2016",        NULL, 0, ACPI_OSI_WIN_10_RS1},       /* Windows 10 version 1607 - Added 12/2017 */
     {"Windows 2017",        NULL, 0, ACPI_OSI_WIN_10_RS2},       /* Windows 10 version 1703 - Added 12/2017 */
     {"Windows 2017.2",      NULL, 0, ACPI_OSI_WIN_10_RS3},       /* Windows 10 version 1709 - Added 02/2018 */
+    {"Windows 2018",        NULL, 0, ACPI_OSI_WIN_10_RS4},       /* Windows 10 version 1803 - Added 11/2018 */
+    {"Windows 2018.2",      NULL, 0, ACPI_OSI_WIN_10_RS5},       /* Windows 10 version 1809 - Added 11/2018 */
 
     /* Feature Group Strings */
 
diff --git a/src/acpica/source/include/acglobal.h b/src/acpica/source/include/acglobal.h
index 3c2a4ed4..b21c92bd 100644
--- a/src/acpica/source/include/acglobal.h
+++ b/src/acpica/source/include/acglobal.h
@@ -317,11 +317,7 @@  ACPI_GLOBAL (BOOLEAN,                   AcpiGbl_DisableMemTracking);
  *
  ****************************************************************************/
 
-#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
 #define NUM_PREDEFINED_NAMES            10
-#else
-#define NUM_PREDEFINED_NAMES            9
-#endif
 
 ACPI_GLOBAL (ACPI_NAMESPACE_NODE,       AcpiGbl_RootNodeStruct);
 ACPI_GLOBAL (ACPI_NAMESPACE_NODE *,     AcpiGbl_RootNode);
diff --git a/src/acpica/source/include/acoutput.h b/src/acpica/source/include/acoutput.h
index 358ff55a..2a4d3157 100644
--- a/src/acpica/source/include/acoutput.h
+++ b/src/acpica/source/include/acoutput.h
@@ -216,7 +216,8 @@ 
 #define ACPI_LV_RESOURCES           0x00010000
 #define ACPI_LV_USER_REQUESTS       0x00020000
 #define ACPI_LV_PACKAGE             0x00040000
-#define ACPI_LV_VERBOSITY1          0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS
+#define ACPI_LV_EVALUATION          0x00080000
+#define ACPI_LV_VERBOSITY1          0x000FFF40 | ACPI_LV_ALL_EXCEPTIONS
 
 /* Trace verbosity level 2 [Function tracing and memory allocation] */
 
@@ -285,6 +286,7 @@ 
 #define ACPI_DB_INTERRUPTS          ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS)
 #define ACPI_DB_USER_REQUESTS       ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS)
 #define ACPI_DB_PACKAGE             ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE)
+#define ACPI_DB_EVALUATION          ACPI_DEBUG_LEVEL (ACPI_LV_EVALUATION)
 #define ACPI_DB_MUTEX               ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX)
 #define ACPI_DB_EVENTS              ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS)
 
@@ -292,7 +294,7 @@ 
 
 /* Defaults for DebugLevel, debug and normal */
 
-#define ACPI_DEBUG_DEFAULT          (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
+#define ACPI_DEBUG_DEFAULT          (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_EVALUATION | ACPI_LV_REPAIR)
 #define ACPI_NORMAL_DEFAULT         (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
 #define ACPI_DEBUG_ALL              (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
 
diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
index 27e9aa7f..24deae67 100644
--- a/src/acpica/source/include/acpixf.h
+++ b/src/acpica/source/include/acpixf.h
@@ -154,7 +154,7 @@ 
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20181031
+#define ACPI_CA_VERSION                 0x20181213
 
 #include "acconfig.h"
 #include "actypes.h"
diff --git a/src/acpica/source/include/acstruct.h b/src/acpica/source/include/acstruct.h
index 9c55d357..17705726 100644
--- a/src/acpica/source/include/acstruct.h
+++ b/src/acpica/source/include/acstruct.h
@@ -205,6 +205,8 @@  typedef struct acpi_walk_state
     ACPI_PARSE_STATE                ParserState;        /* Current state of parser */
     UINT32                          PrevArgTypes;
     UINT32                          ArgCount;           /* push for fixed or var args */
+    UINT16                          MethodNestingDepth;
+    UINT8                           MethodIsNested;
 
     struct acpi_namespace_node      Arguments[ACPI_METHOD_NUM_ARGS];        /* Control method arguments */
     struct acpi_namespace_node      LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
@@ -219,7 +221,8 @@  typedef struct acpi_walk_state
     struct acpi_namespace_node      *MethodCallNode;    /* Called method Node*/
     ACPI_PARSE_OBJECT               *MethodCallOp;      /* MethodCall Op if running a method */
     union acpi_operand_object       *MethodDesc;        /* Method descriptor if running a method */
-    struct acpi_namespace_node      *MethodNode;        /* Method node if running a method. */
+    struct acpi_namespace_node      *MethodNode;        /* Method node if running a method */
+    char                            *MethodPathname;    /* Full pathname of running method */
     ACPI_PARSE_OBJECT               *Op;                /* Current parser op */
     const ACPI_OPCODE_INFO          *OpInfo;            /* Info on current opcode */
     ACPI_PARSE_OBJECT               *Origin;            /* Start of walk [Obsolete] */
diff --git a/src/acpica/source/include/actbl.h b/src/acpica/source/include/actbl.h
index 58a9b734..f6a2f7c5 100644
--- a/src/acpica/source/include/actbl.h
+++ b/src/acpica/source/include/actbl.h
@@ -182,6 +182,7 @@ 
 #define ACPI_SIG_XSDT           "XSDT"      /* Extended  System Description Table */
 #define ACPI_SIG_SSDT           "SSDT"      /* Secondary System Description Table */
 #define ACPI_RSDP_NAME          "RSDP"      /* Short name for RSDP, not signature */
+#define ACPI_OEM_NAME           "OEM"       /* Short name for OEM, not signature */
 
 
 /*
diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
index 4d2438c9..396fb524 100644
--- a/src/acpica/source/include/actypes.h
+++ b/src/acpica/source/include/actypes.h
@@ -678,6 +678,10 @@  typedef UINT64                          ACPI_INTEGER;
 #define ACPI_VALIDATE_RSDP_SIG(a)       (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8))
 #define ACPI_MAKE_RSDP_SIG(dest)        (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8))
 
+/* Support for OEMx signature (x can be any character) */
+#define ACPI_IS_OEM_SIG(a)        (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_OEM_NAME, 3) &&\
+                                      strnlen (a, ACPI_NAME_SIZE) == ACPI_NAME_SIZE)
+
 /*
  * Algorithm to obtain access bit width.
  * Can be used with AccessWidth of ACPI_GENERIC_ADDRESS and AccessSize of
@@ -1512,6 +1516,8 @@  typedef enum
 #define ACPI_OSI_WIN_10_RS1             0x0E
 #define ACPI_OSI_WIN_10_RS2             0x0F
 #define ACPI_OSI_WIN_10_RS3             0x10
+#define ACPI_OSI_WIN_10_RS4             0x11
+#define ACPI_OSI_WIN_10_RS5             0x12
 
 
 /* Definitions of getopt */