ACK: [PATCH 1/2] ACPICA: Update to version 20181213
Alex Hung
alex.hung at canonical.com
Mon Dec 17 02:56:54 UTC 2018
On 2018-12-14 1:15 a.m., Colin King wrote:
> From: Colin Ian King <colin.king at 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 at 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 at canonical.com>
More information about the fwts-devel
mailing list