Module Name: src
Committed By: christos
Date: Sat Dec 14 16:56:34 UTC 2019
Modified Files:
src/sys/external/bsd/acpica/dist/common: dmtables.c
src/sys/external/bsd/acpica/dist/compiler: aslanalyze.c aslcompile.c
aslerror.c aslfiles.c aslload.c asloptions.c aslprepkg.c aslutils.c
aslxref.c dtcompile.c dtcompilerparser.y dtfield.c
src/sys/external/bsd/acpica/dist/debugger: dbdisply.c dbinput.c
dbmethod.c dbnames.c
src/sys/external/bsd/acpica/dist/disassembler: dmresrc.c dmwalk.c
src/sys/external/bsd/acpica/dist/dispatcher: dscontrol.c dsopcode.c
src/sys/external/bsd/acpica/dist/events: evregion.c evrgnini.c
src/sys/external/bsd/acpica/dist/hardware: hwxfsleep.c
src/sys/external/bsd/acpica/dist/include: acdebug.h acpixf.h acutils.h
src/sys/external/bsd/acpica/dist/namespace: nsdump.c nsxfname.c
src/sys/external/bsd/acpica/dist/tables: tbdata.c tbxfload.c
src/sys/external/bsd/acpica/dist/utilities: uttrack.c
Log Message:
merge conflicts
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/acpica/dist/common/dmtables.c
cvs rdiff -u -r1.12 -r1.13 \
src/sys/external/bsd/acpica/dist/compiler/aslanalyze.c
cvs rdiff -u -r1.17 -r1.18 \
src/sys/external/bsd/acpica/dist/compiler/aslcompile.c
cvs rdiff -u -r1.13 -r1.14 \
src/sys/external/bsd/acpica/dist/compiler/aslerror.c
cvs rdiff -u -r1.14 -r1.15 \
src/sys/external/bsd/acpica/dist/compiler/aslfiles.c \
src/sys/external/bsd/acpica/dist/compiler/dtcompile.c \
src/sys/external/bsd/acpica/dist/compiler/dtfield.c
cvs rdiff -u -r1.15 -r1.16 \
src/sys/external/bsd/acpica/dist/compiler/aslload.c \
src/sys/external/bsd/acpica/dist/compiler/aslxref.c
cvs rdiff -u -r1.11 -r1.12 \
src/sys/external/bsd/acpica/dist/compiler/asloptions.c \
src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c
cvs rdiff -u -r1.24 -r1.25 \
src/sys/external/bsd/acpica/dist/compiler/aslutils.c
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/acpica/dist/compiler/dtcompilerparser.y
cvs rdiff -u -r1.15 -r1.16 \
src/sys/external/bsd/acpica/dist/debugger/dbdisply.c
cvs rdiff -u -r1.19 -r1.20 \
src/sys/external/bsd/acpica/dist/debugger/dbinput.c
cvs rdiff -u -r1.13 -r1.14 \
src/sys/external/bsd/acpica/dist/debugger/dbmethod.c
cvs rdiff -u -r1.12 -r1.13 \
src/sys/external/bsd/acpica/dist/debugger/dbnames.c
cvs rdiff -u -r1.11 -r1.12 \
src/sys/external/bsd/acpica/dist/disassembler/dmresrc.c \
src/sys/external/bsd/acpica/dist/disassembler/dmwalk.c
cvs rdiff -u -r1.11 -r1.12 \
src/sys/external/bsd/acpica/dist/dispatcher/dscontrol.c
cvs rdiff -u -r1.13 -r1.14 \
src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c
cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/acpica/dist/events/evregion.c
cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/acpica/dist/events/evrgnini.c
cvs rdiff -u -r1.12 -r1.13 \
src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c
cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/acpica/dist/include/acdebug.h
cvs rdiff -u -r1.23 -r1.24 src/sys/external/bsd/acpica/dist/include/acpixf.h
cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/acpica/dist/include/acutils.h
cvs rdiff -u -r1.16 -r1.17 \
src/sys/external/bsd/acpica/dist/namespace/nsdump.c
cvs rdiff -u -r1.11 -r1.12 \
src/sys/external/bsd/acpica/dist/namespace/nsxfname.c
cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/acpica/dist/tables/tbdata.c
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/acpica/dist/tables/tbxfload.c
cvs rdiff -u -r1.17 -r1.18 \
src/sys/external/bsd/acpica/dist/utilities/uttrack.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/acpica/dist/common/dmtables.c
diff -u src/sys/external/bsd/acpica/dist/common/dmtables.c:1.2 src/sys/external/bsd/acpica/dist/common/dmtables.c:1.3
--- src/sys/external/bsd/acpica/dist/common/dmtables.c:1.2 Sat Oct 19 11:48:48 2019
+++ src/sys/external/bsd/acpica/dist/common/dmtables.c Sat Dec 14 11:56:32 2019
@@ -219,7 +219,7 @@ AdCreateTableHeader (
* makes it easier to rename the disassembled ASL file if needed.
*/
AcpiOsPrintf (
- "DefinitionBlock (\"\", \"%4.4s\", %hhu, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
+ "DefinitionBlock (\"\", \"%4.4s\", %u, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
Table->Signature, Table->Revision,
Table->OemId, Table->OemTableId, Table->OemRevision);
}
@@ -400,6 +400,8 @@ AdParseTable (
AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER));
ASL_CV_INIT_FILETREE(Table, AmlStart, AmlLength);
+ AcpiUtSetIntegerWidth (Table->Revision);
+
/* Create the root object */
AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (AmlStart);
@@ -435,7 +437,6 @@ AdParseTable (
}
WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE;
- WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE;
Status = AcpiPsParseAml (WalkState);
if (ACPI_FAILURE (Status))
@@ -493,7 +494,7 @@ AdParseTable (
fprintf (stderr,
"Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n");
- Status = AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot);
+ (void) AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot);
fprintf (stderr, "\n");
/* Process Resource Templates */
Index: src/sys/external/bsd/acpica/dist/compiler/aslanalyze.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslanalyze.c:1.12 src/sys/external/bsd/acpica/dist/compiler/aslanalyze.c:1.13
--- src/sys/external/bsd/acpica/dist/compiler/aslanalyze.c:1.12 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/compiler/aslanalyze.c Sat Dec 14 11:56:32 2019
@@ -461,7 +461,7 @@ ApCheckForGpeNameConflict (
/* Need a null-terminated string version of NameSeg */
- ACPI_MOVE_32_TO_32 (Name, &Op->Asl.NameSeg);
+ ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg);
Name[ACPI_NAMESEG_SIZE] = 0;
/*
Index: src/sys/external/bsd/acpica/dist/compiler/aslcompile.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslcompile.c:1.17 src/sys/external/bsd/acpica/dist/compiler/aslcompile.c:1.18
--- src/sys/external/bsd/acpica/dist/compiler/aslcompile.c:1.17 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/aslcompile.c Sat Dec 14 11:56:32 2019
@@ -112,6 +112,7 @@ CmDoCompile (
PrDoPreprocess ();
AslGbl_CurrentLineNumber = 1;
AslGbl_LogicalLineNumber = 1;
+ AslGbl_CurrentLineOffset = 0;
if (AslGbl_PreprocessOnly)
{
@@ -174,25 +175,6 @@ CmDoCompile (
LsDumpParseTree ();
- OpcGetIntegerWidth (AslGbl_ParseTreeRoot->Asl.Child);
- UtEndEvent (Event);
-
- /* Pre-process parse tree for any operator transforms */
-
- Event = UtBeginEvent ("Parse tree transforms");
- DbgPrint (ASL_DEBUG_OUTPUT, "\nParse tree transforms\n\n");
- TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE,
- TrAmlTransformWalkBegin, TrAmlTransformWalkEnd, NULL);
- UtEndEvent (Event);
-
- /* Generate AML opcodes corresponding to the parse tokens */
-
- Event = UtBeginEvent ("Generate AML opcodes");
- DbgPrint (ASL_DEBUG_OUTPUT, "Generating AML opcodes\n\n");
- TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, NULL,
- OpcAmlOpcodeWalk, NULL);
- UtEndEvent (Event);
-
UtEndEvent (FullCompile);
return (AE_OK);
@@ -223,6 +205,25 @@ CmDoAslMiddleAndBackEnd (
ACPI_STATUS Status;
+ OpcGetIntegerWidth (AslGbl_ParseTreeRoot->Asl.Child);
+
+ /* Pre-process parse tree for any operator transforms */
+
+ Event = UtBeginEvent ("Parse tree transforms");
+ DbgPrint (ASL_DEBUG_OUTPUT, "\nParse tree transforms\n\n");
+ TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE,
+ TrAmlTransformWalkBegin, TrAmlTransformWalkEnd, NULL);
+ UtEndEvent (Event);
+
+ /* Generate AML opcodes corresponding to the parse tokens */
+
+ Event = UtBeginEvent ("Generate AML opcodes");
+ DbgPrint (ASL_DEBUG_OUTPUT, "Generating AML opcodes\n\n");
+ TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD,
+ NULL, OpcAmlOpcodeWalk, NULL);
+ UtEndEvent (Event);
+
+
/* Interpret and generate all compile-time constants */
Event = UtBeginEvent ("Constant folding via AML interpreter");
Index: src/sys/external/bsd/acpica/dist/compiler/aslerror.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslerror.c:1.13 src/sys/external/bsd/acpica/dist/compiler/aslerror.c:1.14
--- src/sys/external/bsd/acpica/dist/compiler/aslerror.c:1.13 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/aslerror.c Sat Dec 14 11:56:32 2019
@@ -227,7 +227,7 @@ AeAddToErrorLog (
* PARAMETERS: OutputFile - Output file
* Enode - Error node to print
* PrematureEOF - True = PrematureEOF has been reached
- * Total - Total legth of line
+ * Total - Total length of line
*
* RETURN: None
*
@@ -337,7 +337,7 @@ AeDecodeErrorMessageId (
* PARAMETERS: OutputFile - Output file
* Enode - Error node to print
* PrematureEOF - True = PrematureEOF has been reached
- * Total - amount of characters printed so far
+ * Total - Number of characters printed so far
*
*
* RETURN: Status
@@ -419,6 +419,7 @@ AePrintErrorSourceLine (
fprintf (OutputFile, "\n");
return AE_OK;
}
+
/*
* Seek to the offset in the combined source file,
* read the source line, and write it to the output.
@@ -442,7 +443,8 @@ AePrintErrorSourceLine (
AslGbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename);
return AE_IO_ERROR;
}
- /* Read/write the source line, up to the maximum line length */
+
+ /* Read/write the source line, up to the maximum line length */
while (RActual && SourceByte && (SourceByte != '\n'))
{
@@ -624,7 +626,7 @@ AePrintException (
*
* RETURN: None
*
- * DESCRIPTION: Print the contents of an error nodes. This function is tailored
+ * DESCRIPTION: Print the contents of an error node. This function is tailored
* to print error nodes that are SubErrors within ASL_ERROR_MSG
*
******************************************************************************/
@@ -687,8 +689,8 @@ AePrintErrorLog (
* LogicalLineNumber - Cumulative line number
* LogicalByteOffset - Byte offset in source file
* Column - Column in current line
- * Filename - source filename
- * ExtraMessage - additional error message
+ * Filename - Source filename
+ * ExtraMessage - Additional error message
* SourceLine - Line of error source code
* SubError - SubError of this InputEnode
*
@@ -755,10 +757,17 @@ static void AslInitEnode (
Enode->FilenameLength = 6;
}
- FileNode = FlGetCurrentFileNode ();
+ /*
+ * Attempt to get the file node of the filename listed in the parse
+ * node. If the name doesn't exist in the global file node, it is
+ * because the file is included by #include or ASL include. In this
+ * case, get the current file node. The source output of the current
+ * file will contain the contents of the file listed in the parse node.
+ */
+ FileNode = FlGetFileNode (ASL_FILE_INPUT, Filename);
if (!FileNode)
{
- return;
+ FileNode = FlGetCurrentFileNode ();
}
Enode->SourceFilename =
@@ -776,8 +785,8 @@ static void AslInitEnode (
* LineNumber - Actual file line number
* Column - Column in current line
* SourceLine - Actual source code line
- * Filename - source filename
- * ExtraMessage - additional error message
+ * Filename - Source filename
+ * ExtraMessage - Additional error message
*
* RETURN: None
*
@@ -810,8 +819,8 @@ AslCommonError2 (
* LogicalLineNumber - Cumulative line number
* LogicalByteOffset - Byte offset in source file
* Column - Column in current line
- * Filename - source filename
- * ExtraMessage - additional error message
+ * Filename - Source filename
+ * ExtraMessage - Additional error message
*
* RETURN: None
*
@@ -853,8 +862,8 @@ AslCommonError (
* LogicalLineNumber - Cumulative line number
* LogicalByteOffset - Byte offset in source file
* Column - Column in current line
- * Filename - source filename
- * Message - additional error message
+ * Filename - Source filename
+ * Message - Additional error message
* SourceLine - Actual line of source code
* SubError - Sub-error associated with this error
*
@@ -917,7 +926,7 @@ AslLogNewError (
* PARAMETERS: Level - Seriousness (Warning/error, etc.)
* MessageId - Index into global message buffer
*
- * RETURN: UINT8 - modified level
+ * RETURN: UINT8 - Modified level
*
* DESCRIPTION: Get the modified level of exception codes that are reported as
* errors from the -ww option.
@@ -1261,7 +1270,7 @@ AslIsExceptionDisabled (
* MainMsg - Message pertaining to the MainOp
* SubMsgId - Index into global message buffer
* SubOp - Additional parse node for better message
- * SubMsg - Message pertainint to SubOp
+ * SubMsg - Message pertaining to SubOp
*
*
* RETURN: None
@@ -1313,7 +1322,7 @@ AslDualParseOpError (
* PARAMETERS: Level - Seriousness (Warning/error, etc.)
* MessageId - Index into global message buffer
* Op - Parse node where error happened
- * ExtraMessage - additional error message
+ * ExtraMessage - Additional error message
*
* RETURN: None
*
@@ -1351,7 +1360,7 @@ AslError (
*
* PARAMETERS: Op - Parse node where error happened
* Status - The ACPICA Exception
- * ExtraMessage - additional error message
+ * ExtraMessage - Additional error message
* Abort - TRUE -> Abort compilation
*
* RETURN: None
Index: src/sys/external/bsd/acpica/dist/compiler/aslfiles.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslfiles.c:1.14 src/sys/external/bsd/acpica/dist/compiler/aslfiles.c:1.15
--- src/sys/external/bsd/acpica/dist/compiler/aslfiles.c:1.14 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/aslfiles.c Sat Dec 14 11:56:32 2019
@@ -99,12 +99,6 @@ FlInitOneFile (
NewFileNode = ACPI_CAST_PTR (ASL_GLOBAL_FILE_NODE,
UtLocalCacheCalloc (sizeof (ASL_GLOBAL_FILE_NODE)));
- if (!NewFileNode)
- {
- AslError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, NULL, NULL);
- return (AE_NO_MEMORY);
- }
-
NewFileNode->ParserErrorDetected = FALSE;
NewFileNode->Next = AslGbl_FilesList;
@@ -312,8 +306,22 @@ ASL_GLOBAL_FILE_NODE *
FlGetCurrentFileNode (
void)
{
- return (FlGetFileNode (
- ASL_FILE_INPUT,AslGbl_Files[ASL_FILE_INPUT].Filename));
+ ASL_GLOBAL_FILE_NODE *FileNode =
+ FlGetFileNode (ASL_FILE_INPUT,AslGbl_Files[ASL_FILE_INPUT].Filename);
+
+
+ if (!FileNode)
+ {
+ /*
+ * If the current file node does not exist after initializing the file
+ * node structures, something went wrong and this is an unrecoverable
+ * condition.
+ */
+ FlFileError (ASL_FILE_INPUT, ASL_MSG_COMPILER_INTERNAL);
+ AslAbort ();
+ }
+
+ return (FileNode);
}
Index: src/sys/external/bsd/acpica/dist/compiler/dtcompile.c
diff -u src/sys/external/bsd/acpica/dist/compiler/dtcompile.c:1.14 src/sys/external/bsd/acpica/dist/compiler/dtcompile.c:1.15
--- src/sys/external/bsd/acpica/dist/compiler/dtcompile.c:1.14 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/dtcompile.c Sat Dec 14 11:56:33 2019
@@ -153,18 +153,11 @@ DtDoCompile (
UtEndEvent (Event);
FileNode = FlGetCurrentFileNode ();
- if (!FileNode)
- {
- fprintf (stderr, "Summary for %s could not be generated",
- AslGbl_Files[ASL_FILE_INPUT].Filename);
- }
- else
- {
- FileNode->TotalLineCount = AslGbl_CurrentLineNumber;
- FileNode->OriginalInputFileSize = AslGbl_InputByteCount;
- DbgPrint (ASL_PARSE_OUTPUT, "Line count: %u input file size: %u\n",
- FileNode->TotalLineCount, FileNode->OriginalInputFileSize);
- }
+
+ FileNode->TotalLineCount = AslGbl_CurrentLineNumber;
+ FileNode->OriginalInputFileSize = AslGbl_InputByteCount;
+ DbgPrint (ASL_PARSE_OUTPUT, "Line count: %u input file size: %u\n",
+ FileNode->TotalLineCount, FileNode->OriginalInputFileSize);
if (ACPI_FAILURE (Status))
{
@@ -195,11 +188,8 @@ DtDoCompile (
/* Save the compile time statistics to the current file node */
- if (FileNode)
- {
- FileNode->TotalFields = AslGbl_InputFieldCount;
- FileNode->OutputByteLength = AslGbl_TableLength;
- }
+ FileNode->TotalFields = AslGbl_InputFieldCount;
+ FileNode->OutputByteLength = AslGbl_TableLength;
return (Status);
}
@@ -465,7 +455,7 @@ DtCompileTable (
ACPI_STATUS Status = AE_OK;
- if (!Field)
+ if (!Field || !Info)
{
return (AE_BAD_PARAMETER);
}
@@ -536,6 +526,14 @@ DtCompileTable (
FieldType = DtGetFieldType (Info);
AslGbl_InputFieldCount++;
+ if (FieldType != DT_FIELD_TYPE_INLINE_SUBTABLE &&
+ strcmp (Info->Name, LocalField->Name))
+ {
+ sprintf (AslGbl_MsgBuffer, "found \"%s\" expected \"%s\"",
+ LocalField->Name, Info->Name);
+ DtError (ASL_ERROR, ASL_MSG_INVALID_LABEL, LocalField, AslGbl_MsgBuffer);
+ }
+
switch (FieldType)
{
case DT_FIELD_TYPE_FLAGS_INTEGER:
Index: src/sys/external/bsd/acpica/dist/compiler/dtfield.c
diff -u src/sys/external/bsd/acpica/dist/compiler/dtfield.c:1.14 src/sys/external/bsd/acpica/dist/compiler/dtfield.c:1.15
--- src/sys/external/bsd/acpica/dist/compiler/dtfield.c:1.14 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/dtfield.c Sat Dec 14 11:56:33 2019
@@ -468,6 +468,14 @@ DtCompileBuffer (
StringValue = DtNormalizeBuffer (StringValue, &Count);
Substring = StringValue;
+ if (Count != ByteLength)
+ {
+ sprintf(AslGbl_MsgBuffer,
+ "Found %u values, must match expected count: %u",
+ Count, ByteLength);
+ DtError (ASL_ERROR, ASL_MSG_BUFFER_LIST, Field, AslGbl_MsgBuffer);
+ goto Exit;
+ }
/* Each element of StringValue is now three chars (2 hex + 1 space) */
@@ -613,3 +621,122 @@ DtCompileFlag (
*Buffer |= (UINT8) (Value << BitPosition);
}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: DtCreateField
+ *
+ * PARAMETERS: Name
+ * Value
+ * Line
+ * Offset
+ * Column
+ * NameColumn
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Create a field
+ *
+ *****************************************************************************/
+
+void
+DtCreateField (
+ DT_TABLE_UNIT *FieldKey,
+ DT_TABLE_UNIT *FieldValue,
+ UINT32 Offset)
+{
+ DT_FIELD *Field = UtFieldCacheCalloc ();
+
+
+ Field->StringLength = 0;
+ if (FieldKey->Value)
+ {
+ Field->Name =
+ strcpy (UtLocalCacheCalloc (strlen (FieldKey->Value) + 1), FieldKey->Value);
+ }
+
+ if (FieldValue->Value)
+ {
+ Field->StringLength = strlen (FieldValue->Value);
+ Field->Value =
+ strcpy (UtLocalCacheCalloc (Field->StringLength + 1), FieldValue->Value);
+ }
+
+ Field->Line = FieldValue->Line;
+ Field->ByteOffset = Offset;
+ Field->NameColumn = FieldKey->Column;
+ Field->Column = FieldValue->Column;
+ DtLinkField (Field);
+
+ DtDumpFieldList (AslGbl_FieldList);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: DtCreateTableUnit
+ *
+ * PARAMETERS: Data
+ * Line
+ * Column
+ *
+ * RETURN: a table unit
+ *
+ * DESCRIPTION: Create a table unit
+ *
+ *****************************************************************************/
+
+DT_TABLE_UNIT *
+DtCreateTableUnit (
+ char *Data,
+ UINT32 Line,
+ UINT32 Column)
+{
+ DT_TABLE_UNIT *Unit = (DT_TABLE_UNIT *) UtFieldCacheCalloc ();
+
+
+ Unit->Value = Data;
+ Unit->Line = Line;
+ Unit->Column = Column;
+ return (Unit);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: DtLinkField
+ *
+ * PARAMETERS: Field - New field object to link
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Link one field name and value to the list
+ *
+ *****************************************************************************/
+
+void
+DtLinkField (
+ DT_FIELD *Field)
+{
+ DT_FIELD *Prev;
+ DT_FIELD *Next;
+
+
+ Prev = Next = AslGbl_FieldList;
+
+ while (Next)
+ {
+ Prev = Next;
+ Next = Next->Next;
+ }
+
+ if (Prev)
+ {
+ Prev->Next = Field;
+ }
+ else
+ {
+ AslGbl_FieldList = Field;
+ }
+}
Index: src/sys/external/bsd/acpica/dist/compiler/aslload.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.15 src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.16
--- src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.15 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/aslload.c Sat Dec 14 11:56:32 2019
@@ -249,7 +249,7 @@ LdLoadFieldElements (
* The name already exists in this scope
* But continue processing the elements
*/
- AslDualParseOpError (ASL_WARNING, ASL_MSG_NAME_EXISTS, Child,
+ AslDualParseOpError (ASL_ERROR, ASL_MSG_NAME_EXISTS, Child,
Child->Asl.Value.String, ASL_MSG_FOUND_HERE, Node->Op,
Node->Op->Asl.ExternalName);
}
@@ -418,13 +418,12 @@ LdNamespace1Begin (
case AML_INT_CONNECTION_OP:
-
if (Op->Asl.Child->Asl.AmlOpcode != AML_INT_NAMEPATH_OP)
{
break;
}
- Arg = Op->Asl.Child;
+ Arg = Op->Asl.Child;
Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Asl.ExternalName,
ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT,
WalkState, &Node);
@@ -433,15 +432,6 @@ LdNamespace1Begin (
break;
}
- if (Node->Type == ACPI_TYPE_BUFFER)
- {
- Arg->Asl.Node = Node;
-
- Arg = Node->Op->Asl.Child; /* Get namepath */
- Arg = Arg->Asl.Next; /* Get actual buffer */
- Arg = Arg->Asl.Child; /* Buffer length */
- Arg = Arg->Asl.Next; /* RAW_DATA buffer */
- }
break;
default:
@@ -468,7 +458,6 @@ LdNamespace1Begin (
* These opcodes are guaranteed to have a parent.
* Examine the parent opcode.
*/
- Status = AE_OK;
ParentOp = Op->Asl.Parent;
OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Asl.AmlOpcode);
@@ -889,12 +878,19 @@ FinishNode:
Op->Asl.Node = Node;
Node->Op = Op;
- /* Set the actual data type if appropriate (EXTERNAL term only) */
-
+ /*
+ * Set the actual data type if appropriate (EXTERNAL term only)
+ * As of 11/19/2019, ASL External() does not support parameter
+ * counts. When an External method is loaded, the parameter count is
+ * unknown setting Node->Value to ASL_EXTERNAL_METHOD_UNKNOWN_PARAMS
+ * indicates that the parameter count for this method is unknown.
+ * This information is used in ASL cross reference to help determine the
+ * parameter count through method calls.
+ */
if (ActualObjectType != ACPI_TYPE_ANY)
{
Node->Type = (UINT8) ActualObjectType;
- Node->Value = ASL_EXTERNAL_METHOD;
+ Node->Value = ASL_EXTERNAL_METHOD_UNKNOWN_PARAMS;
}
if (Op->Asl.ParseOpcode == PARSEOP_METHOD)
Index: src/sys/external/bsd/acpica/dist/compiler/aslxref.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslxref.c:1.15 src/sys/external/bsd/acpica/dist/compiler/aslxref.c:1.16
--- src/sys/external/bsd/acpica/dist/compiler/aslxref.c:1.15 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/aslxref.c Sat Dec 14 11:56:33 2019
@@ -947,7 +947,7 @@ XfNamespaceLocateBegin (
NextOp = NextOp->Asl.Next;
}
- if (Node->Value != ASL_EXTERNAL_METHOD &&
+ if (Node->Value != ASL_EXTERNAL_METHOD_UNKNOWN_PARAMS &&
Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_EXTERNAL)
{
/*
@@ -956,8 +956,18 @@ XfNamespaceLocateBegin (
*/
if (PassedArgs != Node->Value)
{
- snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer), "%s requires %u", Op->Asl.ExternalName,
- Node->Value);
+ if (Node->Flags & ANOBJ_IS_EXTERNAL)
+ {
+ snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer),
+ "according to previous use, %s requires %u",
+ Op->Asl.ExternalName, Node->Value);
+ }
+ else
+ {
+ snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer),
+ "%s requires %u", Op->Asl.ExternalName,
+ Node->Value);
+ }
if (PassedArgs < Node->Value)
{
@@ -969,6 +979,22 @@ XfNamespaceLocateBegin (
}
}
}
+
+ /*
+ * At this point, a method call to an external method has been
+ * detected. As of 11/19/2019, iASL does not support parameter counts
+ * for methods declared as external. Therefore, save the parameter
+ * count of the first method call and use this count check other
+ * method calls to ensure that the methods are being called with the
+ * same amount of parameters.
+ */
+ else if (Node->Type == ACPI_TYPE_METHOD &&
+ (Node->Flags & ANOBJ_IS_EXTERNAL) &&
+ Node->Value == ASL_EXTERNAL_METHOD_UNKNOWN_PARAMS &&
+ Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_EXTERNAL)
+ {
+ Node->Value = PassedArgs;
+ }
}
/* 4) Check for an ASL Field definition */
Index: src/sys/external/bsd/acpica/dist/compiler/asloptions.c
diff -u src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.11 src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.12
--- src/sys/external/bsd/acpica/dist/compiler/asloptions.c:1.11 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/asloptions.c Sat Dec 14 11:56:32 2019
@@ -111,7 +111,7 @@ AslCommandLine (
{
exit (-1);
}
- exit (1);
+ exit (0);
}
/* Next parameter must be the input filename */
Index: src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c:1.11 src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c:1.12
--- src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c:1.11 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c Sat Dec 14 11:56:32 2019
@@ -350,7 +350,7 @@ ApCheckPackage (
for (i = 0; i < Package->RetInfo4.Count1; ++i)
{
- Status = ApCheckObjectType (Predefined->Info.Name, Op,
+ ApCheckObjectType (Predefined->Info.Name, Op,
Package->RetInfo4.ObjectType1, i);
Op = Op->Asl.Next;
}
Index: src/sys/external/bsd/acpica/dist/compiler/aslutils.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.24 src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.25
--- src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.24 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/aslutils.c Sat Dec 14 11:56:33 2019
@@ -115,7 +115,7 @@ UtQueryForOverwrite (
char *Pathname)
{
struct stat StatInfo;
- int InChar = 0x34;
+ int InChar;
if (!stat (Pathname, &StatInfo))
@@ -459,11 +459,6 @@ UtDisplayOneSummary (
/* Summary of main input and output files */
FileNode = FlGetCurrentFileNode ();
- if (!FileNode)
- {
- fprintf (stderr, "Summary could not be generated");
- return;
- }
if (FileNode->ParserErrorDetected)
{
Index: src/sys/external/bsd/acpica/dist/compiler/dtcompilerparser.y
diff -u src/sys/external/bsd/acpica/dist/compiler/dtcompilerparser.y:1.2 src/sys/external/bsd/acpica/dist/compiler/dtcompilerparser.y:1.3
--- src/sys/external/bsd/acpica/dist/compiler/dtcompilerparser.y:1.2 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/compiler/dtcompilerparser.y Sat Dec 14 11:56:33 2019
@@ -57,17 +57,24 @@ void * AslLocalAllo
int DtCompilerParserlex (void);
int DtCompilerParserparse (void);
+#ifdef YYBYACC
+struct YYLTYPE;
+#endif
void DtCompilerParsererror (
#ifdef YYBYACC
- YYLTYPE *loc,
+ struct YYLTYPE *loc,
#endif
char const *msg);
extern char *DtCompilerParsertext;
extern DT_FIELD *AslGbl_CurrentField;
+extern int DtLabelByteOffset;
extern UINT64 DtCompilerParserResult; /* Expression return value */
extern UINT64 DtCompilerParserlineno; /* Current line number */
+extern UINT32 DtTokenFirstLine;
+extern UINT32 DtTokenFirstColumn;
+
/* Bison/yacc configuration */
#define yytname DtCompilerParsername
@@ -82,42 +89,30 @@ extern UINT64 DtCompilerPa
%}
-%code requires {
-
- typedef struct YYLTYPE {
- int first_line;
- int last_line;
- int first_column;
- int last_column;
- int first_byte_offset;
- } YYLTYPE;
-
- #define YYLTYPE_IS_DECLARED 1
-}
-
%union {
char *s;
DT_FIELD *f;
+ DT_TABLE_UNIT *u;
}
%type <f> Table
-%token <s> DT_PARSEOP_DATA
-%token <s> DT_PARSEOP_LABEL
-%token <s> DT_PARSEOP_STRING_DATA
-%token <s> DT_PARSEOP_LINE_CONTINUATION
-%type <s> Data
-%type <s> Datum
-%type <s> MultiLineData
-%type <s> MultiLineDataList
+%token <u> DT_PARSEOP_DATA
+%token <u> DT_PARSEOP_LABEL
+%token <u> DT_PARSEOP_STRING_DATA
+%token <u> DT_PARSEOP_LINE_CONTINUATION
+%type <u> Data
+%type <u> Datum
+%type <u> MultiLineData
+%type <u> MultiLineDataList
%%
Table
:
- FieldList { DtCompilerParserResult = 5;}
+ FieldList { }
;
FieldList
@@ -126,7 +121,7 @@ FieldList
;
Field
- : DT_PARSEOP_LABEL ':' Data { DtCreateField ($1, $3, (@3).first_line, (@1).first_byte_offset, (@1).first_column, (@3).first_column); }
+ : DT_PARSEOP_LABEL ':' Data { DtCreateField ($1, $3, DtLabelByteOffset); }
;
Data
@@ -136,7 +131,7 @@ Data
;
MultiLineDataList
- : MultiLineDataList MultiLineData { $$ = AcpiUtStrcat(AcpiUtStrcat($1, " "), $2); } /* combine the strings with strcat */
+ : MultiLineDataList MultiLineData { $$ = DtCreateTableUnit (AcpiUtStrcat(AcpiUtStrcat($1->Value, " "), $2->Value), $1->Line, $1->Column); } /* combine the strings with strcat */
| MultiLineData { $$ = $1; }
;
@@ -145,8 +140,14 @@ MultiLineData
;
Datum
- : DT_PARSEOP_DATA { DbgPrint (ASL_PARSE_OUTPUT, "parser data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
- | DT_PARSEOP_STRING_DATA { DbgPrint (ASL_PARSE_OUTPUT, "parser string data: [%s]\n", DtCompilerParserlval.s); $$ = AcpiUtStrdup(DtCompilerParserlval.s); }
+ : DT_PARSEOP_DATA {
+ DbgPrint (ASL_PARSE_OUTPUT, "parser data: [%s]\n", DtCompilerParserlval.s);
+ $$ = DtCreateTableUnit (AcpiUtStrdup(DtCompilerParserlval.s), DtTokenFirstLine, DtTokenFirstColumn);
+ }
+ | DT_PARSEOP_STRING_DATA {
+ DbgPrint (ASL_PARSE_OUTPUT, "parser string data: [%s]\n", DtCompilerParserlval.s);
+ $$ = DtCreateTableUnit (AcpiUtStrdup(DtCompilerParserlval.s), DtTokenFirstLine, DtTokenFirstColumn);
+ }
;
@@ -171,7 +172,7 @@ Datum
void
DtCompilerParsererror (
#ifdef YYBYACC
- YYLTYPE *loc,
+ struct YYLTYPE *loc,
#endif
char const *Message)
{
Index: src/sys/external/bsd/acpica/dist/debugger/dbdisply.c
diff -u src/sys/external/bsd/acpica/dist/debugger/dbdisply.c:1.15 src/sys/external/bsd/acpica/dist/debugger/dbdisply.c:1.16
--- src/sys/external/bsd/acpica/dist/debugger/dbdisply.c:1.15 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/debugger/dbdisply.c Sat Dec 14 11:56:33 2019
@@ -605,7 +605,6 @@ AcpiDbDisplayResults (
return;
}
- ObjDesc = WalkState->MethodDesc;
Node = WalkState->MethodNode;
if (WalkState->Results)
@@ -665,7 +664,6 @@ AcpiDbDisplayCallingTree (
return;
}
- Node = WalkState->MethodNode;
AcpiOsPrintf ("Current Control Method Call Tree\n");
while (WalkState)
Index: src/sys/external/bsd/acpica/dist/debugger/dbinput.c
diff -u src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.19 src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.20
--- src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.19 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/debugger/dbinput.c Sat Dec 14 11:56:33 2019
@@ -100,6 +100,7 @@ enum AcpiExDebuggerCommands
CMD_EVALUATE,
CMD_EXECUTE,
CMD_EXIT,
+ CMD_FIELDS,
CMD_FIND,
CMD_GO,
CMD_HANDLERS,
@@ -179,6 +180,7 @@ static const ACPI_DB_COMMAND_INFO Acpi
{"EVALUATE", 1},
{"EXECUTE", 1},
{"EXIT", 0},
+ {"FIELDS", 1},
{"FIND", 1},
{"GO", 0},
{"HANDLERS", 0},
@@ -252,6 +254,7 @@ static const ACPI_DB_COMMAND_HELP Acpi
{1, " Find <AcpiName> (? is wildcard)", "Find ACPI name(s) with wildcards\n"},
{1, " Integrity", "Validate namespace integrity\n"},
{1, " Methods", "Display list of loaded control methods\n"},
+ {1, " Fields <AddressSpaceId>", "Display list of loaded field units by space ID\n"},
{1, " Namespace [Object] [Depth]", "Display loaded namespace tree/subtree\n"},
{1, " Notify <Object> <Value>", "Send a notification on Object\n"},
{1, " Objects [ObjectType]", "Display summary of all objects or just given type\n"},
@@ -575,6 +578,22 @@ AcpiDbGetNextToken (
}
break;
+ case '{':
+
+ /* This is the start of a field unit, scan until closing brace */
+
+ String++;
+ Start = String;
+ Type = ACPI_TYPE_FIELD_UNIT;
+
+ /* Find end of buffer */
+
+ while (*String && (*String != '}'))
+ {
+ String++;
+ }
+ break;
+
case '[':
/* This is the start of a package, scan until closing bracket */
@@ -769,6 +788,7 @@ AcpiDbCommandDispatch (
ACPI_PARSE_OBJECT *Op)
{
UINT32 Temp;
+ UINT64 Temp64;
UINT32 CommandIndex;
UINT32 ParamCount;
char *CommandLine;
@@ -786,7 +806,6 @@ AcpiDbCommandDispatch (
ParamCount = AcpiDbGetLine (InputBuffer);
CommandIndex = AcpiDbMatchCommand (AcpiGbl_DbArgs[0]);
- Temp = 0;
/*
* We don't want to add the !! command to the history buffer. It
@@ -885,6 +904,21 @@ AcpiDbCommandDispatch (
Status = AcpiDbFindNameInNamespace (AcpiGbl_DbArgs[1]);
break;
+ case CMD_FIELDS:
+
+ Status = AcpiUtStrtoul64 (AcpiGbl_DbArgs[1], &Temp64);
+
+ if (ACPI_FAILURE (Status) || Temp64 >= ACPI_NUM_PREDEFINED_REGIONS)
+ {
+ AcpiOsPrintf (
+ "Invalid address space ID: must be between 0 and %u inclusive\n",
+ ACPI_NUM_PREDEFINED_REGIONS - 1);
+ return (AE_OK);
+ }
+
+ Status = AcpiDbDisplayFields ((UINT32) Temp64);
+ break;
+
case CMD_GO:
AcpiGbl_CmSingleStep = FALSE;
Index: src/sys/external/bsd/acpica/dist/debugger/dbmethod.c
diff -u src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.13 src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.14
--- src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.13 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/debugger/dbmethod.c Sat Dec 14 11:56:33 2019
@@ -407,6 +407,11 @@ AcpiDbDisassembleMethod (
WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE;
Status = AcpiPsParseAml (WalkState);
+ if (ACPI_FAILURE(Status))
+ {
+ return (Status);
+ }
+
(void) AcpiDmParseDeferredOps (Op);
/* Now we can disassemble the method */
Index: src/sys/external/bsd/acpica/dist/debugger/dbnames.c
diff -u src/sys/external/bsd/acpica/dist/debugger/dbnames.c:1.12 src/sys/external/bsd/acpica/dist/debugger/dbnames.c:1.13
--- src/sys/external/bsd/acpica/dist/debugger/dbnames.c:1.12 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/debugger/dbnames.c Sat Dec 14 11:56:33 2019
@@ -46,6 +46,7 @@
#include "acnamesp.h"
#include "acdebug.h"
#include "acpredef.h"
+#include "acinterp.h"
#define _COMPONENT ACPI_CA_DEBUGGER
@@ -616,6 +617,90 @@ AcpiDbWalkForObjectCounts (
/*******************************************************************************
*
+ * FUNCTION: AcpiDbWalkForFields
+ *
+ * PARAMETERS: Callback from WalkNamespace
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Display short info about objects in the namespace
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AcpiDbWalkForFields (
+ ACPI_HANDLE ObjHandle,
+ UINT32 NestingLevel,
+ void *Context,
+ void **ReturnValue)
+{
+ ACPI_OBJECT *RetValue;
+ ACPI_REGION_WALK_INFO *Info = (ACPI_REGION_WALK_INFO *) Context;
+ ACPI_BUFFER Buffer;
+ ACPI_STATUS Status;
+ ACPI_NAMESPACE_NODE *Node = AcpiNsValidateHandle (ObjHandle);
+
+
+ if (!Node)
+ {
+ return (AE_OK);
+ }
+ if (Node->Object->Field.RegionObj->Region.SpaceId != Info->AddressSpaceId)
+ {
+ return (AE_OK);
+ }
+
+ Info->Count++;
+
+ /* Get and display the full pathname to this object */
+
+ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
+ Status = AcpiNsHandleToPathname (ObjHandle, &Buffer, TRUE);
+ if (ACPI_FAILURE (Status))
+ {
+ AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle);
+ return (AE_OK);
+ }
+
+ AcpiOsPrintf ("%s ", (char *) Buffer.Pointer);
+ ACPI_FREE (Buffer.Pointer);
+
+ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
+ AcpiEvaluateObject (ObjHandle, NULL, NULL, &Buffer);
+
+ /*
+ * Since this is a field unit, surround the output in braces
+ */
+ AcpiOsPrintf ("{");
+
+ RetValue = (ACPI_OBJECT *) Buffer.Pointer;
+ switch (RetValue->Type)
+ {
+ case ACPI_TYPE_INTEGER:
+
+ AcpiOsPrintf ("%8.8X%8.8X", ACPI_FORMAT_UINT64 (RetValue->Integer.Value));
+ break;
+
+ case ACPI_TYPE_BUFFER:
+
+ AcpiUtDumpBuffer (RetValue->Buffer.Pointer,
+ RetValue->Buffer.Length, DB_DISPLAY_DATA_ONLY | DB_BYTE_DISPLAY, 0);
+ break;
+
+ default:
+
+ break;
+ }
+
+ AcpiOsPrintf ("}\n");
+
+ ACPI_FREE (Buffer.Pointer);
+ return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDbWalkForSpecificObjects
*
* PARAMETERS: Callback from WalkNamespace
@@ -751,6 +836,42 @@ AcpiDbDisplayObjects (
/*******************************************************************************
*
+ * FUNCTION: AcpiDbDisplayFields
+ *
+ * PARAMETERS: ObjTypeArg - Type of object to display
+ * DisplayCountArg - Max depth to display
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Display objects in the namespace of the requested type
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiDbDisplayFields (
+ UINT32 AddressSpaceId)
+{
+ ACPI_REGION_WALK_INFO Info;
+
+
+ Info.Count = 0;
+ Info.OwnerId = ACPI_OWNER_ID_MAX;
+ Info.DebugLevel = ACPI_UINT32_MAX;
+ Info.DisplayType = ACPI_DISPLAY_SUMMARY | ACPI_DISPLAY_SHORT;
+ Info.AddressSpaceId = AddressSpaceId;
+
+ /* Walk the namespace from the root */
+
+ (void) AcpiWalkNamespace (ACPI_TYPE_LOCAL_REGION_FIELD, ACPI_ROOT_OBJECT,
+ ACPI_UINT32_MAX, AcpiDbWalkForFields, NULL,
+ (void *) &Info, NULL);
+
+ return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDbIntegrityWalk
*
* PARAMETERS: Callback from WalkNamespace
Index: src/sys/external/bsd/acpica/dist/disassembler/dmresrc.c
diff -u src/sys/external/bsd/acpica/dist/disassembler/dmresrc.c:1.11 src/sys/external/bsd/acpica/dist/disassembler/dmresrc.c:1.12
--- src/sys/external/bsd/acpica/dist/disassembler/dmresrc.c:1.11 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/disassembler/dmresrc.c Sat Dec 14 11:56:33 2019
@@ -333,7 +333,6 @@ AcpiDmResourceTemplate (
* missing EndDependentDescriptor.
*/
Level--;
- DependentFns = FALSE;
/* Go ahead and insert EndDependentFn() */
Index: src/sys/external/bsd/acpica/dist/disassembler/dmwalk.c
diff -u src/sys/external/bsd/acpica/dist/disassembler/dmwalk.c:1.11 src/sys/external/bsd/acpica/dist/disassembler/dmwalk.c:1.12
--- src/sys/external/bsd/acpica/dist/disassembler/dmwalk.c:1.11 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/disassembler/dmwalk.c Sat Dec 14 11:56:33 2019
@@ -849,7 +849,6 @@ AcpiDmDescendingOp (
* the buffer size Op. Open up a new block
*/
NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
- NextOp = NextOp->Common.Next;
ASL_CV_CLOSE_PAREN (Op, Level);
/* Emit description comment for Name() with a predefined ACPI name */
Index: src/sys/external/bsd/acpica/dist/dispatcher/dscontrol.c
diff -u src/sys/external/bsd/acpica/dist/dispatcher/dscontrol.c:1.11 src/sys/external/bsd/acpica/dist/dispatcher/dscontrol.c:1.12
--- src/sys/external/bsd/acpica/dist/dispatcher/dscontrol.c:1.11 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/dispatcher/dscontrol.c Sat Dec 14 11:56:33 2019
@@ -127,7 +127,7 @@ AcpiDsExecBeginControlOp (
ControlState->Control.Opcode =
Op->Common.AmlOpcode;
ControlState->Control.LoopTimeout = AcpiOsGetTimer () +
- (UINT64) (AcpiGbl_MaxLoopIterations * ACPI_100NSEC_PER_SEC);
+ ((UINT64) AcpiGbl_MaxLoopIterations * ACPI_100NSEC_PER_SEC);
/* Push the control state on this walk's control stack */
Index: src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c
diff -u src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c:1.13 src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c:1.14
--- src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c:1.13 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/dispatcher/dsopcode.c Sat Dec 14 11:56:33 2019
@@ -266,6 +266,7 @@ AcpiDsInitBufferField (
}
ObjDesc->BufferField.BufferObj = BufferDesc;
+ ObjDesc->BufferField.IsCreateField = AmlOpcode == AML_CREATE_FIELD_OP;
/* Reference count for BufferDesc inherits ObjDesc count */
Index: src/sys/external/bsd/acpica/dist/events/evregion.c
diff -u src/sys/external/bsd/acpica/dist/events/evregion.c:1.9 src/sys/external/bsd/acpica/dist/events/evregion.c:1.10
--- src/sys/external/bsd/acpica/dist/events/evregion.c:1.9 Fri May 17 16:27:48 2019
+++ src/sys/external/bsd/acpica/dist/events/evregion.c Sat Dec 14 11:56:33 2019
@@ -929,11 +929,11 @@ AcpiEvOrphanEcRegMethod (
Objects[1].Type = ACPI_TYPE_INTEGER;
Objects[1].Integer.Value = ACPI_REG_CONNECT;
- Status = AcpiEvaluateObject (RegMethod, NULL, &Args, NULL);
+ (void) AcpiEvaluateObject (RegMethod, NULL, &Args, NULL);
Exit:
/* We ignore all errors from above, don't care */
- Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
+ (void) AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
return_VOID;
}
Index: src/sys/external/bsd/acpica/dist/events/evrgnini.c
diff -u src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.14 src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.15
--- src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.14 Sun Apr 28 21:18:06 2019
+++ src/sys/external/bsd/acpica/dist/events/evrgnini.c Sat Dec 14 11:56:33 2019
@@ -255,7 +255,6 @@ AcpiEvPciConfigRegionSetup (
* root bridge. Still need to return a context object
* for the new PCI_Config operation region, however.
*/
- Status = AE_OK;
}
else
{
Index: src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c
diff -u src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c:1.12 src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c:1.13
--- src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c:1.12 Sun Apr 28 21:18:07 2019
+++ src/sys/external/bsd/acpica/dist/hardware/hwxfsleep.c Sat Dec 14 11:56:33 2019
@@ -84,7 +84,7 @@ static ACPI_SLEEP_FUNCTIONS Acpi
ACPI_HW_OPTIONAL_FUNCTION (AcpiHwLegacyWakePrep)),
ACPI_STRUCT_INIT (ExtendedFunction,
AcpiHwExtendedWakePrep) },
- {ACPI_STRUCT_INIT (Legacy_function,
+ {ACPI_STRUCT_INIT (LegacyFunction,
ACPI_HW_OPTIONAL_FUNCTION (AcpiHwLegacyWake)),
ACPI_STRUCT_INIT (ExtendedFunction,
AcpiHwExtendedWake) }
@@ -249,6 +249,10 @@ AcpiEnterSleepStateS4bios (
Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand,
(UINT32) AcpiGbl_FADT.S4BiosRequest, 8);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
do {
AcpiOsStall (ACPI_USEC_PER_MSEC);
Index: src/sys/external/bsd/acpica/dist/include/acdebug.h
diff -u src/sys/external/bsd/acpica/dist/include/acdebug.h:1.15 src/sys/external/bsd/acpica/dist/include/acdebug.h:1.16
--- src/sys/external/bsd/acpica/dist/include/acdebug.h:1.15 Sun Apr 28 21:18:07 2019
+++ src/sys/external/bsd/acpica/dist/include/acdebug.h Sat Dec 14 11:56:33 2019
@@ -284,6 +284,10 @@ void
AcpiDbGetBusInfo (
void);
+ACPI_STATUS
+AcpiDbDisplayFields (
+ UINT32 AddressSpaceId);
+
/*
* dbdisply - debug display commands
Index: src/sys/external/bsd/acpica/dist/include/acpixf.h
diff -u src/sys/external/bsd/acpica/dist/include/acpixf.h:1.23 src/sys/external/bsd/acpica/dist/include/acpixf.h:1.24
--- src/sys/external/bsd/acpica/dist/include/acpixf.h:1.23 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/include/acpixf.h Sat Dec 14 11:56:33 2019
@@ -46,7 +46,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20190816
+#define ACPI_CA_VERSION 0x20191213
#include "acconfig.h"
#include "actypes.h"
@@ -556,7 +556,13 @@ AcpiInstallTable (
ACPI_EXTERNAL_RETURN_STATUS (
ACPI_STATUS
AcpiLoadTable (
- ACPI_TABLE_HEADER *Table))
+ ACPI_TABLE_HEADER *Table,
+ UINT32 *TableIdx))
+
+ACPI_EXTERNAL_RETURN_STATUS (
+ACPI_STATUS
+AcpiUnloadTable (
+ UINT32 TableIndex))
ACPI_EXTERNAL_RETURN_STATUS (
ACPI_STATUS
Index: src/sys/external/bsd/acpica/dist/include/acutils.h
diff -u src/sys/external/bsd/acpica/dist/include/acutils.h:1.20 src/sys/external/bsd/acpica/dist/include/acutils.h:1.21
--- src/sys/external/bsd/acpica/dist/include/acutils.h:1.20 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/include/acutils.h Sat Dec 14 11:56:33 2019
@@ -182,10 +182,11 @@ typedef struct acpi_pkg_info
/* AcpiUtDumpBuffer */
-#define DB_BYTE_DISPLAY 1
-#define DB_WORD_DISPLAY 2
-#define DB_DWORD_DISPLAY 4
-#define DB_QWORD_DISPLAY 8
+#define DB_BYTE_DISPLAY 0x01
+#define DB_WORD_DISPLAY 0x02
+#define DB_DWORD_DISPLAY 0x04
+#define DB_QWORD_DISPLAY 0x08
+#define DB_DISPLAY_DATA_ONLY 0x10
/*
Index: src/sys/external/bsd/acpica/dist/namespace/nsdump.c
diff -u src/sys/external/bsd/acpica/dist/namespace/nsdump.c:1.16 src/sys/external/bsd/acpica/dist/namespace/nsdump.c:1.17
--- src/sys/external/bsd/acpica/dist/namespace/nsdump.c:1.16 Thu Oct 24 21:32:56 2019
+++ src/sys/external/bsd/acpica/dist/namespace/nsdump.c Sat Dec 14 11:56:33 2019
@@ -369,7 +369,7 @@ AcpiNsDumpOneObject (
AcpiOsPrintf (" =");
for (i = 0; (i < ObjDesc->Buffer.Length && i < 12); i++)
{
- AcpiOsPrintf (" %.2hhX", ObjDesc->Buffer.Pointer[i]);
+ AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]);
}
}
AcpiOsPrintf ("\n");
@@ -466,7 +466,7 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_LOCAL_BANK_FIELD:
case ACPI_TYPE_LOCAL_INDEX_FIELD:
- AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hhd\n",
+ AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2X\n",
(ObjDesc->CommonField.BaseByteOffset * 8)
+ ObjDesc->CommonField.StartFieldBitOffset,
ObjDesc->CommonField.BitLength,
@@ -651,8 +651,6 @@ AcpiNsDumpOneObject (
goto Cleanup;
}
-
- ObjType = ACPI_TYPE_INVALID; /* Terminate loop after next pass */
}
Cleanup:
Index: src/sys/external/bsd/acpica/dist/namespace/nsxfname.c
diff -u src/sys/external/bsd/acpica/dist/namespace/nsxfname.c:1.11 src/sys/external/bsd/acpica/dist/namespace/nsxfname.c:1.12
--- src/sys/external/bsd/acpica/dist/namespace/nsxfname.c:1.11 Sun Apr 28 21:18:07 2019
+++ src/sys/external/bsd/acpica/dist/namespace/nsxfname.c Sat Dec 14 11:56:33 2019
@@ -504,7 +504,7 @@ AcpiGetObjectInfo (
if (Cls)
{
- NextIdString = AcpiNsCopyDeviceId (&Info->ClassCode,
+ (void) AcpiNsCopyDeviceId (&Info->ClassCode,
Cls, NextIdString);
}
Index: src/sys/external/bsd/acpica/dist/tables/tbdata.c
diff -u src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.13 src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.14
--- src/sys/external/bsd/acpica/dist/tables/tbdata.c:1.13 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/tables/tbdata.c Sat Dec 14 11:56:34 2019
@@ -1082,6 +1082,10 @@ AcpiTbLoadTable (
}
Status = AcpiNsLoadTable (TableIndex, ParentNode);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
/*
* Update GPEs for any new _Lxx/_Exx methods. Ignore errors. The host is
Index: src/sys/external/bsd/acpica/dist/tables/tbxfload.c
diff -u src/sys/external/bsd/acpica/dist/tables/tbxfload.c:1.11 src/sys/external/bsd/acpica/dist/tables/tbxfload.c:1.12
--- src/sys/external/bsd/acpica/dist/tables/tbxfload.c:1.11 Tue Oct 15 12:13:39 2019
+++ src/sys/external/bsd/acpica/dist/tables/tbxfload.c Sat Dec 14 11:56:34 2019
@@ -348,6 +348,8 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTabl
*
* PARAMETERS: Table - Pointer to a buffer containing the ACPI
* table to be loaded.
+ * TableIdx - Pointer to a UINT32 for storing the table
+ * index, might be NULL
*
* RETURN: Status
*
@@ -361,7 +363,8 @@ ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTabl
ACPI_STATUS
AcpiLoadTable (
- ACPI_TABLE_HEADER *Table)
+ ACPI_TABLE_HEADER *Table,
+ UINT32 *TableIdx)
{
ACPI_STATUS Status;
UINT32 TableIndex;
@@ -382,6 +385,11 @@ AcpiLoadTable (
ACPI_INFO (("Host-directed Dynamic ACPI Table Load:"));
Status = AcpiTbInstallAndLoadTable (ACPI_PTR_TO_PHYSADDR (Table),
ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, FALSE, &TableIndex);
+ if (TableIdx)
+ {
+ *TableIdx = TableIndex;
+ }
+
if (ACPI_SUCCESS (Status))
{
/* Complete the initialization/resolution of new objects */
@@ -485,3 +493,42 @@ AcpiUnloadParentTable (
}
ACPI_EXPORT_SYMBOL (AcpiUnloadParentTable)
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUnloadTable
+ *
+ * PARAMETERS: TableIndex - Index as returned by AcpiLoadTable
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Via the TableIndex representing an SSDT or OEMx table, unloads
+ * the table and deletes all namespace objects associated with
+ * that table. Unloading of the DSDT is not allowed.
+ * Note: Mainly intended to support hotplug removal of SSDTs.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUnloadTable (
+ UINT32 TableIndex)
+{
+ ACPI_STATUS Status;
+
+
+ ACPI_FUNCTION_TRACE (AcpiUnloadTable);
+
+
+ if (TableIndex == 1)
+ {
+ /* TableIndex==1 means DSDT is the owner. DSDT cannot be unloaded */
+
+ return_ACPI_STATUS (AE_TYPE);
+ }
+
+ Status = AcpiTbUnloadTable (TableIndex);
+ return_ACPI_STATUS (Status);
+}
+
+ACPI_EXPORT_SYMBOL (AcpiUnloadTable)
Index: src/sys/external/bsd/acpica/dist/utilities/uttrack.c
diff -u src/sys/external/bsd/acpica/dist/utilities/uttrack.c:1.17 src/sys/external/bsd/acpica/dist/utilities/uttrack.c:1.18
--- src/sys/external/bsd/acpica/dist/utilities/uttrack.c:1.17 Sun Apr 28 21:18:08 2019
+++ src/sys/external/bsd/acpica/dist/utilities/uttrack.c Sat Dec 14 11:56:34 2019
@@ -756,7 +756,7 @@ AcpiUtDumpAllocations (
case ACPI_DESC_TYPE_PARSER:
- AcpiOsPrintf ("AmlOpcode 0x%04hX\n",
+ AcpiOsPrintf ("AmlOpcode 0x%04X\n",
Descriptor->Op.Asl.AmlOpcode);
break;