Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 May 2018 18:10:55 +0000 (UTC)
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r333378 - in vendor-sys/acpica/dist: . source/components/executer source/components/namespace source/components/utilities source/include source/tools/acpibin source/tools/acpixtract
Message-ID:  <201805081810.w48IAtFE062644@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jkim
Date: Tue May  8 18:10:55 2018
New Revision: 333378
URL: https://svnweb.freebsd.org/changeset/base/333378

Log:
  Import ACPICA 20180508.

Modified:
  vendor-sys/acpica/dist/changes.txt
  vendor-sys/acpica/dist/source/components/executer/exconfig.c
  vendor-sys/acpica/dist/source/components/namespace/nsinit.c
  vendor-sys/acpica/dist/source/components/utilities/utbuffer.c
  vendor-sys/acpica/dist/source/include/aclocal.h
  vendor-sys/acpica/dist/source/include/acnamesp.h
  vendor-sys/acpica/dist/source/include/acpixf.h
  vendor-sys/acpica/dist/source/tools/acpibin/abmain.c
  vendor-sys/acpica/dist/source/tools/acpixtract/acpixtract.h
  vendor-sys/acpica/dist/source/tools/acpixtract/axutils.c

Modified: vendor-sys/acpica/dist/changes.txt
==============================================================================
--- vendor-sys/acpica/dist/changes.txt	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/changes.txt	Tue May  8 18:10:55 2018	(r333378)
@@ -1,4 +1,25 @@
 ----------------------------------------
+8 May 2018. Summary of changes for version 20180508:
+
+
+1) ACPICA kernel-resident subsystem:
+
+Completed the new (recently deployed) package resolution mechanism for 
+the Load and LoadTable ASL/AML operators. This fixes a regression that 
+was introduced in version 20180209 that could result in an 
+AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 
+(SSDT) that contains package objects.
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 
+1 MB. This change allows for table offsets within the acpidump file to be 
+up to 8 characters. These changes are backwards compatible with existing 
+acpidump files.
+
+
+----------------------------------------
 27 April 2018. Summary of changes for version 20180427: 
 
 

Modified: vendor-sys/acpica/dist/source/components/executer/exconfig.c
==============================================================================
--- vendor-sys/acpica/dist/source/components/executer/exconfig.c	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/components/executer/exconfig.c	Tue May  8 18:10:55 2018	(r333378)
@@ -342,6 +342,11 @@ AcpiExLoadTableOp (
         return_ACPI_STATUS (Status);
     }
 
+    /* Complete the initialization/resolution of package objects */
+
+    Status = AcpiNsWalkNamespace (ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT,
+        ACPI_UINT32_MAX, 0, AcpiNsInitOnePackage, NULL, NULL, NULL);
+
     /* Parameter Data (optional) */
 
     if (ParameterNode)
@@ -614,6 +619,11 @@ AcpiExLoadOp (
 
         return_ACPI_STATUS (Status);
     }
+
+    /* Complete the initialization/resolution of package objects */
+
+    Status = AcpiNsWalkNamespace (ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT,
+        ACPI_UINT32_MAX, 0, AcpiNsInitOnePackage, NULL, NULL, NULL);
 
     /* Store the DdbHandle into the Target operand */
 

Modified: vendor-sys/acpica/dist/source/components/namespace/nsinit.c
==============================================================================
--- vendor-sys/acpica/dist/source/components/namespace/nsinit.c	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/components/namespace/nsinit.c	Tue May  8 18:10:55 2018	(r333378)
@@ -408,6 +408,65 @@ ErrorExit:
 
 /*******************************************************************************
  *
+ * FUNCTION:    AcpiNsInitOnePackage
+ *
+ * PARAMETERS:  ObjHandle       - Node
+ *              Level           - Current nesting level
+ *              Context         - Not used
+ *              ReturnValue     - Not used
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every package
+ *              within the namespace. Used during dynamic load of an SSDT.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiNsInitOnePackage (
+    ACPI_HANDLE             ObjHandle,
+    UINT32                  Level,
+    void                    *Context,
+    void                    **ReturnValue)
+{
+    ACPI_STATUS             Status;
+    ACPI_OPERAND_OBJECT     *ObjDesc;
+    ACPI_NAMESPACE_NODE     *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
+
+
+    ObjDesc = AcpiNsGetAttachedObject (Node);
+    if (!ObjDesc)
+    {
+        return (AE_OK);
+    }
+
+    /* Exit if package is already initialized */
+
+    if (ObjDesc->Package.Flags & AOPOBJ_DATA_VALID)
+    {
+        return (AE_OK);
+    }
+
+    Status = AcpiDsGetPackageArguments (ObjDesc);
+    if (ACPI_FAILURE (Status))
+    {
+        return (AE_OK);
+    }
+
+    Status = AcpiUtWalkPackageTree (ObjDesc, NULL, AcpiDsInitPackageElement,
+        NULL);
+    if (ACPI_FAILURE (Status))
+    {
+        return (AE_OK);
+    }
+
+    ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;
+    return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    AcpiNsInitOneObject
  *
  * PARAMETERS:  ObjHandle       - Node
