[prev in list] [next in list] [prev in thread] [next in thread] 

List:       fwts-devel
Subject:    ACK: [PATCH 1/2] ACPICA: Update to version 20181213
From:       Alex Hung <alex.hung () canonical ! com>
Date:       2018-12-17 2:56:54
Message-ID: 38dc6444-c9b3-b1a3-5283-15fa6d2bdeec () canonical ! com
[Download RAW message or body]

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>

-- 
fwts-devel mailing list
fwts-devel@lists.ubuntu.com
Modify settings or unsubscribe at: \
https://lists.ubuntu.com/mailman/listinfo/fwts-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic