ACK: [PATCH 1/2][V2] ACPICA: Update to version 20201008

ivanhu ivan.hu at canonical.com
Mon Oct 12 02:46:00 UTC 2020



On 10/9/20 12:45 AM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
> 
> Changes in this release of ACPICA are detailed at the following
> link on the ACPICA developer mailing list:
> 
> https://lists.acpica.org/hyperkitty/list/devel@acpica.org/thread/JTW2JORTHXTV7NG5FE2C4WD3OL35NZS2/
> 
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>  src/acpica/source/common/ahpredef.c           |   5 +
>  src/acpica/source/common/ahuuids.c            |   8 +-
>  src/acpica/source/common/dmtbinfo1.c          |   2 +-
>  src/acpica/source/compiler/aslcompiler.l      |   6 +-
>  src/acpica/source/compiler/aslload.c          |   9 +-
>  src/acpica/source/compiler/aslmessages.c      |   3 +
>  src/acpica/source/compiler/aslmessages.h      |   3 +
>  src/acpica/source/compiler/aslparseop.c       |  26 +++
>  src/acpica/source/compiler/aslprepkg.c        |  17 +-
>  src/acpica/source/compiler/aslutils.c         |   8 +-
>  src/acpica/source/compiler/aslxref.c          |  11 +-
>  .../source/components/debugger/dbexec.c       |  42 +++-
>  .../source/components/debugger/dbinput.c      |  12 +-
>  .../source/components/debugger/dbmethod.c     | 183 +++++++++++++++---
>  .../source/components/disassembler/dmbuffer.c |   4 +
>  .../source/components/disassembler/dmcstyle.c |   2 +-
>  .../source/components/events/evrgnini.c       |  11 +-
>  .../source/components/executer/exregion.c     |  70 +++++--
>  .../source/components/namespace/nsalloc.c     |   2 +-
>  .../source/components/namespace/nsarguments.c |   4 +-
>  .../source/components/namespace/nsxfobj.c     |   3 +-
>  src/acpica/source/components/parser/psparse.c |   4 +-
>  .../source/components/utilities/utpredef.c    |   4 +-
>  .../source/components/utilities/utstrsuppt.c  |  30 ++-
>  src/acpica/source/include/acconfig.h          |   2 +-
>  src/acpica/source/include/acdebug.h           |   6 +
>  src/acpica/source/include/acexcep.h           |   4 +-
>  src/acpica/source/include/acpixf.h            |   2 +-
>  src/acpica/source/include/acpredef.h          |  23 ++-
>  src/acpica/source/include/actbl1.h            |  16 +-
>  src/acpica/source/include/actypes.h           |  16 +-
>  src/acpica/source/include/acuuid.h            |   8 +-
>  src/acpica/source/include/platform/aclinux.h  |   3 +-
>  33 files changed, 442 insertions(+), 107 deletions(-)
> 
> diff --git a/src/acpica/source/common/ahpredef.c b/src/acpica/source/common/ahpredef.c
> index be1b37ab..182a83ad 100644
> --- a/src/acpica/source/common/ahpredef.c
> +++ b/src/acpica/source/common/ahpredef.c
> @@ -393,6 +393,11 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
>      AH_PREDEF ("_S3W",    "S3 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S3"),
>      AH_PREDEF ("_S4W",    "S4 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S4"),
>      AH_PREDEF ("_SB_",    "System Bus", "Predefined scope for device and bus objects"),
> +    AH_PREDEF ("_SBA",    "SM Bus Alert information", "Returns info on an SMBus alert"),
> +    AH_PREDEF ("_SBI",    "SM Bus General information", "Returns info on an SMBus segment"),
> +    AH_PREDEF ("_SBR",    "SM Bus Data read", "Reads Byte, Word, or Block data from an SMBus segment"),
> +    AH_PREDEF ("_SBT",    "SM Bus Data transfer", "Performs data transfer to/from an SMBus segment. Implements ProcessCall protocol"),
> +    AH_PREDEF ("_SBW",    "SM Bus Data write", "Writes Byte, Word, or Block data to an SMBus segment"),
>      AH_PREDEF ("_SBS",    "Smart Battery Subsystem", "Returns the subsystem configuration"),
>      AH_PREDEF ("_SCP",    "Set Cooling Policy", "Sets the cooling policy (active or passive)"),
>      AH_PREDEF ("_SDD",    "Set Device Data", "Sets data for a SATA device"),
> diff --git a/src/acpica/source/common/ahuuids.c b/src/acpica/source/common/ahuuids.c
> index 64d45e3f..3c14b10e 100644
> --- a/src/acpica/source/common/ahuuids.c
> +++ b/src/acpica/source/common/ahuuids.c
> @@ -171,6 +171,10 @@ const AH_UUID  Gbl_AcpiUuids[] =
>      {"PCI Host Bridge Device",      UUID_PCI_HOST_BRIDGE},
>      {"HID I2C Device",              UUID_I2C_DEVICE},
>      {"Power Button Device",         UUID_POWER_BUTTON},
> +    {"Memory Device",               UUID_MEMORY_DEVICE},
> +    {"Generic Buttons Device",      UUID_GENERIC_BUTTONS_DEVICE},
> +    {"NVDIMM Root Device",          UUID_NVDIMM_ROOT_DEVICE},
> +    {"Control Method Battery",      UUID_CONTROL_METHOD_BATTERY},
>  
>      {"[Interfaces]",                NULL},
>      {"Device Labeling Interface",   UUID_DEVICE_LABELING},
> @@ -196,7 +200,9 @@ const AH_UUID  Gbl_AcpiUuids[] =
>      {"Battery Thermal Limit",       UUID_BATTERY_THERMAL_LIMIT},
>      {"Thermal Extensions",          UUID_THERMAL_EXTENSIONS},
>      {"Device Properties for _DSD",  UUID_DEVICE_PROPERTIES},
> -
> +    {"Device Graphs for _DSD",      UUID_DEVICE_GRAPHS},
> +    {"Hierarchical Data Extension", UUID_HIERARCHICAL_DATA_EXTENSION},
> +    {"ARM Coresight Graph",         UUID_CORESIGHT_GRAPH},
>      {NULL, NULL}
>  };
>  
> diff --git a/src/acpica/source/common/dmtbinfo1.c b/src/acpica/source/common/dmtbinfo1.c
> index 9661f495..750e29d5 100644
> --- a/src/acpica/source/common/dmtbinfo1.c
> +++ b/src/acpica/source/common/dmtbinfo1.c
> @@ -1121,7 +1121,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat0[] =
>      {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
>      {ACPI_DMT_FLAG0,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Processor Proximity Domain Valid", 0},
>      {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Reserved1),              "Reserved1", 0},
> -    {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (ProcessorPD),            "Processor Proximity Domain", 0},
> +    {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (InitiatorPD),            "Attached Initiator Proximity Domain", 0},
>      {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (MemoryPD),               "Memory Proximity Domain", 0},
>      {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (Reserved2),              "Reserved2", 0},
>      {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved3),              "Reserved3", 0},
> diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l
> index 4016faed..8e448fb7 100644
> --- a/src/acpica/source/compiler/aslcompiler.l
> +++ b/src/acpica/source/compiler/aslcompiler.l
> @@ -279,8 +279,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); }
> @@ -841,7 +841,6 @@ NamePathTail                [.]{NameSeg}
>                                       * the required length.
>                                       */
>                                      strcpy (s, "____");
> -                                    AcpiUtStrupr (AslCompilertext);
>                                  }
>                                  memcpy (s, AslCompilertext, strlen (AslCompilertext));
>                                  AslCompilerlval.s = s;
> @@ -851,7 +850,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);
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 454fa8f5..c9fae99a 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -1404,9 +1404,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);
> diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
> index eb344940..320ad2ae 100644
> --- a/src/acpica/source/compiler/aslmessages.c
> +++ b/src/acpica/source/compiler/aslmessages.c
> @@ -381,6 +381,9 @@ const char                      *AslCompilerMsgs [] =
>  /*    ASL_MSG_DUPLICATE_EXTERN_MISMATCH */  "Type mismatch between multiple external declarations detected",
>  /*    ASL_MSG_DUPLICATE_EXTERN_FOUND_HERE */"Duplicate external declaration:",
>  /*    ASL_MSG_CONDREF_NEEDS_EXTERNAL_DECL */"CondRefOf parameter requires External() declaration",
> +/*    ASL_MSG_EXTERNAL_FOUND_HERE */        "External declaration below ",
> +/*    ASL_MSG_LOWER_CASE_NAMESEG */         "At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case",
> +/*    ASL_MSG_LOWER_CASE_NAMEPATH */        "At least one lower case letter found in NamePath, ASL is case insensitive - converting to upper case",
>  };
>  
>  /* Table compiler */
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index 9a7215c6..8a2b5c6c 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -383,6 +383,9 @@ typedef enum
>      ASL_MSG_DUPLICATE_EXTERN_MISMATCH,
>      ASL_MSG_DUPLICATE_EXTERN_FOUND_HERE,
>      ASL_MSG_CONDREF_NEEDS_EXTERNAL_DECL,
> +    ASL_MSG_EXTERNAL_FOUND_HERE,
> +    ASL_MSG_LOWER_CASE_NAMESEG,
> +    ASL_MSG_LOWER_CASE_NAMEPATH,
>  
>  
>      /* These messages are used by the Data Table compiler only */
> diff --git a/src/acpica/source/compiler/aslparseop.c b/src/acpica/source/compiler/aslparseop.c
> index 46875413..51ef9b8c 100644
> --- a/src/acpica/source/compiler/aslparseop.c
> +++ b/src/acpica/source/compiler/aslparseop.c
> @@ -388,6 +388,8 @@ TrCreateValuedLeafOp (
>      UINT64                  Value)
>  {
>      ACPI_PARSE_OBJECT       *Op;
> +    UINT32                  i;
> +    char                    *StringPtr = NULL;
>  
>  
>      Op = TrAllocateOp (ParseOpcode);
> @@ -408,11 +410,35 @@ TrCreateValuedLeafOp (
>  
>      case PARSEOP_NAMESEG:
>  
> +        /* Check for mixed case (or all lower case). Issue a remark in this case */
> +
> +        for (i = 0; i < ACPI_NAMESEG_SIZE; i++)
> +        {
> +            if (islower (Op->Asl.Value.Name[i]))
> +            {
> +                AcpiUtStrupr (&Op->Asl.Value.Name[i]);
> +                AslError (ASL_REMARK, ASL_MSG_LOWER_CASE_NAMESEG, Op, Op->Asl.Value.Name);
> +                break;
> +            }
> +        }
>          DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Op->Asl.Value.String);
>          break;
>  
>      case PARSEOP_NAMESTRING:
>  
> +        /* Check for mixed case (or all lower case). Issue a remark in this case */
> +
> +        StringPtr = Op->Asl.Value.Name;
> +        for (i = 0; *StringPtr; i++)
> +        {
> +            if (islower (*StringPtr))
> +            {
> +                AcpiUtStrupr (&Op->Asl.Value.Name[i]);
> +                AslError (ASL_REMARK, ASL_MSG_LOWER_CASE_NAMEPATH, Op, Op->Asl.Value.Name);
> +                break;
> +            }
> +            StringPtr++;
> +        }
>          DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Op->Asl.Value.String);
>          break;
>  
> diff --git a/src/acpica/source/compiler/aslprepkg.c b/src/acpica/source/compiler/aslprepkg.c
> index f3042cae..35b947c8 100644
> --- a/src/acpica/source/compiler/aslprepkg.c
> +++ b/src/acpica/source/compiler/aslprepkg.c
> @@ -318,6 +318,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;
> @@ -917,7 +928,7 @@ ApPackageTooSmall (
>      UINT32                      ExpectedCount)
>  {
>  
> -    sprintf (AslGbl_MsgBuffer, "%s: length %u, required minimum is %u",
> +    sprintf (AslGbl_MsgBuffer, "%4.4s: length %u, required minimum is %u",
>          PredefinedName, Count, ExpectedCount);
>  
>      AslError (ASL_ERROR, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, AslGbl_MsgBuffer);
> @@ -946,7 +957,7 @@ ApZeroLengthPackage (
>      ACPI_PARSE_OBJECT           *Op)
>  {
>  
> -    sprintf (AslGbl_MsgBuffer, "%s: length is zero", PredefinedName);
> +    sprintf (AslGbl_MsgBuffer, "%4.4s: length is zero", PredefinedName);
>  
>      AslError (ASL_ERROR, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, AslGbl_MsgBuffer);
>  }
> @@ -975,7 +986,7 @@ ApPackageTooLarge (
>      UINT32                      ExpectedCount)
>  {
>  
> -    sprintf (AslGbl_MsgBuffer, "%s: length is %u, only %u required",
> +    sprintf (AslGbl_MsgBuffer, "%4.4s: length is %u, only %u required",
>          PredefinedName, Count, ExpectedCount);
>  
>      AslError (ASL_REMARK, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, AslGbl_MsgBuffer);
> diff --git a/src/acpica/source/compiler/aslutils.c b/src/acpica/source/compiler/aslutils.c
> index 42ef2c0b..16fad627 100644
> --- a/src/acpica/source/compiler/aslutils.c
> +++ b/src/acpica/source/compiler/aslutils.c
> @@ -1074,14 +1074,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))
>      {
> -        sprintf (ErrBuf, "While creating 64-bit constant: %s\n",
> -            AcpiFormatException (Status));
> +        ExceptionInfo = AcpiUtValidateException ((ACPI_STATUS) Status);
> +        sprintf (ErrBuf, " %s while converting to 64-bit integer",
> +            ExceptionInfo->Description);
>  
>          AslCommonError (ASL_ERROR, ASL_MSG_SYNTAX, AslGbl_CurrentLineNumber,
>              AslGbl_LogicalLineNumber, AslGbl_CurrentLineOffset,
> diff --git a/src/acpica/source/compiler/aslxref.c b/src/acpica/source/compiler/aslxref.c
> index 9306af20..163799a8 100644
> --- a/src/acpica/source/compiler/aslxref.c
> +++ b/src/acpica/source/compiler/aslxref.c
> @@ -433,6 +433,7 @@ XfNamespaceLocateBegin (
>      UINT32                  i;
>      ACPI_NAMESPACE_NODE     *DeclarationParentMethod;
>      ACPI_PARSE_OBJECT       *ReferenceParentMethod;
> +    char                    *ExternalPath;
>  
>  
>      ACPI_FUNCTION_TRACE_PTR (XfNamespaceLocateBegin, Op);
> @@ -1263,7 +1264,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 */
> diff --git a/src/acpica/source/components/debugger/dbexec.c b/src/acpica/source/components/debugger/dbexec.c
> index f4b024e2..5fd05f5a 100644
> --- a/src/acpica/source/components/debugger/dbexec.c
> +++ b/src/acpica/source/components/debugger/dbexec.c
> @@ -252,7 +252,8 @@ AcpiDbDeleteObjects (
>   *
>   * RETURN:      Status
>   *
> - * DESCRIPTION: Execute a control method.
> + * DESCRIPTION: Execute a control method. Used to evaluate objects via the
> + *              "EXECUTE" or "EVALUATE" commands.
>   *
>   ******************************************************************************/
>  
> @@ -504,11 +505,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);
>  }
>  
> @@ -525,7 +527,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
>   *
>   ******************************************************************************/
>  
> @@ -569,6 +572,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)
>      {
> @@ -588,13 +597,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))
> @@ -655,6 +678,7 @@ AcpiDbExecute (
>                  (UINT32) ReturnObj.Length);
>  
>              AcpiDbDumpExternalObject (ReturnObj.Pointer, 1);
> +            AcpiOsPrintf ("\n");
>  
>              /* Dump a _PLD buffer if present */
>  
> diff --git a/src/acpica/source/components/debugger/dbinput.c b/src/acpica/source/components/debugger/dbinput.c
> index 378e3db1..0cc97310 100644
> --- a/src/acpica/source/components/debugger/dbinput.c
> +++ b/src/acpica/source/components/debugger/dbinput.c
> @@ -195,6 +195,7 @@ enum AcpiExDebuggerCommands
>  {
>      CMD_NOT_FOUND = 0,
>      CMD_NULL,
> +    CMD_ALL,
>      CMD_ALLOCATIONS,
>      CMD_ARGS,
>      CMD_ARGUMENTS,
> @@ -275,6 +276,7 @@ static const ACPI_DB_COMMAND_INFO   AcpiGbl_DbCommands[] =
>  {
>      {"<NOT FOUND>",  0},
>      {"<NULL>",       0},
> +    {"ALL",          1},
>      {"ALLOCATIONS",  0},
>      {"ARGS",         0},
>      {"ARGUMENTS",    0},
> @@ -377,6 +379,7 @@ static const ACPI_DB_COMMAND_HELP   AcpiGbl_DbCommandHelp[] =
>      {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
> @@ -599,7 +602,7 @@ AcpiDbDisplayHelp (
>      }
>      else
>      {
> -        /* Display help for all commands that match the subtring */
> +        /* Display help for all commands that match the substring */
>  
>          AcpiDbDisplayCommandInfo (Command, TRUE);
>      }
> @@ -947,6 +950,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
> diff --git a/src/acpica/source/components/debugger/dbmethod.c b/src/acpica/source/components/debugger/dbmethod.c
> index a7b6911a..d259a3ef 100644
> --- a/src/acpica/source/components/debugger/dbmethod.c
> +++ b/src/acpica/source/components/debugger/dbmethod.c
> @@ -170,6 +170,10 @@ AcpiDbWalkForExecute (
>      void                    *Context,
>      void                    **ReturnValue);
>  
> +static ACPI_STATUS
> +AcpiDbEvaluateObject (
> +    ACPI_NAMESPACE_NODE     *Node);
> +
>  
>  /*******************************************************************************
>   *
> @@ -542,46 +546,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)
> @@ -591,7 +578,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);
> @@ -624,13 +611,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 */
> @@ -645,6 +689,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
> @@ -675,3 +769,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);
> +}
> diff --git a/src/acpica/source/components/disassembler/dmbuffer.c b/src/acpica/source/components/disassembler/dmbuffer.c
> index 47279a2c..810f727f 100644
> --- a/src/acpica/source/components/disassembler/dmbuffer.c
> +++ b/src/acpica/source/components/disassembler/dmbuffer.c
> @@ -494,6 +494,10 @@ AcpiDmUuid (
>      {
>          AcpiOsPrintf (" /* %s */", Description);
>      }
> +    else
> +    {
> +        AcpiOsPrintf (" /* Unknown UUID */");
> +    }
>  }
>  
>  
> diff --git a/src/acpica/source/components/disassembler/dmcstyle.c b/src/acpica/source/components/disassembler/dmcstyle.c
> index 4fcc5e6d..c8541aaf 100644
> --- a/src/acpica/source/components/disassembler/dmcstyle.c
> +++ b/src/acpica/source/components/disassembler/dmcstyle.c
> @@ -744,7 +744,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)
>      {
> diff --git a/src/acpica/source/components/events/evrgnini.c b/src/acpica/source/components/events/evrgnini.c
> index 54f91a36..a58765e3 100644
> --- a/src/acpica/source/components/events/evrgnini.c
> +++ b/src/acpica/source/components/events/evrgnini.c
> @@ -183,6 +183,7 @@ AcpiEvSystemMemoryRegionSetup (
>  {
>      ACPI_OPERAND_OBJECT     *RegionDesc = (ACPI_OPERAND_OBJECT *) Handle;
>      ACPI_MEM_SPACE_CONTEXT  *LocalRegionContext;
> +    ACPI_MEM_MAPPING        *Mm;
>  
>  
>      ACPI_FUNCTION_TRACE (EvSystemMemoryRegionSetup);
> @@ -194,12 +195,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;
> diff --git a/src/acpica/source/components/executer/exregion.c b/src/acpica/source/components/executer/exregion.c
> index 920aa1e3..0985e7a5 100644
> --- a/src/acpica/source/components/executer/exregion.c
> +++ b/src/acpica/source/components/executer/exregion.c
> @@ -188,6 +188,7 @@ AcpiExSystemMemorySpaceHandler (
>      ACPI_STATUS             Status = AE_OK;
>      void                    *LogicalAddrPtr = NULL;
>      ACPI_MEM_SPACE_CONTEXT  *MemInfo = RegionContext;
> +    ACPI_MEM_MAPPING        *Mm = MemInfo->CurMm;
>      UINT32                  Length;
>      ACPI_SIZE               MapLength;
>      ACPI_SIZE               PageBoundaryMapLength;
> @@ -247,21 +248,46 @@ AcpiExSystemMemorySpaceHandler (
>       * Is 1) Address below the current mapping? OR
>       *    2) Address beyond the current mapping?
>       */
> -    if ((Address < MemInfo->MappedPhysicalAddress) ||
> -        (((UINT64) Address + Length) >
> -            ((UINT64)
> -            MemInfo->MappedPhysicalAddress + MemInfo->MappedLength)))
> +    if (!Mm || (Address < Mm->PhysicalAddress) ||
> +        ((UINT64) Address + Length > (UINT64) Mm->PhysicalAddress + Mm->Length))
>      {
>          /*
> -         * The request cannot be resolved by the current memory mapping;
> -         * Delete the existing mapping and create a new one.
> +         * The request cannot be resolved by the current memory mapping.
> +         *
> +         * Look for an existing saved mapping covering the address range
> +         * at hand. If found, save it as the current one and carry out
> +         * the access.
>           */
> -        if (MemInfo->MappedLength)
> +        for (Mm = MemInfo->FirstMm; Mm; Mm = Mm->NextMm)
>          {
> -            /* Valid mapping, delete it */
> +            if (Mm == MemInfo->CurMm)
> +            {
> +                continue;
> +            }
> +
> +            if (Address < Mm->PhysicalAddress)
> +            {
> +                continue;
> +            }
> +
> +            if ((UINT64) Address + Length > (UINT64) Mm->PhysicalAddress + Mm->Length)
> +            {
> +                continue;
> +            }
> +
> +            MemInfo->CurMm = Mm;
> +            goto access;
> +        }
>  
> -            AcpiOsUnmapMemory (MemInfo->MappedLogicalAddress,
> -                MemInfo->MappedLength);
> +        /* Create a new mappings list entry */
> +
> +        Mm = ACPI_ALLOCATE_ZEROED(sizeof(*Mm));
> +        if (!Mm)
> +        {
> +            ACPI_ERROR((AE_INFO,
> +                "Unable to save memory mapping at 0x%8.8X%8.8X, size %u",
> +                ACPI_FORMAT_UINT64(Address), Length));
> +            return_ACPI_STATUS(AE_NO_MEMORY);
>          }
>  
>          /*
> @@ -297,28 +323,38 @@ AcpiExSystemMemorySpaceHandler (
>  
>          /* Create a new mapping starting at the address given */
>  
> -        MemInfo->MappedLogicalAddress = AcpiOsMapMemory (Address, MapLength);
> -        if (!MemInfo->MappedLogicalAddress)
> +        LogicalAddrPtr = AcpiOsMapMemory(Address, MapLength);
> +        if (!LogicalAddrPtr)
>          {
>              ACPI_ERROR ((AE_INFO,
>                  "Could not map memory at 0x%8.8X%8.8X, size %u",
>                  ACPI_FORMAT_UINT64 (Address), (UINT32) MapLength));
> -            MemInfo->MappedLength = 0;
> +            ACPI_FREE(Mm);
>              return_ACPI_STATUS (AE_NO_MEMORY);
>          }
>  
>          /* Save the physical address and mapping size */
>  
> -        MemInfo->MappedPhysicalAddress = Address;
> -        MemInfo->MappedLength = MapLength;
> +        Mm->LogicalAddress = LogicalAddrPtr;
> +        Mm->PhysicalAddress = Address;
> +        Mm->Length = MapLength;
> +
> +        /*
> +         * Add the new entry to the mappigs list and save it as the
> +         * current mapping.
> +         */
> +        Mm->NextMm = MemInfo->FirstMm;
> +        MemInfo->FirstMm = Mm;
> +        MemInfo->CurMm = Mm;
>      }
>  
> +access:
>      /*
>       * Generate a logical pointer corresponding to the address we want to
>       * access
>       */
> -    LogicalAddrPtr = MemInfo->MappedLogicalAddress +
> -        ((UINT64) Address - (UINT64) MemInfo->MappedPhysicalAddress);
> +    LogicalAddrPtr = Mm->LogicalAddress +
> +        ((UINT64) Address - (UINT64) Mm->PhysicalAddress);
>  
>      ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
>          "System-Memory (width %u) R/W %u Address=%8.8X%8.8X\n",
> diff --git a/src/acpica/source/components/namespace/nsalloc.c b/src/acpica/source/components/namespace/nsalloc.c
> index 6610c7f3..e7564871 100644
> --- a/src/acpica/source/components/namespace/nsalloc.c
> +++ b/src/acpica/source/components/namespace/nsalloc.c
> @@ -481,7 +481,7 @@ AcpiNsDeleteChildren (
>          NodeToDelete = NextNode;
>          NextNode = NextNode->Peer;
>          AcpiNsDeleteNode (NodeToDelete);
> -    };
> +    }
>  
>      /* Clear the parent's child pointer */
>  
> diff --git a/src/acpica/source/components/namespace/nsarguments.c b/src/acpica/source/components/namespace/nsarguments.c
> index 2e2828dd..1a2d1099 100644
> --- a/src/acpica/source/components/namespace/nsarguments.c
> +++ b/src/acpica/source/components/namespace/nsarguments.c
> @@ -205,7 +205,9 @@ AcpiNsCheckArgumentTypes (
>          ArgType = METHOD_GET_NEXT_TYPE (ArgTypeList);
>          UserArgType = Info->Parameters[i]->Common.Type;
>  
> -        if (UserArgType != ArgType)
> +        /* No typechecking for ACPI_TYPE_ANY */
> +
> +        if ((UserArgType != ArgType) && (ArgType != ACPI_TYPE_ANY))
>          {
>              ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, ACPI_WARN_ALWAYS,
>                  "Argument #%u type mismatch - "
> diff --git a/src/acpica/source/components/namespace/nsxfobj.c b/src/acpica/source/components/namespace/nsxfobj.c
> index 68e64033..de793323 100644
> --- a/src/acpica/source/components/namespace/nsxfobj.c
> +++ b/src/acpica/source/components/namespace/nsxfobj.c
> @@ -169,7 +169,8 @@
>   *
>   * RETURN:      Status
>   *
> - * DESCRIPTION: This routine returns the type associatd with a particular handle
> + * DESCRIPTION: This routine returns the type associated with a particular
> + *              handle
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
> index 729c929e..d935ebc2 100644
> --- a/src/acpica/source/components/parser/psparse.c
> +++ b/src/acpica/source/components/parser/psparse.c
> @@ -662,8 +662,8 @@ AcpiPsParseAml (
>              }
>  
>              /*
> -             * If the transfer to the new method method call worked
> -             *, a new walk state was created -- get it
> +             * If the transfer to the new method method call worked,
> +             * a new walk state was created -- get it
>               */
>              WalkState = AcpiDsGetCurrentWalkState (Thread);
>              continue;
> diff --git a/src/acpica/source/components/utilities/utpredef.c b/src/acpica/source/components/utilities/utpredef.c
> index 05708ab5..d6d98d0f 100644
> --- a/src/acpica/source/components/utilities/utpredef.c
> +++ b/src/acpica/source/components/utilities/utpredef.c
> @@ -317,7 +317,7 @@ AcpiUtGetArgumentTypes (
>  
>  static const char   *UtExternalTypeNames[] = /* Indexed by ACPI_TYPE_* */
>  {
> -    ", UNSUPPORTED-TYPE",
> +    ", Type_ANY",
>      ", Integer",
>      ", String",
>      ", Buffer",
> @@ -499,7 +499,7 @@ AcpiUtGetArgumentTypes (
>      {
>          ThisArgumentType = METHOD_GET_NEXT_TYPE (ArgumentTypes);
>  
> -        if (!ThisArgumentType || (ThisArgumentType > METHOD_MAX_ARG_TYPE))
> +        if (ThisArgumentType > METHOD_MAX_ARG_TYPE)
>          {
>              printf ("**** Invalid argument type (%u) "
>                  "in predefined info structure\n", ThisArgumentType);
> diff --git a/src/acpica/source/components/utilities/utstrsuppt.c b/src/acpica/source/components/utilities/utstrsuppt.c
> index f0805ccf..153b56e8 100644
> --- a/src/acpica/source/components/utilities/utstrsuppt.c
> +++ b/src/acpica/source/components/utilities/utstrsuppt.c
> @@ -207,10 +207,16 @@ AcpiUtConvertOctalString (
>  
>      while (*String)
>      {
> -        /* Character must be ASCII 0-7, otherwise terminate with no error */
> -
> +        /*
> +         * Character must be ASCII 0-7, otherwise:
> +         * 1) Runtime: terminate with no error, per the ACPI spec
> +         * 2) Compiler: return an error
> +         */
>          if (!(ACPI_IS_OCTAL_DIGIT (*String)))
>          {
> +#ifdef ACPI_ASL_COMPILER
> +            Status = AE_BAD_OCTAL_CONSTANT;
> +#endif
>              break;
>          }
>  
> @@ -263,10 +269,16 @@ AcpiUtConvertDecimalString (
>  
>      while (*String)
>      {
> -        /* Character must be ASCII 0-9, otherwise terminate with no error */
> -
> +        /*
> +         * Character must be ASCII 0-9, otherwise:
> +         * 1) Runtime: terminate with no error, per the ACPI spec
> +         * 2) Compiler: return an error
> +         */
>          if (!isdigit (*String))
>          {
> +#ifdef ACPI_ASL_COMPILER
> +            Status = AE_BAD_DECIMAL_CONSTANT;
> +#endif
>             break;
>          }
>  
> @@ -319,10 +331,16 @@ AcpiUtConvertHexString (
>  
>      while (*String)
>      {
> -        /* Must be ASCII A-F, a-f, or 0-9, otherwise terminate with no error */
> -
> +        /*
> +         * Character must be ASCII A-F, a-f, or 0-9, otherwise:
> +         * 1) Runtime: terminate with no error, per the ACPI spec
> +         * 2) Compiler: return an error
> +         */
>          if (!isxdigit (*String))
>          {
> +#ifdef ACPI_ASL_COMPILER
> +            Status = AE_BAD_HEX_CONSTANT;
> +#endif
>              break;
>          }
>  
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index 2c50ddc4..d717aa52 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -266,7 +266,7 @@
>   *
>   *****************************************************************************/
>  
> -/* Method info (in WALK_STATE), containing local variables and argumetns */
> +/* Method info (in WALK_STATE), containing local variables and arguments */
>  
>  #define ACPI_METHOD_NUM_LOCALS          8
>  #define ACPI_METHOD_MAX_LOCAL           7
> diff --git a/src/acpica/source/include/acdebug.h b/src/acpica/source/include/acdebug.h
> index 5012d35d..41f87320 100644
> --- a/src/acpica/source/include/acdebug.h
> +++ b/src/acpica/source/include/acdebug.h
> @@ -187,6 +187,7 @@ typedef struct acpi_db_execute_walk
>  {
>      UINT32                  Count;
>      UINT32                  MaxCount;
> +    char                    NameSeg[ACPI_NAMESEG_SIZE + 1];
>  
>  } ACPI_DB_EXECUTE_WALK;
>  
> @@ -195,6 +196,7 @@ typedef struct acpi_db_execute_walk
>  
>  #define EX_NO_SINGLE_STEP               1
>  #define EX_SINGLE_STEP                  2
> +#define EX_ALL                          4
>  
>  
>  /*
> @@ -345,6 +347,10 @@ void
>  AcpiDbEvaluatePredefinedNames (
>      void);
>  
> +void
> +AcpiDbEvaluateAll (
> +    char                    *NameSeg);
> +
>  
>  /*
>   * dbnames - namespace commands
> diff --git a/src/acpica/source/include/acexcep.h b/src/acpica/source/include/acexcep.h
> index 90b369a1..11c81398 100644
> --- a/src/acpica/source/include/acexcep.h
> +++ b/src/acpica/source/include/acexcep.h
> @@ -184,12 +184,12 @@ typedef struct acpi_exception_info
>  {
>      char                *Name;
>  
> -#ifdef ACPI_HELP_APP
> +#if defined (ACPI_HELP_APP) || defined (ACPI_ASL_COMPILER)
>      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}
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index c1b55401..a16b6830 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>  
>  /* Current ACPICA subsystem version in YYYYMMDD format */
>  
> -#define ACPI_CA_VERSION                 0x20200717
> +#define ACPI_CA_VERSION                 0x20200925
>  
>  #include "acconfig.h"
>  #include "actypes.h"
> diff --git a/src/acpica/source/include/acpredef.h b/src/acpica/source/include/acpredef.h
> index 924d7b90..2564fa55 100644
> --- a/src/acpica/source/include/acpredef.h
> +++ b/src/acpica/source/include/acpredef.h
> @@ -246,7 +246,7 @@ enum AcpiReturnPackageTypes
>  
>  /* Support macros for users of the predefined info table */
>  
> -#define METHOD_PREDEF_ARGS_MAX          4
> +#define METHOD_PREDEF_ARGS_MAX          5
>  #define METHOD_ARG_BIT_WIDTH            3
>  #define METHOD_ARG_MASK                 0x0007
>  #define ARG_COUNT_IS_MINIMUM            0x8000
> @@ -262,6 +262,7 @@ enum AcpiReturnPackageTypes
>  #define METHOD_2ARGS(a1,a2)             (2 | (a1 << 3) | (a2 << 6))
>  #define METHOD_3ARGS(a1,a2,a3)          (3 | (a1 << 3) | (a2 << 6) | (a3 << 9))
>  #define METHOD_4ARGS(a1,a2,a3,a4)       (4 | (a1 << 3) | (a2 << 6) | (a3 << 9) | (a4 << 12))
> +#define METHOD_5ARGS(a1,a2,a3,a4,a5)    (5 | (a1 << 3) | (a2 << 6) | (a3 << 9) | (a4 << 12) | (a5 << 15))
>  
>  #define METHOD_RETURNS(type)            (type)
>  #define METHOD_NO_RETURN_VALUE          0
> @@ -1023,9 +1024,29 @@ const ACPI_PREDEFINED_INFO          AcpiGbl_PredefinedMethods[] =
>      {{"_S4W",   METHOD_0ARGS,
>                  METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
>  
> +    {{"_SBA",   METHOD_0ARGS,
> +                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */
> +                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0),
> +
> +    {{"_SBI",   METHOD_0ARGS,
> +                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int, 1 Buf) */
> +                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 1, ACPI_RTYPE_BUFFER,1,0),
> +
> +    {{"_SBR",   METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER),
> +                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Int) */
> +                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2, ACPI_RTYPE_BUFFER | ACPI_RTYPE_INTEGER, 1,0),
> +
>      {{"_SBS",   METHOD_0ARGS,
>                  METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
>  
> +    {{"_SBT",   METHOD_4ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY),
> +                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Int, 1 Buf | Int) */
> +                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2, ACPI_RTYPE_BUFFER | ACPI_RTYPE_INTEGER, 1,0),
> +
> +    {{"_SBW",   METHOD_5ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY),
> +                METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}},
> +                    PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER | ACPI_RTYPE_INTEGER, 1, 0,0,0),
> +
>      {{"_SCP",   METHOD_1ARGS (ACPI_TYPE_INTEGER) | ARG_COUNT_IS_MINIMUM,
>                  METHOD_NO_RETURN_VALUE}},   /* Acpi 1.0 allowed 1 integer arg. Acpi 3.0 expanded to 3 args. Allow both. */
>  
> diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h
> index 1f0d5c2f..47e5f059 100644
> --- a/src/acpica/source/include/actbl1.h
> +++ b/src/acpica/source/include/actbl1.h
> @@ -1767,8 +1767,7 @@ typedef struct acpi_hest_ia_deferred_check
>  
>  /*******************************************************************************
>   *
> - * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2)
> - *        Version 1
> + * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.3)
>   *
>   ******************************************************************************/
>  
> @@ -1810,7 +1809,7 @@ typedef struct acpi_hmat_proximity_domain
>      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;
> @@ -1820,9 +1819,7 @@ typedef struct acpi_hmat_proximity_domain
>  
>  /* 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 */
> @@ -1847,10 +1844,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 */
>  
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index 0ec14a36..48388c21 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -977,7 +977,7 @@ typedef UINT8                           ACPI_ADR_SPACE_TYPE;
>   *
>   * 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 */
> @@ -1440,13 +1440,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;
>  
> diff --git a/src/acpica/source/include/acuuid.h b/src/acpica/source/include/acuuid.h
> index b856219c..468244a6 100644
> --- a/src/acpica/source/include/acuuid.h
> +++ b/src/acpica/source/include/acuuid.h
> @@ -169,6 +169,10 @@
>  #define UUID_PCI_HOST_BRIDGE            "33db4d5b-1ff7-401c-9657-7441c03dd766"
>  #define UUID_I2C_DEVICE                 "3cdff6f7-4267-4555-ad05-b30a3d8938de"
>  #define UUID_POWER_BUTTON               "dfbcf3c5-e7a5-44e6-9c1f-29c76f6e059c"
> +#define UUID_MEMORY_DEVICE              "03b19910-f473-11dd-87af-0800200c9a66"
> +#define UUID_GENERIC_BUTTONS_DEVICE     "fa6bd625-9ce8-470d-a2c7-b3ca36c4282e"
> +#define UUID_NVDIMM_ROOT_DEVICE         "2f10e7a4-9e91-11e4-89d3-123b93f75cba"
> +#define UUID_CONTROL_METHOD_BATTERY     "f18fc78b-0f15-4978-b793-53f833a1d35b"
>  
>  /* Interfaces */
>  
> @@ -198,6 +202,8 @@
>  #define UUID_BATTERY_THERMAL_LIMIT      "4c2067e3-887d-475c-9720-4af1d3ed602e"
>  #define UUID_THERMAL_EXTENSIONS         "14d399cd-7a27-4b18-8fb4-7cb7b9f4e500"
>  #define UUID_DEVICE_PROPERTIES          "daffd814-6eba-4d8c-8a91-bc9bbf4aa301"
> -
> +#define UUID_DEVICE_GRAPHS              "ab02a46b-74c7-45a2-bd68-f7d344ef2153"
> +#define UUID_HIERARCHICAL_DATA_EXTENSION "dbb8e3e6-5886-4ba6-8795-1319f52a966b"
> +#define UUID_CORESIGHT_GRAPH            "3ecbc8b6-1d0e-4fb3-8107-e627f805c6cd"
>  
>  #endif /* __ACUUID_H__ */
> diff --git a/src/acpica/source/include/platform/aclinux.h b/src/acpica/source/include/platform/aclinux.h
> index aee2e85a..ff859c49 100644
> --- a/src/acpica/source/include/platform/aclinux.h
> +++ b/src/acpica/source/include/platform/aclinux.h
> @@ -324,7 +324,8 @@
>  
>  #if defined(__ia64__)    || (defined(__x86_64__) && !defined(__ILP32__)) ||\
>      defined(__aarch64__) || defined(__PPC64__) ||\
> -    defined(__s390x__) || (defined(__riscv) && (__INTPTR_WIDTH__ == 64))
> +    defined(__s390x__) ||\
> +    (defined(__riscv) && (defined(__LP64__) || defined(_LP64)))
>  #define ACPI_MACHINE_WIDTH          64
>  #define COMPILER_DEPENDENT_INT64    long
>  #define COMPILER_DEPENDENT_UINT64   unsigned long
> 


Acked-by: Ivan Hu <ivan.hu at canonical.com>



More information about the fwts-devel mailing list