[{"id":1761260,"web_url":"http://patchwork.ozlabs.org/comment/1761260/","msgid":"<23e049f5-503d-2455-caf7-4da268a5a7b6@canonical.com>","list_archive_url":null,"date":"2017-08-31T18:52:37","subject":"ACK: [PATCH] ACPICA: Update to version 20170831","submitter":{"id":10593,"url":"http://patchwork.ozlabs.org/api/people/10593/","name":"Alex Hung","email":"alex.hung@canonical.com"},"content":"On 2017-08-31 10:51 AM, Colin King wrote:\n> From: Colin Ian King<colin.king@canonical.com>\n> \n> Changes in this release of ACPICA are detailed at the following\n> link on the ACPICA developer mailing list:\n> \n>      https://lists.acpica.org/pipermail/devel/2017-August/001436.html\n> \n> Signed-off-by: Colin Ian King<colin.king@canonical.com>\n> ---\n>   src/acpica/Makefile.am                             |   1 +\n>   src/acpica/source/common/dmtbinfo.c                |   2 +-\n>   src/acpica/source/compiler/aslcompiler.h           |   5 +\n>   src/acpica/source/compiler/aslcompiler.l           |   4 +-\n>   src/acpica/source/compiler/asldebug.c              |  87 ++-\n>   src/acpica/source/compiler/aslerror.c              |  20 +-\n>   src/acpica/source/compiler/aslmain.c               |   8 +-\n>   src/acpica/source/compiler/aslmessages.c           |   5 +-\n>   src/acpica/source/compiler/aslmessages.h           |   1 +\n>   src/acpica/source/compiler/aslresource.c           |   8 +\n>   src/acpica/source/compiler/aslrules.y              |   3 +-\n>   src/acpica/source/compiler/asltree.c               |  33 ++\n>   src/acpica/source/compiler/aslutils.c              |  17 +-\n>   src/acpica/source/compiler/dtcompile.c             |   2 +\n>   src/acpica/source/compiler/dtcompiler.h            |   4 +\n>   src/acpica/source/compiler/dtfield.c               |   8 +-\n>   src/acpica/source/compiler/dtparser.y              |  17 +-\n>   src/acpica/source/compiler/dtutils.c               |  32 ++\n>   src/acpica/source/compiler/prparser.y              |   4 +-\n>   src/acpica/source/components/debugger/dbconvert.c  |   4 +-\n>   .../source/components/disassembler/dmresrc.c       |  14 +\n>   src/acpica/source/components/dispatcher/dswexec.c  |   2 +-\n>   src/acpica/source/components/events/evgpe.c        |   6 +-\n>   src/acpica/source/components/executer/exconcat.c   |   2 +-\n>   src/acpica/source/components/executer/exconvrt.c   |  26 +-\n>   src/acpica/source/components/executer/exmisc.c     |   2 +-\n>   src/acpica/source/components/executer/exresop.c    |   2 +-\n>   src/acpica/source/components/hardware/hwgpe.c      |   4 +-\n>   src/acpica/source/components/hardware/hwregs.c     |  74 +--\n>   src/acpica/source/components/hardware/hwxface.c    | 130 +----\n>   src/acpica/source/components/namespace/nsconvert.c |   3 +-\n>   src/acpica/source/components/tables/tbxface.c      |   9 +-\n>   .../source/components/utilities/utstrsuppt.c       | 613 +++++++++++++++++++++\n>   .../source/components/utilities/utstrtoul64.c      | 472 ++++++++--------\n>   src/acpica/source/include/acexcep.h                |  12 +-\n>   src/acpica/source/include/achware.h                |   4 +-\n>   src/acpica/source/include/acinterp.h               |   5 +-\n>   src/acpica/source/include/acpixf.h                 |   2 +-\n>   src/acpica/source/include/actbl1.h                 |  46 +-\n>   src/acpica/source/include/actbl2.h                 |   1 +\n>   src/acpica/source/include/acutils.h                |  58 +-\n>   src/acpica/source/tools/acpiexec/aeinitfile.c      |   3 +-\n>   42 files changed, 1266 insertions(+), 489 deletions(-)\n>   create mode 100644 src/acpica/source/components/utilities/utstrsuppt.c\n\n\nAcked-by: Alex Hung <alex.hung@canonical.com>","headers":{"Return-Path":"<fwts-devel-bounces@lists.ubuntu.com>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com\n\t(client-ip=91.189.94.19; helo=huckleberry.canonical.com;\n\tenvelope-from=fwts-devel-bounces@lists.ubuntu.com;\n\treceiver=<UNKNOWN>)","Received":["from huckleberry.canonical.com (huckleberry.canonical.com\n\t[91.189.94.19])\n\tby ozlabs.org (Postfix) with ESMTP id 3xjs2D16Fhz9sD5;\n\tFri,  1 Sep 2017 04:52:51 +1000 (AEST)","from localhost ([127.0.0.1] helo=huckleberry.canonical.com)\n\tby huckleberry.canonical.com with esmtp (Exim 4.76)\n\t(envelope-from <fwts-devel-bounces@lists.ubuntu.com>)\n\tid 1dnUa6-0004GE-24; Thu, 31 Aug 2017 18:52:46 +0000","from youngberry.canonical.com ([91.189.89.112])\n\tby huckleberry.canonical.com with esmtps\n\t(TLS1.0:RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.76) (envelope-from <alex.hung@canonical.com>)\n\tid 1dnUa0-0004G8-NR\n\tfor fwts-devel@lists.ubuntu.com; Thu, 31 Aug 2017 18:52:40 +0000","from mail-pf0-f198.google.com ([209.85.192.198])\n\tby youngberry.canonical.com with esmtps\n\t(TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.76) (envelope-from <alex.hung@canonical.com>)\n\tid 1dnUa0-0008KK-AM\n\tfor fwts-devel@lists.ubuntu.com; Thu, 31 Aug 2017 18:52:40 +0000","by mail-pf0-f198.google.com with SMTP id a2so3059007pfj.2\n\tfor <fwts-devel@lists.ubuntu.com>;\n\tThu, 31 Aug 2017 11:52:40 -0700 (PDT)","from [192.168.1.125] ([207.102.104.225])\n\tby smtp.gmail.com with ESMTPSA id\n\ta13sm451919pgd.71.2017.08.31.11.52.37\n\tfor <fwts-devel@lists.ubuntu.com>\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 31 Aug 2017 11:52:38 -0700 (PDT)"],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=GJsQyjFDo+CTBMHQtpnP7CDuIR1ovo9s9fSI3j7FF3s=;\n\tb=Ikqq64WHrsRkJz8GBkdaiY+lmp7in5wMqObt1kwnHvtQa8XEcRqwmA38o0w4Ta93hu\n\ths694Yy5npb5QDIxSOh4Hzx1LsmGhoVOvi1zgW1Ep57bGiVuqFKAfK3RLLLzmxKL1Y1t\n\tfb8NSWfuz8O6M88+JbkkVivjXB8vnlew5I2GhTs8Vjs9Cji8qFZ5tuoQ6eFT8b2hKSyu\n\tmdPvIsiUOK2lgbU2IDnODcQgyl+pgTgEh923jADofSTDzswxQGH/EzRF9g9iz7zmsS+s\n\taxvPnXm/jm0lhtvipoJsl+HrUZ6rWqhBIQgWxZvIEQaQiZNSQod9xwmyRTdHnLGAGarz\n\t3xIA==","X-Gm-Message-State":"AHYfb5jnTlPjsxyAhsyIl5zo5eXGbzXNuUy3KZqWVaZTTJ8L4/qOx3Bw\n\teLrqEqcnU7Mdul5tz8FLzTUzUBTTd9VFW/VMwWHN0NOjH0qdKdd35oiMGQ3S9gOQ4Ws+5yXoLEK\n\tyf8Hj3VxkGm1SYMuh2QP38Pjje4FiP5k=","X-Received":["by 10.101.85.193 with SMTP id k1mr3532182pgs.19.1504205558860;\n\tThu, 31 Aug 2017 11:52:38 -0700 (PDT)","by 10.101.85.193 with SMTP id k1mr3532172pgs.19.1504205558628;\n\tThu, 31 Aug 2017 11:52:38 -0700 (PDT)"],"X-Google-Smtp-Source":"ADKCNb5CLJ/Pybg4aFohkTS6f19WWjDwBVVz1fmxVnssVbrZ1l2bTw35euWNQ92GUmYZwp1M55RNbw==","Subject":"ACK: [PATCH] ACPICA: Update to version 20170831","To":"fwts-devel@lists.ubuntu.com","References":"<20170831175104.31118-1-colin.king@canonical.com>","From":"Alex Hung <alex.hung@canonical.com>","Message-ID":"<23e049f5-503d-2455-caf7-4da268a5a7b6@canonical.com>","Date":"Thu, 31 Aug 2017 11:52:37 -0700","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<20170831175104.31118-1-colin.king@canonical.com>","Content-Language":"en-US","X-BeenThere":"fwts-devel@lists.ubuntu.com","X-Mailman-Version":"2.1.14","Precedence":"list","List-Id":"Firmware Test Suite Development <fwts-devel.lists.ubuntu.com>","List-Unsubscribe":"<https://lists.ubuntu.com/mailman/options/fwts-devel>,\n\t<mailto:fwts-devel-request@lists.ubuntu.com?subject=unsubscribe>","List-Archive":"<https://lists.ubuntu.com/archives/fwts-devel>","List-Post":"<mailto:fwts-devel@lists.ubuntu.com>","List-Help":"<mailto:fwts-devel-request@lists.ubuntu.com?subject=help>","List-Subscribe":"<https://lists.ubuntu.com/mailman/listinfo/fwts-devel>,\n\t<mailto:fwts-devel-request@lists.ubuntu.com?subject=subscribe>","Content-Transfer-Encoding":"7bit","Content-Type":"text/plain; charset=\"us-ascii\"; Format=\"flowed\"","Errors-To":"fwts-devel-bounces@lists.ubuntu.com","Sender":"fwts-devel-bounces@lists.ubuntu.com"}},{"id":1763887,"web_url":"http://patchwork.ozlabs.org/comment/1763887/","msgid":"<51dab205-d079-29b7-ad9f-220da7e7b492@canonical.com>","list_archive_url":null,"date":"2017-09-06T08:11:25","subject":"ACK: [PATCH] ACPICA: Update to version 20170831","submitter":{"id":14061,"url":"http://patchwork.ozlabs.org/api/people/14061/","name":"Ivan Hu","email":"ivan.hu@canonical.com"},"content":"On 09/01/2017 01:51 AM, Colin King wrote:\n> From: Colin Ian King <colin.king@canonical.com>\n> \n> Changes in this release of ACPICA are detailed at the following\n> link on the ACPICA developer mailing list:\n> \n>      https://lists.acpica.org/pipermail/devel/2017-August/001436.html\n> \n> Signed-off-by: Colin Ian King <colin.king@canonical.com>\n> ---\n>   src/acpica/Makefile.am                             |   1 +\n>   src/acpica/source/common/dmtbinfo.c                |   2 +-\n>   src/acpica/source/compiler/aslcompiler.h           |   5 +\n>   src/acpica/source/compiler/aslcompiler.l           |   4 +-\n>   src/acpica/source/compiler/asldebug.c              |  87 ++-\n>   src/acpica/source/compiler/aslerror.c              |  20 +-\n>   src/acpica/source/compiler/aslmain.c               |   8 +-\n>   src/acpica/source/compiler/aslmessages.c           |   5 +-\n>   src/acpica/source/compiler/aslmessages.h           |   1 +\n>   src/acpica/source/compiler/aslresource.c           |   8 +\n>   src/acpica/source/compiler/aslrules.y              |   3 +-\n>   src/acpica/source/compiler/asltree.c               |  33 ++\n>   src/acpica/source/compiler/aslutils.c              |  17 +-\n>   src/acpica/source/compiler/dtcompile.c             |   2 +\n>   src/acpica/source/compiler/dtcompiler.h            |   4 +\n>   src/acpica/source/compiler/dtfield.c               |   8 +-\n>   src/acpica/source/compiler/dtparser.y              |  17 +-\n>   src/acpica/source/compiler/dtutils.c               |  32 ++\n>   src/acpica/source/compiler/prparser.y              |   4 +-\n>   src/acpica/source/components/debugger/dbconvert.c  |   4 +-\n>   .../source/components/disassembler/dmresrc.c       |  14 +\n>   src/acpica/source/components/dispatcher/dswexec.c  |   2 +-\n>   src/acpica/source/components/events/evgpe.c        |   6 +-\n>   src/acpica/source/components/executer/exconcat.c   |   2 +-\n>   src/acpica/source/components/executer/exconvrt.c   |  26 +-\n>   src/acpica/source/components/executer/exmisc.c     |   2 +-\n>   src/acpica/source/components/executer/exresop.c    |   2 +-\n>   src/acpica/source/components/hardware/hwgpe.c      |   4 +-\n>   src/acpica/source/components/hardware/hwregs.c     |  74 +--\n>   src/acpica/source/components/hardware/hwxface.c    | 130 +----\n>   src/acpica/source/components/namespace/nsconvert.c |   3 +-\n>   src/acpica/source/components/tables/tbxface.c      |   9 +-\n>   .../source/components/utilities/utstrsuppt.c       | 613 +++++++++++++++++++++\n>   .../source/components/utilities/utstrtoul64.c      | 472 ++++++++--------\n>   src/acpica/source/include/acexcep.h                |  12 +-\n>   src/acpica/source/include/achware.h                |   4 +-\n>   src/acpica/source/include/acinterp.h               |   5 +-\n>   src/acpica/source/include/acpixf.h                 |   2 +-\n>   src/acpica/source/include/actbl1.h                 |  46 +-\n>   src/acpica/source/include/actbl2.h                 |   1 +\n>   src/acpica/source/include/acutils.h                |  58 +-\n>   src/acpica/source/tools/acpiexec/aeinitfile.c      |   3 +-\n>   42 files changed, 1266 insertions(+), 489 deletions(-)\n>   create mode 100644 src/acpica/source/components/utilities/utstrsuppt.c\n> \n> diff --git a/src/acpica/Makefile.am b/src/acpica/Makefile.am\n> index 58b07494..64755b41 100644\n> --- a/src/acpica/Makefile.am\n> +++ b/src/acpica/Makefile.am\n> @@ -261,6 +261,7 @@ libfwtsacpica_la_SOURCES =\t\t\t\t\\\n>   \tsource/components/utilities/utexcep.c\t\t\\\n>   \tsource/components/utilities/utpredef.c\t\t\\\n>   \tsource/components/utilities/utstring.c\t\t\\\n> +\tsource/components/utilities/utstrsuppt.c\t\\\n>   \tsource/components/utilities/utownerid.c\t\t\\\n>   \tsource/components/utilities/utxfinit.c\t\t\\\n>   \tsource/components/utilities/uterror.c\t\t\\\n> diff --git a/src/acpica/source/common/dmtbinfo.c b/src/acpica/source/common/dmtbinfo.c\n> index 4b902b96..5180b4db 100644\n> --- a/src/acpica/source/common/dmtbinfo.c\n> +++ b/src/acpica/source/common/dmtbinfo.c\n> @@ -2828,7 +2828,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt1[] =\n>       {ACPI_DMT_FLAG3,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           \"Allocation Type valid\", 0},\n>       {ACPI_DMT_FLAG4,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           \"Cache Type valid\", 0},\n>       {ACPI_DMT_FLAG5,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           \"Write Policy valid\", 0},\n> -    {ACPI_DMT_FLAG5,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           \"Line Size valid\", 0},\n> +    {ACPI_DMT_FLAG6,    ACPI_PPTT1_FLAG_OFFSET (Flags,0),           \"Line Size valid\", 0},\n>       {ACPI_DMT_UINT32,   ACPI_PPTT1_OFFSET (NextLevelOfCache),       \"Next Level of Cache\", 0},\n>       {ACPI_DMT_UINT32,   ACPI_PPTT1_OFFSET (Size),                   \"Size\", 0},\n>       {ACPI_DMT_UINT32,   ACPI_PPTT1_OFFSET (NumberOfSets),           \"Number of Sets\", 0},\n> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h\n> index fdf4dbf7..3b6a9c1d 100644\n> --- a/src/acpica/source/compiler/aslcompiler.h\n> +++ b/src/acpica/source/compiler/aslcompiler.h\n> @@ -890,6 +890,11 @@ void\n>   TrSetOpCurrentFilename (\n>       ACPI_PARSE_OBJECT       *Op);\n>   \n> +void\n> +TrSetOpIntegerWidth (\n> +    ACPI_PARSE_OBJECT       *TableSignature,\n> +    ACPI_PARSE_OBJECT       *Revision);\n> +\n>   ACPI_PARSE_OBJECT *\n>   TrLinkOpChildren (\n>       ACPI_PARSE_OBJECT       *Op,\n> diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l\n> index b49233be..5fcfc188 100644\n> --- a/src/acpica/source/compiler/aslcompiler.l\n> +++ b/src/acpica/source/compiler/aslcompiler.l\n> @@ -195,6 +195,7 @@ count (int type);\n>   \n>   LeadNameChar                [A-Za-z_]\n>   DigitChar                   [0-9]\n> +OctalChar                   [0-7]\n>   HexDigitChar                [A-Fa-f0-9]\n>   RootChar                    [\\\\]\n>   Nothing                     []\n> @@ -278,8 +279,7 @@ NamePathTail                [.]{NameSeg}\n>       /*\n>        * Begin standard ASL grammar\n>        */\n> -0[xX]{HexDigitChar}+ |\n> -{DigitChar}+                { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext);\n> +[0-9][a-zA-Z0-9]*            { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext);\n>                                   count (1); return (PARSEOP_INTEGER); }\n>   \n>   \"Include\"                   { count (1); return (PARSEOP_INCLUDE); }\n> diff --git a/src/acpica/source/compiler/asldebug.c b/src/acpica/source/compiler/asldebug.c\n> index b0b38640..684e2224 100644\n> --- a/src/acpica/source/compiler/asldebug.c\n> +++ b/src/acpica/source/compiler/asldebug.c\n> @@ -165,6 +165,10 @@ UtDumpParseOpName (\n>       UINT32                  Level,\n>       UINT32                  DataLength);\n>   \n> +static char *\n> +UtCreateEscapeSequences (\n> +    char                    *InString);\n> +\n>   \n>   /*******************************************************************************\n>    *\n> @@ -272,7 +276,6 @@ UtDumpStringOp (\n>   \n>   \n>       String = Op->Asl.Value.String;\n> -\n>       if (Op->Asl.ParseOpcode != PARSEOP_STRING_LITERAL)\n>       {\n>           /*\n> @@ -294,6 +297,8 @@ UtDumpStringOp (\n>           return;\n>       }\n>   \n> +    String = UtCreateEscapeSequences (String);\n> +\n>       /* Emit the ParseOp name, leaving room for the string */\n>   \n>       UtDumpParseOpName (Op, Level, strlen (String));\n> @@ -301,6 +306,86 @@ UtDumpStringOp (\n>   }\n>   \n>   \n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    UtCreateEscapeSequences\n> + *\n> + * PARAMETERS:  InString            - ASCII string to be expanded\n> + *\n> + * RETURN:      Expanded string\n> + *\n> + * DESCRIPTION: Expand all non-printable ASCII bytes (0-0x1F) to escape\n> + *              sequences. For example, hex 14 becomes \\x14\n> + *\n> + * NOTE:        Since this function is used for debug output only, it does\n> + *              not attempt to translate into the \"known\" escape sequences\n> + *              such as \\a, \\f, \\t, etc.\n> + *\n> + ******************************************************************************/\n> +\n> +static char *\n> +UtCreateEscapeSequences (\n> +    char                    *InString)\n> +{\n> +    char                    *String = InString;\n> +    char                    *OutString;\n> +    char                    *OutStringPtr;\n> +    UINT32                  InStringLength = 0;\n> +    UINT32                  EscapeCount = 0;\n> +\n> +\n> +    /*\n> +     * Determine up front how many escapes are within the string.\n> +     * Obtain the input string length while doing so.\n> +     */\n> +    while (*String)\n> +    {\n> +        if ((*String <= 0x1F) || (*String >= 0x7F))\n> +        {\n> +            EscapeCount++;\n> +        }\n> +\n> +        InStringLength++;\n> +        String++;\n> +    }\n> +\n> +    if (!EscapeCount)\n> +    {\n> +        return (InString); /* No escapes, nothing to do */\n> +    }\n> +\n> +    /* New string buffer, 3 extra chars per escape (4 total) */\n> +\n> +    OutString = UtLocalCalloc (InStringLength + (EscapeCount * 3));\n> +    OutStringPtr = OutString;\n> +\n> +    /* Convert non-ascii or non-printable chars to escape sequences */\n> +\n> +    while (*InString)\n> +    {\n> +        if ((*InString <= 0x1F) || (*InString >= 0x7F))\n> +        {\n> +            /* Insert a \\x hex escape sequence */\n> +\n> +            OutStringPtr[0] = '\\\\';\n> +            OutStringPtr[1] = 'x';\n> +            OutStringPtr[2] = AcpiUtHexToAsciiChar (*InString, 4);\n> +            OutStringPtr[3] = AcpiUtHexToAsciiChar (*InString, 0);\n> +            OutStringPtr += 4;\n> +        }\n> +        else /* Normal ASCII character */\n> +        {\n> +            *OutStringPtr = *InString;\n> +            OutStringPtr++;\n> +        }\n> +\n> +        InString++;\n> +    }\n> +\n> +    return (OutString);\n> +}\n> +\n> +\n>   /*******************************************************************************\n>    *\n>    * FUNCTION:    UtDumpBasicOp\n> diff --git a/src/acpica/source/compiler/aslerror.c b/src/acpica/source/compiler/aslerror.c\n> index ec91ca3e..56b5cabb 100644\n> --- a/src/acpica/source/compiler/aslerror.c\n> +++ b/src/acpica/source/compiler/aslerror.c\n> @@ -757,6 +757,11 @@ AslCommonError (\n>       ASL_ERROR_MSG           *Enode;\n>   \n>   \n> +    if (AslIsExceptionIgnored (Level, MessageId))\n> +    {\n> +        return;\n> +    }\n> +\n>       Enode = UtLocalCalloc (sizeof (ASL_ERROR_MSG));\n>   \n>       if (ExtraMessage)\n> @@ -949,9 +954,9 @@ AslDisableException (\n>   \n>       MessageId = (UINT32) strtoul (MessageIdString, NULL, 0);\n>   \n> -    if ((MessageId < 2000) || (MessageId > 5999))\n> +    if ((MessageId < 2000) || (MessageId > 6999))\n>       {\n> -        printf (\"\\\"%s\\\" is not a valid warning/remark ID\\n\",\n> +        printf (\"\\\"%s\\\" is not a valid warning/remark/error ID\\n\",\n>               MessageIdString);\n>           return (AE_BAD_PARAMETER);\n>       }\n> @@ -1050,8 +1055,9 @@ AslIsExceptionDisabled (\n>   \n>       case ASL_WARNING:\n>       case ASL_REMARK:\n> +    case ASL_ERROR:\n>           /*\n> -         * Ignore this warning/remark if it has been disabled by\n> +         * Ignore this error/warning/remark if it has been disabled by\n>            * the user (-vw option)\n>            */\n>           EncodedMessageId = AeBuildFullExceptionCode (Level, MessageId);\n> @@ -1097,14 +1103,6 @@ AslError (\n>       ACPI_PARSE_OBJECT       *Op,\n>       char                    *ExtraMessage)\n>   {\n> -\n> -    /* Check if user wants to ignore this exception */\n> -\n> -    if (AslIsExceptionIgnored (Level, MessageId))\n> -    {\n> -        return;\n> -    }\n> -\n>       if (Op)\n>       {\n>           AslCommonError (Level, MessageId, Op->Asl.LineNumber,\n> diff --git a/src/acpica/source/compiler/aslmain.c b/src/acpica/source/compiler/aslmain.c\n> index 10251fb2..e4ac4229 100644\n> --- a/src/acpica/source/compiler/aslmain.c\n> +++ b/src/acpica/source/compiler/aslmain.c\n> @@ -386,11 +386,11 @@ AslInitialize (\n>   \n>       AcpiGbl_DmOpt_Verbose = FALSE;\n>   \n> -    /* Default integer width is 64 bits */\n> +    /* Default integer width is 32 bits */\n>   \n> -    AcpiGbl_IntegerBitWidth = 64;\n> -    AcpiGbl_IntegerNybbleWidth = 16;\n> -    AcpiGbl_IntegerByteWidth = 8;\n> +    AcpiGbl_IntegerBitWidth = 32;\n> +    AcpiGbl_IntegerNybbleWidth = 8;\n> +    AcpiGbl_IntegerByteWidth = 4;\n>   \n>       for (i = 0; i < ASL_NUM_FILES; i++)\n>       {\n> diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c\n> index b87d5499..159f9d23 100644\n> --- a/src/acpica/source/compiler/aslmessages.c\n> +++ b/src/acpica/source/compiler/aslmessages.c\n> @@ -238,7 +238,7 @@ const char                      *AslCompilerMsgs [] =\n>   /*    ASL_MSG_HID_SUFFIX */                 \"_HID suffix must be all hex digits\",\n>   /*    ASL_MSG_INCLUDE_FILE_OPEN */          \"Could not open include file\",\n>   /*    ASL_MSG_INPUT_FILE_OPEN */            \"Could not open input file\",\n> -/*    ASL_MSG_INTEGER_LENGTH */             \"64-bit integer in 32-bit table, truncating (DSDT or SSDT version < 2)\",\n> +/*    ASL_MSG_INTEGER_LENGTH */             \"Truncating 64-bit constant found in 32-bit table\",\n>   /*    ASL_MSG_INTEGER_OPTIMIZATION */       \"Integer optimized to single-byte AML opcode\",\n>   /*    ASL_MSG_INTERRUPT_LIST */             \"Too many interrupts (16 max)\",\n>   /*    ASL_MSG_INTERRUPT_NUMBER */           \"Invalid interrupt number (must be 0-15)\",\n> @@ -349,7 +349,8 @@ const char                      *AslCompilerMsgs [] =\n>   /*    ASL_MSG_ARG_NOT_USED */               \"Method Argument is never used\",\n>   /*    ASL_MSG_CONSTANT_REQUIRED */          \"Non-reducible expression\",\n>   /*    ASL_MSG_CROSS_TABLE_SCOPE */          \"Illegal open scope on external object from within DSDT\",\n> -/*    ASL_MSG_EXCEPTION_NOT_RECEIVED */     \"Expected remark, warning, or error did not occur. Message ID:\"\n> +/*    ASL_MSG_EXCEPTION_NOT_RECEIVED */     \"Expected remark, warning, or error did not occur. Message ID:\",\n> +/*    ASL_MSG_NULL_RESOURCE_TEMPLATE */     \"Empty Resource Template (END_TAG only)\"\n>   };\n>   \n>   /* Table compiler */\n> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h\n> index 68216e5c..d69c05a1 100644\n> --- a/src/acpica/source/compiler/aslmessages.h\n> +++ b/src/acpica/source/compiler/aslmessages.h\n> @@ -352,6 +352,7 @@ typedef enum\n>       ASL_MSG_CONSTANT_REQUIRED,\n>       ASL_MSG_CROSS_TABLE_SCOPE,\n>       ASL_MSG_EXCEPTION_NOT_RECEIVED,\n> +    ASL_MSG_NULL_RESOURCE_TEMPLATE,\n>   \n>       /* These messages are used by the Data Table compiler only */\n>   \n> diff --git a/src/acpica/source/compiler/aslresource.c b/src/acpica/source/compiler/aslresource.c\n> index eb0c22a1..b052c1ed 100644\n> --- a/src/acpica/source/compiler/aslresource.c\n> +++ b/src/acpica/source/compiler/aslresource.c\n> @@ -1148,6 +1148,14 @@ RsDoResourceTemplate (\n>   \n>       DescriptorTypeOp = ASL_GET_PEER_NODE (BufferOp);\n>   \n> +    /* DEFAULT_ARG indicates null template - ResourceTemplate(){} */\n> +\n> +    if (DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)\n> +    {\n> +        AslError (ASL_WARNING, ASL_MSG_NULL_RESOURCE_TEMPLATE,\n> +            DescriptorTypeOp, DescriptorTypeOp->Asl.Value.String);\n> +    }\n> +\n>       /*\n>        * Process all resource descriptors in the list\n>        * Note: It is assumed that the EndTag node has been automatically\n> diff --git a/src/acpica/source/compiler/aslrules.y b/src/acpica/source/compiler/aslrules.y\n> index f26ea874..3b8e4839 100644\n> --- a/src/acpica/source/compiler/aslrules.y\n> +++ b/src/acpica/source/compiler/aslrules.y\n> @@ -199,7 +199,8 @@ DefinitionBlockTerm\n>           String ','\n>           String ','\n>           DWordConst\n> -        PARSEOP_CLOSE_PAREN         {TrSetOpEndLineNumber ($<n>3); COMMENT_CAPTURE_ON;}\n> +        PARSEOP_CLOSE_PAREN         {TrSetOpIntegerWidth ($6,$8);\n> +                                        TrSetOpEndLineNumber ($<n>3); COMMENT_CAPTURE_ON;}\n>               '{' TermList '}'        {$$ = TrLinkOpChildren ($<n>3,7,\n>                                           $4,$6,$8,$10,$12,$14,$18);}\n>       ;\n> diff --git a/src/acpica/source/compiler/asltree.c b/src/acpica/source/compiler/asltree.c\n> index 8b709df7..084bc4d5 100644\n> --- a/src/acpica/source/compiler/asltree.c\n> +++ b/src/acpica/source/compiler/asltree.c\n> @@ -376,6 +376,39 @@ TrSetOpCurrentFilename (\n>   }\n>   \n>   \n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    TrSetOpIntegerWidth\n> + *\n> + * PARAMETERS:  Op                  - An existing parse op\n> + *\n> + * RETURN:      None\n> + *\n> + * DESCRIPTION:\n> + *\n> + ******************************************************************************/\n> +\n> +void\n> +TrSetOpIntegerWidth (\n> +    ACPI_PARSE_OBJECT       *TableSignatureOp,\n> +    ACPI_PARSE_OBJECT       *RevisionOp)\n> +{\n> +\n> +    /* TBD: Check table sig? (DSDT vs. SSDT) */\n> +\n> +    /* Handle command-line version override */\n> +\n> +    if (Gbl_RevisionOverride)\n> +    {\n> +        AcpiUtSetIntegerWidth (Gbl_RevisionOverride);\n> +    }\n> +    else\n> +    {\n> +        AcpiUtSetIntegerWidth ((UINT8) RevisionOp->Asl.Value.Integer);\n> +    }\n> +}\n> +\n> +\n>   /*******************************************************************************\n>    *\n>    * FUNCTION:    TrSetOpEndLineNumber\n> diff --git a/src/acpica/source/compiler/aslutils.c b/src/acpica/source/compiler/aslutils.c\n> index c5ff42c0..8b46d38b 100644\n> --- a/src/acpica/source/compiler/aslutils.c\n> +++ b/src/acpica/source/compiler/aslutils.c\n> @@ -1004,11 +1004,11 @@ UtAttachNamepathToOwner (\n>    *\n>    * FUNCTION:    UtDoConstant\n>    *\n> - * PARAMETERS:  String              - Hexadecimal or decimal string\n> + * PARAMETERS:  String              - Hex/Decimal/Octal\n>    *\n>    * RETURN:      Converted Integer\n>    *\n> - * DESCRIPTION: Convert a string to an integer, with error checking.\n> + * DESCRIPTION: Convert a string to an integer, with overflow/error checking.\n>    *\n>    ******************************************************************************/\n>   \n> @@ -1017,17 +1017,20 @@ UtDoConstant (\n>       char                    *String)\n>   {\n>       ACPI_STATUS             Status;\n> -    UINT64                  Converted;\n> +    UINT64                  ConvertedInteger;\n>       char                    ErrBuf[64];\n>   \n>   \n> -    Status = AcpiUtStrtoul64 (String, ACPI_STRTOUL_64BIT, &Converted);\n> +    Status = AcpiUtStrtoul64 (String, &ConvertedInteger);\n>       if (ACPI_FAILURE (Status))\n>       {\n> -        sprintf (ErrBuf, \"%s %s\\n\", \"Conversion error:\",\n> +        sprintf (ErrBuf, \"While creating 64-bit constant: %s\\n\",\n>               AcpiFormatException (Status));\n> -        AslCompilererror (ErrBuf);\n> +\n> +        AslCommonError (ASL_ERROR, ASL_MSG_SYNTAX, Gbl_CurrentLineNumber,\n> +            Gbl_LogicalLineNumber, Gbl_CurrentLineOffset,\n> +            Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, ErrBuf);\n>       }\n>   \n> -    return (Converted);\n> +    return (ConvertedInteger);\n>   }\n> diff --git a/src/acpica/source/compiler/dtcompile.c b/src/acpica/source/compiler/dtcompile.c\n> index e74fed51..53445624 100644\n> --- a/src/acpica/source/compiler/dtcompile.c\n> +++ b/src/acpica/source/compiler/dtcompile.c\n> @@ -319,6 +319,8 @@ DtInitialize (\n>           return (Status);\n>       }\n>   \n> +    AcpiUtSetIntegerWidth (2); /* Set width to 64 bits */\n> +\n>       Gbl_FieldList = NULL;\n>       Gbl_RootTable = NULL;\n>       Gbl_SubtableStack = NULL;\n> diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h\n> index 1e81c580..90fad889 100644\n> --- a/src/acpica/source/compiler/dtcompiler.h\n> +++ b/src/acpica/source/compiler/dtcompiler.h\n> @@ -481,6 +481,10 @@ DtFatal (\n>       DT_FIELD                *FieldObject,\n>       char                    *ExtraMessage);\n>   \n> +UINT64\n> +DtDoConstant (\n> +    char                    *String);\n> +\n>   char*\n>   DtGetFieldValue (\n>       DT_FIELD                *Field);\n> diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c\n> index 13e8b638..b06877a8 100644\n> --- a/src/acpica/source/compiler/dtfield.c\n> +++ b/src/acpica/source/compiler/dtfield.c\n> @@ -628,15 +628,9 @@ DtCompileFlag (\n>       UINT64                  Value = 0;\n>       UINT32                  BitLength = 1;\n>       UINT8                   BitPosition = 0;\n> -    ACPI_STATUS             Status;\n>   \n>   \n> -    Status = AcpiUtStrtoul64 (Field->Value,\n> -        (ACPI_STRTOUL_64BIT | ACPI_STRTOUL_BASE16), &Value);\n> -    if (ACPI_FAILURE (Status))\n> -    {\n> -        DtError (ASL_ERROR, ASL_MSG_INVALID_HEX_INTEGER, Field, NULL);\n> -    }\n> +    Value = AcpiUtImplicitStrtoul64 (Field->Value);\n>   \n>       switch (Info->Opcode)\n>       {\n> diff --git a/src/acpica/source/compiler/dtparser.y b/src/acpica/source/compiler/dtparser.y\n> index a2943ccc..d5990fe4 100644\n> --- a/src/acpica/source/compiler/dtparser.y\n> +++ b/src/acpica/source/compiler/dtparser.y\n> @@ -275,17 +275,24 @@ Expression\n>   \n>       | EXPOP_LABEL                                   { $$ = DtResolveLabel (DtParsertext);}\n>   \n> -      /* Default base for a non-prefixed integer is 16 */\n> +      /*\n> +       * All constants for the data table compiler are in hex, whether a (optional) 0x\n> +       * prefix is present or not. For example, these two input strings are equivalent:\n> +       *    1234\n> +       *    0x1234\n> +       */\n>   \n> -    | EXPOP_NUMBER                                  { AcpiUtStrtoul64 (DtParsertext, (ACPI_STRTOUL_BASE16 | ACPI_STRTOUL_64BIT), &$$);}\n> +      /* Non-prefixed hex number */\n> +\n> +    | EXPOP_NUMBER                                  { $$ = DtDoConstant (DtParsertext);}\n>   \n>         /* Standard hex number (0x1234) */\n>   \n> -    | EXPOP_HEX_NUMBER                              { AcpiUtStrtoul64 (DtParsertext, (ACPI_STRTOUL_BASE16 | ACPI_STRTOUL_64BIT), &$$);}\n> +    | EXPOP_HEX_NUMBER                              { $$ = DtDoConstant (DtParsertext);}\n>   \n> -      /* TBD: Decimal number with prefix (0d1234) - Not supported by strtoul64 at this time */\n> +      /* Possible TBD: Decimal number with prefix (0d1234) - Not supported this time */\n>   \n> -    | EXPOP_DECIMAL_NUMBER                          { AcpiUtStrtoul64 (DtParsertext, ACPI_STRTOUL_64BIT, &$$);}\n> +    | EXPOP_DECIMAL_NUMBER                          { $$ = DtDoConstant (DtParsertext);}\n>       ;\n>   %%\n>   \n> diff --git a/src/acpica/source/compiler/dtutils.c b/src/acpica/source/compiler/dtutils.c\n> index 6edcf637..c6c89eaa 100644\n> --- a/src/acpica/source/compiler/dtutils.c\n> +++ b/src/acpica/source/compiler/dtutils.c\n> @@ -303,6 +303,38 @@ DtFatal (\n>   }\n>   \n>   \n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    DtDoConstant\n> + *\n> + * PARAMETERS:  String              - Only hex constants are supported,\n> + *                                    regardless of whether the 0x prefix\n> + *                                    is used\n> + *\n> + * RETURN:      Converted Integer\n> + *\n> + * DESCRIPTION: Convert a string to an integer, with overflow/error checking.\n> + *\n> + ******************************************************************************/\n> +\n> +UINT64\n> +DtDoConstant (\n> +    char                    *String)\n> +{\n> +    UINT64                  ConvertedInteger;\n> +\n> +\n> +    /*\n> +     * TBD: The ImplicitStrtoul64 function does not report overflow\n> +     * conditions. The input string is simply truncated. If it is\n> +     * desired to report overflow to the table compiler, this should\n> +     * somehow be added here. Note: integers that are prefixed with 0x\n> +     * or not are both hex integers.\n> +     */\n> +    ConvertedInteger = AcpiUtImplicitStrtoul64 (String);\n> +    return (ConvertedInteger);\n> +}\n> +\n>   /******************************************************************************\n>    *\n>    * FUNCTION:    DtGetFieldValue\n> diff --git a/src/acpica/source/compiler/prparser.y b/src/acpica/source/compiler/prparser.y\n> index 2ad79e45..d24a5bbe 100644\n> --- a/src/acpica/source/compiler/prparser.y\n> +++ b/src/acpica/source/compiler/prparser.y\n> @@ -290,11 +290,11 @@ Expression\n>   \n>         /* Default base for a non-prefixed integer is 10 */\n>   \n> -    | EXPOP_NUMBER                                  { AcpiUtStrtoul64 (PrParsertext, ACPI_STRTOUL_64BIT, &$$);}\n> +    | EXPOP_NUMBER                                  { AcpiUtStrtoul64 (PrParsertext, &$$);}\n>   \n>         /* Standard hex number (0x1234) */\n>   \n> -    | EXPOP_HEX_NUMBER                              { AcpiUtStrtoul64 (PrParsertext, (ACPI_STRTOUL_BASE16 | ACPI_STRTOUL_64BIT), &$$);}\n> +    | EXPOP_HEX_NUMBER                              { AcpiUtStrtoul64 (PrParsertext, &$$);}\n>       ;\n>   %%\n>   \n> diff --git a/src/acpica/source/components/debugger/dbconvert.c b/src/acpica/source/components/debugger/dbconvert.c\n> index e02ddb40..e06bc026 100644\n> --- a/src/acpica/source/components/debugger/dbconvert.c\n> +++ b/src/acpica/source/components/debugger/dbconvert.c\n> @@ -429,9 +429,7 @@ AcpiDbConvertToObject (\n>       default:\n>   \n>           Object->Type = ACPI_TYPE_INTEGER;\n> -        Status = AcpiUtStrtoul64 (String,\n> -            (AcpiGbl_IntegerByteWidth | ACPI_STRTOUL_BASE16),\n> -            &Object->Integer.Value);\n> +        Status = AcpiUtStrtoul64 (String, &Object->Integer.Value);\n>           break;\n>       }\n>   \n> diff --git a/src/acpica/source/components/disassembler/dmresrc.c b/src/acpica/source/components/disassembler/dmresrc.c\n> index 3c24855f..c50c1c42 100644\n> --- a/src/acpica/source/components/disassembler/dmresrc.c\n> +++ b/src/acpica/source/components/disassembler/dmresrc.c\n> @@ -539,6 +539,20 @@ AcpiDmIsResourceTemplate (\n>       Aml = NextOp->Named.Data;\n>       BufferLength = NextOp->Common.Value.Size;\n>   \n> +    /*\n> +     * Any buffer smaller than one byte cannot possibly be a resource\n> +     * template. Two bytes could possibly be a \"NULL\" resource template\n> +     * with a lone end tag descriptor (as generated via\n> +     * \"ResourceTemplate(){}\"), but this would be an extremely unusual\n> +     * case, as the template would be essentially useless. The disassembler\n> +     * therefore does not recognize any two-byte buffer as a resource\n> +     * template.\n> +     */\n> +    if (BufferLength <= 2)\n> +    {\n> +        return (AE_TYPE);\n> +    }\n> +\n>       /*\n>        * Not a template if declared buffer length != actual length of the\n>        * intialization byte list. Because the resource macros will create\n> diff --git a/src/acpica/source/components/dispatcher/dswexec.c b/src/acpica/source/components/dispatcher/dswexec.c\n> index dfdfeaa0..bbb9436a 100644\n> --- a/src/acpica/source/components/dispatcher/dswexec.c\n> +++ b/src/acpica/source/components/dispatcher/dswexec.c\n> @@ -253,7 +253,7 @@ AcpiDsGetPredicateValue (\n>        * object. Implicitly convert the argument if necessary.\n>        */\n>       Status = AcpiExConvertToInteger (ObjDesc, &LocalObjDesc,\n> -        ACPI_STRTOUL_BASE16);\n> +        ACPI_IMPLICIT_CONVERSION);\n>       if (ACPI_FAILURE (Status))\n>       {\n>           goto Cleanup;\n> diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c\n> index 13b3e049..a00dc378 100644\n> --- a/src/acpica/source/components/events/evgpe.c\n> +++ b/src/acpica/source/components/events/evgpe.c\n> @@ -551,8 +551,8 @@ AcpiEvGpeDetect (\n>       ACPI_GPE_HANDLER_INFO   *GpeHandlerInfo;\n>       UINT32                  IntStatus = ACPI_INTERRUPT_NOT_HANDLED;\n>       UINT8                   EnabledStatusByte;\n> -    UINT32                  StatusReg;\n> -    UINT32                  EnableReg;\n> +    UINT64                  StatusReg;\n> +    UINT64                  EnableReg;\n>       ACPI_CPU_FLAGS          Flags;\n>       UINT32                  i;\n>       UINT32                  j;\n> @@ -629,7 +629,7 @@ AcpiEvGpeDetect (\n>                   \"RunEnable=%02X, WakeEnable=%02X\\n\",\n>                   GpeRegisterInfo->BaseGpeNumber,\n>                   GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1),\n> -                StatusReg, EnableReg,\n> +                (UINT32) StatusReg, (UINT32) EnableReg,\n>                   GpeRegisterInfo->EnableForRun,\n>                   GpeRegisterInfo->EnableForWake));\n>   \n> diff --git a/src/acpica/source/components/executer/exconcat.c b/src/acpica/source/components/executer/exconcat.c\n> index e5f077db..67d592cd 100644\n> --- a/src/acpica/source/components/executer/exconcat.c\n> +++ b/src/acpica/source/components/executer/exconcat.c\n> @@ -274,7 +274,7 @@ AcpiExDoConcatenate (\n>       case ACPI_TYPE_INTEGER:\n>   \n>           Status = AcpiExConvertToInteger (LocalOperand1, &TempOperand1,\n> -            ACPI_STRTOUL_BASE16);\n> +            ACPI_IMPLICIT_CONVERSION);\n>           break;\n>   \n>       case ACPI_TYPE_BUFFER:\n> diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c\n> index 8c0ae75c..8577a45e 100644\n> --- a/src/acpica/source/components/executer/exconvrt.c\n> +++ b/src/acpica/source/components/executer/exconvrt.c\n> @@ -172,10 +172,10 @@ AcpiExConvertToAscii (\n>    *\n>    * FUNCTION:    AcpiExConvertToInteger\n>    *\n> - * PARAMETERS:  ObjDesc         - Object to be converted. Must be an\n> - *                                Integer, Buffer, or String\n> - *              ResultDesc      - Where the new Integer object is returned\n> - *              Flags           - Used for string conversion\n> + * PARAMETERS:  ObjDesc             - Object to be converted. Must be an\n> + *                                    Integer, Buffer, or String\n> + *              ResultDesc          - Where the new Integer object is returned\n> + *              ImplicitConversion  - Used for string conversion\n>    *\n>    * RETURN:      Status\n>    *\n> @@ -187,14 +187,13 @@ ACPI_STATUS\n>   AcpiExConvertToInteger (\n>       ACPI_OPERAND_OBJECT     *ObjDesc,\n>       ACPI_OPERAND_OBJECT     **ResultDesc,\n> -    UINT32                  Flags)\n> +    UINT32                  ImplicitConversion)\n>   {\n>       ACPI_OPERAND_OBJECT     *ReturnDesc;\n>       UINT8                   *Pointer;\n>       UINT64                  Result;\n>       UINT32                  i;\n>       UINT32                  Count;\n> -    ACPI_STATUS             Status;\n>   \n>   \n>       ACPI_FUNCTION_TRACE_PTR (ExConvertToInteger, ObjDesc);\n> @@ -244,12 +243,17 @@ AcpiExConvertToInteger (\n>            * hexadecimal as per the ACPI specification. The only exception (as\n>            * of ACPI 3.0) is that the ToInteger() operator allows both decimal\n>            * and hexadecimal strings (hex prefixed with \"0x\").\n> +         *\n> +         * Explicit conversion is used only by ToInteger.\n> +         * All other string-to-integer conversions are implicit conversions.\n>            */\n> -        Status = AcpiUtStrtoul64 (ACPI_CAST_PTR (char, Pointer),\n> -            (AcpiGbl_IntegerByteWidth | Flags), &Result);\n> -        if (ACPI_FAILURE (Status))\n> +        if (ImplicitConversion)\n> +        {\n> +            Result = AcpiUtImplicitStrtoul64 (ACPI_CAST_PTR (char, Pointer));\n> +        }\n> +        else\n>           {\n> -            return_ACPI_STATUS (Status);\n> +            Result = AcpiUtExplicitStrtoul64 (ACPI_CAST_PTR (char, Pointer));\n>           }\n>           break;\n>   \n> @@ -792,7 +796,7 @@ AcpiExConvertToTargetType (\n>                * a Buffer or a String to an Integer if necessary.\n>                */\n>               Status = AcpiExConvertToInteger (SourceDesc, ResultDesc,\n> -                ACPI_STRTOUL_BASE16);\n> +                ACPI_IMPLICIT_CONVERSION);\n>               break;\n>   \n>           case ACPI_TYPE_STRING:\n> diff --git a/src/acpica/source/components/executer/exmisc.c b/src/acpica/source/components/executer/exmisc.c\n> index dfa4421a..8e92f7a0 100644\n> --- a/src/acpica/source/components/executer/exmisc.c\n> +++ b/src/acpica/source/components/executer/exmisc.c\n> @@ -472,7 +472,7 @@ AcpiExDoLogicalOp (\n>       case ACPI_TYPE_INTEGER:\n>   \n>           Status = AcpiExConvertToInteger (Operand1, &LocalOperand1,\n> -            ACPI_STRTOUL_BASE16);\n> +            ACPI_IMPLICIT_CONVERSION);\n>           break;\n>   \n>       case ACPI_TYPE_STRING:\n> diff --git a/src/acpica/source/components/executer/exresop.c b/src/acpica/source/components/executer/exresop.c\n> index 0cd216ce..e33608c2 100644\n> --- a/src/acpica/source/components/executer/exresop.c\n> +++ b/src/acpica/source/components/executer/exresop.c\n> @@ -541,7 +541,7 @@ AcpiExResolveOperands (\n>                * Known as \"Implicit Source Operand Conversion\"\n>                */\n>               Status = AcpiExConvertToInteger (ObjDesc, StackPtr,\n> -                ACPI_STRTOUL_BASE16);\n> +                ACPI_IMPLICIT_CONVERSION);\n>               if (ACPI_FAILURE (Status))\n>               {\n>                   if (Status == AE_TYPE)\n> diff --git a/src/acpica/source/components/hardware/hwgpe.c b/src/acpica/source/components/hardware/hwgpe.c\n> index 56ccb78d..636639be 100644\n> --- a/src/acpica/source/components/hardware/hwgpe.c\n> +++ b/src/acpica/source/components/hardware/hwgpe.c\n> @@ -217,7 +217,7 @@ AcpiHwLowSetGpe (\n>   {\n>       ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo;\n>       ACPI_STATUS             Status = AE_OK;\n> -    UINT32                  EnableMask;\n> +    UINT64                  EnableMask;\n>       UINT32                  RegisterBit;\n>   \n>   \n> @@ -342,7 +342,7 @@ AcpiHwGetGpeStatus (\n>       ACPI_GPE_EVENT_INFO     *GpeEventInfo,\n>       ACPI_EVENT_STATUS       *EventStatus)\n>   {\n> -    UINT32                  InByte;\n> +    UINT64                  InByte;\n>       UINT32                  RegisterBit;\n>       ACPI_GPE_REGISTER_INFO  *GpeRegisterInfo;\n>       ACPI_EVENT_STATUS       LocalEventStatus = 0;\n> diff --git a/src/acpica/source/components/hardware/hwregs.c b/src/acpica/source/components/hardware/hwregs.c\n> index b5b23831..cd8e774a 100644\n> --- a/src/acpica/source/components/hardware/hwregs.c\n> +++ b/src/acpica/source/components/hardware/hwregs.c\n> @@ -355,9 +355,8 @@ AcpiHwValidateRegister (\n>    *\n>    * RETURN:      Status\n>    *\n> - * DESCRIPTION: Read from either memory or IO space. This is a 32-bit max\n> - *              version of AcpiRead, used internally since the overhead of\n> - *              64-bit values is not needed.\n> + * DESCRIPTION: Read from either memory or IO space. This is a 64-bit max\n> + *              version of AcpiRead.\n>    *\n>    * LIMITATIONS: <These limitations also apply to AcpiHwWrite>\n>    *      SpaceID must be SystemMemory or SystemIO.\n> @@ -366,7 +365,7 @@ AcpiHwValidateRegister (\n>   \n>   ACPI_STATUS\n>   AcpiHwRead (\n> -    UINT32                  *Value,\n> +    UINT64                  *Value,\n>       ACPI_GENERIC_ADDRESS    *Reg)\n>   {\n>       UINT64                  Address;\n> @@ -384,18 +383,18 @@ AcpiHwRead (\n>   \n>       /* Validate contents of the GAS register */\n>   \n> -    Status = AcpiHwValidateRegister (Reg, 32, &Address);\n> +    Status = AcpiHwValidateRegister (Reg, 64, &Address);\n>       if (ACPI_FAILURE (Status))\n>       {\n>           return (Status);\n>       }\n>   \n>       /*\n> -     * Initialize entire 32-bit return value to zero, convert AccessWidth\n> +     * Initialize entire 64-bit return value to zero, convert AccessWidth\n>        * into number of bits based\n>        */\n>       *Value = 0;\n> -    AccessWidth = AcpiHwGetAccessBitWidth (Address, Reg, 32);\n> +    AccessWidth = AcpiHwGetAccessBitWidth (Address, Reg, 64);\n>       BitWidth = Reg->BitOffset + Reg->BitWidth;\n>       BitOffset = Reg->BitOffset;\n>   \n> @@ -408,7 +407,7 @@ AcpiHwRead (\n>       {\n>           if (BitOffset >= AccessWidth)\n>           {\n> -            Value32 = 0;\n> +            Value64 = 0;\n>               BitOffset -= AccessWidth;\n>           }\n>           else\n> @@ -418,31 +417,31 @@ AcpiHwRead (\n>                   Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)\n>                       Address + Index * ACPI_DIV_8 (AccessWidth),\n>                       &Value64, AccessWidth);\n> -                Value32 = (UINT32) Value64;\n>               }\n>               else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */\n>               {\n>                   Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)\n>                       Address + Index * ACPI_DIV_8 (AccessWidth),\n>                       &Value32, AccessWidth);\n> +                Value64 = (UINT64) Value32;\n>               }\n>           }\n>   \n>           /*\n>            * Use offset style bit writes because \"Index * AccessWidth\" is\n> -         * ensured to be less than 32-bits by AcpiHwValidateRegister().\n> +         * ensured to be less than 64-bits by AcpiHwValidateRegister().\n>            */\n>           ACPI_SET_BITS (Value, Index * AccessWidth,\n> -            ACPI_MASK_BITS_ABOVE_32 (AccessWidth), Value32);\n> +            ACPI_MASK_BITS_ABOVE_64 (AccessWidth), Value64);\n>   \n>           BitWidth -= BitWidth > AccessWidth ? AccessWidth : BitWidth;\n>           Index++;\n>       }\n>   \n>       ACPI_DEBUG_PRINT ((ACPI_DB_IO,\n> -        \"Read:  %8.8X width %2d from %8.8X%8.8X (%s)\\n\",\n> -        *Value, AccessWidth, ACPI_FORMAT_UINT64 (Address),\n> -        AcpiUtGetRegionName (Reg->SpaceId)));\n> +        \"Read:  %8.8X%8.8X width %2d from %8.8X%8.8X (%s)\\n\",\n> +        ACPI_FORMAT_UINT64 (*Value), AccessWidth,\n> +        ACPI_FORMAT_UINT64 (Address), AcpiUtGetRegionName (Reg->SpaceId)));\n>   \n>       return (Status);\n>   }\n> @@ -457,15 +456,14 @@ AcpiHwRead (\n>    *\n>    * RETURN:      Status\n>    *\n> - * DESCRIPTION: Write to either memory or IO space. This is a 32-bit max\n> - *              version of AcpiWrite, used internally since the overhead of\n> - *              64-bit values is not needed.\n> + * DESCRIPTION: Write to either memory or IO space. This is a 64-bit max\n> + *              version of AcpiWrite.\n>    *\n>    ******************************************************************************/\n>   \n>   ACPI_STATUS\n>   AcpiHwWrite (\n> -    UINT32                  Value,\n> +    UINT64                  Value,\n>       ACPI_GENERIC_ADDRESS    *Reg)\n>   {\n>       UINT64                  Address;\n> @@ -473,7 +471,6 @@ AcpiHwWrite (\n>       UINT32                  BitWidth;\n>       UINT8                   BitOffset;\n>       UINT64                  Value64;\n> -    UINT32                  Value32;\n>       UINT8                   Index;\n>       ACPI_STATUS             Status;\n>   \n> @@ -483,7 +480,7 @@ AcpiHwWrite (\n>   \n>       /* Validate contents of the GAS register */\n>   \n> -    Status = AcpiHwValidateRegister (Reg, 32, &Address);\n> +    Status = AcpiHwValidateRegister (Reg, 64, &Address);\n>       if (ACPI_FAILURE (Status))\n>       {\n>           return (Status);\n> @@ -491,7 +488,7 @@ AcpiHwWrite (\n>   \n>       /* Convert AccessWidth into number of bits based */\n>   \n> -    AccessWidth = AcpiHwGetAccessBitWidth (Address, Reg, 32);\n> +    AccessWidth = AcpiHwGetAccessBitWidth (Address, Reg, 64);\n>       BitWidth = Reg->BitOffset + Reg->BitWidth;\n>       BitOffset = Reg->BitOffset;\n>   \n> @@ -504,10 +501,10 @@ AcpiHwWrite (\n>       {\n>           /*\n>            * Use offset style bit reads because \"Index * AccessWidth\" is\n> -         * ensured to be less than 32-bits by AcpiHwValidateRegister().\n> +         * ensured to be less than 64-bits by AcpiHwValidateRegister().\n>            */\n> -        Value32 = ACPI_GET_BITS (&Value, Index * AccessWidth,\n> -            ACPI_MASK_BITS_ABOVE_32 (AccessWidth));\n> +        Value64 = ACPI_GET_BITS (&Value, Index * AccessWidth,\n> +            ACPI_MASK_BITS_ABOVE_64 (AccessWidth));\n>   \n>           if (BitOffset >= AccessWidth)\n>           {\n> @@ -517,7 +514,6 @@ AcpiHwWrite (\n>           {\n>               if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)\n>               {\n> -                Value64 = (UINT64) Value32;\n>                   Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)\n>                       Address + Index * ACPI_DIV_8 (AccessWidth),\n>                       Value64, AccessWidth);\n> @@ -526,7 +522,7 @@ AcpiHwWrite (\n>               {\n>                   Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)\n>                       Address + Index * ACPI_DIV_8 (AccessWidth),\n> -                    Value32, AccessWidth);\n> +                    (UINT32) Value64, AccessWidth);\n>               }\n>           }\n>   \n> @@ -539,9 +535,9 @@ AcpiHwWrite (\n>       }\n>   \n>       ACPI_DEBUG_PRINT ((ACPI_DB_IO,\n> -        \"Wrote: %8.8X width %2d   to %8.8X%8.8X (%s)\\n\",\n> -        Value, AccessWidth, ACPI_FORMAT_UINT64 (Address),\n> -        AcpiUtGetRegionName (Reg->SpaceId)));\n> +        \"Wrote: %8.8X%8.8X width %2d   to %8.8X%8.8X (%s)\\n\",\n> +        ACPI_FORMAT_UINT64 (Value), AccessWidth,\n> +        ACPI_FORMAT_UINT64 (Address), AcpiUtGetRegionName (Reg->SpaceId)));\n>   \n>       return (Status);\n>   }\n> @@ -688,6 +684,7 @@ AcpiHwRegisterRead (\n>       UINT32                  *ReturnValue)\n>   {\n>       UINT32                  Value = 0;\n> +    UINT64                  Value64;\n>       ACPI_STATUS             Status;\n>   \n>   \n> @@ -726,12 +723,14 @@ AcpiHwRegisterRead (\n>   \n>       case ACPI_REGISTER_PM2_CONTROL:          /* 8-bit access */\n>   \n> -        Status = AcpiHwRead (&Value, &AcpiGbl_FADT.XPm2ControlBlock);\n> +        Status = AcpiHwRead (&Value64, &AcpiGbl_FADT.XPm2ControlBlock);\n> +        Value = (UINT32) Value64;\n>           break;\n>   \n>       case ACPI_REGISTER_PM_TIMER:             /* 32-bit access */\n>   \n> -        Status = AcpiHwRead (&Value, &AcpiGbl_FADT.XPmTimerBlock);\n> +        Status = AcpiHwRead (&Value64, &AcpiGbl_FADT.XPmTimerBlock);\n> +        Value = (UINT32) Value64;\n>           break;\n>   \n>       case ACPI_REGISTER_SMI_COMMAND_BLOCK:    /* 8-bit access */\n> @@ -749,7 +748,7 @@ AcpiHwRegisterRead (\n>   \n>       if (ACPI_SUCCESS (Status))\n>       {\n> -        *ReturnValue = Value;\n> +        *ReturnValue = (UINT32) Value;\n>       }\n>   \n>       return_ACPI_STATUS (Status);\n> @@ -789,6 +788,7 @@ AcpiHwRegisterWrite (\n>   {\n>       ACPI_STATUS             Status;\n>       UINT32                  ReadValue;\n> +    UINT64                  ReadValue64;\n>   \n>   \n>       ACPI_FUNCTION_TRACE (HwRegisterWrite);\n> @@ -850,11 +850,12 @@ AcpiHwRegisterWrite (\n>            * For control registers, all reserved bits must be preserved,\n>            * as per the ACPI spec.\n>            */\n> -        Status = AcpiHwRead (&ReadValue, &AcpiGbl_FADT.XPm2ControlBlock);\n> +        Status = AcpiHwRead (&ReadValue64, &AcpiGbl_FADT.XPm2ControlBlock);\n>           if (ACPI_FAILURE (Status))\n>           {\n>               goto Exit;\n>           }\n> +        ReadValue = (UINT32) ReadValue64;\n>   \n>           /* Insert the bits to be preserved */\n>   \n> @@ -910,26 +911,29 @@ AcpiHwReadMultiple (\n>   {\n>       UINT32                  ValueA = 0;\n>       UINT32                  ValueB = 0;\n> +    UINT64                  Value64;\n>       ACPI_STATUS             Status;\n>   \n>   \n>       /* The first register is always required */\n>   \n> -    Status = AcpiHwRead (&ValueA, RegisterA);\n> +    Status = AcpiHwRead (&Value64, RegisterA);\n>       if (ACPI_FAILURE (Status))\n>       {\n>           return (Status);\n>       }\n> +    ValueA = (UINT32) Value64;\n>   \n>       /* Second register is optional */\n>   \n>       if (RegisterB->Address)\n>       {\n> -        Status = AcpiHwRead (&ValueB, RegisterB);\n> +        Status = AcpiHwRead (&Value64, RegisterB);\n>           if (ACPI_FAILURE (Status))\n>           {\n>               return (Status);\n>           }\n> +        ValueB = (UINT32) Value64;\n>       }\n>   \n>       /*\n> diff --git a/src/acpica/source/components/hardware/hwxface.c b/src/acpica/source/components/hardware/hwxface.c\n> index 3627a971..49a19e45 100644\n> --- a/src/acpica/source/components/hardware/hwxface.c\n> +++ b/src/acpica/source/components/hardware/hwxface.c\n> @@ -247,84 +247,14 @@ AcpiRead (\n>       UINT64                  *ReturnValue,\n>       ACPI_GENERIC_ADDRESS    *Reg)\n>   {\n> -    UINT32                  ValueLo;\n> -    UINT32                  ValueHi;\n> -    UINT32                  Width;\n> -    UINT64                  Address;\n>       ACPI_STATUS             Status;\n>   \n>   \n>       ACPI_FUNCTION_NAME (AcpiRead);\n>   \n>   \n> -    if (!ReturnValue)\n> -    {\n> -        return (AE_BAD_PARAMETER);\n> -    }\n> -\n> -    /* Validate contents of the GAS register. Allow 64-bit transfers */\n> -\n> -    Status = AcpiHwValidateRegister (Reg, 64, &Address);\n> -    if (ACPI_FAILURE (Status))\n> -    {\n> -        return (Status);\n> -    }\n> -\n> -    /*\n> -     * Two address spaces supported: Memory or I/O. PCI_Config is\n> -     * not supported here because the GAS structure is insufficient\n> -     */\n> -    if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)\n> -    {\n> -        Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS)\n> -            Address, ReturnValue, Reg->BitWidth);\n> -        if (ACPI_FAILURE (Status))\n> -        {\n> -            return (Status);\n> -        }\n> -    }\n> -    else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */\n> -    {\n> -        ValueLo = 0;\n> -        ValueHi = 0;\n> -\n> -        Width = Reg->BitWidth;\n> -        if (Width == 64)\n> -        {\n> -            Width = 32; /* Break into two 32-bit transfers */\n> -        }\n> -\n> -        Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)\n> -            Address, &ValueLo, Width);\n> -        if (ACPI_FAILURE (Status))\n> -        {\n> -            return (Status);\n> -        }\n> -\n> -        if (Reg->BitWidth == 64)\n> -        {\n> -            /* Read the top 32 bits */\n> -\n> -            Status = AcpiHwReadPort ((ACPI_IO_ADDRESS)\n> -                (Address + 4), &ValueHi, 32);\n> -            if (ACPI_FAILURE (Status))\n> -            {\n> -                return (Status);\n> -            }\n> -        }\n> -\n> -        /* Set the return value only if status is AE_OK */\n> -\n> -        *ReturnValue = (ValueLo | ((UINT64) ValueHi << 32));\n> -    }\n> -\n> -    ACPI_DEBUG_PRINT ((ACPI_DB_IO,\n> -        \"Read:  %8.8X%8.8X width %2d from %8.8X%8.8X (%s)\\n\",\n> -        ACPI_FORMAT_UINT64 (*ReturnValue), Reg->BitWidth,\n> -        ACPI_FORMAT_UINT64 (Address),\n> -        AcpiUtGetRegionName (Reg->SpaceId)));\n> -\n> -    return (AE_OK);\n> +    Status = AcpiHwRead (ReturnValue, Reg);\n> +    return (Status);\n>   }\n>   \n>   ACPI_EXPORT_SYMBOL (AcpiRead)\n> @@ -348,67 +278,13 @@ AcpiWrite (\n>       UINT64                  Value,\n>       ACPI_GENERIC_ADDRESS    *Reg)\n>   {\n> -    UINT32                  Width;\n> -    UINT64                  Address;\n>       ACPI_STATUS             Status;\n>   \n>   \n>       ACPI_FUNCTION_NAME (AcpiWrite);\n>   \n>   \n> -    /* Validate contents of the GAS register. Allow 64-bit transfers */\n> -\n> -    Status = AcpiHwValidateRegister (Reg, 64, &Address);\n> -    if (ACPI_FAILURE (Status))\n> -    {\n> -        return (Status);\n> -    }\n> -\n> -    /*\n> -     * Two address spaces supported: Memory or IO. PCI_Config is\n> -     * not supported here because the GAS structure is insufficient\n> -     */\n> -    if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY)\n> -    {\n> -        Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS)\n> -            Address, Value, Reg->BitWidth);\n> -        if (ACPI_FAILURE (Status))\n> -        {\n> -            return (Status);\n> -        }\n> -    }\n> -    else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */\n> -    {\n> -        Width = Reg->BitWidth;\n> -        if (Width == 64)\n> -        {\n> -            Width = 32; /* Break into two 32-bit transfers */\n> -        }\n> -\n> -        Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)\n> -            Address, ACPI_LODWORD (Value), Width);\n> -        if (ACPI_FAILURE (Status))\n> -        {\n> -            return (Status);\n> -        }\n> -\n> -        if (Reg->BitWidth == 64)\n> -        {\n> -            Status = AcpiHwWritePort ((ACPI_IO_ADDRESS)\n> -                (Address + 4), ACPI_HIDWORD (Value), 32);\n> -            if (ACPI_FAILURE (Status))\n> -            {\n> -                return (Status);\n> -            }\n> -        }\n> -    }\n> -\n> -    ACPI_DEBUG_PRINT ((ACPI_DB_IO,\n> -        \"Wrote: %8.8X%8.8X width %2d   to %8.8X%8.8X (%s)\\n\",\n> -        ACPI_FORMAT_UINT64 (Value), Reg->BitWidth,\n> -        ACPI_FORMAT_UINT64 (Address),\n> -        AcpiUtGetRegionName (Reg->SpaceId)));\n> -\n> +    Status = AcpiHwWrite (Value, Reg);\n>       return (Status);\n>   }\n>   \n> diff --git a/src/acpica/source/components/namespace/nsconvert.c b/src/acpica/source/components/namespace/nsconvert.c\n> index daf8f475..bb825895 100644\n> --- a/src/acpica/source/components/namespace/nsconvert.c\n> +++ b/src/acpica/source/components/namespace/nsconvert.c\n> @@ -191,8 +191,7 @@ AcpiNsConvertToInteger (\n>   \n>           /* String-to-Integer conversion */\n>   \n> -        Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer,\n> -            AcpiGbl_IntegerByteWidth, &Value);\n> +        Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer, &Value);\n>           if (ACPI_FAILURE (Status))\n>           {\n>               return (Status);\n> diff --git a/src/acpica/source/components/tables/tbxface.c b/src/acpica/source/components/tables/tbxface.c\n> index d8cb6b18..6393bdac 100644\n> --- a/src/acpica/source/components/tables/tbxface.c\n> +++ b/src/acpica/source/components/tables/tbxface.c\n> @@ -300,10 +300,13 @@ AcpiReallocateRootTable (\n>   \n>   \n>       /*\n> -     * Only reallocate the root table if the host provided a static buffer\n> -     * for the table array in the call to AcpiInitializeTables.\n> +     * If there are tables unverified, it is required to reallocate the\n> +     * root table list to clean up invalid table entries. Otherwise only\n> +     * reallocate the root table list if the host provided a static buffer\n> +     * for the table array in the call to AcpiInitializeTables().\n>        */\n> -    if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED)\n> +    if ((AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) &&\n> +        AcpiGbl_EnableTableValidation)\n>       {\n>           return_ACPI_STATUS (AE_SUPPORT);\n>       }\n> diff --git a/src/acpica/source/components/utilities/utstrsuppt.c b/src/acpica/source/components/utilities/utstrsuppt.c\n> new file mode 100644\n> index 00000000..9197a57a\n> --- /dev/null\n> +++ b/src/acpica/source/components/utilities/utstrsuppt.c\n> @@ -0,0 +1,613 @@\n> +/*******************************************************************************\n> + *\n> + * Module Name: utstrsuppt - Support functions for string-to-integer conversion\n> + *\n> + ******************************************************************************/\n> +\n> +/******************************************************************************\n> + *\n> + * 1. Copyright Notice\n> + *\n> + * Some or all of this work - Copyright (c) 1999 - 2017, Intel Corp.\n> + * All rights reserved.\n> + *\n> + * 2. License\n> + *\n> + * 2.1. This is your license from Intel Corp. under its intellectual property\n> + * rights. You may have additional license terms from the party that provided\n> + * you this software, covering your right to use that party's intellectual\n> + * property rights.\n> + *\n> + * 2.2. Intel grants, free of charge, to any person (\"Licensee\") obtaining a\n> + * copy of the source code appearing in this file (\"Covered Code\") an\n> + * irrevocable, perpetual, worldwide license under Intel's copyrights in the\n> + * base code distributed originally by Intel (\"Original Intel Code\") to copy,\n> + * make derivatives, distribute, use and display any portion of the Covered\n> + * Code in any form, with the right to sublicense such rights; and\n> + *\n> + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent\n> + * license (with the right to sublicense), under only those claims of Intel\n> + * patents that are infringed by the Original Intel Code, to make, use, sell,\n> + * offer to sell, and import the Covered Code and derivative works thereof\n> + * solely to the minimum extent necessary to exercise the above copyright\n> + * license, and in no event shall the patent license extend to any additions\n> + * to or modifications of the Original Intel Code. No other license or right\n> + * is granted directly or by implication, estoppel or otherwise;\n> + *\n> + * The above copyright and patent license is granted only if the following\n> + * conditions are met:\n> + *\n> + * 3. Conditions\n> + *\n> + * 3.1. Redistribution of Source with Rights to Further Distribute Source.\n> + * Redistribution of source code of any substantial portion of the Covered\n> + * Code or modification with rights to further distribute source must include\n> + * the above Copyright Notice, the above License, this list of Conditions,\n> + * and the following Disclaimer and Export Compliance provision. In addition,\n> + * Licensee must cause all Covered Code to which Licensee contributes to\n> + * contain a file documenting the changes Licensee made to create that Covered\n> + * Code and the date of any change. Licensee must include in that file the\n> + * documentation of any changes made by any predecessor Licensee. Licensee\n> + * must include a prominent statement that the modification is derived,\n> + * directly or indirectly, from Original Intel Code.\n> + *\n> + * 3.2. Redistribution of Source with no Rights to Further Distribute Source.\n> + * Redistribution of source code of any substantial portion of the Covered\n> + * Code or modification without rights to further distribute source must\n> + * include the following Disclaimer and Export Compliance provision in the\n> + * documentation and/or other materials provided with distribution. In\n> + * addition, Licensee may not authorize further sublicense of source of any\n> + * portion of the Covered Code, and must include terms to the effect that the\n> + * license from Licensee to its licensee is limited to the intellectual\n> + * property embodied in the software Licensee provides to its licensee, and\n> + * not to intellectual property embodied in modifications its licensee may\n> + * make.\n> + *\n> + * 3.3. Redistribution of Executable. Redistribution in executable form of any\n> + * substantial portion of the Covered Code or modification must reproduce the\n> + * above Copyright Notice, and the following Disclaimer and Export Compliance\n> + * provision in the documentation and/or other materials provided with the\n> + * distribution.\n> + *\n> + * 3.4. Intel retains all right, title, and interest in and to the Original\n> + * Intel Code.\n> + *\n> + * 3.5. Neither the name Intel nor any other trademark owned or controlled by\n> + * Intel shall be used in advertising or otherwise to promote the sale, use or\n> + * other dealings in products derived from or relating to the Covered Code\n> + * without prior written authorization from Intel.\n> + *\n> + * 4. Disclaimer and Export Compliance\n> + *\n> + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED\n> + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE\n> + * IS PROVIDED \"AS IS,\" AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,\n> + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY\n> + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY\n> + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A\n> + * PARTICULAR PURPOSE.\n> + *\n> + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES\n> + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR\n> + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,\n> + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY\n> + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL\n> + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS\n> + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY\n> + * LIMITED REMEDY.\n> + *\n> + * 4.3. Licensee shall not export, either directly or indirectly, any of this\n> + * software or system incorporating such software without first obtaining any\n> + * required license or other approval from the U. S. Department of Commerce or\n> + * any other agency or department of the United States Government. In the\n> + * event Licensee exports any such software from the United States or\n> + * re-exports any such software from a foreign destination, Licensee shall\n> + * ensure that the distribution and export/re-export of the software is in\n> + * compliance with all laws, regulations, orders, or other restrictions of the\n> + * U.S. Export Administration Regulations. Licensee agrees that neither it nor\n> + * any of its subsidiaries will export/re-export any technical data, process,\n> + * software, or service, directly or indirectly, to any country for which the\n> + * United States government or any agency thereof requires an export license,\n> + * other governmental approval, or letter of assurance, without first obtaining\n> + * such license, approval or letter.\n> + *\n> + *****************************************************************************\n> + *\n> + * Alternatively, you may choose to be licensed under the terms of the\n> + * following license:\n> + *\n> + * Redistribution and use in source and binary forms, with or without\n> + * modification, are permitted provided that the following conditions\n> + * are met:\n> + * 1. Redistributions of source code must retain the above copyright\n> + *    notice, this list of conditions, and the following disclaimer,\n> + *    without modification.\n> + * 2. Redistributions in binary form must reproduce at minimum a disclaimer\n> + *    substantially similar to the \"NO WARRANTY\" disclaimer below\n> + *    (\"Disclaimer\") and any redistribution must be conditioned upon\n> + *    including a substantially similar Disclaimer requirement for further\n> + *    binary redistribution.\n> + * 3. Neither the names of the above-listed copyright holders nor the names\n> + *    of any contributors may be used to endorse or promote products derived\n> + *    from this software without specific prior written permission.\n> + *\n> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n> + * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n> + *\n> + * Alternatively, you may choose to be licensed under the terms of the\n> + * GNU General Public License (\"GPL\") version 2 as published by the Free\n> + * Software Foundation.\n> + *\n> + *****************************************************************************/\n> +\n> +#include \"acpi.h\"\n> +#include \"accommon.h\"\n> +\n> +#define _COMPONENT          ACPI_UTILITIES\n> +        ACPI_MODULE_NAME    (\"utstrsuppt\")\n> +\n> +\n> +/* Local prototypes */\n> +\n> +static ACPI_STATUS\n> +AcpiUtInsertDigit (\n> +    UINT64                  *AccumulatedValue,\n> +    UINT32                  Base,\n> +    int                     AsciiDigit);\n> +\n> +static ACPI_STATUS\n> +AcpiUtStrtoulMultiply64 (\n> +    UINT64                  Multiplicand,\n> +    UINT64                  Multiplier,\n> +    UINT64                  *OutProduct);\n> +\n> +static ACPI_STATUS\n> +AcpiUtStrtoulAdd64 (\n> +    UINT64                  Addend1,\n> +    UINT64                  Addend2,\n> +    UINT64                  *OutSum);\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtConvertOctalString\n> + *\n> + * PARAMETERS:  String                  - Null terminated input string\n> + *              ReturnValuePtr          - Where the converted value is returned\n> + *\n> + * RETURN:      Status and 64-bit converted integer\n> + *\n> + * DESCRIPTION: Performs a base 8 conversion of the input string to an\n> + *              integer value, either 32 or 64 bits.\n> + *\n> + * NOTE:        Maximum 64-bit unsigned octal value is 01777777777777777777777\n> + *              Maximum 32-bit unsigned octal value is 037777777777\n> + *\n> + ******************************************************************************/\n> +\n> +ACPI_STATUS\n> +AcpiUtConvertOctalString (\n> +    char                    *String,\n> +    UINT64                  *ReturnValuePtr)\n> +{\n> +    UINT64                  AccumulatedValue = 0;\n> +    ACPI_STATUS             Status = AE_OK;\n> +\n> +\n> +    /* Convert each ASCII byte in the input string */\n> +\n> +    while (*String)\n> +    {\n> +        /* Character must be ASCII 0-7, otherwise terminate with no error */\n> +\n> +        if (!(ACPI_IS_OCTAL_DIGIT (*String)))\n> +        {\n> +            break;\n> +        }\n> +\n> +        /* Convert and insert this octal digit into the accumulator */\n> +\n> +        Status = AcpiUtInsertDigit (&AccumulatedValue, 8, *String);\n> +        if (ACPI_FAILURE (Status))\n> +        {\n> +            Status = AE_OCTAL_OVERFLOW;\n> +            break;\n> +        }\n> +\n> +        String++;\n> +    }\n> +\n> +    /* Always return the value that has been accumulated */\n> +\n> +    *ReturnValuePtr = AccumulatedValue;\n> +    return (Status);\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtConvertDecimalString\n> + *\n> + * PARAMETERS:  String                  - Null terminated input string\n> + *              ReturnValuePtr          - Where the converted value is returned\n> + *\n> + * RETURN:      Status and 64-bit converted integer\n> + *\n> + * DESCRIPTION: Performs a base 10 conversion of the input string to an\n> + *              integer value, either 32 or 64 bits.\n> + *\n> + * NOTE:        Maximum 64-bit unsigned decimal value is 18446744073709551615\n> + *              Maximum 32-bit unsigned decimal value is 4294967295\n> + *\n> + ******************************************************************************/\n> +\n> +ACPI_STATUS\n> +AcpiUtConvertDecimalString (\n> +    char                    *String,\n> +    UINT64                  *ReturnValuePtr)\n> +{\n> +    UINT64                  AccumulatedValue = 0;\n> +    ACPI_STATUS             Status = AE_OK;\n> +\n> +\n> +    /* Convert each ASCII byte in the input string */\n> +\n> +    while (*String)\n> +    {\n> +        /* Character must be ASCII 0-9, otherwise terminate with no error */\n> +\n> +        if (!isdigit (*String))\n> +        {\n> +           break;\n> +        }\n> +\n> +        /* Convert and insert this decimal digit into the accumulator */\n> +\n> +        Status = AcpiUtInsertDigit (&AccumulatedValue, 10, *String);\n> +        if (ACPI_FAILURE (Status))\n> +        {\n> +            Status = AE_DECIMAL_OVERFLOW;\n> +            break;\n> +        }\n> +\n> +        String++;\n> +    }\n> +\n> +    /* Always return the value that has been accumulated */\n> +\n> +    *ReturnValuePtr = AccumulatedValue;\n> +    return (Status);\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtConvertHexString\n> + *\n> + * PARAMETERS:  String                  - Null terminated input string\n> + *              ReturnValuePtr          - Where the converted value is returned\n> + *\n> + * RETURN:      Status and 64-bit converted integer\n> + *\n> + * DESCRIPTION: Performs a base 16 conversion of the input string to an\n> + *              integer value, either 32 or 64 bits.\n> + *\n> + * NOTE:        Maximum 64-bit unsigned hex value is 0xFFFFFFFFFFFFFFFF\n> + *              Maximum 32-bit unsigned hex value is 0xFFFFFFFF\n> + *\n> + ******************************************************************************/\n> +\n> +ACPI_STATUS\n> +AcpiUtConvertHexString (\n> +    char                    *String,\n> +    UINT64                  *ReturnValuePtr)\n> +{\n> +    UINT64                  AccumulatedValue = 0;\n> +    ACPI_STATUS             Status = AE_OK;\n> +\n> +\n> +    /* Convert each ASCII byte in the input string */\n> +\n> +    while (*String)\n> +    {\n> +        /* Must be ASCII A-F, a-f, or 0-9, otherwise terminate with no error */\n> +\n> +        if (!isxdigit (*String))\n> +        {\n> +            break;\n> +        }\n> +\n> +        /* Convert and insert this hex digit into the accumulator */\n> +\n> +        Status = AcpiUtInsertDigit (&AccumulatedValue, 16, *String);\n> +        if (ACPI_FAILURE (Status))\n> +        {\n> +            Status = AE_HEX_OVERFLOW;\n> +            break;\n> +        }\n> +\n> +        String++;\n> +    }\n> +\n> +    /* Always return the value that has been accumulated */\n> +\n> +    *ReturnValuePtr = AccumulatedValue;\n> +    return (Status);\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtRemoveLeadingZeros\n> + *\n> + * PARAMETERS:  String                  - Pointer to input ASCII string\n> + *\n> + * RETURN:      Next character after any leading zeros. This character may be\n> + *              used by the caller to detect end-of-string.\n> + *\n> + * DESCRIPTION: Remove any leading zeros in the input string. Return the\n> + *              next character after the final ASCII zero to enable the caller\n> + *              to check for the end of the string (NULL terminator).\n> + *\n> + ******************************************************************************/\n> +\n> +char\n> +AcpiUtRemoveLeadingZeros (\n> +    char                    **String)\n> +{\n> +\n> +    while (**String == ACPI_ASCII_ZERO)\n> +    {\n> +        *String += 1;\n> +    }\n> +\n> +    return (**String);\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtRemoveWhitespace\n> + *\n> + * PARAMETERS:  String                  - Pointer to input ASCII string\n> + *\n> + * RETURN:      Next character after any whitespace. This character may be\n> + *              used by the caller to detect end-of-string.\n> + *\n> + * DESCRIPTION: Remove any leading whitespace in the input string. Return the\n> + *              next character after the final ASCII zero to enable the caller\n> + *              to check for the end of the string (NULL terminator).\n> + *\n> + ******************************************************************************/\n> +\n> +char\n> +AcpiUtRemoveWhitespace (\n> +    char                    **String)\n> +{\n> +\n> +    while (isspace ((UINT8) **String))\n> +    {\n> +        *String += 1;\n> +    }\n> +\n> +    return (**String);\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtDetectHexPrefix\n> + *\n> + * PARAMETERS:  String                  - Pointer to input ASCII string\n> + *\n> + * RETURN:      TRUE if a \"0x\" prefix was found at the start of the string\n> + *\n> + * DESCRIPTION: Detect and remove a hex \"0x\" prefix\n> + *\n> + ******************************************************************************/\n> +\n> +BOOLEAN\n> +AcpiUtDetectHexPrefix (\n> +    char                    **String)\n> +{\n> +\n> +    if ((**String == ACPI_ASCII_ZERO) &&\n> +        (tolower ((int) *(*String + 1)) == 'x'))\n> +    {\n> +        *String += 2;        /* Go past the leading 0x */\n> +        return (TRUE);\n> +    }\n> +\n> +    return (FALSE);     /* Not a hex string */\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtDetectOctalPrefix\n> + *\n> + * PARAMETERS:  String                  - Pointer to input ASCII string\n> + *\n> + * RETURN:      True if an octal \"0\" prefix was found at the start of the\n> + *              string\n> + *\n> + * DESCRIPTION: Detect and remove an octal prefix (zero)\n> + *\n> + ******************************************************************************/\n> +\n> +BOOLEAN\n> +AcpiUtDetectOctalPrefix (\n> +    char                    **String)\n> +{\n> +\n> +    if (**String == ACPI_ASCII_ZERO)\n> +    {\n> +        *String += 1;       /* Go past the leading 0 */\n> +        return (TRUE);\n> +    }\n> +\n> +    return (FALSE);     /* Not an octal string */\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtInsertDigit\n> + *\n> + * PARAMETERS:  AccumulatedValue        - Current value of the integer value\n> + *                                        accumulator. The new value is\n> + *                                        returned here.\n> + *              Base                    - Radix, either 8/10/16\n> + *              AsciiDigit              - ASCII single digit to be inserted\n> + *\n> + * RETURN:      Status and result of the convert/insert operation. The only\n> + *              possible returned exception code is numeric overflow of\n> + *              either the multiply or add conversion operations.\n> + *\n> + * DESCRIPTION: Generic conversion and insertion function for all bases:\n> + *\n> + *              1) Multiply the current accumulated/converted value by the\n> + *              base in order to make room for the new character.\n> + *\n> + *              2) Convert the new character to binary and add it to the\n> + *              current accumulated value.\n> + *\n> + *              Note: The only possible exception indicates an integer\n> + *              overflow (AE_NUMERIC_OVERFLOW)\n> + *\n> + ******************************************************************************/\n> +\n> +static ACPI_STATUS\n> +AcpiUtInsertDigit (\n> +    UINT64                  *AccumulatedValue,\n> +    UINT32                  Base,\n> +    int                     AsciiDigit)\n> +{\n> +    ACPI_STATUS             Status;\n> +    UINT64                  Product;\n> +\n> +\n> +     /* Make room in the accumulated value for the incoming digit */\n> +\n> +    Status = AcpiUtStrtoulMultiply64 (*AccumulatedValue, Base, &Product);\n> +    if (ACPI_FAILURE (Status))\n> +    {\n> +        return (Status);\n> +    }\n> +\n> +    /* Add in the new digit, and store the sum to the accumulated value */\n> +\n> +    Status = AcpiUtStrtoulAdd64 (Product, AcpiUtAsciiCharToHex (AsciiDigit),\n> +        AccumulatedValue);\n> +\n> +    return (Status);\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtStrtoulMultiply64\n> + *\n> + * PARAMETERS:  Multiplicand            - Current accumulated converted integer\n> + *              Multiplier              - Base/Radix\n> + *              OutProduct              - Where the product is returned\n> + *\n> + * RETURN:      Status and 64-bit product\n> + *\n> + * DESCRIPTION: Multiply two 64-bit values, with checking for 64-bit overflow as\n> + *              well as 32-bit overflow if necessary (if the current global\n> + *              integer width is 32).\n> + *\n> + ******************************************************************************/\n> +\n> +static ACPI_STATUS\n> +AcpiUtStrtoulMultiply64 (\n> +    UINT64                  Multiplicand,\n> +    UINT64                  Multiplier,\n> +    UINT64                  *OutProduct)\n> +{\n> +    UINT64                  Product;\n> +\n> +\n> +    /* Exit if either operand is zero */\n> +\n> +    *OutProduct = 0;\n> +    if (!Multiplicand || !Multiplier)\n> +    {\n> +        return (AE_OK);\n> +    }\n> +\n> +    /* Check for 64-bit overflow before the actual multiplication */\n> +\n> +    if (Multiplicand > (ACPI_UINT64_MAX / Multiplier))\n> +    {\n> +        return (AE_NUMERIC_OVERFLOW);\n> +    }\n> +\n> +    Product = Multiplicand * Multiplier;\n> +\n> +    /* Check for 32-bit overflow if necessary */\n> +\n> +    if ((AcpiGbl_IntegerBitWidth == 32) && (Product > ACPI_UINT32_MAX))\n> +    {\n> +        return (AE_NUMERIC_OVERFLOW);\n> +    }\n> +\n> +    *OutProduct = Product;\n> +    return (AE_OK);\n> +}\n> +\n> +\n> +/*******************************************************************************\n> + *\n> + * FUNCTION:    AcpiUtStrtoulAdd64\n> + *\n> + * PARAMETERS:  Addend1                 - Current accumulated converted integer\n> + *              Addend2                 - New hex value/char\n> + *              OutSum                  - Where sum is returned (Accumulator)\n> + *\n> + * RETURN:      Status and 64-bit sum\n> + *\n> + * DESCRIPTION: Add two 64-bit values, with checking for 64-bit overflow as\n> + *              well as 32-bit overflow if necessary (if the current global\n> + *              integer width is 32).\n> + *\n> + ******************************************************************************/\n> +\n> +static ACPI_STATUS\n> +AcpiUtStrtoulAdd64 (\n> +    UINT64                  Addend1,\n> +    UINT64                  Addend2,\n> +    UINT64                  *OutSum)\n> +{\n> +    UINT64                  Sum;\n> +\n> +\n> +    /* Check for 64-bit overflow before the actual addition */\n> +\n> +    if ((Addend1 > 0) && (Addend2 > (ACPI_UINT64_MAX - Addend1)))\n> +    {\n> +        return (AE_NUMERIC_OVERFLOW);\n> +    }\n> +\n> +    Sum = Addend1 + Addend2;\n> +\n> +    /* Check for 32-bit overflow if necessary */\n> +\n> +    if ((AcpiGbl_IntegerBitWidth == 32) && (Sum > ACPI_UINT32_MAX))\n> +    {\n> +        return (AE_NUMERIC_OVERFLOW);\n> +    }\n> +\n> +    *OutSum = Sum;\n> +    return (AE_OK);\n> +}\n> diff --git a/src/acpica/source/components/utilities/utstrtoul64.c b/src/acpica/source/components/utilities/utstrtoul64.c\n> index d91e9084..34cef95b 100644\n> --- a/src/acpica/source/components/utilities/utstrtoul64.c\n> +++ b/src/acpica/source/components/utilities/utstrtoul64.c\n> @@ -1,6 +1,7 @@\n>   /*******************************************************************************\n>    *\n> - * Module Name: utstrtoul64 - string to 64-bit integer support\n> + * Module Name: utstrtoul64 - String-to-integer conversion support for both\n> + *                            64-bit and 32-bit integers\n>    *\n>    ******************************************************************************/\n>   \n> @@ -152,84 +153,47 @@\n>   #include \"acpi.h\"\n>   #include \"accommon.h\"\n>   \n> -\n> -/*******************************************************************************\n> - *\n> - * The functions in this module satisfy the need for 64-bit string-to-integer\n> - * conversions on both 32-bit and 64-bit platforms.\n> - *\n> - ******************************************************************************/\n> -\n>   #define _COMPONENT          ACPI_UTILITIES\n>           ACPI_MODULE_NAME    (\"utstrtoul64\")\n>   \n> -/* Local prototypes */\n> -\n> -static UINT64\n> -AcpiUtStrtoulBase10 (\n> -    char                    *String,\n> -    UINT32                  Flags);\n> -\n> -static UINT64\n> -AcpiUtStrtoulBase16 (\n> -    char                    *String,\n> -    UINT32                  Flags);\n> -\n>   \n>   /*******************************************************************************\n>    *\n> - * String conversion rules as written in the ACPI specification. The error\n> - * conditions and behavior are different depending on the type of conversion.\n> - *\n> - *\n> - * Implicit data type conversion: string-to-integer\n> - * --------------------------------------------------\n> - *\n> - * Base is always 16. This is the ACPI_STRTOUL_BASE16 case.\n> - *\n> - * Example:\n> - *      Add (\"BA98\", Arg0, Local0)\n> - *\n> - * The integer is initialized to the value zero.\n> - * The ASCII string is interpreted as a hexadecimal constant.\n> - *\n> - *  1)  A \"0x\" prefix is not allowed. However, ACPICA allows this for\n> - *      compatibility with previous ACPICA. (NO ERROR)\n> - *\n> - *  2)  Terminates when the size of an integer is reached (32 or 64 bits).\n> - *      (NO ERROR)\n> - *\n> - *  3)  The first non-hex character terminates the conversion without error.\n> - *      (NO ERROR)\n> - *\n> - *  4)  Conversion of a null (zero-length) string to an integer is not\n> - *      allowed. However, ACPICA allows this for compatibility with previous\n> - *      ACPICA. This conversion returns the value 0. (NO ERROR)\n> + * This module contains the top-level string to 64/32-bit unsigned integer\n> + * conversion functions:\n>    *\n> + *  1) A standard strtoul() function that supports 64-bit integers, base\n> + *     8/10/16, with integer overflow support. This is used mainly by the\n> + *     iASL compiler, which implements tighter constraints on integer\n> + *     constants than the runtime (interpreter) integer-to-string conversions.\n> + *  2) Runtime \"Explicit conversion\" as defined in the ACPI specification.\n> + *  3) Runtime \"Implicit conversion\" as defined in the ACPI specification.\n>    *\n> - * Explicit data type conversion:  ToInteger() with string operand\n> - * ---------------------------------------------------------------\n> + * Current users of this module:\n>    *\n> - * Base is either 10 (default) or 16 (with 0x prefix)\n> - *\n> - * Examples:\n> - *      ToInteger (\"1000\")\n> - *      ToInteger (\"0xABCD\")\n> - *\n> - *  1)  Can be (must be) either a decimal or hexadecimal numeric string.\n> - *      A hex value must be prefixed by \"0x\" or it is interpreted as a decimal.\n> + *  iASL        - Preprocessor (constants and math expressions)\n> + *  iASL        - Main parser, conversion of constants to integers\n> + *  iASL        - Data Table Compiler parser (constants and math expressions)\n> + *  Interpreter - Implicit and explicit conversions, GPE method names\n> + *  Interpreter - Repair code for return values from predefined names\n> + *  Debugger    - Command line input string conversion\n> + *  AcpiDump    - ACPI table physical addresses\n> + *  AcpiExec    - Support for namespace overrides\n>    *\n> - *  2)  The value must not exceed the maximum of an integer value. ACPI spec\n> - *      states the behavior is \"unpredictable\", so ACPICA matches the behavior\n> - *      of the implicit conversion case.(NO ERROR)\n> + * Notes concerning users of these interfaces:\n>    *\n> - *  3)  Behavior on the first non-hex character is not specified by the ACPI\n> - *      spec, so ACPICA matches the behavior of the implicit conversion case\n> - *      and terminates. (NO ERROR)\n> + * AcpiGbl_IntegerByteWidth is used to set the 32/64 bit limit for explicit\n> + * and implicit conversions. This global must be set to the proper width.\n> + * For the core ACPICA code, the width depends on the DSDT version. For the\n> + * AcpiUtStrtoul64 interface, all conversions are 64 bits. This interface is\n> + * used primarily for iASL, where the default width is 64 bits for all parsers,\n> + * but error checking is performed later to flag cases where a 64-bit constant\n> + * is wrongly defined in a 32-bit DSDT/SSDT.\n>    *\n> - *  4)  A null (zero-length) string is illegal.\n> - *      However, ACPICA allows this for compatibility with previous ACPICA.\n> - *      This conversion returns the value 0. (NO ERROR)\n> + * In ACPI, the only place where octal numbers are supported is within\n> + * the ASL language itself. This is implemented via the main AcpiUtStrtoul64\n> + * interface. According the ACPI specification, there is no ACPI runtime\n> + * support (explicit/implicit) for octal string conversions.\n>    *\n>    ******************************************************************************/\n>   \n> @@ -238,261 +202,301 @@ AcpiUtStrtoulBase16 (\n>    *\n>    * FUNCTION:    AcpiUtStrtoul64\n>    *\n> - * PARAMETERS:  String                  - Null terminated input string\n> - *              Flags                   - Conversion info, see below\n> + * PARAMETERS:  String                  - Null terminated input string,\n> + *                                        must be a valid pointer\n>    *              ReturnValue             - Where the converted integer is\n> - *                                        returned\n> - *\n> - * RETURN:      Status and Converted value\n> + *                                        returned. Must be a valid pointer\n>    *\n> - * DESCRIPTION: Convert a string into an unsigned value. Performs either a\n> - *              32-bit or 64-bit conversion, depending on the input integer\n> - *              size in Flags (often the current mode of the interpreter).\n> + * RETURN:      Status and converted integer. Returns an exception on a\n> + *              64-bit numeric overflow\n>    *\n> - * Values for Flags:\n> - *      ACPI_STRTOUL_32BIT      - Max integer value is 32 bits\n> - *      ACPI_STRTOUL_64BIT      - Max integer value is 64 bits\n> - *      ACPI_STRTOUL_BASE16     - Input string is hexadecimal. Default\n> - *                                is 10/16 based on string prefix (0x).\n> + * DESCRIPTION: Convert a string into an unsigned integer. Always performs a\n> + *              full 64-bit conversion, regardless of the current global\n> + *              integer width. Supports Decimal, Hex, and Octal strings.\n>    *\n> - * NOTES:\n> - *   Negative numbers are not supported, as they are not supported by ACPI.\n> + * Current users of this function:\n>    *\n> - *   Supports only base 16 or base 10 strings/values. Does not\n> - *   support Octal strings, as these are not supported by ACPI.\n> - *\n> - * Current users of this support:\n> - *\n> - *  Interpreter - Implicit and explicit conversions, GPE method names\n> - *  Debugger    - Command line input string conversion\n> - *  iASL        - Main parser, conversion of constants to integers\n> - *  iASL        - Data Table Compiler parser (constant math expressions)\n> - *  iASL        - Preprocessor (constant math expressions)\n> - *  AcpiDump    - Input table addresses\n> - *  AcpiExec    - Testing of the AcpiUtStrtoul64 function\n> - *\n> - * Note concerning callers:\n> - *   AcpiGbl_IntegerByteWidth can be used to set the 32/64 limit. If used,\n> - *   this global should be set to the proper width. For the core ACPICA code,\n> - *   this width depends on the DSDT version. For iASL, the default byte\n> - *   width is always 8 for the parser, but error checking is performed later\n> - *   to flag cases where a 64-bit constant is defined in a 32-bit DSDT/SSDT.\n> + *  iASL        - Preprocessor (constants and math expressions)\n> + *  iASL        - Main ASL parser, conversion of ASL constants to integers\n> + *  iASL        - Data Table Compiler parser (constants and math expressions)\n> + *  Interpreter - Repair code for return values from predefined names\n> + *  AcpiDump    - ACPI table physical addresses\n> + *  AcpiExec    - Support for namespace overrides\n>    *\n>    ******************************************************************************/\n>   \n>   ACPI_STATUS\n>   AcpiUtStrtoul64 (\n>       char                    *String,\n> -    UINT32                  Flags,\n>       UINT64                  *ReturnValue)\n>   {\n>       ACPI_STATUS             Status = AE_OK;\n> -    UINT32                  Base;\n> +    UINT8                   OriginalBitWidth;\n> +    UINT32                  Base = 10;          /* Default is decimal */\n>   \n>   \n>       ACPI_FUNCTION_TRACE_STR (UtStrtoul64, String);\n>   \n>   \n> -    /* Parameter validation */\n> -\n> -    if (!String || !ReturnValue)\n> -    {\n> -        return_ACPI_STATUS (AE_BAD_PARAMETER);\n> -    }\n> -\n>       *ReturnValue = 0;\n>   \n> -    /* Check for zero-length string, returns 0 */\n> +    /* A NULL return string returns a value of zero */\n>   \n>       if (*String == 0)\n>       {\n>           return_ACPI_STATUS (AE_OK);\n>       }\n>   \n> -    /* Skip over any white space at start of string */\n> -\n> -    while (isspace ((int) *String))\n> -    {\n> -        String++;\n> -    }\n> -\n> -    /* End of string? return 0 */\n> -\n> -    if (*String == 0)\n> +    if (!AcpiUtRemoveWhitespace (&String))\n>       {\n>           return_ACPI_STATUS (AE_OK);\n>       }\n>   \n>       /*\n> -     * 1) The \"0x\" prefix indicates base 16. Per the ACPI specification,\n> -     * the \"0x\" prefix is only allowed for implicit (non-strict) conversions.\n> -     * However, we always allow it for compatibility with older ACPICA.\n> +     * 1) Check for a hex constant. A \"0x\" prefix indicates base 16.\n>        */\n> -    if ((*String == ACPI_ASCII_ZERO) &&\n> -        (tolower ((int) *(String + 1)) == 'x'))\n> +    if (AcpiUtDetectHexPrefix (&String))\n>       {\n> -        String += 2;    /* Go past the 0x */\n> -        if (*String == 0)\n> -        {\n> -            return_ACPI_STATUS (AE_OK);     /* Return value 0 */\n> -        }\n> -\n>           Base = 16;\n>       }\n>   \n> -    /* 2) Force to base 16 (implicit conversion case) */\n> -\n> -    else if (Flags & ACPI_STRTOUL_BASE16)\n> +    /*\n> +     * 2) Check for an octal constant, defined to be a leading zero\n> +     * followed by sequence of octal digits (0-7)\n> +     */\n> +    else if (AcpiUtDetectOctalPrefix (&String))\n>       {\n> -        Base = 16;\n> +        Base = 8;\n>       }\n>   \n> -    /* 3) Default fallback is to Base 10 */\n> -\n> -    else\n> +    if (!AcpiUtRemoveLeadingZeros (&String))\n>       {\n> -        Base = 10;\n> +        return_ACPI_STATUS (AE_OK);     /* Return value 0 */\n>       }\n>   \n> -    /* Skip all leading zeros */\n> +    /*\n> +     * Force a full 64-bit conversion. The caller (usually iASL) must\n> +     * check for a 32-bit overflow later as necessary (If current mode\n> +     * is 32-bit, meaning a 32-bit DSDT).\n> +     */\n> +    OriginalBitWidth = AcpiGbl_IntegerBitWidth;\n> +    AcpiGbl_IntegerBitWidth = 64;\n>   \n> -    while (*String == ACPI_ASCII_ZERO)\n> +    /*\n> +     * Perform the base 8, 10, or 16 conversion. A 64-bit numeric overflow\n> +     * will return an exception (to allow iASL to flag the statement).\n> +     */\n> +    switch (Base)\n>       {\n> -        String++;\n> -        if (*String == 0)\n> -        {\n> -            return_ACPI_STATUS (AE_OK);     /* Return value 0 */\n> -        }\n> +    case 8:\n> +        Status = AcpiUtConvertOctalString (String, ReturnValue);\n> +        break;\n> +\n> +    case 10:\n> +        Status = AcpiUtConvertDecimalString (String, ReturnValue);\n> +        break;\n> +\n> +    case 16:\n> +    default:\n> +        Status = AcpiUtConvertHexString (String, ReturnValue);\n> +        break;\n>       }\n>   \n> -    /* Perform the base 16 or 10 conversion */\n> -\n> -    if (Base == 16)\n> -    {\n> -        *ReturnValue = AcpiUtStrtoulBase16 (String, Flags);\n> -    }\n> -    else\n> -    {\n> -        *ReturnValue = AcpiUtStrtoulBase10 (String, Flags);\n> -    }\n> +    /* Only possible exception from above is a 64-bit overflow */\n>   \n> +    AcpiGbl_IntegerBitWidth = OriginalBitWidth;\n>       return_ACPI_STATUS (Status);\n>   }\n>   \n>   \n>   /*******************************************************************************\n>    *\n> - * FUNCTION:    AcpiUtStrtoulBase10\n> + * FUNCTION:    AcpiUtImplicitStrtoul64\n> + *\n> + * PARAMETERS:  String                  - Null terminated input string,\n> + *                                        must be a valid pointer\n> + *\n> + * RETURN:      Converted integer\n> + *\n> + * DESCRIPTION: Perform a 64-bit conversion with restrictions placed upon\n> + *              an \"implicit conversion\" by the ACPI specification. Used by\n> + *              many ASL operators that require an integer operand, and support\n> + *              an automatic (implicit) conversion from a string operand\n> + *              to the final integer operand. The major restriction is that\n> + *              only hex strings are supported.\n> + *\n> + * -----------------------------------------------------------------------------\n> + *\n> + * Base is always 16, either with or without the 0x prefix. Decimal and\n> + * Octal strings are not supported, as per the ACPI specification.\n> + *\n> + * Examples (both are hex values):\n> + *      Add (\"BA98\", Arg0, Local0)\n> + *      Subtract (\"0x12345678\", Arg1, Local1)\n> + *\n> + * Conversion rules as extracted from the ACPI specification:\n> + *\n> + *  The converted integer is initialized to the value zero.\n> + *  The ASCII string is always interpreted as a hexadecimal constant.\n> + *\n> + *  1)  According to the ACPI specification, a \"0x\" prefix is not allowed.\n> + *      However, ACPICA allows this as an ACPI extension on general\n> + *      principle. (NO ERROR)\n> + *\n> + *  2)  The conversion terminates when the size of an integer is reached\n> + *      (32 or 64 bits). There are no numeric overflow conditions. (NO ERROR)\n> + *\n> + *  3)  The first non-hex character terminates the conversion and returns\n> + *      the current accumulated value of the converted integer (NO ERROR).\n>    *\n> - * PARAMETERS:  String                  - Null terminated input string\n> - *              Flags                   - Conversion info\n> + *  4)  Conversion of a null (zero-length) string to an integer is\n> + *      technically not allowed. However, ACPICA allows this as an ACPI\n> + *      extension. The conversion returns the value 0. (NO ERROR)\n>    *\n> - * RETURN:      64-bit converted integer\n> + * NOTE: There are no error conditions returned by this function. At\n> + * the minimum, a value of zero is returned.\n>    *\n> - * DESCRIPTION: Performs a base 10 conversion of the input string to an\n> - *              integer value, either 32 or 64 bits.\n> - *              Note: String must be valid and non-null.\n> + * Current users of this function:\n> + *\n> + *  Interpreter - All runtime implicit conversions, as per ACPI specification\n> + *  iASL        - Data Table Compiler parser (constants and math expressions)\n>    *\n>    ******************************************************************************/\n>   \n> -static UINT64\n> -AcpiUtStrtoulBase10 (\n> -    char                    *String,\n> -    UINT32                  Flags)\n> +UINT64\n> +AcpiUtImplicitStrtoul64 (\n> +    char                    *String)\n>   {\n> -    int                     AsciiDigit;\n> -    UINT64                  NextValue;\n> -    UINT64                  ReturnValue = 0;\n> +    UINT64                  ConvertedInteger = 0;\n>   \n>   \n> -    /* Main loop: convert each ASCII byte in the input string */\n> -\n> -    while (*String)\n> -    {\n> -        AsciiDigit = *String;\n> -        if (!isdigit (AsciiDigit))\n> -        {\n> -            /* Not ASCII 0-9, terminate */\n> +    ACPI_FUNCTION_TRACE_STR (UtImplicitStrtoul64, String);\n>   \n> -            goto Exit;\n> -        }\n>   \n> -        /* Convert and insert (add) the decimal digit */\n> -\n> -        AcpiUtShortMultiply (ReturnValue, 10, &NextValue);\n> -        NextValue += (AsciiDigit - ACPI_ASCII_ZERO);\n> -\n> -        /* Check for overflow (32 or 64 bit) - return current converted value */\n> +    if (!AcpiUtRemoveWhitespace (&String))\n> +    {\n> +        return_VALUE (0);\n> +    }\n>   \n> -        if (((Flags & ACPI_STRTOUL_32BIT) && (NextValue > ACPI_UINT32_MAX)) ||\n> -            (NextValue < ReturnValue)) /* 64-bit overflow case */\n> -        {\n> -            goto Exit;\n> -        }\n> +    /*\n> +     * Per the ACPI specification, only hexadecimal is supported for\n> +     * implicit conversions, and the \"0x\" prefix is \"not allowed\".\n> +     * However, allow a \"0x\" prefix as an ACPI extension.\n> +     */\n> +    AcpiUtDetectHexPrefix (&String);\n>   \n> -        ReturnValue = NextValue;\n> -        String++;\n> +    if (!AcpiUtRemoveLeadingZeros (&String))\n> +    {\n> +        return_VALUE (0);\n>       }\n>   \n> -Exit:\n> -    return (ReturnValue);\n> +    /*\n> +     * Ignore overflow as per the ACPI specification. This is implemented by\n> +     * ignoring the return status from the conversion function called below.\n> +     * On overflow, the input string is simply truncated.\n> +     */\n> +    AcpiUtConvertHexString (String, &ConvertedInteger);\n> +    return_VALUE (ConvertedInteger);\n>   }\n>   \n>   \n>   /*******************************************************************************\n>    *\n> - * FUNCTION:    AcpiUtStrtoulBase16\n> + * FUNCTION:    AcpiUtExplicitStrtoul64\n> + *\n> + * PARAMETERS:  String                  - Null terminated input string,\n> + *                                        must be a valid pointer\n>    *\n> - * PARAMETERS:  String                  - Null terminated input string\n> - *              Flags                   - conversion info\n> + * RETURN:      Converted integer\n>    *\n> - * RETURN:      64-bit converted integer\n> + * DESCRIPTION: Perform a 64-bit conversion with the restrictions placed upon\n> + *              an \"explicit conversion\" by the ACPI specification. The\n> + *              main restriction is that only hex and decimal are supported.\n>    *\n> - * DESCRIPTION: Performs a base 16 conversion of the input string to an\n> - *              integer value, either 32 or 64 bits.\n> - *              Note: String must be valid and non-null.\n> + * -----------------------------------------------------------------------------\n> + *\n> + * Base is either 10 (default) or 16 (with 0x prefix). Octal (base 8) strings\n> + * are not supported, as per the ACPI specification.\n> + *\n> + * Examples:\n> + *      ToInteger (\"1000\")      Decimal\n> + *      ToInteger (\"0xABCD\")    Hex\n> + *\n> + * Conversion rules as extracted from the ACPI specification:\n> + *\n> + *  1)  The input string is either a decimal or hexadecimal numeric string.\n> + *      A hex value must be prefixed by \"0x\" or it is interpreted as decimal.\n> + *\n> + *  2)  The value must not exceed the maximum of an integer value\n> + *      (32 or 64 bits). The ACPI specification states the behavior is\n> + *      \"unpredictable\", so ACPICA matches the behavior of the implicit\n> + *      conversion case. There are no numeric overflow conditions. (NO ERROR)\n> + *\n> + *  3)  Behavior on the first non-hex character is not defined by the ACPI\n> + *      specification (for the ToInteger operator), so ACPICA matches the\n> + *      behavior of the implicit conversion case. It terminates the\n> + *      conversion and returns the current accumulated value of the converted\n> + *      integer. (NO ERROR)\n> + *\n> + *  4)  Conversion of a null (zero-length) string to an integer is\n> + *      technically not allowed. However, ACPICA allows this as an ACPI\n> + *      extension. The conversion returns the value 0. (NO ERROR)\n> + *\n> + * NOTE: There are no error conditions returned by this function. At the\n> + * minimum, a value of zero is returned.\n> + *\n> + * Current users of this function:\n> + *\n> + *  Interpreter - Runtime ASL ToInteger operator, as per the ACPI specification\n>    *\n>    ******************************************************************************/\n>   \n> -static UINT64\n> -AcpiUtStrtoulBase16 (\n> -    char                    *String,\n> -    UINT32                  Flags)\n> +UINT64\n> +AcpiUtExplicitStrtoul64 (\n> +    char                    *String)\n>   {\n> -    int                     AsciiDigit;\n> -    UINT32                  ValidDigits = 1;\n> -    UINT64                  ReturnValue = 0;\n> -\n> +    UINT64                  ConvertedInteger = 0;\n> +    UINT32                  Base = 10;          /* Default is decimal */\n>   \n> -    /* Main loop: convert each ASCII byte in the input string */\n>   \n> -    while (*String)\n> -    {\n> -        /* Check for overflow (32 or 64 bit) - return current converted value */\n> +    ACPI_FUNCTION_TRACE_STR (UtExplicitStrtoul64, String);\n>   \n> -        if ((ValidDigits > 16) ||\n> -            ((ValidDigits > 8) && (Flags & ACPI_STRTOUL_32BIT)))\n> -        {\n> -            goto Exit;\n> -        }\n>   \n> -        AsciiDigit = *String;\n> -        if (!isxdigit (AsciiDigit))\n> -        {\n> -            /* Not Hex ASCII A-F, a-f, or 0-9, terminate */\n> -\n> -            goto Exit;\n> -        }\n> +    if (!AcpiUtRemoveWhitespace (&String))\n> +    {\n> +        return_VALUE (0);\n> +    }\n>   \n> -        /* Convert and insert the hex digit */\n> +    /*\n> +     * Only Hex and Decimal are supported, as per the ACPI specification.\n> +     * A \"0x\" prefix indicates hex; otherwise decimal is assumed.\n> +     */\n> +    if (AcpiUtDetectHexPrefix (&String))\n> +    {\n> +        Base = 16;\n> +    }\n>   \n> -        AcpiUtShortShiftLeft (ReturnValue, 4, &ReturnValue);\n> -        ReturnValue |= AcpiUtAsciiCharToHex (AsciiDigit);\n> +    if (!AcpiUtRemoveLeadingZeros (&String))\n> +    {\n> +        return_VALUE (0);\n> +    }\n>   \n> -        String++;\n> -        ValidDigits++;\n> +    /*\n> +     * Ignore overflow as per the ACPI specification. This is implemented by\n> +     * ignoring the return status from the conversion functions called below.\n> +     * On overflow, the input string is simply truncated.\n> +     */\n> +    switch (Base)\n> +    {\n> +    case 10:\n> +    default:\n> +        AcpiUtConvertDecimalString (String, &ConvertedInteger);\n> +        break;\n> +\n> +    case 16:\n> +        AcpiUtConvertHexString (String, &ConvertedInteger);\n> +        break;\n>       }\n>   \n> -Exit:\n> -    return (ReturnValue);\n> +    return_VALUE (ConvertedInteger);\n>   }\n> diff --git a/src/acpica/source/include/acexcep.h b/src/acpica/source/include/acexcep.h\n> index 1405e411..d808f275 100644\n> --- a/src/acpica/source/include/acexcep.h\n> +++ b/src/acpica/source/include/acexcep.h\n> @@ -237,8 +237,12 @@ typedef struct acpi_exception_info\n>   #define AE_NOT_CONFIGURED               EXCEP_ENV (0x001C)\n>   #define AE_ACCESS                       EXCEP_ENV (0x001D)\n>   #define AE_IO_ERROR                     EXCEP_ENV (0x001E)\n> +#define AE_NUMERIC_OVERFLOW             EXCEP_ENV (0x001F)\n> +#define AE_HEX_OVERFLOW                 EXCEP_ENV (0x0020)\n> +#define AE_DECIMAL_OVERFLOW             EXCEP_ENV (0x0021)\n> +#define AE_OCTAL_OVERFLOW               EXCEP_ENV (0x0022)\n>   \n> -#define AE_CODE_ENV_MAX                 0x001E\n> +#define AE_CODE_ENV_MAX                 0x0022\n>   \n>   \n>   /*\n> @@ -371,7 +375,11 @@ static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Env[] =\n>       EXCEP_TXT (\"AE_OWNER_ID_LIMIT\",             \"There are no more Owner IDs available for ACPI tables or control methods\"),\n>       EXCEP_TXT (\"AE_NOT_CONFIGURED\",             \"The interface is not part of the current subsystem configuration\"),\n>       EXCEP_TXT (\"AE_ACCESS\",                     \"Permission denied for the requested operation\"),\n> -    EXCEP_TXT (\"AE_IO_ERROR\",                   \"An I/O error occurred\")\n> +    EXCEP_TXT (\"AE_IO_ERROR\",                   \"An I/O error occurred\"),\n> +    EXCEP_TXT (\"AE_NUMERIC_OVERFLOW\",           \"Overflow during string-to-integer conversion\"),\n> +    EXCEP_TXT (\"AE_HEX_OVERFLOW\",               \"Overflow during ASCII hex-to-binary conversion\"),\n> +    EXCEP_TXT (\"AE_DECIMAL_OVERFLOW\",           \"Overflow during ASCII decimal-to-binary conversion\"),\n> +    EXCEP_TXT (\"AE_OCTAL_OVERFLOW\",             \"Overflow during ASCII octal-to-binary conversion\")\n>   };\n>   \n>   static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Pgm[] =\n> diff --git a/src/acpica/source/include/achware.h b/src/acpica/source/include/achware.h\n> index f33be8c4..c3bf8f15 100644\n> --- a/src/acpica/source/include/achware.h\n> +++ b/src/acpica/source/include/achware.h\n> @@ -185,12 +185,12 @@ AcpiHwValidateRegister (\n>   \n>   ACPI_STATUS\n>   AcpiHwRead (\n> -    UINT32                  *Value,\n> +    UINT64                  *Value,\n>       ACPI_GENERIC_ADDRESS    *Reg);\n>   \n>   ACPI_STATUS\n>   AcpiHwWrite (\n> -    UINT32                  Value,\n> +    UINT64                  Value,\n>       ACPI_GENERIC_ADDRESS    *Reg);\n>   \n>   ACPI_BIT_REGISTER_INFO *\n> diff --git a/src/acpica/source/include/acinterp.h b/src/acpica/source/include/acinterp.h\n> index dd98f01c..d68058cc 100644\n> --- a/src/acpica/source/include/acinterp.h\n> +++ b/src/acpica/source/include/acinterp.h\n> @@ -214,7 +214,7 @@ ACPI_STATUS\n>   AcpiExConvertToInteger (\n>       ACPI_OPERAND_OBJECT     *ObjDesc,\n>       ACPI_OPERAND_OBJECT     **ResultDesc,\n> -    UINT32                  Flags);\n> +    UINT32                  ImplicitConversion);\n>   \n>   ACPI_STATUS\n>   AcpiExConvertToBuffer (\n> @@ -683,9 +683,6 @@ AcpiExStoreObjectToNode (\n>       ACPI_WALK_STATE         *WalkState,\n>       UINT8                   ImplicitConversion);\n>   \n> -#define ACPI_IMPLICIT_CONVERSION        TRUE\n> -#define ACPI_NO_IMPLICIT_CONVERSION     FALSE\n> -\n>   \n>   /*\n>    * exstoren - resolve/store object\n> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h\n> index 7a24391d..7d6c18d6 100644\n> --- a/src/acpica/source/include/acpixf.h\n> +++ b/src/acpica/source/include/acpixf.h\n> @@ -154,7 +154,7 @@\n>   \n>   /* Current ACPICA subsystem version in YYYYMMDD format */\n>   \n> -#define ACPI_CA_VERSION                 0x20170728\n> +#define ACPI_CA_VERSION                 0x20170831\n>   \n>   #include \"acconfig.h\"\n>   #include \"actypes.h\"\n> diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h\n> index da6b561a..537c33e7 100644\n> --- a/src/acpica/source/include/actbl1.h\n> +++ b/src/acpica/source/include/actbl1.h\n> @@ -179,6 +179,7 @@\n>   #define ACPI_SIG_HEST           \"HEST\"      /* Hardware Error Source Table */\n>   #define ACPI_SIG_MADT           \"APIC\"      /* Multiple APIC Description Table */\n>   #define ACPI_SIG_MSCT           \"MSCT\"      /* Maximum System Characteristics Table */\n> +#define ACPI_SIG_PDTT           \"PDTT\"      /* Processor Debug Trigger Table */\n>   #define ACPI_SIG_PPTT           \"PPTT\"      /* Processor Properties Topology Table */\n>   #define ACPI_SIG_SBST           \"SBST\"      /* Smart Battery Specification Table */\n>   #define ACPI_SIG_SLIT           \"SLIT\"      /* System Locality Distance Information Table */\n> @@ -1600,6 +1601,42 @@ typedef struct acpi_nfit_flush_address\n>   } ACPI_NFIT_FLUSH_ADDRESS;\n>   \n>   \n> +/*******************************************************************************\n> + *\n> + * PDTT - Processor Debug Trigger Table (ACPI 6.2)\n> + *        Version 0\n> + *\n> + ******************************************************************************/\n> +\n> +typedef struct acpi_table_pdtt\n> +{\n> +    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */\n> +    UINT8                   TriggerCount;\n> +    UINT8                   Reserved[3];\n> +    UINT32                  ArrayOffset;\n> +\n> +} ACPI_TABLE_PDTT;\n> +\n> +\n> +/*\n> + * PDTT Communication Channel Identifier Structure.\n> + * The number of these structures is defined by TriggerCount above,\n> + * starting at ArrayOffset.\n> + */\n> +typedef struct acpi_pdtt_channel\n> +{\n> +    UINT16                  SubChannelId;\n> +\n> +} ACPI_PDTT_CHANNEL;\n> +\n> +\n> +/* Mask and Flags for above */\n> +\n> +#define ACPI_PDTT_SUBCHANNEL_ID_MASK        0x00FF\n> +#define ACPI_PDTT_RUNTIME_TRIGGER           (1<<8)\n> +#define ACPI_PPTT_WAIT_COMPLETION           (1<<9)\n> +\n> +\n>   /*******************************************************************************\n>    *\n>    * PPTT - Processor Properties Topology Table (ACPI 6.2)\n> @@ -1626,7 +1663,8 @@ enum AcpiPpttType\n>   \n>   /* 0: Processor Hierarchy Node Structure */\n>   \n> -typedef struct acpi_pptt_processor {\n> +typedef struct acpi_pptt_processor\n> +{\n>       ACPI_SUBTABLE_HEADER    Header;\n>       UINT16                  Reserved;\n>       UINT32                  Flags;\n> @@ -1644,7 +1682,8 @@ typedef struct acpi_pptt_processor {\n>   \n>   /* 1: Cache Type Structure */\n>   \n> -typedef struct acpi_pptt_cache {\n> +typedef struct acpi_pptt_cache\n> +{\n>       ACPI_SUBTABLE_HEADER    Header;\n>       UINT16                  Reserved;\n>       UINT32                  Flags;\n> @@ -1676,7 +1715,8 @@ typedef struct acpi_pptt_cache {\n>   \n>   /* 2: ID Structure */\n>   \n> -typedef struct acpi_pptt_id {\n> +typedef struct acpi_pptt_id\n> +{\n>       ACPI_SUBTABLE_HEADER    Header;\n>       UINT16                  Reserved;\n>       UINT32                  VendorId;\n> diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h\n> index 18cfdd46..951d6553 100644\n> --- a/src/acpica/source/include/actbl2.h\n> +++ b/src/acpica/source/include/actbl2.h\n> @@ -1030,6 +1030,7 @@ typedef struct acpi_iort_smmu_gsi\n>       UINT32                  NSgIrptFlags;\n>       UINT32                  NSgCfgIrpt;\n>       UINT32                  NSgCfgIrptFlags;\n> +\n>   } ACPI_IORT_SMMU_GSI;\n>   \n>   \n> diff --git a/src/acpica/source/include/acutils.h b/src/acpica/source/include/acutils.h\n> index bca4a94c..a3f0150b 100644\n> --- a/src/acpica/source/include/acutils.h\n> +++ b/src/acpica/source/include/acutils.h\n> @@ -250,6 +250,10 @@ extern const char                       *AcpiGbl_PtypDecode[];\n>   #define ACPI_MSG_SUFFIX \\\n>       AcpiOsPrintf (\" (%8.8X/%s-%u)\\n\", ACPI_CA_VERSION, ModuleName, LineNumber)\n>   \n> +/* Flags to indicate implicit or explicit string-to-integer conversion */\n> +\n> +#define ACPI_IMPLICIT_CONVERSION        TRUE\n> +#define ACPI_NO_IMPLICIT_CONVERSION     FALSE\n>   \n>   /* Types for Resource descriptor entries */\n>   \n> @@ -330,19 +334,57 @@ AcpiUtStricmp (\n>       char                    *String1,\n>       char                    *String2);\n>   \n> +\n> +/*\n> + * utstrsuppt - string-to-integer conversion support functions\n> + */\n>   ACPI_STATUS\n> -AcpiUtStrtoul64 (\n> +AcpiUtConvertOctalString (\n>       char                    *String,\n> -    UINT32                  Flags,\n> -    UINT64                  *RetInteger);\n> +    UINT64                  *ReturnValue);\n> +\n> +ACPI_STATUS\n> +AcpiUtConvertDecimalString (\n> +    char                    *String,\n> +    UINT64                  *ReturnValuePtr);\n> +\n> +ACPI_STATUS\n> +AcpiUtConvertHexString (\n> +    char                    *String,\n> +    UINT64                  *ReturnValuePtr);\n> +\n> +char\n> +AcpiUtRemoveWhitespace (\n> +    char                    **String);\n> +\n> +char\n> +AcpiUtRemoveLeadingZeros (\n> +    char                    **String);\n> +\n> +BOOLEAN\n> +AcpiUtDetectHexPrefix (\n> +    char                    **String);\n> +\n> +BOOLEAN\n> +AcpiUtDetectOctalPrefix (\n> +    char                    **String);\n> +\n>   \n>   /*\n> - * Values for Flags above\n> - * Note: LIMIT values correspond to AcpiGbl_IntegerByteWidth values (4/8)\n> + * utstrtoul64 - string-to-integer conversion functions\n>    */\n> -#define ACPI_STRTOUL_32BIT          0x04    /* 4 bytes */\n> -#define ACPI_STRTOUL_64BIT          0x08    /* 8 bytes */\n> -#define ACPI_STRTOUL_BASE16         0x10    /* Default: Base10/16 */\n> +ACPI_STATUS\n> +AcpiUtStrtoul64 (\n> +    char                    *String,\n> +    UINT64                  *RetInteger);\n> +\n> +UINT64\n> +AcpiUtExplicitStrtoul64 (\n> +    char                    *String);\n> +\n> +UINT64\n> +AcpiUtImplicitStrtoul64 (\n> +    char                    *String);\n>   \n>   \n>   /*\n> diff --git a/src/acpica/source/tools/acpiexec/aeinitfile.c b/src/acpica/source/tools/acpiexec/aeinitfile.c\n> index 393e5387..72ccc0f8 100644\n> --- a/src/acpica/source/tools/acpiexec/aeinitfile.c\n> +++ b/src/acpica/source/tools/acpiexec/aeinitfile.c\n> @@ -311,8 +311,7 @@ AeDoOneOverride (\n>   \n>       /* Extract the 64-bit integer */\n>   \n> -    Status = AcpiUtStrtoul64 (ValueString,\n> -        (ACPI_STRTOUL_BASE16 | ACPI_STRTOUL_64BIT), &Value);\n> +    Status = AcpiUtStrtoul64 (ValueString, &Value);\n>       if (ACPI_FAILURE (Status))\n>       {\n>           AcpiOsPrintf (\"%s %s\\n\", ValueString,\n> \n\n\nAcked-by: Ivan Hu <ivan.hu@canonical.com>","headers":{"Return-Path":"<fwts-devel-bounces@lists.ubuntu.com>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com\n\t(client-ip=91.189.94.19; helo=huckleberry.canonical.com;\n\tenvelope-from=fwts-devel-bounces@lists.ubuntu.com;\n\treceiver=<UNKNOWN>)","Received":["from huckleberry.canonical.com (huckleberry.canonical.com\n\t[91.189.94.19])\n\tby ozlabs.org (Postfix) with ESMTP id 3xnGWY6WQ3z9s8J;\n\tWed,  6 Sep 2017 18:11:37 +1000 (AEST)","from localhost ([127.0.0.1] helo=huckleberry.canonical.com)\n\tby huckleberry.canonical.com with esmtp (Exim 4.86_2)\n\t(envelope-from <fwts-devel-bounces@lists.ubuntu.com>)\n\tid 1dpVQu-0006rC-Ni; Wed, 06 Sep 2017 08:11:36 +0000","from youngberry.canonical.com ([91.189.89.112])\n\tby huckleberry.canonical.com with esmtps\n\t(TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128)\n\t(Exim 4.86_2) (envelope-from <ivan.hu@canonical.com>)\n\tid 1dpVQo-0006qx-5g\n\tfor fwts-devel@lists.ubuntu.com; Wed, 06 Sep 2017 08:11:30 +0000","from [175.181.155.140] (helo=[192.168.31.95])\n\tby youngberry.canonical.com with esmtpsa\n\t(TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.76) (envelope-from <ivan.hu@canonical.com>)\n\tid 1dpVQm-00027m-Ss\n\tfor fwts-devel@lists.ubuntu.com; Wed, 06 Sep 2017 08:11:29 +0000"],"Subject":"ACK: [PATCH] ACPICA: Update to version 20170831","To":"fwts-devel@lists.ubuntu.com","References":"<20170831175104.31118-1-colin.king@canonical.com>","From":"ivanhu <ivan.hu@canonical.com>","Message-ID":"<51dab205-d079-29b7-ad9f-220da7e7b492@canonical.com>","Date":"Wed, 6 Sep 2017 16:11:25 +0800","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<20170831175104.31118-1-colin.king@canonical.com>","Content-Language":"en-GB","X-BeenThere":"fwts-devel@lists.ubuntu.com","X-Mailman-Version":"2.1.20","Precedence":"list","List-Id":"Firmware Test Suite Development <fwts-devel.lists.ubuntu.com>","List-Unsubscribe":"<https://lists.ubuntu.com/mailman/options/fwts-devel>,\n\t<mailto:fwts-devel-request@lists.ubuntu.com?subject=unsubscribe>","List-Archive":"<https://lists.ubuntu.com/archives/fwts-devel>","List-Post":"<mailto:fwts-devel@lists.ubuntu.com>","List-Help":"<mailto:fwts-devel-request@lists.ubuntu.com?subject=help>","List-Subscribe":"<https://lists.ubuntu.com/mailman/listinfo/fwts-devel>,\n\t<mailto:fwts-devel-request@lists.ubuntu.com?subject=subscribe>","Content-Transfer-Encoding":"base64","Content-Type":"text/plain; charset=\"utf-8\"; Format=\"flowed\"","Errors-To":"fwts-devel-bounces@lists.ubuntu.com","Sender":"\"fwts-devel\" <fwts-devel-bounces@lists.ubuntu.com>"}}]