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>