Module Name:    src
Committed By:   christos
Date:           Fri Nov 27 16:58:33 UTC 2020

Modified Files:
        src/sys/external/bsd/acpica/dist/compiler: aslcompiler.l aslload.c
            aslopcodes.c aslprepkg.c aslutils.c aslxref.c
        src/sys/external/bsd/acpica/dist/debugger: dbexec.c dbinput.c
            dbmethod.c
        src/sys/external/bsd/acpica/dist/disassembler: dmbuffer.c dmcstyle.c
        src/sys/external/bsd/acpica/dist/events: evregion.c evrgnini.c
        src/sys/external/bsd/acpica/dist/include: acdebug.h acexcep.h acpixf.h
            actbl1.h actypes.h
        src/sys/external/bsd/acpica/dist/namespace: nsrepair2.c
        src/sys/external/bsd/acpica/dist/os_specific/service_layers:
            oslinuxtbl.c

Log Message:
merge conflicts


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 \
    src/sys/external/bsd/acpica/dist/compiler/aslcompiler.l
cvs rdiff -u -r1.19 -r1.20 \
    src/sys/external/bsd/acpica/dist/compiler/aslload.c \
    src/sys/external/bsd/acpica/dist/compiler/aslxref.c
cvs rdiff -u -r1.12 -r1.13 \
    src/sys/external/bsd/acpica/dist/compiler/aslopcodes.c
cvs rdiff -u -r1.13 -r1.14 \
    src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c
cvs rdiff -u -r1.26 -r1.27 \
    src/sys/external/bsd/acpica/dist/compiler/aslutils.c
cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/acpica/dist/debugger/dbexec.c
cvs rdiff -u -r1.22 -r1.23 \
    src/sys/external/bsd/acpica/dist/debugger/dbinput.c
cvs rdiff -u -r1.15 -r1.16 \
    src/sys/external/bsd/acpica/dist/debugger/dbmethod.c
cvs rdiff -u -r1.12 -r1.13 \
    src/sys/external/bsd/acpica/dist/disassembler/dmbuffer.c
cvs rdiff -u -r1.11 -r1.12 \
    src/sys/external/bsd/acpica/dist/disassembler/dmcstyle.c
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/acpica/dist/events/evregion.c
cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/acpica/dist/events/evrgnini.c
cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/acpica/dist/include/acdebug.h
cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/acpica/dist/include/acexcep.h
cvs rdiff -u -r1.27 -r1.28 src/sys/external/bsd/acpica/dist/include/acpixf.h
cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/acpica/dist/include/actbl1.h
cvs rdiff -u -r1.22 -r1.23 src/sys/external/bsd/acpica/dist/include/actypes.h
cvs rdiff -u -r1.15 -r1.16 \
    src/sys/external/bsd/acpica/dist/namespace/nsrepair2.c
cvs rdiff -u -r1.12 -r1.13 \
    src/sys/external/bsd/acpica/dist/os_specific/service_layers/oslinuxtbl.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/compiler/aslcompiler.l
diff -u src/sys/external/bsd/acpica/dist/compiler/aslcompiler.l:1.17 src/sys/external/bsd/acpica/dist/compiler/aslcompiler.l:1.18
--- src/sys/external/bsd/acpica/dist/compiler/aslcompiler.l:1.17	Sun Aug  2 16:25:54 2020
+++ src/sys/external/bsd/acpica/dist/compiler/aslcompiler.l	Fri Nov 27 11:58:32 2020
@@ -171,8 +171,8 @@ NamePathTail                [.]{NameSeg}
     /*
      * Begin standard ASL grammar
      */
-[0-9][a-zA-Z0-9]*            { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext);
-                                count (1); return (PARSEOP_INTEGER); }
+[0-9][a-zA-Z0-9]*            { count (1); AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext);
+                                 return (PARSEOP_INTEGER); }
 
 "Include"                   { count (1); return (PARSEOP_INCLUDE); }
 "External"                  { count (1); return (PARSEOP_EXTERNAL); }
@@ -733,7 +733,6 @@ NamePathTail                [.]{NameSeg}
                                      * the required length.
                                      */
                                     strcpy (s, "____");
-                                    AcpiUtStrupr (AslCompilertext);
                                 }
                                 memcpy (s, AslCompilertext, strlen (AslCompilertext));
                                 AslCompilerlval.s = s;
@@ -743,7 +742,6 @@ NamePathTail                [.]{NameSeg}
 {NameString}                { char *s;
                                 count (0);
                                 s=UtLocalCacheCalloc (strlen (AslCompilertext)+1);
-                                AcpiUtStrupr (AslCompilertext);
                                 strcpy (s, AslCompilertext);
                                 AslCompilerlval.s = s;
                                 DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s);

Index: src/sys/external/bsd/acpica/dist/compiler/aslload.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.19 src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.20
--- src/sys/external/bsd/acpica/dist/compiler/aslload.c:1.19	Sun Aug  2 16:25:54 2020
+++ src/sys/external/bsd/acpica/dist/compiler/aslload.c	Fri Nov 27 11:58:32 2020
@@ -1296,9 +1296,16 @@ LdNamespace2Begin (
             return (AE_OK);
         }
 
-        /* Save the target node within the alias node */
+        /* Save the target node within the alias node as well as type information */
 
         Node->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode);
+        Node->Type = TargetNode->Type;
+        if (Node->Type == ACPI_TYPE_METHOD)
+        {
+            /* Save the parameter count for methods */
+
+            Node->Value = TargetNode->Value;
+        }
     }
 
     return (AE_OK);
Index: src/sys/external/bsd/acpica/dist/compiler/aslxref.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslxref.c:1.19 src/sys/external/bsd/acpica/dist/compiler/aslxref.c:1.20
--- src/sys/external/bsd/acpica/dist/compiler/aslxref.c:1.19	Sun Aug  2 16:25:54 2020
+++ src/sys/external/bsd/acpica/dist/compiler/aslxref.c	Fri Nov 27 11:58:32 2020
@@ -325,6 +325,7 @@ XfNamespaceLocateBegin (
     UINT32                  i;
     ACPI_NAMESPACE_NODE     *DeclarationParentMethod;
     ACPI_PARSE_OBJECT       *ReferenceParentMethod;
+    char                    *ExternalPath;
 
 
     ACPI_FUNCTION_TRACE_PTR (XfNamespaceLocateBegin, Op);
@@ -1156,7 +1157,15 @@ XfNamespaceLocateBegin (
         Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_CONDREFOF &&
         !XfRefIsGuardedByIfCondRefOf (Node, Op))
     {
-        AslError (ASL_ERROR, ASL_MSG_UNDEFINED_EXTERNAL, Op, NULL);
+        ExternalPath = AcpiNsGetNormalizedPathname (Node, TRUE);
+        sprintf (AslGbl_MsgBuffer, "full path of external object: %s",
+            ExternalPath);
+        AslDualParseOpError (ASL_ERROR, ASL_MSG_UNDEFINED_EXTERNAL, Op, NULL,
+            ASL_MSG_EXTERNAL_FOUND_HERE, Node->Op, AslGbl_MsgBuffer);
+        if (ExternalPath)
+        {
+            ACPI_FREE (ExternalPath);
+        }
     }
 
     /* 5) Check for a connection object */

Index: src/sys/external/bsd/acpica/dist/compiler/aslopcodes.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslopcodes.c:1.12 src/sys/external/bsd/acpica/dist/compiler/aslopcodes.c:1.13
--- src/sys/external/bsd/acpica/dist/compiler/aslopcodes.c:1.12	Sat Mar 28 15:49:26 2020
+++ src/sys/external/bsd/acpica/dist/compiler/aslopcodes.c	Fri Nov 27 11:58:32 2020
@@ -690,7 +690,13 @@ OpcDoUuId (
     }
     else
     {
+        /* Convert UUID string to a buffer, check for a known UUID */
+
         AcpiUtConvertStringToUuid (InString, Buffer);
+        if (!AcpiAhMatchUuid (Buffer))
+        {
+            AslError (ASL_REMARK, ASL_MSG_UUID_NOT_FOUND, Op, NULL);
+        }
     }
 
     /* Change Op to a Buffer */

Index: src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c:1.13 src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c:1.14
--- src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c:1.13	Sat Mar 28 15:49:26 2020
+++ src/sys/external/bsd/acpica/dist/compiler/aslprepkg.c	Fri Nov 27 11:58:32 2020
@@ -210,6 +210,17 @@ ApCheckPackage (
          */
         for (i = 0; i < Count; i++)
         {
+            if (!Op)
+            {
+                /*
+                 * If we get to this point, it means that the package length
+                 * is larger than the initializer list. Stop processing the
+                 * package and return because we have run out of package
+                 * elements to analyze.
+                 */
+                return;
+            }
+
             ApCheckObjectType (Predefined->Info.Name, Op,
                 Package->RetInfo.ObjectType1, i);
             Op = Op->Asl.Next;
@@ -809,7 +820,7 @@ ApPackageTooSmall (
     UINT32                      ExpectedCount)
 {
 
-    snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer), "%s: length %u, required minimum is %u",
+    snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer), "%4.4s: length %u, required minimum is %u",
         PredefinedName, Count, ExpectedCount);
 
     AslError (ASL_ERROR, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, AslGbl_MsgBuffer);
@@ -838,7 +849,7 @@ ApZeroLengthPackage (
     ACPI_PARSE_OBJECT           *Op)
 {
 
-    snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer), "%s: length is zero", PredefinedName);
+    snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer), "%4.4s: length is zero", PredefinedName);
 
     AslError (ASL_ERROR, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, AslGbl_MsgBuffer);
 }
@@ -867,7 +878,7 @@ ApPackageTooLarge (
     UINT32                      ExpectedCount)
 {
 
-    snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer), "%s: length is %u, only %u required",
+    snprintf (AslGbl_MsgBuffer, sizeof(AslGbl_MsgBuffer), "%4.4s: length is %u, only %u required",
         PredefinedName, Count, ExpectedCount);
 
     AslError (ASL_REMARK, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, AslGbl_MsgBuffer);

