aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2018-11-01 02:09:52 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2018-11-01 02:09:52 +0000
commit4d4b15a0e8524e15826ac932bd05252dbd246422 (patch)
tree2733e92ee403325b88fed63fcb339890232290af
parent98117aa0347721c1b33897e435818da3673040ca (diff)
Import ACPICA 20181031.vendor/acpica/20181031
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=339981 svn path=/vendor-sys/acpica/20181031/; revision=339982; tag=vendor/acpica/20181031
-rw-r--r--changes.txt50
-rw-r--r--source/common/dmtbdump3.c52
-rw-r--r--source/common/dmtbinfo3.c20
-rw-r--r--source/compiler/aslcompile.c2
-rw-r--r--source/compiler/aslerror.c4
-rw-r--r--source/compiler/aslload.c97
-rw-r--r--source/compiler/aslmain.c2
-rw-r--r--source/compiler/aslmessages.c6
-rw-r--r--source/compiler/aslmessages.h2
-rw-r--r--source/compiler/aslpredef.c2
-rw-r--r--source/compiler/aslxref.c46
-rw-r--r--source/compiler/dtio.c28
-rw-r--r--source/compiler/dttable2.c66
-rw-r--r--source/compiler/prscan.c1
-rw-r--r--source/components/debugger/dbxface.c122
-rw-r--r--source/components/dispatcher/dsopcode.c3
-rw-r--r--source/components/dispatcher/dswload2.c9
-rw-r--r--source/components/namespace/nsaccess.c21
-rw-r--r--source/components/parser/psloop.c22
-rw-r--r--source/components/parser/psobject.c2
-rw-r--r--source/components/tables/tbxfload.c2
-rw-r--r--source/include/acdisasm.h2
-rw-r--r--source/include/acnamesp.h1
-rw-r--r--source/include/acpixf.h9
-rw-r--r--source/include/actbinfo.h2
-rw-r--r--source/include/actbl3.h28
-rw-r--r--source/tools/acpidump/apmain.c2
-rw-r--r--source/tools/acpiexec/aemain.c12
-rw-r--r--source/tools/acpiexec/aetables.c12
-rw-r--r--source/tools/acpinames/anmain.c1
-rw-r--r--source/tools/acpisrc/astable.c2
31 files changed, 501 insertions, 129 deletions
diff --git a/changes.txt b/changes.txt
index c84aab623809..91ac04cfef80 100644
--- a/changes.txt
+++ b/changes.txt
@@ -1,4 +1,54 @@
----------------------------------------
+31 October 2018. Summary of changes for version 20181031:
+
+This release is available at https://acpica.org/downloads
+
+
+An Operation Region regression was fixed by properly adding address
+ranges to a global list during initialization. This allows OS to
+accurately check for overlapping regions between native devices (such as
+PCI) and Operation regions as well as checking for region conflicts
+between two Operation Regions.
+
+Added support for the 2-byte extended opcodes in the code/feature that
+attempts to continue parsing during the table load phase. Skip parsing
+Device declarations (and other extended opcodes) when an error occurs
+during parsing. Previously, only single-byte opcodes were supported.
+
+Cleanup: Simplified the module-level code support by eliminating a
+useless global variable (AcpiGbl_GroupModuleLeveCode).
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
+could cause a fault in the preprocessor. This was an inadvertent side-
+effect from moving more allocations/frees to the local cache/memory
+mechanism.
+
+iASL: Enhanced error detection by validating that all NameSeg elements
+within a NamePatch actually exist. The previous behavior was spotty at
+best, and such errors could be improperly ignored at compiler time (never
+at runtime, however. There are two new error messages, as shown in the
+examples below:
+
+dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1)
+Error 6161 - ^ One or more objects within
+the Pathname do not exist (TTTT.BXXX)
+
+dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
+Error 6160 - One or more prefix Scopes do not exist ^
+(BBBB.CBF1)
+
+iASL: Disassembler/table-compiler: Added support for the static data
+table TPM2 revision 3 (an older version of TPM2). The support has been
+added for the compiler and the disassembler.
+
+Fixed compilation of DOS format data table file on Unix/Linux systems.
+iASL now properly detects line continuations (\) for DOS format data
+table definition language files on when executing on Unix/Linux.
+
+----------------------------------------
03 October 2018. Summary of changes for version 20181003:
diff --git a/source/common/dmtbdump3.c b/source/common/dmtbdump3.c
index 3c1dea6c8257..1bc3fa6cab65 100644
--- a/source/common/dmtbdump3.c
+++ b/source/common/dmtbdump3.c
@@ -497,6 +497,51 @@ AcpiDmDumpTcpa (
* DESCRIPTION: Format the contents of a TPM2.
*
******************************************************************************/
+static void
+AcpiDmDumpTpm2Rev3 (
+ ACPI_TABLE_HEADER *Table)
+{
+ UINT32 Offset = sizeof (ACPI_TABLE_TPM23);
+ ACPI_TABLE_TPM23 *CommonHeader = ACPI_CAST_PTR (ACPI_TABLE_TPM23, Table);
+ ACPI_TPM23_TRAILER *Subtable = ACPI_ADD_PTR (ACPI_TPM23_TRAILER, Table, Offset);
+ ACPI_STATUS Status;
+
+
+ /* Main table */
+
+ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm23);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* Optional subtable if start method is ACPI start method */
+
+ switch (CommonHeader->StartMethod)
+ {
+ case ACPI_TPM23_ACPI_START_METHOD:
+
+ Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+ Table->Length - Offset, AcpiDmTableInfoTpm23a);
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiDmDumpTpm2
+ *
+ * PARAMETERS: Table - A TPM2 table
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Format the contents of a TPM2.
+ *
+ ******************************************************************************/
void
AcpiDmDumpTpm2 (
@@ -509,9 +554,16 @@ AcpiDmDumpTpm2 (
ACPI_STATUS Status;
+ if (Table->Revision == 3)
+ {
+ AcpiDmDumpTpm2Rev3(Table);
+ return;
+ }
+
/* Main table */
Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm2);
+
if (ACPI_FAILURE (Status))
{
return;
diff --git a/source/common/dmtbinfo3.c b/source/common/dmtbinfo3.c
index c82e3db5ec0c..33d992871a32 100644
--- a/source/common/dmtbinfo3.c
+++ b/source/common/dmtbinfo3.c
@@ -446,6 +446,26 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[] =
*
******************************************************************************/
+/* TPM2 revision 3 */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoTpm23[] =
+{
+ {ACPI_DMT_UINT32, ACPI_TPM23_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT64, ACPI_TPM23_OFFSET (ControlAddress), "Control Address", 0},
+ {ACPI_DMT_UINT32, ACPI_TPM23_OFFSET (StartMethod), "Start Method", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+/* Trailer in the case that StartMethod == 2 */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoTpm23a[] =
+{
+ {ACPI_DMT_UINT32, ACPI_TPM23A_OFFSET (Reserved), "Reserved", DT_OPTIONAL},
+ ACPI_DMT_TERMINATOR
+};
+
+/* TPM2 revision 4 */
+
ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[] =
{
{ACPI_DMT_UINT16, ACPI_TPM2_OFFSET (PlatformClass), "Platform Class", 0},
diff --git a/source/compiler/aslcompile.c b/source/compiler/aslcompile.c
index e08442e06867..4ae190763cc9 100644
--- a/source/compiler/aslcompile.c
+++ b/source/compiler/aslcompile.c
@@ -858,7 +858,7 @@ CmCleanupAndExit (
if (AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
{
- printf ("\nMaximum error count (%u) exceeded\n",
+ printf ("\nMaximum error count (%d) exceeded\n",
ASL_MAX_ERROR_COUNT);
}
diff --git a/source/compiler/aslerror.c b/source/compiler/aslerror.c
index 6d45cd400351..10ea3ec1b4bd 100644
--- a/source/compiler/aslerror.c
+++ b/source/compiler/aslerror.c
@@ -1097,7 +1097,7 @@ AslExpectException (
if (AslGbl_ExpectedMessagesIndex >= ASL_MAX_EXPECTED_MESSAGES)
{
- printf ("Too many messages have been registered as expected (max %u)\n",
+ printf ("Too many messages have been registered as expected (max %d)\n",
ASL_MAX_DISABLED_MESSAGES);
return (AE_LIMIT);
}
@@ -1144,7 +1144,7 @@ AslDisableException (
if (AslGbl_DisabledMessagesIndex >= ASL_MAX_DISABLED_MESSAGES)
{
- printf ("Too many messages have been disabled (max %u)\n",
+ printf ("Too many messages have been disabled (max %d)\n",
ASL_MAX_DISABLED_MESSAGES);
return (AE_LIMIT);
}
diff --git a/source/compiler/aslload.c b/source/compiler/aslload.c
index 5bb0a8515566..7f29b90c6366 100644
--- a/source/compiler/aslload.c
+++ b/source/compiler/aslload.c
@@ -417,10 +417,8 @@ LdLoadResourceElements (
{
Status = AcpiNsLookup (WalkState->ScopeInfo,
InitializerOp->Asl.ExternalName,
- ACPI_TYPE_LOCAL_RESOURCE_FIELD,
- ACPI_IMODE_LOAD_PASS1,
- ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE,
- NULL, &Node);
+ ACPI_TYPE_LOCAL_RESOURCE_FIELD, ACPI_IMODE_LOAD_PASS1,
+ ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node);
if (ACPI_FAILURE (Status))
{
return (Status);
@@ -687,8 +685,7 @@ LdNamespace1Begin (
* handle this case. Perhaps someday this case can go away.
*/
Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY,
- ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT,
- WalkState, &(Node));
+ ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &Node);
if (ACPI_FAILURE (Status))
{
if (Status == AE_NOT_FOUND)
@@ -696,23 +693,26 @@ LdNamespace1Begin (
/* The name was not found, go ahead and create it */
Status = AcpiNsLookup (WalkState->ScopeInfo, Path,
- ACPI_TYPE_LOCAL_SCOPE,
- ACPI_IMODE_LOAD_PASS1, Flags,
- WalkState, &(Node));
+ ACPI_TYPE_LOCAL_SCOPE, ACPI_IMODE_LOAD_PASS1,
+ Flags, WalkState, &Node);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
- /*
- * However, this is an error -- primarily because the MS
- * interpreter can't handle a forward reference from the
- * Scope() operator.
- */
- AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
- Op->Asl.ExternalName);
- AslError (ASL_ERROR, ASL_MSG_SCOPE_FWD_REF, Op,
- Op->Asl.ExternalName);
+ /* However, this is an error -- operand to Scope must exist */
+
+ if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE)
+ {
+ AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
+ Op->Asl.ExternalName);
+ }
+ else
+ {
+ AslError (ASL_ERROR, ASL_MSG_NAMEPATH_NOT_EXIST, Op,
+ Op->Asl.ExternalName);
+ }
+
goto FinishNode;
}
@@ -824,7 +824,6 @@ LdNamespace1Begin (
break;
}
-
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Loading name: %s, (%s)\n",
Op->Asl.ExternalName, AcpiUtGetTypeName (ObjectType)));
@@ -833,6 +832,18 @@ LdNamespace1Begin (
Flags |= ACPI_NS_ERROR_IF_FOUND;
/*
+ * For opcodes that enter new names into the namespace,
+ * all prefix NameSegs must exist.
+ */
+ WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode);
+ if (((WalkState->OpInfo->Flags & AML_NAMED) ||
+ (WalkState->OpInfo->Flags & AML_CREATE)) &&
+ (Op->Asl.AmlOpcode != AML_EXTERNAL_OP))
+ {
+ Flags |= ACPI_NS_PREFIX_MUST_EXIST;
+ }
+
+ /*
* Enter the named type into the internal namespace. We enter the name
* as we go downward in the parse tree. Any necessary subobjects that
* involve arguments to the opcode must be created as we go back up the
@@ -915,8 +926,20 @@ LdNamespace1Begin (
return_ACPI_STATUS (AE_OK);
}
}
+ else if (AE_NOT_FOUND)
+ {
+ /*
+ * One or more prefix NameSegs of the NamePath do not exist
+ * (all of them must exist). Attempt to continue compilation
+ * by setting the current scope to the root.
+ */
+ Node = AcpiGbl_RootNode;
+ Status = AE_OK;
+ }
else
{
+ /* Flag all other errors as coming from the ACPICA core */
+
AslCoreSubsystemError (Op, Status,
"Failure from namespace lookup", FALSE);
return_ACPI_STATUS (Status);
@@ -1043,10 +1066,10 @@ LdNamespace2Begin (
if (Op->Asl.ParseOpcode == PARSEOP_ALIAS)
{
- /* Complete the alias node by getting and saving the target node */
-
- /* First child is the alias target */
-
+ /*
+ * Complete the alias node by getting and saving the target node.
+ * First child is the alias target
+ */
Arg = Op->Asl.Child;
/* Get the target pathname */
@@ -1070,18 +1093,34 @@ LdNamespace2Begin (
{
if (Status == AE_NOT_FOUND)
{
- AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
- Op->Asl.ExternalName);
+ /* Standalone NameSeg vs. NamePath */
+
+ if (strlen (Arg->Asl.ExternalName) == ACPI_NAME_SIZE)
+ {
+ AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
+ Arg->Asl.ExternalName);
+ }
+ else
+ {
+ AslError (ASL_ERROR, ASL_MSG_NAMEPATH_NOT_EXIST, Op,
+ Arg->Asl.ExternalName);
+ }
+#if 0
+/*
+ * NOTE: Removed 10/2018 to enhance compiler error reporting. No
+ * regressions seen.
+ */
/*
* The name was not found, go ahead and create it.
* This prevents more errors later.
*/
Status = AcpiNsLookup (WalkState->ScopeInfo, Path,
- ACPI_TYPE_ANY,
- ACPI_IMODE_LOAD_PASS1, ACPI_NS_NO_UPSEARCH,
- WalkState, &(Node));
- return (AE_OK);
+ ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1,
+ ACPI_NS_NO_UPSEARCH, WalkState, &Node);
+#endif
+ return (Status);
+/* Removed: return (AE_OK)*/
}
AslCoreSubsystemError (Op, Status,
diff --git a/source/compiler/aslmain.c b/source/compiler/aslmain.c
index 4f24bb3e9329..70386f8a0c22 100644
--- a/source/compiler/aslmain.c
+++ b/source/compiler/aslmain.c
@@ -329,7 +329,7 @@ AslSignalHandler (
default:
- printf (ASL_PREFIX "Unknown interrupt signal (%u)\n", Sig);
+ printf (ASL_PREFIX "Unknown interrupt signal (%d)\n", Sig);
break;
}
diff --git a/source/compiler/aslmessages.c b/source/compiler/aslmessages.c
index 14e140b2f1ba..23297183709d 100644
--- a/source/compiler/aslmessages.c
+++ b/source/compiler/aslmessages.c
@@ -285,7 +285,7 @@ const char *AslCompilerMsgs [] =
/* ASL_MSG_NON_ASCII */ "Invalid characters found in file",
/* ASL_MSG_NON_ZERO */ "Operand evaluates to zero",
/* ASL_MSG_NOT_EXIST */ "Object does not exist",
-/* ASL_MSG_NOT_FOUND */ "Object not found or not accessible from scope",
+/* ASL_MSG_NOT_FOUND */ "Object not found or not accessible from current scope",
/* ASL_MSG_NOT_METHOD */ "Not a control method, cannot invoke",
/* ASL_MSG_NOT_PARAMETER */ "Not a parameter, used as local only",
/* ASL_MSG_NOT_REACHABLE */ "Object is not accessible from this scope",
@@ -359,7 +359,9 @@ const char *AslCompilerMsgs [] =
/* ASL_MSG_OEM_ID */ "Invalid OEM ID",
/* ASL_MSG_UNLOAD */ "Unload is not supported by all operating systems",
/* ASL_MSG_OFFSET */ "Unnecessary/redundant use of Offset operator",
-/* ASL_MSG_LONG_SLEEP */ "Very long Sleep, greater than 1 second"
+/* ASL_MSG_LONG_SLEEP */ "Very long Sleep, greater than 1 second",
+/* ASL_MSG_PREFIX_NOT_EXIST */ "One or more prefix Scopes do not exist",
+/* ASL_MSG_NAMEPATH_NOT_EXIST */ "One or more objects within the Pathname do not exist"
};
/* Table compiler */
diff --git a/source/compiler/aslmessages.h b/source/compiler/aslmessages.h
index 907744a23a57..c932aded425a 100644
--- a/source/compiler/aslmessages.h
+++ b/source/compiler/aslmessages.h
@@ -362,6 +362,8 @@ typedef enum
ASL_MSG_UNLOAD,
ASL_MSG_OFFSET,
ASL_MSG_LONG_SLEEP,
+ ASL_MSG_PREFIX_NOT_EXIST,
+ ASL_MSG_NAMEPATH_NOT_EXIST,
/* These messages are used by the Data Table compiler only */
diff --git a/source/compiler/aslpredef.c b/source/compiler/aslpredef.c
index bc30fe9108cb..ae806412e1e3 100644
--- a/source/compiler/aslpredef.c
+++ b/source/compiler/aslpredef.c
@@ -222,7 +222,7 @@ ApCheckForPredefinedMethod (
if (MethodInfo->NumArguments != 0)
{
- sprintf (AslGbl_MsgBuffer, "%s requires %u", Op->Asl.ExternalName, 0);
+ sprintf (AslGbl_MsgBuffer, "%s requires %d", Op->Asl.ExternalName, 0);
AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_HI, Op,
AslGbl_MsgBuffer);
diff --git a/source/compiler/aslxref.c b/source/compiler/aslxref.c
index 5273ea82e032..8b2135778e3a 100644
--- a/source/compiler/aslxref.c
+++ b/source/compiler/aslxref.c
@@ -718,11 +718,34 @@ XfNamespaceLocateBegin (
}
else
{
- /* Check for a fully qualified path */
+ /* The NamePath contains multiple NameSegs */
- if (Path[0] == AML_ROOT_PREFIX)
+ if ((OpInfo->Flags & AML_CREATE) ||
+ (OpInfo->ObjectType == ACPI_TYPE_LOCAL_ALIAS))
{
- /* Gave full path, the object does not exist */
+ /*
+ * The new name is the last parameter. For the
+ * CreateXXXXField and Alias operators
+ */
+ NextOp = Op->Asl.Child;
+ while (!(NextOp->Asl.CompileFlags & OP_IS_NAME_DECLARATION))
+ {
+ NextOp = NextOp->Asl.Next;
+ }
+
+ AslError (ASL_ERROR, ASL_MSG_PREFIX_NOT_EXIST, NextOp,
+ NextOp->Asl.ExternalName);
+ }
+ else if (OpInfo->Flags & AML_NAMED)
+ {
+ /* The new name is the first parameter */
+
+ AslError (ASL_ERROR, ASL_MSG_PREFIX_NOT_EXIST, Op,
+ Op->Asl.ExternalName);
+ }
+ else if (Path[0] == AML_ROOT_PREFIX)
+ {
+ /* Full namepath from root, the object does not exist */
AslError (ASL_ERROR, ASL_MSG_NOT_EXIST, Op,
Op->Asl.ExternalName);
@@ -730,11 +753,20 @@ XfNamespaceLocateBegin (
else
{
/*
- * We can't tell whether it doesn't exist or just
- * can't be reached.
+ * Generic "not found" error. Cannot determine whether it
+ * doesn't exist or just can't be reached. However, we
+ * can differentiate between a NameSeg vs. NamePath.
*/
- AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
- Op->Asl.ExternalName);
+ if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE)
+ {
+ AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
+ Op->Asl.ExternalName);
+ }
+ else
+ {
+ AslError (ASL_ERROR, ASL_MSG_NAMEPATH_NOT_EXIST, Op,
+ Op->Asl.ExternalName);
+ }
}
}
diff --git a/source/compiler/dtio.c b/source/compiler/dtio.c
index b15d3b97f407..bd1890534506 100644
--- a/source/compiler/dtio.c
+++ b/source/compiler/dtio.c
@@ -236,7 +236,7 @@ DtTrim (
/* Skip lines that start with a space */
- if (!strcmp (String, " "))
+ if (*String == 0 || !strcmp (String, " "))
{
ReturnString = UtLocalCacheCalloc (1);
return (ReturnString);
@@ -258,7 +258,7 @@ DtTrim (
while (End >= Start)
{
- if (*End == '\r' || *End == '\n')
+ if (*End == '\n')
{
End--;
continue;
@@ -522,6 +522,7 @@ DtGetNextLine (
UINT32 CurrentLineOffset;
UINT32 i;
int c;
+ int c1;
memset (AslGbl_CurrentLineBuffer, 0, AslGbl_LineBufferSize);
@@ -569,6 +570,29 @@ DtGetNextLine (
c = '\n';
State = DT_NORMAL_TEXT;
}
+ else if (c == '\r')
+ {
+ c1 = getc (Handle);
+ if (c1 == '\n')
+ {
+ /*
+ * Skip the carriage return as if it didn't exist. This is
+ * onlt meant for input files in DOS format in unix. fopen in
+ * unix may not support "text mode" and leaves CRLF intact.
+ */
+ c = '\n';
+ }
+ else
+ {
+ /* This was not a CRLF. Only a CR */
+
+ ungetc(c1, Handle);
+
+ DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL,
+ "Carriage return without linefeed detected");
+ return (ASL_EOF);
+ }
+ }
switch (State)
{
diff --git a/source/compiler/dttable2.c b/source/compiler/dttable2.c
index 3f97037763f3..0b196a2fed33 100644
--- a/source/compiler/dttable2.c
+++ b/source/compiler/dttable2.c
@@ -1878,6 +1878,62 @@ DtCompileTcpa (
/******************************************************************************
*
+ * FUNCTION: DtCompileTpm2Rev3
+ *
+ * PARAMETERS: PFieldList - Current field list pointer
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Compile TPM2 revision 3
+ *
+ *****************************************************************************/
+static ACPI_STATUS
+DtCompileTpm2Rev3 (
+ void **List)
+{
+ DT_FIELD **PFieldList = (DT_FIELD **) List;
+ DT_SUBTABLE *Subtable;
+ ACPI_TABLE_TPM23 *Tpm23Header;
+ DT_SUBTABLE *ParentTable;
+ ACPI_STATUS Status = AE_OK;
+
+
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoTpm23,
+ &Subtable);
+
+ ParentTable = DtPeekSubtable ();
+ DtInsertSubtable (ParentTable, Subtable);
+ Tpm23Header = ACPI_CAST_PTR (ACPI_TABLE_TPM23, ParentTable->Buffer);
+
+ /* Subtable type depends on the StartMethod */
+
+ switch (Tpm23Header->StartMethod)
+ {
+ case ACPI_TPM23_ACPI_START_METHOD:
+
+ /* Subtable specific to to ARM_SMC */
+
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoTpm23a,
+ &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+
+ ParentTable = DtPeekSubtable ();
+ DtInsertSubtable (ParentTable, Subtable);
+ break;
+
+ default:
+ break;
+ }
+
+ return (Status);
+}
+
+
+/******************************************************************************
+ *
* FUNCTION: DtCompileTpm2
*
* PARAMETERS: PFieldList - Current field list pointer
@@ -1897,8 +1953,18 @@ DtCompileTpm2 (
ACPI_TABLE_TPM2 *Tpm2Header;
DT_SUBTABLE *ParentTable;
ACPI_STATUS Status = AE_OK;
+ ACPI_TABLE_HEADER *Header;
+ ParentTable = DtPeekSubtable ();
+
+ Header = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
+
+ if (Header->Revision == 3)
+ {
+ return (DtCompileTpm2Rev3 (List));
+ }
+
/* Compile the main table */
Status = DtCompileTable (PFieldList, AcpiDmTableInfoTpm2,
diff --git a/source/compiler/prscan.c b/source/compiler/prscan.c
index 580b47f0a13f..325569ed42c8 100644
--- a/source/compiler/prscan.c
+++ b/source/compiler/prscan.c
@@ -1259,7 +1259,6 @@ PrPopDirective (
AslGbl_DirectiveInfo[Info->Directive].Name,
Info->Argument, AslGbl_IgnoringThisCodeBlock ? "TRUE" : "FALSE");
- ACPI_FREE (Info);
return (AE_OK);
}
diff --git a/source/components/debugger/dbxface.c b/source/components/debugger/dbxface.c
index c661b248b75e..a0f3ed6b3c14 100644
--- a/source/components/debugger/dbxface.c
+++ b/source/components/debugger/dbxface.c
@@ -174,6 +174,12 @@ AcpiDbMethodEnd (
ACPI_WALK_STATE *WalkState);
#endif
+#ifdef ACPI_DISASSEMBLER
+static ACPI_PARSE_OBJECT *
+AcpiDbGetDisplayOp (
+ ACPI_WALK_STATE *WalkState,
+ ACPI_PARSE_OBJECT *Op);
+#endif
/*******************************************************************************
*
@@ -273,6 +279,74 @@ AcpiDbSignalBreakPoint (
}
+#ifdef ACPI_DISASSEMBLER
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiDbGetDisplayOp
+ *
+ * PARAMETERS: WalkState - Current walk
+ * Op - Current executing op (from aml interpreter)
+ *
+ * RETURN: Opcode to display
+ *
+ * DESCRIPTION: Find the opcode to display during single stepping
+ *
+ ******************************************************************************/
+
+static ACPI_PARSE_OBJECT *
+AcpiDbGetDisplayOp (
+ ACPI_WALK_STATE *WalkState,
+ ACPI_PARSE_OBJECT *Op)
+{
+ ACPI_PARSE_OBJECT *DisplayOp;
+ ACPI_PARSE_OBJECT *ParentOp;
+
+ DisplayOp = Op;
+ ParentOp = Op->Common.Parent;
+ if (ParentOp)
+ {
+ if ((WalkState->ControlState) &&
+ (WalkState->ControlState->Common.State ==
+ ACPI_CONTROL_PREDICATE_EXECUTING))
+ {
+ /*
+ * We are executing the predicate of an IF or WHILE statement
+ * Search upwards for the containing IF or WHILE so that the
+ * entire predicate can be displayed.
+ */
+ while (ParentOp)
+ {
+ if ((ParentOp->Common.AmlOpcode == AML_IF_OP) ||
+ (ParentOp->Common.AmlOpcode == AML_WHILE_OP))
+ {
+ DisplayOp = ParentOp;
+ break;
+ }
+ ParentOp = ParentOp->Common.Parent;
+ }
+ }
+ else
+ {
+ while (ParentOp)
+ {
+ if ((ParentOp->Common.AmlOpcode == AML_IF_OP) ||
+ (ParentOp->Common.AmlOpcode == AML_ELSE_OP) ||
+ (ParentOp->Common.AmlOpcode == AML_SCOPE_OP) ||
+ (ParentOp->Common.AmlOpcode == AML_METHOD_OP) ||
+ (ParentOp->Common.AmlOpcode == AML_WHILE_OP))
+ {
+ break;
+ }
+ DisplayOp = ParentOp;
+ ParentOp = ParentOp->Common.Parent;
+ }
+ }
+ }
+ return DisplayOp;
+}
+#endif
+
+
/*******************************************************************************
*
* FUNCTION: AcpiDbSingleStep
@@ -296,8 +370,6 @@ AcpiDbSingleStep (
ACPI_PARSE_OBJECT *Next;
ACPI_STATUS Status = AE_OK;
UINT32 OriginalDebugLevel;
- ACPI_PARSE_OBJECT *DisplayOp;
- ACPI_PARSE_OBJECT *ParentOp;
UINT32 AmlOffset;
@@ -393,53 +465,11 @@ AcpiDbSingleStep (
Next = Op->Common.Next;
Op->Common.Next = NULL;
-
- DisplayOp = Op;
- ParentOp = Op->Common.Parent;
- if (ParentOp)
- {
- if ((WalkState->ControlState) &&
- (WalkState->ControlState->Common.State ==
- ACPI_CONTROL_PREDICATE_EXECUTING))
- {
- /*
- * We are executing the predicate of an IF or WHILE statement
- * Search upwards for the containing IF or WHILE so that the
- * entire predicate can be displayed.
- */
- while (ParentOp)
- {
- if ((ParentOp->Common.AmlOpcode == AML_IF_OP) ||
- (ParentOp->Common.AmlOpcode == AML_WHILE_OP))
- {
- DisplayOp = ParentOp;
- break;
- }
- ParentOp = ParentOp->Common.Parent;
- }
- }
- else
- {
- while (ParentOp)
- {
- if ((ParentOp->Common.AmlOpcode == AML_IF_OP) ||
- (ParentOp->Common.AmlOpcode == AML_ELSE_OP) ||
- (ParentOp->Common.AmlOpcode == AML_SCOPE_OP) ||
- (ParentOp->Common.AmlOpcode == AML_METHOD_OP) ||
- (ParentOp->Common.AmlOpcode == AML_WHILE_OP))
- {
- break;
- }
- DisplayOp = ParentOp;
- ParentOp = ParentOp->Common.Parent;
- }
- }
- }
-
/* Now we can disassemble and display it */
#ifdef ACPI_DISASSEMBLER
- AcpiDmDisassemble (WalkState, DisplayOp, ACPI_UINT32_MAX);
+ AcpiDmDisassemble (WalkState, AcpiDbGetDisplayOp (WalkState, Op),
+ ACPI_UINT32_MAX);
#else
/*
* The AML Disassembler is not configured - at least we can
diff --git a/source/components/dispatcher/dsopcode.c b/source/components/dispatcher/dsopcode.c
index 038993c774f3..ca2cd4700292 100644
--- a/source/components/dispatcher/dsopcode.c
+++ b/source/components/dispatcher/dsopcode.c
@@ -586,6 +586,9 @@ AcpiDsEvalRegionOperands (
ObjDesc, ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
ObjDesc->Region.Length));
+ Status = AcpiUtAddAddressRange (ObjDesc->Region.SpaceId,
+ ObjDesc->Region.Address, ObjDesc->Region.Length, Node);
+
/* Now the address and length are valid for this opregion */
ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID;
diff --git a/source/components/dispatcher/dswload2.c b/source/components/dispatcher/dswload2.c
index 9bc6ecfae697..4b6e41d8dd30 100644
--- a/source/components/dispatcher/dswload2.c
+++ b/source/components/dispatcher/dswload2.c
@@ -448,6 +448,15 @@ AcpiDsLoad2BeginOp (
}
#endif
+ /*
+ * For name creation opcodes, the full namepath prefix must
+ * exist, except for the final (new) nameseg.
+ */
+ if (WalkState->OpInfo->Flags & AML_NAMED)
+ {
+ Flags |= ACPI_NS_PREFIX_MUST_EXIST;
+ }
+
/* Add new entry or lookup existing entry */
Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
diff --git a/source/components/namespace/nsaccess.c b/source/components/namespace/nsaccess.c
index af97c51feff5..11c652e0442b 100644
--- a/source/components/namespace/nsaccess.c
+++ b/source/components/namespace/nsaccess.c
@@ -421,6 +421,7 @@ AcpiNsLookup (
ACPI_OBJECT_TYPE ThisSearchType;
UINT32 SearchParentFlag = ACPI_NS_SEARCH_PARENT;
UINT32 LocalFlags;
+ ACPI_INTERPRETER_MODE LocalInterpreterMode;
ACPI_FUNCTION_TRACE (NsLookup);
@@ -670,6 +671,7 @@ AcpiNsLookup (
*/
ThisSearchType = ACPI_TYPE_ANY;
CurrentNode = ThisNode;
+
while (NumSegments && CurrentNode)
{
NumSegments--;
@@ -704,6 +706,16 @@ AcpiNsLookup (
}
}
+ /* Handle opcodes that create a new NameSeg via a full NamePath */
+
+ LocalInterpreterMode = InterpreterMode;
+ if ((Flags & ACPI_NS_PREFIX_MUST_EXIST) && (NumSegments > 0))
+ {
+ /* Every element of the path must exist (except for the final NameSeg) */
+
+ LocalInterpreterMode = ACPI_IMODE_EXECUTE;
+ }
+
/* Extract one ACPI name from the front of the pathname */
ACPI_MOVE_32_TO_32 (&SimpleName, Path);
@@ -711,11 +723,18 @@ AcpiNsLookup (
/* Try to find the single (4 character) ACPI name */
Status = AcpiNsSearchAndEnter (SimpleName, WalkState, CurrentNode,
- InterpreterMode, ThisSearchType, LocalFlags, &ThisNode);
+ LocalInterpreterMode, ThisSearchType, LocalFlags, &ThisNode);
if (ACPI_FAILURE (Status))
{
if (Status == AE_NOT_FOUND)
{
+#if !defined ACPI_ASL_COMPILER /* Note: iASL reports this error by itself, not needed here */
+ if (Flags & ACPI_NS_PREFIX_MUST_EXIST)
+ {
+ AcpiOsPrintf (ACPI_MSG_BIOS_ERROR
+ "Object does not exist: %4.4s\n", &SimpleName);
+ }
+#endif
/* Name not found in ACPI namespace */
ACPI_DEBUG_PRINT ((ACPI_DB_NAMES,
diff --git a/source/components/parser/psloop.c b/source/components/parser/psloop.c
index ef517b54d0bf..9625834c56f6 100644
--- a/source/components/parser/psloop.c
+++ b/source/components/parser/psloop.c
@@ -298,7 +298,7 @@ AcpiPsGetArguments (
* future. Use of this option can cause problems with AML code that
* depends upon in-order immediate execution of module-level code.
*/
- if (AcpiGbl_GroupModuleLevelCode &&
+ if (!AcpiGbl_ExecuteTablesAsMethods &&
(WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2) &&
((WalkState->ParseFlags & ACPI_PARSE_DISASSEMBLE) == 0))
{
@@ -566,6 +566,7 @@ AcpiPsParseLoop (
ACPI_PARSE_OBJECT *Op = NULL; /* current op */
ACPI_PARSE_STATE *ParserState;
UINT8 *AmlOpStart = NULL;
+ UINT8 OpcodeLength;
ACPI_FUNCTION_TRACE_PTR (PsParseLoop, WalkState);
@@ -654,7 +655,7 @@ AcpiPsParseLoop (
* status to AE_OK to proceed with the table load.
*/
if ((WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL) &&
- Status == AE_ALREADY_EXISTS)
+ ((Status == AE_ALREADY_EXISTS) || (Status == AE_NOT_FOUND)))
{
Status = AE_OK;
}
@@ -686,9 +687,20 @@ AcpiPsParseLoop (
* the scope op because the parse failure indicates that
* the device may not exist.
*/
- ACPI_ERROR ((AE_INFO, "Skip parsing opcode %s",
- AcpiPsGetOpcodeName (WalkState->Opcode)));
- WalkState->ParserState.Aml = WalkState->Aml + 1;
+ ACPI_INFO (("Skipping parse of AML opcode: %s (0x%4.4X)",
+ AcpiPsGetOpcodeName (WalkState->Opcode), WalkState->Opcode));
+
+ /*
+ * Determine the opcode length before skipping the opcode.
+ * An opcode can be 1 byte or 2 bytes in length.
+ */
+ OpcodeLength = 1;
+ if ((WalkState->Opcode & 0xFF00) == AML_EXTENDED_OPCODE)
+ {
+ OpcodeLength = 2;
+ }
+ WalkState->ParserState.Aml = WalkState->Aml + OpcodeLength;
+
WalkState->ParserState.Aml =
AcpiPsGetNextPackageEnd(&WalkState->ParserState);
WalkState->Aml = WalkState->ParserState.Aml;
diff --git a/source/components/parser/psobject.c b/source/components/parser/psobject.c
index 8d6f81bd68b3..ca7ab0aec520 100644
--- a/source/components/parser/psobject.c
+++ b/source/components/parser/psobject.c
@@ -773,7 +773,7 @@ AcpiPsCompleteOp (
* because there could be correct AML beyond the parts that caused
* the runtime error.
*/
- ACPI_ERROR ((AE_INFO, "Ignore error and continue table load"));
+ ACPI_INFO (("Ignoring error and continuing table load"));
return_ACPI_STATUS (AE_OK);
}
return_ACPI_STATUS (Status);
diff --git a/source/components/tables/tbxfload.c b/source/components/tables/tbxfload.c
index 0119b684579f..a956806e8ccd 100644
--- a/source/components/tables/tbxfload.c
+++ b/source/components/tables/tbxfload.c
@@ -219,7 +219,7 @@ AcpiLoadTables (
"While loading namespace from ACPI tables"));
}
- if (AcpiGbl_ExecuteTablesAsMethods || !AcpiGbl_GroupModuleLevelCode)
+ if (AcpiGbl_ExecuteTablesAsMethods)
{
/*
* If the module-level code support is enabled, initialize the objects
diff --git a/source/include/acdisasm.h b/source/include/acdisasm.h
index b774b20ff830..edd108d25e6c 100644
--- a/source/include/acdisasm.h
+++ b/source/include/acdisasm.h
@@ -561,6 +561,8 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2a[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm211[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm23[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm23a[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc0[];
diff --git a/source/include/acnamesp.h b/source/include/acnamesp.h
index 1e3db8d1cadd..7c2083d32f06 100644
--- a/source/include/acnamesp.h
+++ b/source/include/acnamesp.h
@@ -177,6 +177,7 @@
#define ACPI_NS_TEMPORARY 0x0040
#define ACPI_NS_OVERRIDE_IF_FOUND 0x0080
#define ACPI_NS_EARLY_INIT 0x0100
+#define ACPI_NS_PREFIX_MUST_EXIST 0x0200
/* Flags for AcpiNsWalkNamespace */
diff --git a/source/include/acpixf.h b/source/include/acpixf.h
index aaf284cb2bad..27e9aa7f298d 100644
--- a/source/include/acpixf.h
+++ b/source/include/acpixf.h
@@ -154,7 +154,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20181003
+#define ACPI_CA_VERSION 0x20181031
#include "acconfig.h"
#include "actypes.h"
@@ -301,13 +301,6 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CopyDsdtLocally, FALSE);
ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE);
/*
- * Optionally support group module level code.
- * NOTE, this is essentially obsolete and will be removed soon
- * (01/2018).
- */
-ACPI_INIT_GLOBAL (UINT8, AcpiGbl_GroupModuleLevelCode, FALSE);
-
-/*
* Optionally support module level code by parsing an entire table as
* a method as it is loaded. Default is TRUE.
* NOTE, this is essentially obsolete and will be removed soon
diff --git a/source/include/actbinfo.h b/source/include/actbinfo.h
index 347a3940697e..19eeeccbd42d 100644
--- a/source/include/actbinfo.h
+++ b/source/include/actbinfo.h
@@ -194,6 +194,7 @@
#define ACPI_STAO_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_STAO,f)
#define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_HDR,f)
#define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f)
+#define ACPI_TPM23_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM23,f)
#define ACPI_UEFI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f)
#define ACPI_WAET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WAET,f)
#define ACPI_WDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDAT,f)
@@ -337,6 +338,7 @@
#define ACPI_TCPA_SERVER_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f)
#define ACPI_TPM2A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f)
#define ACPI_TPM211_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM2_ARM_SMC,f)
+#define ACPI_TPM23A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM23_TRAILER,f)
#define ACPI_VRTC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VRTC_ENTRY,f)
#define ACPI_WDAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WDAT_ENTRY,f)
diff --git a/source/include/actbl3.h b/source/include/actbl3.h
index d4c15838b1f3..99b466c16d72 100644
--- a/source/include/actbl3.h
+++ b/source/include/actbl3.h
@@ -552,6 +552,34 @@ typedef struct acpi_table_tcpa_server
*
******************************************************************************/
+/* Revision 3 */
+
+typedef struct acpi_table_tpm23
+{
+ ACPI_TABLE_HEADER Header; /* Common ACPI table header */
+ UINT32 Reserved;
+ UINT64 ControlAddress;
+ UINT32 StartMethod;
+
+} ACPI_TABLE_TPM23;
+
+/* Value for StartMethod above */
+
+#define ACPI_TPM23_ACPI_START_METHOD 2
+
+/*
+ * Optional trailer for revision 3. If start method is 2, there is a 4 byte
+ * reserved area of all zeros.
+ */
+typedef struct acpi_tmp23_trailer
+{
+ UINT32 Reserved;
+
+} ACPI_TPM23_TRAILER;
+
+
+/* Revision 4 */
+
typedef struct acpi_table_tpm2
{
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
diff --git a/source/tools/acpidump/apmain.c b/source/tools/acpidump/apmain.c
index 55003af5f9c8..3db37ef799e3 100644
--- a/source/tools/acpidump/apmain.c
+++ b/source/tools/acpidump/apmain.c
@@ -268,7 +268,7 @@ ApInsertAction (
CurrentAction++;
if (CurrentAction > AP_MAX_ACTIONS)
{
- fprintf (stderr, "Too many table options (max %u)\n", AP_MAX_ACTIONS);
+ fprintf (stderr, "Too many table options (max %d)\n", AP_MAX_ACTIONS);
return (-1);
}
diff --git a/source/tools/acpiexec/aemain.c b/source/tools/acpiexec/aemain.c
index b1781b565861..e8ae348cdf9b 100644
--- a/source/tools/acpiexec/aemain.c
+++ b/source/tools/acpiexec/aemain.c
@@ -255,7 +255,8 @@ usage (
ACPI_OPTION ("-df", "Disable Local fault handler");
ACPI_OPTION ("-di", "Disable execution of STA/INI methods during init");
ACPI_OPTION ("-do", "Disable Operation Region address simulation");
- ACPI_OPTION ("-dp", "Disable TermList parsing for scope objects");
+ ACPI_OPTION ("-dp", "Disable loading DSDT/SSDT as a control method\n"
+ " (enable legacy grouping of module-level code)");
ACPI_OPTION ("-dr", "Disable repair of method return values");
ACPI_OPTION ("-ds", "Disable method auto-serialization");
ACPI_OPTION ("-dt", "Disable allocation tracking (performance)");
@@ -265,7 +266,6 @@ usage (
ACPI_OPTION ("-ef", "Enable display of final memory statistics");
ACPI_OPTION ("-ei", "Enable additional tests for ACPICA interfaces");
ACPI_OPTION ("-el", "Enable loading of additional test tables");
- ACPI_OPTION ("-em", "Enable (legacy) grouping of module-level code");
ACPI_OPTION ("-es", "Enable Interpreter Slack Mode");
ACPI_OPTION ("-et", "Enable debug semaphore timeout");
printf ("\n");
@@ -319,7 +319,7 @@ AeDoOptions (
if (strlen (AcpiGbl_Optarg) > (AE_BUFFER_SIZE -1))
{
- printf ("**** The length of command line (%u) exceeded maximum (%u)\n",
+ printf ("**** The length of command line (%u) exceeded maximum (%d)\n",
(UINT32) strlen (AcpiGbl_Optarg), (AE_BUFFER_SIZE -1));
return (-1);
}
@@ -406,11 +406,6 @@ AeDoOptions (
AcpiGbl_LoadTestTables = TRUE;
break;
- case 'm':
-
- AcpiGbl_GroupModuleLevelCode = TRUE;
- break;
-
case 's':
AcpiGbl_EnableInterpreterSlack = TRUE;
@@ -625,7 +620,6 @@ main (
/* Module-level code. Use new architecture */
AcpiGbl_ExecuteTablesAsMethods = TRUE;
- AcpiGbl_GroupModuleLevelCode = FALSE;
/*
* Initialize ACPICA and start debugger thread.
diff --git a/source/tools/acpiexec/aetables.c b/source/tools/acpiexec/aetables.c
index 4137f7b7ae78..a3dcdf850382 100644
--- a/source/tools/acpiexec/aetables.c
+++ b/source/tools/acpiexec/aetables.c
@@ -675,18 +675,10 @@ AeLoadTables (
* for an existing name.
*/
Status = AcpiInstallMethod (MethodCode);
- if (ACPI_FAILURE (Status))
- {
- AcpiOsPrintf ("%s, Could not install method\n",
- AcpiFormatException (Status));
- }
+ ACPI_CHECK_OK (AcpiInstallMethod, Status);
Status = AcpiInstallMethod (MethodCode);
- if (ACPI_FAILURE (Status))
- {
- AcpiOsPrintf ("%s, Could not install method\n",
- AcpiFormatException (Status));
- }
+ ACPI_CHECK_OK (AcpiInstallMethod, Status);
return (AE_OK);
}
diff --git a/source/tools/acpinames/anmain.c b/source/tools/acpinames/anmain.c
index 57b421e7c290..70e34d60335e 100644
--- a/source/tools/acpinames/anmain.c
+++ b/source/tools/acpinames/anmain.c
@@ -240,7 +240,6 @@ main (
/* Set flags so that the interpreter is not used */
AcpiGbl_ExecuteTablesAsMethods = FALSE;
- AcpiGbl_GroupModuleLevelCode = TRUE;
Status = AcpiInitializeSubsystem ();
ACPI_CHECK_OK (AcpiInitializeSubsystem, Status);
diff --git a/source/tools/acpisrc/astable.c b/source/tools/acpisrc/astable.c
index 031d715196c3..4e1685efc9d2 100644
--- a/source/tools/acpisrc/astable.c
+++ b/source/tools/acpisrc/astable.c
@@ -680,6 +680,7 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = {
{"ACPI_TABLE_STAO", SRC_TYPE_STRUCT},
{"ACPI_TABLE_TCPA", SRC_TYPE_STRUCT},
{"ACPI_TABLE_TPM2", SRC_TYPE_STRUCT},
+ {"ACPI_TABLE_TPM23", SRC_TYPE_STRUCT},
{"ACPI_TABLE_UEFI", SRC_TYPE_STRUCT},
{"ACPI_TABLE_WAET", SRC_TYPE_STRUCT},
{"ACPI_TABLE_WDAT", SRC_TYPE_STRUCT},
@@ -833,6 +834,7 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = {
{"ACPI_TABLE_TCPA_CLIENT", SRC_TYPE_STRUCT},
{"ACPI_TABLE_TCPA_SERVER", SRC_TYPE_STRUCT},
{"ACPI_TPM2_TRAILER", SRC_TYPE_STRUCT},
+ {"ACPI_TPM23_TRAILER", SRC_TYPE_STRUCT},
{"ACPI_TPM2_ARM_SMC", SRC_TYPE_STRUCT},
{"ACPI_WDAT_ENTRY", SRC_TYPE_STRUCT},