@@ -533,27 +592,10 @@ AcpiNsInitOneObject (
 
     case ACPI_TYPE_PACKAGE:
 
-        Info->PackageInit++;
-        Status = AcpiDsGetPackageArguments (ObjDesc);
-        if (ACPI_FAILURE (Status))
-        {
-            break;
-        }
+        /* Complete the initialization/resolution of the package object */
 
-        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
-            "%s: Completing resolution of Package elements\n",
-            ACPI_GET_FUNCTION_NAME));
-
-        /*
-         * Resolve all named references in package objects (and all
-         * sub-packages). This action has been deferred until the entire
-         * namespace has been loaded, in order to support external and
-         * forward references from individual package elements (05/2017).
-         */
-        Status = AcpiUtWalkPackageTree (ObjDesc, NULL,
-            AcpiDsInitPackageElement, NULL);
-
-        ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;
+        Info->PackageInit++;
+        Status = AcpiNsInitOnePackage (ObjHandle, Level, NULL, NULL);
         break;
 
     default:

Modified: vendor-sys/acpica/dist/source/components/utilities/utbuffer.c
==============================================================================
--- vendor-sys/acpica/dist/source/components/utilities/utbuffer.c	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/components/utilities/utbuffer.c	Tue May  8 18:10:55 2018	(r333378)
@@ -205,7 +205,7 @@ AcpiUtDumpBuffer (
     {
         /* Print current offset */
 
-        AcpiOsPrintf ("%6.4X: ", (BaseOffset + i));
+        AcpiOsPrintf ("%8.4X: ", (BaseOffset + i));
 
         /* Print 16 hex chars */
 
@@ -387,7 +387,7 @@ AcpiUtDumpBufferToFile (
     {
         /* Print current offset */
 
-        fprintf (File, "%6.4X: ", (BaseOffset + i));
+        fprintf (File, "%8.4X: ", (BaseOffset + i));
 
         /* Print 16 hex chars */
 

Modified: vendor-sys/acpica/dist/source/include/aclocal.h
==============================================================================
--- vendor-sys/acpica/dist/source/include/aclocal.h	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/include/aclocal.h	Tue May  8 18:10:55 2018	(r333378)
@@ -284,7 +284,7 @@ typedef enum
  * DescriptorType is used to differentiate between internal descriptors.
  *
  * The node is optimized for both 32-bit and 64-bit platforms:
- * 20 bytes for the 32-bit case, 32 bytes for the 64-bit case.
+ * 28 bytes for the 32-bit case, 48 bytes for the 64-bit case.
  *
  * Note: The DescriptorType and Type fields must appear in the identical
  * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT
@@ -301,10 +301,12 @@ typedef struct acpi_namespace_node
     struct acpi_namespace_node      *Parent;        /* Parent node */
     struct acpi_namespace_node      *Child;         /* First child */
     struct acpi_namespace_node      *Peer;          /* First peer */
+    struct acpi_namespace_node      *OwnerList;     /* All nodes owned by a table or method */
 
-    /*
-     * The following fields are used by the ASL compiler and disassembler only
-     */
+/*
+ * The following fields are appended to the namespace node and
+ * are used by the ASL compiler and AML disassembler only
+ */
 #ifdef ACPI_LARGE_NAMESPACE_NODE
     union acpi_parse_object         *Op;
     void                            *MethodLocals;
@@ -312,7 +314,6 @@ typedef struct acpi_namespace_node
     UINT32                          Value;
     UINT32                          Length;
     UINT8                           ArgCount;
-
 #endif
 
 } ACPI_NAMESPACE_NODE;

Modified: vendor-sys/acpica/dist/source/include/acnamesp.h
==============================================================================
--- vendor-sys/acpica/dist/source/include/acnamesp.h	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/include/acnamesp.h	Tue May  8 18:10:55 2018	(r333378)
@@ -204,6 +204,12 @@ ACPI_STATUS
 AcpiNsInitializeDevices (
     UINT32                  Flags);
 
+ACPI_STATUS
+AcpiNsInitOnePackage (
+    ACPI_HANDLE             ObjHandle,
+    UINT32                  Level,
+    void                    *Context,
+    void                    **ReturnValue);
 
 /*
  * nsload -  Namespace loading

Modified: vendor-sys/acpica/dist/source/include/acpixf.h
==============================================================================
--- vendor-sys/acpica/dist/source/include/acpixf.h	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/include/acpixf.h	Tue May  8 18:10:55 2018	(r333378)
@@ -154,7 +154,7 @@
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20180427
+#define ACPI_CA_VERSION                 0x20180508
 
 #include "acconfig.h"
 #include "actypes.h"

Modified: vendor-sys/acpica/dist/source/tools/acpibin/abmain.c
==============================================================================
--- vendor-sys/acpica/dist/source/tools/acpibin/abmain.c	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/tools/acpibin/abmain.c	Tue May  8 18:10:55 2018	(r333378)
@@ -186,7 +186,6 @@ AbDisplayUsage (
     ACPI_OPTION ("-a <File1> <File2>",      "Compare two binary AML files, dump all mismatches");
     ACPI_OPTION ("-c <File1> <File2>",      "Compare two binary AML files, dump first 100 mismatches");
     ACPI_OPTION ("-d <In> <Out>",           "Dump AML binary to text file");
-    ACPI_OPTION ("-e <Sig> <In> <Out>",     "Extract binary AML table from acpidump file");
     ACPI_OPTION ("-o <Value>",              "Start comparison at this offset into second file");
     ACPI_OPTION ("-h <File>",               "Display table header for binary AML file");
     ACPI_OPTION ("-s <File>",               "Update checksum for binary AML file");

Modified: vendor-sys/acpica/dist/source/tools/acpixtract/acpixtract.h
==============================================================================
--- vendor-sys/acpica/dist/source/tools/acpixtract/acpixtract.h	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/tools/acpixtract/acpixtract.h	Tue May  8 18:10:55 2018	(r333378)
@@ -193,8 +193,9 @@
 
 #define AX_LINE_BUFFER_SIZE         256
 #define AX_MIN_BLOCK_HEADER_LENGTH  6   /* strlen ("DSDT @") */
-#define AX_IS_TABLE_BLOCK_HEADER    (strlen (Gbl_LineBuffer) < AX_END_OF_HEX_DATA) && (strstr (Gbl_LineBuffer, " @ "))
-#define AX_END_OF_HEX_DATA          55
+#define AX_HEX_DATA_LENGTH          49  /*  (3 * 16) + 1 for the colon delimiter */
+#define AX_IS_TABLE_BLOCK_HEADER    (strlen (Gbl_LineBuffer) < AX_HEX_DATA_LENGTH) && \
+                                    (strstr (Gbl_LineBuffer, " @ "))
 
 
 typedef struct AxTableInfo

Modified: vendor-sys/acpica/dist/source/tools/acpixtract/axutils.c
==============================================================================
--- vendor-sys/acpica/dist/source/tools/acpixtract/axutils.c	Tue May  8 18:03:08 2018	(r333377)
+++ vendor-sys/acpica/dist/source/tools/acpixtract/axutils.c	Tue May  8 18:10:55 2018	(r333378)
@@ -432,6 +432,7 @@ AxConvertToBinary (
     char                    *InputLine,
     unsigned char           *OutputData)
 {
+    char                    *ColonDelimiter;
     int                     BytesConverted;
     int                     Converted[16];
     int                     i;
@@ -441,10 +442,17 @@ AxConvertToBinary (
      * Terminate input line immediately after the data. Otherwise, the
      * second line below will not scan correctly.
      *
+     * This handles varying lengths for the offset: line prefix. This support
+     * for tables larger than 1mb was added 05/2018.
+     *
      *    00b0: 03 00 00 00 43 48 41 36 0c 00 00 00 03 00 00 00  ....CHA6........
      *    00c0: 43 48 41 37                                      CHA7
+     *
+     *    012340b0: 03 00 00 00 43 48 41 36 0c 00 00 00 03 00 00 00  ....CHA6........
+     *    012340c0: 43 48 41 37                                      CHA7
      */
-    InputLine [AX_END_OF_HEX_DATA] = 0;
+    ColonDelimiter = strchr (InputLine, ':');
+    ColonDelimiter [AX_HEX_DATA_LENGTH] = 0;
 
     /*
      * Convert one line of table data, of the form:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805081810.w48IAtFE062644>