Index: src/sys/external/bsd/acpica/dist/compiler/aslutils.c
diff -u src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.26 src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.27
--- src/sys/external/bsd/acpica/dist/compiler/aslutils.c:1.26	Sat Mar 28 15:49:26 2020
+++ src/sys/external/bsd/acpica/dist/compiler/aslutils.c	Fri Nov 27 11:58:32 2020
@@ -966,14 +966,16 @@ UtDoConstant (
 {
     ACPI_STATUS             Status;
     UINT64                  ConvertedInteger;
-    char                    ErrBuf[64];
+    char                    ErrBuf[128];
+    const ACPI_EXCEPTION_INFO *ExceptionInfo;
 
 
     Status = AcpiUtStrtoul64 (String, &ConvertedInteger);
     if (ACPI_FAILURE (Status))
     {
-        snprintf (ErrBuf, sizeof(ErrBuf), "While creating 64-bit constant: %s\n",
-            AcpiFormatException (Status));
+        ExceptionInfo = AcpiUtValidateException ((ACPI_STATUS) Status);
+        snprintf (ErrBuf, sizeof(ErrBuf), " %s while converting to 64-bit integer",
+            ExceptionInfo->Description);
 
         AslCommonError (ASL_ERROR, ASL_MSG_SYNTAX, AslGbl_CurrentLineNumber,
             AslGbl_LogicalLineNumber, AslGbl_CurrentLineOffset,

Index: src/sys/external/bsd/acpica/dist/debugger/dbexec.c
diff -u src/sys/external/bsd/acpica/dist/debugger/dbexec.c:1.17 src/sys/external/bsd/acpica/dist/debugger/dbexec.c:1.18
--- src/sys/external/bsd/acpica/dist/debugger/dbexec.c:1.17	Sat Mar 28 15:49:26 2020
+++ src/sys/external/bsd/acpica/dist/debugger/dbexec.c	Fri Nov 27 11:58:32 2020
@@ -144,7 +144,8 @@ AcpiDbDeleteObjects (
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Execute a control method.
+ * DESCRIPTION: Execute a control method. Used to evaluate objects via the
+ *              "EXECUTE" or "EVALUATE" commands.
  *
  ******************************************************************************/
 
@@ -398,11 +399,12 @@ AcpiDbExecutionWalk (
 
     Status = AcpiEvaluateObject (Node, NULL, NULL, &ReturnObj);
 
+    AcpiGbl_MethodExecuting = FALSE;
+
     AcpiOsPrintf ("Evaluation of [%4.4s] returned %s\n",
         AcpiUtGetNodeName (Node),
         AcpiFormatException (Status));
 
-    AcpiGbl_MethodExecuting = FALSE;
     return (AE_OK);
 }
 
@@ -419,7 +421,8 @@ AcpiDbExecutionWalk (
  * RETURN:      None
  *
  * DESCRIPTION: Execute a control method. Name is relative to the current
- *              scope.
+ *              scope. Function used for the "EXECUTE", "EVALUATE", and
+ *              "ALL" commands
  *
  ******************************************************************************/
 
@@ -463,6 +466,12 @@ AcpiDbExecute (
         return;
     }
 
+    if ((Flags & EX_ALL) && (strlen (Name) > 4))
+    {
+        AcpiOsPrintf ("Input name (%s) must be a 4-char NameSeg\n", Name);
+        return;
+    }
+
     NameString = ACPI_ALLOCATE (strlen (Name) + 1);
     if (!NameString)
     {
@@ -482,13 +491,27 @@ AcpiDbExecute (
         return;
     }
 
-    AcpiGbl_DbMethodInfo.Name = NameString;
-    AcpiGbl_DbMethodInfo.Args = Args;
-    AcpiGbl_DbMethodInfo.Types = Types;
-    AcpiGbl_DbMethodInfo.Flags = Flags;
+    /* Command (ALL <nameseg>) to execute all methods of a particular name */
 
-    ReturnObj.Pointer = NULL;
-    ReturnObj.Length = ACPI_ALLOCATE_BUFFER;
+    else if (Flags & EX_ALL)
+    {
+        AcpiGbl_DbMethodInfo.Name = NameString;
+        ReturnObj.Pointer = NULL;
+        ReturnObj.Length = ACPI_ALLOCATE_BUFFER;
+        AcpiDbEvaluateAll (NameString);
+        ACPI_FREE (NameString);
+        return;
+    }
+    else
+    {
+        AcpiGbl_DbMethodInfo.Name = NameString;
+        AcpiGbl_DbMethodInfo.Args = Args;
+        AcpiGbl_DbMethodInfo.Types = Types;
+        AcpiGbl_DbMethodInfo.Flags = Flags;
+
+        ReturnObj.Pointer = NULL;
+        ReturnObj.Length = ACPI_ALLOCATE_BUFFER;
+    }
 
     Status = AcpiDbExecuteSetup (&AcpiGbl_DbMethodInfo);
     if (ACPI_FAILURE (Status))
@@ -549,6 +572,7 @@ AcpiDbExecute (
                 (UINT32) ReturnObj.Length);
 
             AcpiDbDumpExternalObject (ReturnObj.Pointer, 1);
+            AcpiOsPrintf ("\n");
 
             /* Dump a _PLD buffer if present */
 

Index: src/sys/external/bsd/acpica/dist/debugger/dbinput.c
diff -u src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.22 src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.23
--- src/sys/external/bsd/acpica/dist/debugger/dbinput.c:1.22	Wed Nov 18 01:49:13 2020
+++ src/sys/external/bsd/acpica/dist/debugger/dbinput.c	Fri Nov 27 11:58:32 2020
@@ -87,6 +87,7 @@ enum AcpiExDebuggerCommands
 {
     CMD_NOT_FOUND = 0,
     CMD_NULL,
+    CMD_ALL,
     CMD_ALLOCATIONS,
     CMD_ARGS,
     CMD_ARGUMENTS,
@@ -167,6 +168,7 @@ static const ACPI_DB_COMMAND_INFO   Acpi
 {
     {"<NOT FOUND>",  0},
     {"<NULL>",       0},
+    {"ALL",          1},
     {"ALLOCATIONS",  0},
     {"ARGS",         0},
     {"ARGUMENTS",    0},
@@ -269,6 +271,7 @@ static const ACPI_DB_COMMAND_HELP   Acpi
     {1, "  Type <Object>",                      "Display object type\n"},
 
     {0, "\nControl Method Execution:",          "\n"},
+    {1, "  All <NameSeg>",                      "Evaluate all objects named NameSeg\n"},
     {1, "  Evaluate <Namepath> [Arguments]",    "Evaluate object or control method\n"},
     {1, "  Execute <Namepath> [Arguments]",     "Synonym for Evaluate\n"},
 #ifdef ACPI_APPLICATION
@@ -491,7 +494,7 @@ AcpiDbDisplayHelp (
     }
     else
     {
-        /* Display help for all commands that match the subtring */
+        /* Display help for all commands that match the substring */
 
         AcpiDbDisplayCommandInfo (Command, TRUE);
     }
@@ -839,6 +842,13 @@ AcpiDbCommandDispatch (
         }
         break;
 
+    case CMD_ALL:
+
+        AcpiOsPrintf ("Executing all objects with NameSeg: %s\n", AcpiGbl_DbArgs[1]);
+        AcpiDbExecute (AcpiGbl_DbArgs[1],
+            &AcpiGbl_DbArgs[2], &AcpiGbl_DbArgTypes[2], EX_NO_SINGLE_STEP | EX_ALL);
+        break;
+
     case CMD_ALLOCATIONS:
 
 #ifdef ACPI_DBG_TRACK_ALLOCATIONS

Index: src/sys/external/bsd/acpica/dist/debugger/dbmethod.c
diff -u src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.15 src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.16
--- src/sys/external/bsd/acpica/dist/debugger/dbmethod.c:1.15	Sat Mar 28 15:49:26 2020
+++ src/sys/external/bsd/acpica/dist/debugger/dbmethod.c	Fri Nov 27 11:58:32 2020
@@ -62,6 +62,10 @@ AcpiDbWalkForExecute (
     void                    *Context,
     void                    **ReturnValue);
 
+static ACPI_STATUS
+AcpiDbEvaluateObject (
+    ACPI_NAMESPACE_NODE     *Node);
+
 
 /*******************************************************************************
  *
@@ -434,46 +438,29 @@ AcpiDbDisassembleMethod (
 
 /*******************************************************************************
  *
- * FUNCTION:    AcpiDbWalkForExecute
+ * FUNCTION:    AcpiDbEvaluateObject
  *
- * PARAMETERS:  Callback from WalkNamespace
+ * PARAMETERS:  Node                - Namespace node for the object
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Batch execution module. Currently only executes predefined
- *              ACPI names.
+ * DESCRIPTION: Main execution function for the Evaluate/Execute/All debugger
+ *              commands.
  *
  ******************************************************************************/
 
 static ACPI_STATUS
-AcpiDbWalkForExecute (
-    ACPI_HANDLE             ObjHandle,
-    UINT32                  NestingLevel,
-    void                    *Context,
-    void                    **ReturnValue)
+AcpiDbEvaluateObject (
+    ACPI_NAMESPACE_NODE     *Node)
 {
-    ACPI_NAMESPACE_NODE     *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
-    ACPI_DB_EXECUTE_WALK    *Info = (ACPI_DB_EXECUTE_WALK *) Context;
-    ACPI_BUFFER             ReturnObj;
-    ACPI_STATUS             Status;
     char                    *Pathname;
     UINT32                  i;
     ACPI_DEVICE_INFO        *ObjInfo;
     ACPI_OBJECT_LIST        ParamObjects;
     ACPI_OBJECT             Params[ACPI_METHOD_NUM_ARGS];
-    const ACPI_PREDEFINED_INFO *Predefined;
-
-
-    Predefined = AcpiUtMatchPredefinedMethod (Node->Name.Ascii);
-    if (!Predefined)
-    {
-        return (AE_OK);
-    }
+    ACPI_BUFFER             ReturnObj;
+    ACPI_STATUS             Status;
 
-    if (Node->Type == ACPI_TYPE_LOCAL_SCOPE)
-    {
-        return (AE_OK);
-    }
 
     Pathname = AcpiNsGetExternalPathname (Node);
     if (!Pathname)
@@ -483,7 +470,7 @@ AcpiDbWalkForExecute (
 
     /* Get the object info for number of method parameters */
 
-    Status = AcpiGetObjectInfo (ObjHandle, &ObjInfo);
+    Status = AcpiGetObjectInfo (Node, &ObjInfo);
     if (ACPI_FAILURE (Status))
     {
         ACPI_FREE (Pathname);
@@ -516,13 +503,70 @@ AcpiDbWalkForExecute (
     AcpiGbl_MethodExecuting = TRUE;
 
     Status = AcpiEvaluateObject (Node, NULL, &ParamObjects, &ReturnObj);
+    AcpiGbl_MethodExecuting = FALSE;
 
     AcpiOsPrintf ("%-32s returned %s\n", Pathname, AcpiFormatException (Status));
-    AcpiGbl_MethodExecuting = FALSE;
+    if (ReturnObj.Length)
+    {
+        AcpiOsPrintf ("Evaluation of %s returned object %p, "
+            "external buffer length %X\n",
+            Pathname, ReturnObj.Pointer, (UINT32) ReturnObj.Length);
+
+        AcpiDbDumpExternalObject (ReturnObj.Pointer, 1);
+        AcpiOsPrintf ("\n");
+    }
+
     ACPI_FREE (Pathname);
 
     /* Ignore status from method execution */
 
+    return (AE_OK);
+
+    /* Update count, check if we have executed enough methods */
+
+}
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDbWalkForExecute
+ *
+ * PARAMETERS:  Callback from WalkNamespace
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Batch execution function. Evaluates all "predefined" objects --
+ *              the nameseg begins with an underscore.
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AcpiDbWalkForExecute (
+    ACPI_HANDLE             ObjHandle,
+    UINT32                  NestingLevel,
+    void                    *Context,
+    void                    **ReturnValue)
+{
+    ACPI_NAMESPACE_NODE     *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
+    ACPI_DB_EXECUTE_WALK    *Info = (ACPI_DB_EXECUTE_WALK *) Context;
+    ACPI_STATUS             Status;
+    const ACPI_PREDEFINED_INFO *Predefined;
+
+
+    Predefined = AcpiUtMatchPredefinedMethod (Node->Name.Ascii);
+    if (!Predefined)
+    {
+        return (AE_OK);
+    }
+
+    if (Node->Type == ACPI_TYPE_LOCAL_SCOPE)
+    {
+        return (AE_OK);
+    }
+
+    AcpiDbEvaluateObject (Node);
+
+    /* Ignore status from object evaluation */
+
     Status = AE_OK;
 
     /* Update count, check if we have executed enough methods */
@@ -539,6 +583,56 @@ AcpiDbWalkForExecute (
 
 /*******************************************************************************
  *
+ * FUNCTION:    AcpiDbWalkForExecuteAll
+ *
+ * PARAMETERS:  Callback from WalkNamespace
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Batch execution function. Evaluates all objects whose path ends
+ *              with the nameseg "Info->NameSeg". Used for the "ALL" command.
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AcpiDbWalkForExecuteAll (
+    ACPI_HANDLE             ObjHandle,
+    UINT32                  NestingLevel,
+    void                    *Context,
+    void                    **ReturnValue)
+{
+    ACPI_NAMESPACE_NODE     *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
+    ACPI_DB_EXECUTE_WALK    *Info = (ACPI_DB_EXECUTE_WALK *) Context;
+    ACPI_STATUS             Status;
+
+
+    if (!ACPI_COMPARE_NAMESEG (Node->Name.Ascii, Info->NameSeg))
+    {
+        return (AE_OK);
+    }
+
+    if (Node->Type == ACPI_TYPE_LOCAL_SCOPE)
+    {
+        return (AE_OK);
+    }
+
+    /* Now evaluate the input object (node) */
+
+    AcpiDbEvaluateObject (Node);
+
+    /* Ignore status from method execution */
+
+    Status = AE_OK;
+
+    /* Update count of executed methods/objects */
+
+    Info->Count++;
+    return (Status);
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AcpiDbEvaluatePredefinedNames
  *
  * PARAMETERS:  None
@@ -567,3 +661,38 @@ AcpiDbEvaluatePredefinedNames (
 
     AcpiOsPrintf ("Evaluated %u predefined names in the namespace\n", Info.Count);
 }
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDbEvaluateAll
+ *
+ * PARAMETERS:  NoneAcpiGbl_DbMethodInfo
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Namespace batch execution. Implements the "ALL" command.
+ *              Execute all namepaths whose final nameseg matches the
+ *              input nameseg.
+ *
+ ******************************************************************************/
+
+void
+AcpiDbEvaluateAll (
+    char                    *NameSeg)
+{
+    ACPI_DB_EXECUTE_WALK    Info;
+
+
+    Info.Count = 0;
+    Info.MaxCount = ACPI_UINT32_MAX;
+    ACPI_COPY_NAMESEG (Info.NameSeg, NameSeg);
+    Info.NameSeg[ACPI_NAMESEG_SIZE] = 0;
+
+    /* Search all nodes in namespace */
+
+    (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX,
+                AcpiDbWalkForExecuteAll, NULL, (void *) &Info, NULL);
+
+    AcpiOsPrintf ("Evaluated %u names in the namespace\n", Info.Count);
+}

Index: src/sys/external/bsd/acpica/dist/disassembler/dmbuffer.c
diff -u src/sys/external/bsd/acpica/dist/disassembler/dmbuffer.c:1.12 src/sys/external/bsd/acpica/dist/disassembler/dmbuffer.c:1.13
--- src/sys/external/bsd/acpica/dist/disassembler/dmbuffer.c:1.12	Mon May 25 19:19:28 2020
+++ src/sys/external/bsd/acpica/dist/disassembler/dmbuffer.c	Fri Nov 27 11:58:32 2020
@@ -386,6 +386,10 @@ AcpiDmUuid (
     {
         AcpiOsPrintf (" /* %s */", Description);
     }
+    else
+    {
+        AcpiOsPrintf (" /* Unknown UUID */");
+    }
 }
 
 

Index: src/sys/external/bsd/acpica/dist/disassembler/dmcstyle.c
diff -u src/sys/external/bsd/acpica/dist/disassembler/dmcstyle.c:1.11 src/sys/external/bsd/acpica/dist/disassembler/dmcstyle.c:1.12
--- src/sys/external/bsd/acpica/dist/disassembler/dmcstyle.c:1.11	Sat Mar 28 15:49:26 2020
+++ src/sys/external/bsd/acpica/dist/disassembler/dmcstyle.c	Fri Nov 27 11:58:32 2020
@@ -636,7 +636,7 @@ AcpiDmIsOptimizationIgnored (
      * Only a small subset of ASL/AML operators can be optimized.
      * Can only optimize/fold if there is no target (or targets)
      * specified for the operator. And of course, the operator
-     * is surrrounded by a Store() operator.
+     * is surrounded by a Store() operator.
      */
     switch (StoreArgument->Common.AmlOpcode)
     {

Index: src/sys/external/bsd/acpica/dist/events/evregion.c
diff -u src/sys/external/bsd/acpica/dist/events/evregion.c:1.11 src/sys/external/bsd/acpica/dist/events/evregion.c:1.12
--- src/sys/external/bsd/acpica/dist/events/evregion.c:1.11	Sat Mar 28 15:49:26 2020
+++ src/sys/external/bsd/acpica/dist/events/evregion.c	Fri Nov 27 11:58:32 2020
@@ -56,8 +56,10 @@ extern UINT8        AcpiGbl_DefaultAddre
 /* Local prototypes */
 
 static void
-AcpiEvOrphanEcRegMethod (
-    ACPI_NAMESPACE_NODE     *EcDeviceNode);
+AcpiEvExecuteOrphanRegMethod (
+    ACPI_NAMESPACE_NODE     *DeviceNode,
+    ACPI_ADR_SPACE_TYPE     SpaceId);
+
 
 static ACPI_STATUS
 AcpiEvRegRun (
@@ -761,11 +763,13 @@ AcpiEvExecuteRegMethods (
     (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX,
         ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &Info, NULL);
 
-    /* Special case for EC: handle "orphan" _REG methods with no region */
-
-    if (SpaceId == ACPI_ADR_SPACE_EC)
+    /*
+     * Special case for EC and GPIO: handle "orphan" _REG methods with
+     * no region.
+     */
+    if (SpaceId == ACPI_ADR_SPACE_EC || SpaceId == ACPI_ADR_SPACE_GPIO)
     {
-        AcpiEvOrphanEcRegMethod (Node);
+        AcpiEvExecuteOrphanRegMethod (Node, SpaceId);
     }
 
     ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES,
@@ -846,32 +850,29 @@ AcpiEvRegRun (
 
 /*******************************************************************************
  *
- * FUNCTION:    AcpiEvOrphanEcRegMethod
+ * FUNCTION:    AcpiEvExecuteOrphanRegMethod
  *
- * PARAMETERS:  EcDeviceNode        - Namespace node for an EC device
+ * PARAMETERS:  DeviceNode          - Namespace node for an ACPI device
+ *              SpaceId             - The address space ID
  *
  * RETURN:      None
  *
- * DESCRIPTION: Execute an "orphan" _REG method that appears under the EC
+ * DESCRIPTION: Execute an "orphan" _REG method that appears under an ACPI
  *              device. This is a _REG method that has no corresponding region
- *              within the EC device scope. The orphan _REG method appears to
- *              have been enabled by the description of the ECDT in the ACPI
- *              specification: "The availability of the region space can be
- *              detected by providing a _REG method object underneath the
- *              Embedded Controller device."
- *
- *              To quickly access the EC device, we use the EcDeviceNode used
- *              during EC handler installation. Otherwise, we would need to
- *              perform a time consuming namespace walk, executing _HID
- *              methods to find the EC device.
+ *              within the device's scope. ACPI tables depending on these
+ *              "orphan" _REG methods have been seen for both EC and GPIO
+ *              Operation Regions. Presumably the Windows ACPI implementation
+ *              always calls the _REG method independent of the presence of
+ *              an actual Operation Region with the correct address space ID.
  *
  *  MUTEX:      Assumes the namespace is locked
  *
  ******************************************************************************/
 
 static void
-AcpiEvOrphanEcRegMethod (
-    ACPI_NAMESPACE_NODE     *EcDeviceNode)
+AcpiEvExecuteOrphanRegMethod (
+    ACPI_NAMESPACE_NODE     *DeviceNode,
+    ACPI_ADR_SPACE_TYPE     SpaceId)
 {
     ACPI_HANDLE             RegMethod;
     ACPI_NAMESPACE_NODE     *NextNode;
@@ -880,10 +881,10 @@ AcpiEvOrphanEcRegMethod (
     ACPI_OBJECT             Objects[2];
 
 
-    ACPI_FUNCTION_TRACE (EvOrphanEcRegMethod);
+    ACPI_FUNCTION_TRACE (EvExecuteOrphanRegMethod);
 
 
-    if (!EcDeviceNode)
+    if (!DeviceNode)
     {
         return_VOID;
     }
@@ -894,7 +895,7 @@ AcpiEvOrphanEcRegMethod (
 
     /* Get a handle to a _REG method immediately under the EC device */
 
-    Status = AcpiGetHandle (EcDeviceNode, METHOD_NAME__REG, &RegMethod);
+    Status = AcpiGetHandle (DeviceNode, METHOD_NAME__REG, &RegMethod);
     if (ACPI_FAILURE (Status))
     {
         goto Exit; /* There is no _REG method present */
@@ -907,25 +908,25 @@ AcpiEvOrphanEcRegMethod (
      * with other space IDs to be present; but the code below will then
      * execute the _REG method with the EmbeddedControl SpaceID argument.
      */
-    NextNode = AcpiNsGetNextNode (EcDeviceNode, NULL);
+    NextNode = AcpiNsGetNextNode (DeviceNode, NULL);
     while (NextNode)
     {
         if ((NextNode->Type == ACPI_TYPE_REGION) &&
             (NextNode->Object) &&
-            (NextNode->Object->Region.SpaceId == ACPI_ADR_SPACE_EC))
+            (NextNode->Object->Region.SpaceId == SpaceId))
         {
             goto Exit; /* Do not execute the _REG */
         }
 
-        NextNode = AcpiNsGetNextNode (EcDeviceNode, NextNode);
+        NextNode = AcpiNsGetNextNode (DeviceNode, NextNode);
     }
 
-    /* Evaluate the _REG(EmbeddedControl,Connect) method */
+    /* Evaluate the _REG(SpaceId,Connect) method */
 
     Args.Count = 2;
     Args.Pointer = Objects;
     Objects[0].Type = ACPI_TYPE_INTEGER;
-    Objects[0].Integer.Value = ACPI_ADR_SPACE_EC;
+    Objects[0].Integer.Value = SpaceId;
     Objects[1].Type = ACPI_TYPE_INTEGER;
     Objects[1].Integer.Value = ACPI_REG_CONNECT;
 

Index: src/sys/external/bsd/acpica/dist/events/evrgnini.c
diff -u src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.16 src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.17
--- src/sys/external/bsd/acpica/dist/events/evrgnini.c:1.16	Sat Mar 28 15:49:26 2020
+++ src/sys/external/bsd/acpica/dist/events/evrgnini.c	Fri Nov 27 11:58:32 2020
@@ -75,6 +75,7 @@ AcpiEvSystemMemoryRegionSetup (
 {
     ACPI_OPERAND_OBJECT     *RegionDesc = (ACPI_OPERAND_OBJECT *) Handle;
     ACPI_MEM_SPACE_CONTEXT  *LocalRegionContext;
+    ACPI_MEM_MAPPING        *Mm;
 
 
     ACPI_FUNCTION_TRACE (EvSystemMemoryRegionSetup);
@@ -86,12 +87,14 @@ AcpiEvSystemMemoryRegionSetup (
         {
             LocalRegionContext = (ACPI_MEM_SPACE_CONTEXT *) *RegionContext;
 
-            /* Delete a cached mapping if present */
+            /* Delete memory mappings if present */
 
-            if (LocalRegionContext->MappedLength)
+            while (LocalRegionContext->FirstMm)
             {
-                AcpiOsUnmapMemory (LocalRegionContext->MappedLogicalAddress,
-                    LocalRegionContext->MappedLength);
+                Mm = LocalRegionContext->FirstMm;
+                LocalRegionContext->FirstMm = Mm->NextMm;
+                AcpiOsUnmapMemory(Mm->LogicalAddress, Mm->Length);
+                ACPI_FREE(Mm);
             }
             ACPI_FREE (LocalRegionContext);
             *RegionContext = NULL;

Index: src/sys/external/bsd/acpica/dist/include/acdebug.h
diff -u src/sys/external/bsd/acpica/dist/include/acdebug.h:1.17 src/sys/external/bsd/acpica/dist/include/acdebug.h:1.18
--- src/sys/external/bsd/acpica/dist/include/acdebug.h:1.17	Sat Mar 28 15:49:27 2020
+++ src/sys/external/bsd/acpica/dist/include/acdebug.h	Fri Nov 27 11:58:32 2020
@@ -79,6 +79,7 @@ typedef struct acpi_db_execute_walk
 {
     UINT32                  Count;
     UINT32                  MaxCount;
+    char                    NameSeg[ACPI_NAMESEG_SIZE + 1];
 
 } ACPI_DB_EXECUTE_WALK;
 
@@ -87,6 +88,7 @@ typedef struct acpi_db_execute_walk
 
 #define EX_NO_SINGLE_STEP               1
 #define EX_SINGLE_STEP                  2
+#define EX_ALL                          4
 
 
 /*
@@ -237,6 +239,10 @@ void
 AcpiDbEvaluatePredefinedNames (
     void);
 
+void
+AcpiDbEvaluateAll (
+    char                    *NameSeg);
+
 
 /*
  * dbnames - namespace commands

Index: src/sys/external/bsd/acpica/dist/include/acexcep.h
diff -u src/sys/external/bsd/acpica/dist/include/acexcep.h:1.13 src/sys/external/bsd/acpica/dist/include/acexcep.h:1.14
--- src/sys/external/bsd/acpica/dist/include/acexcep.h:1.13	Sat Mar 28 15:49:27 2020
+++ src/sys/external/bsd/acpica/dist/include/acexcep.h	Fri Nov 27 11:58:32 2020
@@ -76,12 +76,12 @@ typedef struct acpi_exception_info
 {
     const char                *Name;
 
-#ifdef ACPI_HELP_APP
+#if defined (ACPI_HELP_APP) || defined (ACPI_ASL_COMPILER)
     const char                *Description;
 #endif
 } ACPI_EXCEPTION_INFO;
 
-#ifdef ACPI_HELP_APP
+#if defined (ACPI_HELP_APP) || defined (ACPI_ASL_COMPILER)
 #define EXCEP_TXT(Name,Description)     {Name, Description}
 #else
 #define EXCEP_TXT(Name,Description)     {Name}

Index: src/sys/external/bsd/acpica/dist/include/acpixf.h
diff -u src/sys/external/bsd/acpica/dist/include/acpixf.h:1.27 src/sys/external/bsd/acpica/dist/include/acpixf.h:1.28
--- src/sys/external/bsd/acpica/dist/include/acpixf.h:1.27	Sun Aug  2 16:25:55 2020
+++ src/sys/external/bsd/acpica/dist/include/acpixf.h	Fri Nov 27 11:58:32 2020
@@ -46,7 +46,7 @@
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20200717
+#define ACPI_CA_VERSION                 0x20201113
 
 #include "acconfig.h"
 #include "actypes.h"

Index: src/sys/external/bsd/acpica/dist/include/actbl1.h
diff -u src/sys/external/bsd/acpica/dist/include/actbl1.h:1.15 src/sys/external/bsd/acpica/dist/include/actbl1.h:1.16
--- src/sys/external/bsd/acpica/dist/include/actbl1.h:1.15	Sat Mar 28 15:49:27 2020
+++ src/sys/external/bsd/acpica/dist/include/actbl1.h	Fri Nov 27 11:58:32 2020
@@ -1659,8 +1659,7 @@ typedef struct acpi_hest_ia_deferred_che
 
 /*******************************************************************************
  *
- * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2)
- *        Version 1
+ * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.3)
  *
  ******************************************************************************/
 
@@ -1702,7 +1701,7 @@ typedef struct acpi_hmat_proximity_domai
     ACPI_HMAT_STRUCTURE     Header;
     UINT16                  Flags;
     UINT16                  Reserved1;
-    UINT32                  ProcessorPD;            /* Processor proximity domain */
+    UINT32                  InitiatorPD;            /* Attached Initiator proximity domain */
     UINT32                  MemoryPD;               /* Memory proximity domain */
     UINT32                  Reserved2;
     UINT64                  Reserved3;
@@ -1712,9 +1711,7 @@ typedef struct acpi_hmat_proximity_domai
 
 /* Masks for Flags field above */
 
-#define ACPI_HMAT_PROCESSOR_PD_VALID    (1)     /* 1: ProcessorPD field is valid */
-#define ACPI_HMAT_MEMORY_PD_VALID       (1<<1)  /* 1: MemoryPD field is valid */
-#define ACPI_HMAT_RESERVATION_HINT      (1<<2)  /* 1: Reservation hint */
+#define ACPI_HMAT_INITIATOR_PD_VALID    (1)     /* 1: InitiatorPD field is valid */
 
 
 /* 1: System locality latency and bandwidth information */
@@ -1739,10 +1736,9 @@ typedef struct acpi_hmat_locality
 /* Values for Memory Hierarchy flag */
 
 #define ACPI_HMAT_MEMORY            0
-#define ACPI_HMAT_LAST_LEVEL_CACHE  1
-#define ACPI_HMAT_1ST_LEVEL_CACHE   2
-#define ACPI_HMAT_2ND_LEVEL_CACHE   3
-#define ACPI_HMAT_3RD_LEVEL_CACHE   4
+#define ACPI_HMAT_1ST_LEVEL_CACHE   1
+#define ACPI_HMAT_2ND_LEVEL_CACHE   2
+#define ACPI_HMAT_3RD_LEVEL_CACHE   3
 
 /* Values for DataType field above */
 

Index: src/sys/external/bsd/acpica/dist/include/actypes.h
diff -u src/sys/external/bsd/acpica/dist/include/actypes.h:1.22 src/sys/external/bsd/acpica/dist/include/actypes.h:1.23
--- src/sys/external/bsd/acpica/dist/include/actypes.h:1.22	Sun Aug  2 16:25:55 2020
+++ src/sys/external/bsd/acpica/dist/include/actypes.h	Fri Nov 27 11:58:32 2020
@@ -874,7 +874,7 @@ typedef UINT8                           
  *
  * Note: A Data Table region is a special type of operation region
  * that has its own AML opcode. However, internally, the AML
- * interpreter simply creates an operation region with an an address
+ * interpreter simply creates an operation region with an address
  * space type of ACPI_ADR_SPACE_DATA_TABLE.
  */
 #define ACPI_ADR_SPACE_DATA_TABLE       (ACPI_ADR_SPACE_TYPE) 0x7E /* Internal to ACPICA only */
@@ -1337,13 +1337,21 @@ typedef struct acpi_pci_id
 
 } ACPI_PCI_ID;
 
+typedef struct acpi_mem_mapping
+{
+    ACPI_PHYSICAL_ADDRESS           PhysicalAddress;
+    UINT8                           *LogicalAddress;
+    ACPI_SIZE                       Length;
+    struct acpi_mem_mapping         *NextMm;
+
+} ACPI_MEM_MAPPING;
+
 typedef struct acpi_mem_space_context
 {
     UINT32                          Length;
     ACPI_PHYSICAL_ADDRESS           Address;
-    ACPI_PHYSICAL_ADDRESS           MappedPhysicalAddress;
-    UINT8                           *MappedLogicalAddress;
-    ACPI_SIZE                       MappedLength;
+    ACPI_MEM_MAPPING                *CurMm;
+    ACPI_MEM_MAPPING                *FirstMm;
 
 } ACPI_MEM_SPACE_CONTEXT;
 

Index: src/sys/external/bsd/acpica/dist/namespace/nsrepair2.c
diff -u src/sys/external/bsd/acpica/dist/namespace/nsrepair2.c:1.15 src/sys/external/bsd/acpica/dist/namespace/nsrepair2.c:1.16
--- src/sys/external/bsd/acpica/dist/namespace/nsrepair2.c:1.15	Sat Mar 28 15:49:27 2020
+++ src/sys/external/bsd/acpica/dist/namespace/nsrepair2.c	Fri Nov 27 11:58:32 2020
@@ -213,16 +213,18 @@ AcpiNsComplexRepairs (
     ACPI_STATUS             Status;
 
 
+    ACPI_FUNCTION_TRACE (NsComplexRepairs);
+
     /* Check if this name is in the list of repairable names */
 
     Predefined = AcpiNsMatchComplexRepair (Node);
     if (!Predefined)
     {
-        return (ValidateStatus);
+        return_ACPI_STATUS (ValidateStatus);
     }
 
     Status = Predefined->RepairFunction (Info, ReturnObjectPtr);
-    return (Status);
+    return_ACPI_STATUS (Status);
 }
 
 
@@ -418,20 +420,21 @@ AcpiNsRepair_CID (
     UINT16                  OriginalRefCount;
     UINT32                  i;
 
+    ACPI_FUNCTION_TRACE (NsRepair_CID);
 
     /* Check for _CID as a simple string */
 
     if (ReturnObject->Common.Type == ACPI_TYPE_STRING)
     {
         Status = AcpiNsRepair_HID (Info, ReturnObjectPtr);
-        return (Status);
+        return_ACPI_STATUS (Status);
     }
 
     /* Exit if not a Package */
 
     if (ReturnObject->Common.Type != ACPI_TYPE_PACKAGE)
     {
-        return (AE_OK);
+        return_ACPI_STATUS (AE_OK);
     }
 
     /* Examine each element of the _CID package */
@@ -445,7 +448,7 @@ AcpiNsRepair_CID (
         Status = AcpiNsRepair_HID (Info, ElementPtr);
         if (ACPI_FAILURE (Status))
         {
-            return (Status);
+            return_ACPI_STATUS (Status);
         }
 
         if (OriginalElement != *ElementPtr)
@@ -459,7 +462,7 @@ AcpiNsRepair_CID (
         ElementPtr++;
     }
 
-    return (AE_OK);
+    return_ACPI_STATUS (AE_OK);
 }
 
 
@@ -579,9 +582,8 @@ AcpiNsRepair_HID (
     ACPI_OPERAND_OBJECT     **ReturnObjectPtr)
 {
     ACPI_OPERAND_OBJECT     *ReturnObject = *ReturnObjectPtr;
-    ACPI_OPERAND_OBJECT     *NewString;
-    char                    *Source;
     char                    *Dest;
+    char                    *Source;
 
 
     ACPI_FUNCTION_NAME (NsRepair_HID);
@@ -591,7 +593,7 @@ AcpiNsRepair_HID (
 
     if (ReturnObject->Common.Type != ACPI_TYPE_STRING)
     {
-        return (AE_OK);
+        return_ACPI_STATUS (AE_OK);
     }
 
     if (ReturnObject->String.Length == 0)
@@ -603,15 +605,7 @@ AcpiNsRepair_HID (
         /* Return AE_OK anyway, let driver handle it */
 
         Info->ReturnFlags |= ACPI_OBJECT_REPAIRED;
-        return (AE_OK);
-    }
-
-    /* It is simplest to always create a new string object */
-
-    NewString = AcpiUtCreateStringObject (ReturnObject->String.Length);
-    if (!NewString)
-    {
-        return (AE_NO_MEMORY);
+        return_ACPI_STATUS (AE_OK);
     }
 
     /*
@@ -624,7 +618,7 @@ AcpiNsRepair_HID (
     if (*Source == '*')
     {
         Source++;
-        NewString->String.Length--;
+        ReturnObject->String.Length--;
 
         ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR,
             "%s: Removed invalid leading asterisk\n", Info->FullPathname));
@@ -638,14 +632,13 @@ AcpiNsRepair_HID (
      * "NNNN####" where N is an uppercase letter or decimal digit, and
      * # is a hex digit.
      */
-    for (Dest = NewString->String.Pointer; *Source; Dest++, Source++)
+    for (Dest = ReturnObject->String.Pointer; *Source; Dest++, Source++)
     {
         *Dest = (char) toupper ((int) *Source);
     }
+    ReturnObject->String.Pointer[ReturnObject->String.Length] = 0;
 
-    AcpiUtRemoveReference (ReturnObject);
-    *ReturnObjectPtr = NewString;
-    return (AE_OK);
+    return_ACPI_STATUS (AE_OK);
 }
 
 

Index: src/sys/external/bsd/acpica/dist/os_specific/service_layers/oslinuxtbl.c
diff -u src/sys/external/bsd/acpica/dist/os_specific/service_layers/oslinuxtbl.c:1.12 src/sys/external/bsd/acpica/dist/os_specific/service_layers/oslinuxtbl.c:1.13
--- src/sys/external/bsd/acpica/dist/os_specific/service_layers/oslinuxtbl.c:1.12	Sun Aug  2 16:25:55 2020
+++ src/sys/external/bsd/acpica/dist/os_specific/service_layers/oslinuxtbl.c	Fri Nov 27 11:58:32 2020
@@ -179,7 +179,7 @@ UINT32                  Gbl_TableCount =
  *
  * RETURN:      Status; Converted from errno.
  *
- * DESCRIPTION: Get last errno and conver it to ACPI_STATUS.
+ * DESCRIPTION: Get last errno and convert it to ACPI_STATUS.
  *
  *****************************************************************************/
 

Reply via email to