From owner-svn-src-vendor@freebsd.org Fri Mar 18 21:13:22 2016 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C0294AD41A8; Fri, 18 Mar 2016 21:13:22 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 87B0719AD; Fri, 18 Mar 2016 21:13:22 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u2ILDLlu090801; Fri, 18 Mar 2016 21:13:21 GMT (envelope-from jkim@FreeBSD.org) Received: (from jkim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u2ILDKLs090783; Fri, 18 Mar 2016 21:13:20 GMT (envelope-from jkim@FreeBSD.org) Message-Id: <201603182113.u2ILDKLs090783@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jkim set sender to jkim@FreeBSD.org using -f From: Jung-uk Kim Date: Fri, 18 Mar 2016 21:13:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r297044 - in vendor-sys/acpica/dist: . generate/unix generate/unix/acpidump generate/unix/acpiexamples generate/unix/acpiexec generate/unix/iasl source/common source/compiler source/com... X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Mar 2016 21:13:22 -0000 Author: jkim Date: Fri Mar 18 21:13:19 2016 New Revision: 297044 URL: https://svnweb.freebsd.org/changeset/base/297044 Log: Import ACPICA 20160318. Added: vendor-sys/acpica/dist/source/compiler/aslpld.c (contents, props changed) vendor-sys/acpica/dist/source/components/executer/exconcat.c (contents, props changed) vendor-sys/acpica/dist/source/include/platform/acqnx.h (contents, props changed) Modified: vendor-sys/acpica/dist/changes.txt vendor-sys/acpica/dist/generate/unix/Makefile.common vendor-sys/acpica/dist/generate/unix/Makefile.config vendor-sys/acpica/dist/generate/unix/acpidump/Makefile vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile vendor-sys/acpica/dist/generate/unix/iasl/Makefile vendor-sys/acpica/dist/source/common/adwalk.c vendor-sys/acpica/dist/source/common/dmextern.c vendor-sys/acpica/dist/source/common/dmtable.c vendor-sys/acpica/dist/source/common/dmtables.c vendor-sys/acpica/dist/source/common/dmtbdump.c vendor-sys/acpica/dist/source/common/dmtbinfo.c vendor-sys/acpica/dist/source/compiler/aslcodegen.c vendor-sys/acpica/dist/source/compiler/aslcompile.c vendor-sys/acpica/dist/source/compiler/aslcompiler.h vendor-sys/acpica/dist/source/compiler/aslexternal.c vendor-sys/acpica/dist/source/compiler/aslglobal.h vendor-sys/acpica/dist/source/compiler/asllength.c vendor-sys/acpica/dist/source/compiler/aslload.c vendor-sys/acpica/dist/source/compiler/aslmessages.c vendor-sys/acpica/dist/source/compiler/aslopcodes.c vendor-sys/acpica/dist/source/compiler/aslopt.c vendor-sys/acpica/dist/source/compiler/asloptions.c vendor-sys/acpica/dist/source/compiler/aslrestype2e.c vendor-sys/acpica/dist/source/compiler/aslstubs.c vendor-sys/acpica/dist/source/compiler/asltransform.c vendor-sys/acpica/dist/source/compiler/aslutils.c vendor-sys/acpica/dist/source/compiler/aslwalks.c vendor-sys/acpica/dist/source/compiler/aslxrefout.c vendor-sys/acpica/dist/source/compiler/dtparser.y vendor-sys/acpica/dist/source/compiler/dttable1.c vendor-sys/acpica/dist/source/compiler/dttable2.c vendor-sys/acpica/dist/source/compiler/dttemplate.h vendor-sys/acpica/dist/source/compiler/prparser.y vendor-sys/acpica/dist/source/compiler/prscan.c vendor-sys/acpica/dist/source/components/debugger/dbconvert.c vendor-sys/acpica/dist/source/components/debugger/dbinput.c vendor-sys/acpica/dist/source/components/debugger/dbutils.c vendor-sys/acpica/dist/source/components/disassembler/dmbuffer.c vendor-sys/acpica/dist/source/components/disassembler/dmopcode.c vendor-sys/acpica/dist/source/components/disassembler/dmresrc.c vendor-sys/acpica/dist/source/components/disassembler/dmresrcl.c vendor-sys/acpica/dist/source/components/disassembler/dmutils.c vendor-sys/acpica/dist/source/components/events/evregion.c vendor-sys/acpica/dist/source/components/events/evrgnini.c vendor-sys/acpica/dist/source/components/executer/exconfig.c vendor-sys/acpica/dist/source/components/executer/exconvrt.c vendor-sys/acpica/dist/source/components/executer/exdump.c vendor-sys/acpica/dist/source/components/executer/exmisc.c vendor-sys/acpica/dist/source/components/executer/exsystem.c vendor-sys/acpica/dist/source/components/executer/exutils.c vendor-sys/acpica/dist/source/components/hardware/hwregs.c vendor-sys/acpica/dist/source/components/hardware/hwxface.c vendor-sys/acpica/dist/source/components/namespace/nsaccess.c vendor-sys/acpica/dist/source/components/namespace/nsconvert.c vendor-sys/acpica/dist/source/components/namespace/nsdump.c vendor-sys/acpica/dist/source/components/namespace/nsinit.c vendor-sys/acpica/dist/source/components/namespace/nsload.c vendor-sys/acpica/dist/source/components/namespace/nsprepkg.c vendor-sys/acpica/dist/source/components/parser/psopinfo.c vendor-sys/acpica/dist/source/components/resources/rsdump.c vendor-sys/acpica/dist/source/components/resources/rsutils.c vendor-sys/acpica/dist/source/components/tables/tbfadt.c vendor-sys/acpica/dist/source/components/tables/tbxfload.c vendor-sys/acpica/dist/source/components/utilities/utdebug.c vendor-sys/acpica/dist/source/components/utilities/uteval.c vendor-sys/acpica/dist/source/components/utilities/utglobal.c vendor-sys/acpica/dist/source/components/utilities/utmisc.c vendor-sys/acpica/dist/source/components/utilities/utnonansi.c vendor-sys/acpica/dist/source/components/utilities/utprint.c vendor-sys/acpica/dist/source/components/utilities/uttrack.c vendor-sys/acpica/dist/source/components/utilities/utxfinit.c vendor-sys/acpica/dist/source/include/acdebug.h vendor-sys/acpica/dist/source/include/acdisasm.h vendor-sys/acpica/dist/source/include/acevents.h vendor-sys/acpica/dist/source/include/acglobal.h vendor-sys/acpica/dist/source/include/acinterp.h vendor-sys/acpica/dist/source/include/aclocal.h vendor-sys/acpica/dist/source/include/acmacros.h vendor-sys/acpica/dist/source/include/acnamesp.h vendor-sys/acpica/dist/source/include/acparser.h vendor-sys/acpica/dist/source/include/acpixf.h vendor-sys/acpica/dist/source/include/acresrc.h vendor-sys/acpica/dist/source/include/acstruct.h vendor-sys/acpica/dist/source/include/actbl.h vendor-sys/acpica/dist/source/include/actbl1.h vendor-sys/acpica/dist/source/include/actbl2.h vendor-sys/acpica/dist/source/include/actbl3.h vendor-sys/acpica/dist/source/include/actypes.h vendor-sys/acpica/dist/source/include/acutils.h vendor-sys/acpica/dist/source/include/platform/acenv.h vendor-sys/acpica/dist/source/os_specific/service_layers/osbsdtbl.c vendor-sys/acpica/dist/source/os_specific/service_layers/osunixmap.c vendor-sys/acpica/dist/source/tools/acpidump/apdump.c vendor-sys/acpica/dist/source/tools/acpidump/apmain.c vendor-sys/acpica/dist/source/tools/acpiexec/aeinitfile.c vendor-sys/acpica/dist/source/tools/acpisrc/asfile.c vendor-sys/acpica/dist/source/tools/acpisrc/astable.c vendor-sys/acpica/dist/source/tools/acpixtract/acpixtract.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 Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/changes.txt Fri Mar 18 21:13:19 2016 (r297044) @@ -1,7 +1,83 @@ ---------------------------------------- -12 February 2016. Summary of changes for version 20160212: +18 March 2016. Summary of changes for version 20160318: -This release is available at https://acpica.org/downloads +1) ACPICA kernel-resident subsystem: + +Added support for arbitrary bit lengths and bit offsets for registers +defined by the Generic Address Structure. Previously, only aligned bit +lengths of 8/16/32/64 were supported. This was sufficient for many years, +but recently some machines have been seen that require arbitrary bit- +level support. ACPICA BZ 1240. Lv Zheng. + +Fixed an issue where the \_SB._INI method sometimes must be evaluated +before any _REG methods are evaluated. Lv Zheng. + +Implemented several changes related to ACPI table support +(Headers/Disassembler/TableCompiler): +NFIT: For ACPI 6.1, updated to add some additional new fields and +constants. +FADT: Updated a warning message and set compliance to ACPI 6.1 (Version +6). +DMAR: Added new constants per the 10/2014 DMAR spec. +IORT: Added new subtable per the 10/2015 IORT spec. +HEST: For ACPI 6.1, added new constants and new subtable. +DBG2: Added new constants per the 12/2015 DBG2 spec. +FPDT: Fixed several incorrect fields, add the FPDT boot record structure. +ACPICA BZ 1249. +ERST/EINJ: Updated disassembler with new "Execute Timings" actions. + +Updated header support for the DMAR table to match the current version of +the related spec. + +Added extensions to the ASL Concatenate operator to allow any ACPI object +to be passed as an operand. Any object other than Integer/String/Buffer +simply returns a string containing the object type. This extends the +usefulness of the Printf macros. Previously, Concatenate would abort the +control method if a non-data object was encountered. + +ACPICA source code: Deployed the C "const" keyword across the source code +where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total + Debug Version: 201.0K Code, 82.0K Data, 283.0K Total + Previous Release: + Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total + Debug Version: 200.4K Code, 82.0K Data, 282.4K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL/Disassembler: Improved the heuristic used to determine the number of +arguments for an externally defined control method (a method in another +table). Although this is an improvement, there is no deterministic way to +"guess" the number of method arguments. Only the ACPI 6.0 External opcode +will completely solve this problem as it is deployed (automatically) in +newer BIOS code. + +iASL/Disassembler: Fixed an ordering issue for emitted External() ASL +statements that could cause errors when the disassembled file is +compiled. ACPICA BZ 1243. David Box. + +iASL: Fixed a regression caused by the merger of the two versions of the +local strtoul64. Because of a dependency on a global variable, strtoul64 +could return an error for integers greater than a 32-bit value. ACPICA BZ +1260. + +iASL: Fixed a regression where a fault could occur for an ASL Return +statement if it invokes a control method that is not resolved. ACPICA BZ +1264. + +AcpiXtract: Improved input file validation: detection of binary files and +non-acpidump text files. + +---------------------------------------- +12 February 2016. Summary of changes for version 20160212: 1) ACPICA kernel-resident subsystem: Modified: vendor-sys/acpica/dist/generate/unix/Makefile.common ============================================================================== --- vendor-sys/acpica/dist/generate/unix/Makefile.common Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/generate/unix/Makefile.common Fri Mar 18 21:13:19 2016 (r297044) @@ -9,8 +9,12 @@ ifeq ($(HOST), _FreeBSD) HARDWARE_NAME := $(shell uname -p) else +ifeq ($(HOST), _QNX) +HARDWARE_NAME := x86pc +else HARDWARE_NAME := $(shell uname -m) endif +endif # # Main rule will only generate versions that are appropriate for the running Modified: vendor-sys/acpica/dist/generate/unix/Makefile.config ============================================================================== --- vendor-sys/acpica/dist/generate/unix/Makefile.config Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/generate/unix/Makefile.config Fri Mar 18 21:13:19 2016 (r297044) @@ -67,6 +67,10 @@ ifeq ($(UNAME_S), NetBSD) HOST = _NetBSD endif +ifeq ($(UNAME_S), QNX) +HOST = _QNX +endif + ifeq ($(HOST), _APPLE) INSTALL = cp INSTALLFLAGS ?= -f @@ -163,6 +167,14 @@ CFLAGS += \ -D$(HOST)\ -D_GNU_SOURCE\ -I$(ACPICA_INCLUDE) + +# +# QNX requires __EXT to enable most functions in its C library, analogous +# to _GNU_SOURCE. +# +ifeq ($(HOST), _QNX) + CFLAGS+=-D__EXT +endif # # Common compiler warning flags. The warning flags in addition Modified: vendor-sys/acpica/dist/generate/unix/acpidump/Makefile ============================================================================== --- vendor-sys/acpica/dist/generate/unix/acpidump/Makefile Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/generate/unix/acpidump/Makefile Fri Mar 18 21:13:19 2016 (r297044) @@ -64,6 +64,10 @@ ifeq ($(HOST), _NetBSD) HOST_FAMILY = BSD endif +ifeq ($(HOST), _QNX) +HOST_FAMILY = BSD +endif + ifeq ($(HOST_FAMILY), BSD) OBJECTS += \ $(OBJDIR)/osbsdtbl.o Modified: vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile ============================================================================== --- vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile Fri Mar 18 21:13:19 2016 (r297044) @@ -59,6 +59,7 @@ OBJECTS = \ $(OBJDIR)/evrgnini.o\ $(OBJDIR)/evxface.o\ $(OBJDIR)/evxfregn.o\ + $(OBJDIR)/exconcat.o\ $(OBJDIR)/exconfig.o\ $(OBJDIR)/exconvrt.o\ $(OBJDIR)/excreate.o\ Modified: vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile ============================================================================== --- vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile Fri Mar 18 21:13:19 2016 (r297044) @@ -106,6 +106,7 @@ OBJECTS = \ $(OBJDIR)/evxfgpe.o\ $(OBJDIR)/evxfregn.o\ $(OBJDIR)/exconfig.o\ + $(OBJDIR)/exconcat.o\ $(OBJDIR)/exconvrt.o\ $(OBJDIR)/excreate.o\ $(OBJDIR)/exdebug.o\ @@ -245,11 +246,15 @@ CFLAGS += \ -DACPI_CHECKSUM_ABORT=TRUE endif +ifneq ($(HOST),_QNX) LDFLAGS += -lpthread +endif ifneq ($(HOST),_APPLE) +ifneq ($(HOST),_QNX) LDFLAGS += -lrt endif +endif # # Common Rules Modified: vendor-sys/acpica/dist/generate/unix/iasl/Makefile ============================================================================== --- vendor-sys/acpica/dist/generate/unix/iasl/Makefile Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/generate/unix/iasl/Makefile Fri Mar 18 21:13:19 2016 (r297044) @@ -96,6 +96,7 @@ OBJECTS = \ $(OBJDIR)/aslrestype2w.o\ $(OBJDIR)/aslstartup.o\ $(OBJDIR)/aslstubs.o\ + $(OBJDIR)/aslpld.o\ $(OBJDIR)/asltransform.o\ $(OBJDIR)/asltree.o\ $(OBJDIR)/aslutils.o\ @@ -143,6 +144,7 @@ OBJECTS = \ $(OBJDIR)/dttable2.o\ $(OBJDIR)/dttemplate.o\ $(OBJDIR)/dtutils.o\ + $(OBJDIR)/exconcat.o\ $(OBJDIR)/exconvrt.o\ $(OBJDIR)/excreate.o\ $(OBJDIR)/exdump.o\ Modified: vendor-sys/acpica/dist/source/common/adwalk.c ============================================================================== --- vendor-sys/acpica/dist/source/common/adwalk.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/common/adwalk.c Fri Mar 18 21:13:19 2016 (r297044) @@ -327,6 +327,7 @@ AcpiDmConvertResourceIndexes ( WalkState); if (ACPI_FAILURE (Status)) { + ACPI_FREE (WalkState); return; } @@ -442,7 +443,7 @@ AcpiDmDumpDescending ( * * DESCRIPTION: Check namepath Ops for orphaned method invocations * - * Note: Experimental. + * Note: Parts of this are experimental, under possible further development. * ******************************************************************************/ @@ -508,6 +509,7 @@ AcpiDmFindOrphanDescending ( ChildOp->Common.Value.String, ACPI_TYPE_METHOD, ArgCount, 0); } break; + #endif case AML_STORE_OP: @@ -532,7 +534,7 @@ AcpiDmFindOrphanDescending ( /* One Arg means this is just a Store(Name,Target) */ AcpiDmAddOpToExternalList (ChildOp, - ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); + ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, ArgCount, 0); return (AE_OK); } @@ -554,7 +556,7 @@ AcpiDmFindOrphanDescending ( (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && !Op->Common.Node) { - ArgCount = AcpiDmInspectPossibleArgs (0, 0, Op->Common.Next); + ArgCount = AcpiDmInspectPossibleArgs (0, 0, Op); /* * Check if namepath is a predicate for if/while or lone parameter to @@ -788,6 +790,7 @@ AcpiDmXrefDescendingOp ( Op->Common.Next->Common.Next->Common.Value.Integer; } + Flags |= ACPI_EXT_RESOLVED_REFERENCE | ACPI_EXT_ORIGIN_FROM_OPCODE; AcpiDmAddOpToExternalList (Op, Path, (UINT8) ObjectType, ParamCount, Flags); @@ -855,12 +858,12 @@ AcpiDmXrefDescendingOp ( Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, &Node); + if (ACPI_SUCCESS (Status) && (Node->Flags & ANOBJ_IS_EXTERNAL)) { /* Node was created by an External() statement */ Status = AE_NOT_FOUND; - Flags = ACPI_EXT_RESOLVED_REFERENCE; } if (ACPI_FAILURE (Status)) @@ -880,12 +883,12 @@ AcpiDmXrefDescendingOp ( if (Node) { AcpiDmAddNodeToExternalList (Node, - (UINT8) ObjectType, 0, Flags); + (UINT8) ObjectType, 7, Flags); } else { AcpiDmAddOpToExternalList (Op, Path, - (UINT8) ObjectType, 0, Flags); + (UINT8) ObjectType, 7, Flags); } } } @@ -1067,40 +1070,69 @@ AcpiDmInspectPossibleArgs ( { const ACPI_OPCODE_INFO *OpInfo; UINT32 i; - UINT32 Last = 0; - UINT32 Lookahead; + UINT32 ArgumentCount = 0; + ACPI_PARSE_OBJECT *NextOp; + ACPI_PARSE_OBJECT *ExecuteOp; - Lookahead = (ACPI_METHOD_NUM_ARGS + TargetCount) - CurrentOpArgCount; + if (!Op) + { + return (0); + } /* Lookahead for the maximum number of possible arguments */ - for (i = 0; i < Lookahead; i++) + NextOp = Op->Common.Next; + + for (i = 0; (i < ACPI_METHOD_NUM_ARGS) && NextOp; i++) { - if (!Op) - { - break; - } + OpInfo = AcpiPsGetOpcodeInfo (NextOp->Common.AmlOpcode); - OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); + /* Any one of these operators is "very probably" not a method arg */ - /* - * Any one of these operators is "very probably" not a method arg - */ - if ((Op->Common.AmlOpcode == AML_STORE_OP) || - (Op->Common.AmlOpcode == AML_NOTIFY_OP)) + if ((NextOp->Common.AmlOpcode == AML_STORE_OP) || + (NextOp->Common.AmlOpcode == AML_NOTIFY_OP) || + (OpInfo->Class == AML_CLASS_CONTROL) || + (OpInfo->Class == AML_CLASS_CREATE) || + (OpInfo->Class == AML_CLASS_NAMED_OBJECT)) { break; } - if ((OpInfo->Class != AML_CLASS_EXECUTE) && - (OpInfo->Class != AML_CLASS_CONTROL)) + if (OpInfo->Class == AML_CLASS_EXECUTE) { - Last = i+1; + /* Probable that this is method arg if there is no target */ + + ExecuteOp = NextOp->Common.Value.Arg; + while (ExecuteOp) + { + if ((ExecuteOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && + (ExecuteOp->Common.Value.Arg == NULL)) + { + /* No target, could be a method arg */ + + break; + } + + if (NextOp->Common.AmlOpcode == AML_REF_OF_OP) + { + break; + } + + ExecuteOp = ExecuteOp->Common.Next; + } + + if (!ExecuteOp) + { + /* Has a target, not method arg */ + + return (ArgumentCount); + } } - Op = Op->Common.Next; + ArgumentCount++; + NextOp = NextOp->Common.Next; } - return (Last); + return (ArgumentCount); } Modified: vendor-sys/acpica/dist/source/common/dmextern.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmextern.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/common/dmextern.c Fri Mar 18 21:13:19 2016 (r297044) @@ -754,46 +754,6 @@ AcpiDmAddPathToExternalList ( /******************************************************************************* * - * FUNCTION: AcpiDmEternalIsMatch - * - * PARAMETERS: NamePath - Path to match to External Name - * ExternalPath - External NamePath to be matched - * - * RETURN: BOOLEAN - * - * DESCRIPTION: Returns TRUE if NamePath matches the last NamePath-length - * characters of ExternalPath. - * - * External (_SB_.DEV0.ABCD) will match: - * _SB_.DEV0.ABCD - * DEV0.ABCD - * ABCD - * - ******************************************************************************/ - -static BOOLEAN -AcpiDmExternalIsMatch ( - const char * NamePath, - const char * ListNamePath) -{ - BOOLEAN Match = FALSE; - - - if (strlen (ListNamePath) >= strlen (NamePath)) - { - if (!strcmp (ListNamePath + - (strlen (ListNamePath) - strlen (NamePath)), NamePath)) - { - return (TRUE); - } - } - - return (Match); -} - - -/******************************************************************************* - * * FUNCTION: AcpiDmCreateNewExternal * * PARAMETERS: ExternalPath - External path to the object @@ -850,26 +810,29 @@ AcpiDmCreateNewExternal ( { /* Check for duplicates */ - if (AcpiDmExternalIsMatch (ExternalPath, NextExternal->Path)) + if (!strcmp (ExternalPath, NextExternal->Path)) { - /* Duplicate method, check that the Value (ArgCount) is the same */ - - if ((NextExternal->Type == ACPI_TYPE_METHOD) && - (NextExternal->Flags & ANOBJ_IS_EXTERNAL) && - (NextExternal->Value != Value) && - (Value > 0)) + /* + * If this external came from an External() opcode, we are + * finished with this one. (No need to check any further). + */ + if (NextExternal->Flags & ACPI_EXT_ORIGIN_FROM_OPCODE) { - ACPI_ERROR ((AE_INFO, - "External method arg count mismatch %s: " - "Current %u, attempted %u", - NextExternal->Path, NextExternal->Value, Value)); + return_ACPI_STATUS (AE_ALREADY_EXISTS); } /* Allow upgrade of type from ANY */ - else if (NextExternal->Type == ACPI_TYPE_ANY) + else if ((NextExternal->Type == ACPI_TYPE_ANY) && + (Type != ACPI_TYPE_ANY)) { NextExternal->Type = Type; + } + + /* Update the argument count as necessary */ + + if (Value < NextExternal->Value) + { NextExternal->Value = Value; } @@ -1125,90 +1088,63 @@ AcpiDmEmitExternals ( AcpiDmUnresolvedWarning (1); - /* Emit any unresolved method externals in a single text block */ - - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - if ((NextExternal->Type == ACPI_TYPE_METHOD) && - (!(NextExternal->Flags & ACPI_EXT_RESOLVED_REFERENCE))) - { - AcpiOsPrintf (" External (%s%s", - NextExternal->Path, - AcpiDmGetObjectTypeName (NextExternal->Type)); - - AcpiOsPrintf (") // Warning: Unresolved method, " - "guessing %u arguments\n", - NextExternal->Value); - - NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED; - } - - NextExternal = NextExternal->Next; - } - - AcpiOsPrintf ("\n"); - - - /* Emit externals that were imported from a file */ - if (Gbl_ExternalRefFilename) { AcpiOsPrintf ( - " /*\n * External declarations that were imported from\n" - " * the reference file [%s]\n */\n", + " /*\n * External declarations were imported from\n" + " * a reference file -- %s\n */\n\n", Gbl_ExternalRefFilename); - - NextExternal = AcpiGbl_ExternalList; - while (NextExternal) - { - if (!(NextExternal->Flags & ACPI_EXT_EXTERNAL_EMITTED) && - (NextExternal->Flags & ACPI_EXT_ORIGIN_FROM_FILE)) - { - AcpiOsPrintf (" External (%s%s", - NextExternal->Path, - AcpiDmGetObjectTypeName (NextExternal->Type)); - - if (NextExternal->Type == ACPI_TYPE_METHOD) - { - AcpiOsPrintf (") // %u Arguments\n", - NextExternal->Value); - } - else - { - AcpiOsPrintf (")\n"); - } - NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED; - } - - NextExternal = NextExternal->Next; - } - - AcpiOsPrintf ("\n"); } /* - * Walk the list of externals found during the AML parsing + * Walk and emit the list of externals found during the AML parsing */ while (AcpiGbl_ExternalList) { + AcpiGbl_ExternalList = AcpiGbl_ExternalList; if (!(AcpiGbl_ExternalList->Flags & ACPI_EXT_EXTERNAL_EMITTED)) { - AcpiOsPrintf (" External (%s%s", + AcpiOsPrintf (" External (%s%s)", AcpiGbl_ExternalList->Path, AcpiDmGetObjectTypeName (AcpiGbl_ExternalList->Type)); - /* For methods, add a comment with the number of arguments */ + /* Check for "unresolved" method reference */ - if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) + if ((AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) && + (!(AcpiGbl_ExternalList->Flags & ACPI_EXT_RESOLVED_REFERENCE))) { - AcpiOsPrintf (") // %u Arguments\n", + AcpiOsPrintf (" // Warning: Unknown method, " + "guessing %u arguments", AcpiGbl_ExternalList->Value); } + + /* Check for external from a external references file */ + + else if (AcpiGbl_ExternalList->Flags & ACPI_EXT_ORIGIN_FROM_FILE) + { + if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) + { + AcpiOsPrintf (" // %u Arguments", + AcpiGbl_ExternalList->Value); + } + + AcpiOsPrintf (" // From external reference file"); + } + + /* This is the normal external case */ + else { - AcpiOsPrintf (")\n"); + /* For methods, add a comment with the number of arguments */ + + if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) + { + AcpiOsPrintf (" // %u Arguments", + AcpiGbl_ExternalList->Value); + } } + + AcpiOsPrintf ("\n"); } /* Free this external info block and move on to next external */ @@ -1341,15 +1277,17 @@ AcpiDmUnresolvedWarning ( Format = Type ? Pad : NoPad; sprintf (ExternalWarningPart1, - "%s iASL Warning: There were %u external control methods found during\n" + "%s iASL Warning: There %s %u external control method%s found during\n" "%s disassembly, but only %u %s resolved (%u unresolved). Additional\n" "%s ACPI tables may be required to properly disassemble the code. This\n" "%s resulting disassembler output file may not compile because the\n" "%s disassembler did not know how many arguments to assign to the\n" "%s unresolved methods. Note: SSDTs can be dynamically loaded at\n" "%s runtime and may or may not be available via the host OS.\n", - Format, AcpiGbl_NumExternalMethods, Format, AcpiGbl_ResolvedExternalMethods, - (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"), + Format, (AcpiGbl_NumExternalMethods != 1 ? "were" : "was"), + AcpiGbl_NumExternalMethods, (AcpiGbl_NumExternalMethods != 1 ? "s" : ""), + Format, AcpiGbl_ResolvedExternalMethods, + (AcpiGbl_ResolvedExternalMethods != 1 ? "were" : "was"), (AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods), Format, Format, Format, Format, Format); @@ -1391,7 +1329,7 @@ AcpiDmUnresolvedWarning ( { /* The -e option was specified, but there are still some unresolved externals */ - AcpiOsPrintf (" /*\n%s *\n *\n */\n", + AcpiOsPrintf (" /*\n%s *\n%s *\n%s */\n", ExternalWarningPart1, ExternalWarningPart3, ExternalWarningPart4); } } Modified: vendor-sys/acpica/dist/source/common/dmtable.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmtable.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/common/dmtable.c Fri Mar 18 21:13:19 2016 (r297044) @@ -118,6 +118,7 @@ static const char *AcpiDmEinjA "Check Busy Status", "Get Command Status", "Set Error Type With Address", + "Get Execute Timings", "Unknown Action" }; @@ -150,6 +151,7 @@ static const char *AcpiDmErstA "Get Error Address Range", "Get Error Address Length", "Get Error Attributes", + "Execute Timings", "Unknown Action" }; @@ -209,6 +211,10 @@ static const char *AcpiDmHestN "NMI", "CMCI", /* ACPI 5.0 */ "MCE", /* ACPI 5.0 */ + "GPIO", /* ACPI 6.0 */ + "SEA", /* ACPI 6.1 */ + "SEI", /* ACPI 6.1 */ + "GSIV", /* ACPI 6.1 */ "Unknown Notify Type" /* Reserved */ }; Modified: vendor-sys/acpica/dist/source/common/dmtables.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmtables.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/common/dmtables.c Fri Mar 18 21:13:19 2016 (r297044) @@ -141,7 +141,6 @@ AdCreateTableHeader ( char *Filename, ACPI_TABLE_HEADER *Table) { - char *NewFilename; UINT8 Checksum; @@ -184,11 +183,10 @@ AdCreateTableHeader ( break; } - AcpiOsPrintf ("\n"); /* Print and validate the table checksum */ - AcpiOsPrintf (" * Checksum 0x%2.2X", Table->Checksum); + AcpiOsPrintf ("\n * Checksum 0x%2.2X", Table->Checksum); Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); if (Checksum) @@ -205,33 +203,16 @@ AdCreateTableHeader ( AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); AcpiOsPrintf (" */\n"); - /* Create AML output filename based on input filename */ - - if (Filename) - { - NewFilename = FlGenerateFilename (Filename, "aml"); - } - else - { - NewFilename = UtStringCacheCalloc (9); - if (NewFilename) - { - strncat (NewFilename, Table->Signature, 4); - strcat (NewFilename, ".aml"); - } - } - - if (!NewFilename) - { - AcpiOsPrintf (" **** Could not generate AML output filename\n"); - return; - } - - /* Open the ASL definition block */ - + /* + * Open the ASL definition block. + * + * Note: the AMLFilename string is left zero-length in order to just let + * the compiler create it when the disassembled file is compiled. This + * makes it easier to rename the disassembled ASL file if needed. + */ AcpiOsPrintf ( - "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n", - NewFilename, Table->Signature, Table->Revision, + "DefinitionBlock (\"\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n", + Table->Signature, Table->Revision, Table->OemId, Table->OemTableId, Table->OemRevision); } Modified: vendor-sys/acpica/dist/source/common/dmtbdump.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmtbdump.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/common/dmtbdump.c Fri Mar 18 21:13:19 2016 (r297044) @@ -1773,6 +1773,12 @@ AcpiDmDumpIort ( IortSmmu = ACPI_ADD_PTR (ACPI_IORT_SMMU, IortNode, NodeOffset); break; + case ACPI_IORT_NODE_SMMU_V3: + + InfoTable = AcpiDmTableInfoIort4; + Length = IortNode->Length - NodeOffset; + break; + default: AcpiOsPrintf ("\n**** Unknown IORT node type 0x%X\n", @@ -3139,7 +3145,7 @@ AcpiDmDumpS3pt ( { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_S3PT); - ACPI_S3PT_HEADER *SubTable; + ACPI_FPDT_HEADER *SubTable; ACPI_DMTABLE_INFO *InfoTable; ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables); @@ -3152,7 +3158,7 @@ AcpiDmDumpS3pt ( return 0; } - SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, S3ptTable, Offset); + SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset); while (Offset < S3ptTable->Length) { /* Common subtable header */ @@ -3204,7 +3210,7 @@ NextSubTable: /* Point to next subtable */ Offset += SubTable->Length; - SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, SubTable, SubTable->Length); + SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length); } return (S3ptTable->Length); Modified: vendor-sys/acpica/dist/source/common/dmtbinfo.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmtbinfo.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/common/dmtbinfo.c Fri Mar 18 21:13:19 2016 (r297044) @@ -150,8 +150,8 @@ #define ACPI_EINJ0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f) #define ACPI_ERST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f) #define ACPI_FPDTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f) -#define ACPI_FPDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT,f) -#define ACPI_FPDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_S3PT_PTR,f) +#define ACPI_FPDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT_POINTER,f) +#define ACPI_FPDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_S3PT_POINTER,f) #define ACPI_GTDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_BLOCK,f) #define ACPI_GTDT0a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_ENTRY,f) #define ACPI_GTDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GTDT_WATCHDOG,f) @@ -170,6 +170,7 @@ #define ACPI_IORT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_NAMED_COMPONENT,f) #define ACPI_IORT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ROOT_COMPLEX,f) #define ACPI_IORT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_SMMU,f) +#define ACPI_IORT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_SMMU_V3,f) #define ACPI_IORTA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_MEMORY_ACCESS,f) #define ACPI_IORTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_NODE,f) #define ACPI_IORTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ID_MAPPING,f) @@ -222,7 +223,7 @@ #define ACPI_PMTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_DOMAIN,f) #define ACPI_PMTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_PHYSICAL_COMPONENT,f) #define ACPI_PMTTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_HEADER,f) -#define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_HEADER,f) +#define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f) #define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f) #define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f) #define ACPI_SLIC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIC,f) @@ -256,6 +257,7 @@ #define ACPI_GTDT0a_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_GTDT_TIMER_ENTRY,f,o) #define ACPI_GTDT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_GTDT_WATCHDOG,f,o) #define ACPI_IORT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_SMMU,f,o) +#define ACPI_IORT4_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_SMMU_V3,f,o) #define ACPI_IORTA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_MEMORY_ACCESS,f,o) #define ACPI_IORTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_ID_MAPPING,f,o) #define ACPI_LPITH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_LPIT_HEADER,f,o) @@ -1095,11 +1097,7 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt0[] = { {ACPI_DMT_UINT32, ACPI_FPDT0_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ResetEnd), "Reset End", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (LoadStart), "Load Image Start", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (StartupStart), "Start Image Start", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesEntry), "Exit Services Entry", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesExit), "Exit Services Exit", 0}, + {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "FPDT Boot Record Address", 0}, ACPI_DMT_TERMINATOR }; @@ -1108,10 +1106,18 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt1[] = { {ACPI_DMT_UINT32, ACPI_FPDT1_OFFSET (Reserved), "Reserved", 0}, - {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "S3PT Address", 0}, + {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "S3PT Record Address", 0}, ACPI_DMT_TERMINATOR }; +#if 0 + /* Boot Performance Record, not supported at this time. */ + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ResetEnd), "Reset End", 0}, + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (LoadStart), "Load Image Start", 0}, + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (StartupStart), "Start Image Start", 0}, + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesEntry), "Exit Services Entry", 0}, + {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesExit), "Exit Services Exit", 0}, +#endif /******************************************************************************* * @@ -1557,6 +1563,23 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMT_TERMINATOR }; +/* 0x04: SMMUv3 */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoIort4[] = +{ + {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Flags), "Flags (decoded below)", 0}, + {ACPI_DMT_FLAG0, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "COHACC Override", 0}, + {ACPI_DMT_FLAG1, ACPI_IORT4_FLAG_OFFSET (Flags, 0), "HTTU Override", 0}, + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_IORT4_OFFSET (VatosAddress), "VATOS Address", 0}, + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (Model), "Model", 0}, + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (EventGsiv), "Event GSIV", 0}, + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (PriGsiv), "PRI GSIV", 0}, + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (GerrGsiv), "GERR GSIV", 0}, + {ACPI_DMT_UINT32, ACPI_IORT4_OFFSET (SyncGsiv), "Sync GSIV", 0}, + ACPI_DMT_TERMINATOR +}; /******************************************************************************* * @@ -2209,7 +2232,10 @@ ACPI_DMTABLE_INFO AcpiDmTableI {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemVendorId), "Subsystem Vendor Id", 0}, {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemDeviceId), "Subsystem Device Id", 0}, {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (SubsystemRevisionId), "Subsystem Revision Id", 0}, - {ACPI_DMT_UINT48, ACPI_NFIT4_OFFSET (Reserved[0]), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_NFIT4_OFFSET (ValidFields), "Valid Fields", 0}, + {ACPI_DMT_UINT8, ACPI_NFIT4_OFFSET (ManufacturingLocation), "Manufacturing Location", 0}, + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (ManufacturingDate), "Manufacturing Date", 0}, + {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_NFIT4_OFFSET (SerialNumber), "Serial Number", 0}, {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Code), "Code", 0}, {ACPI_DMT_UINT16, ACPI_NFIT4_OFFSET (Windows), "Window Count", 0}, Modified: vendor-sys/acpica/dist/source/compiler/aslcodegen.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcodegen.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/compiler/aslcodegen.c Fri Mar 18 21:13:19 2016 (r297044) @@ -590,6 +590,12 @@ CgWriteNode ( return; } + if ((Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) && + Gbl_DoExternals == FALSE) + { + return; + } + Op->Asl.FinalAmlLength = 0; switch (Op->Asl.AmlOpcode) Modified: vendor-sys/acpica/dist/source/compiler/aslcompile.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcompile.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/compiler/aslcompile.c Fri Mar 18 21:13:19 2016 (r297044) @@ -281,11 +281,14 @@ CmDoCompile ( /* Resolve External Declarations */ - Event = UtBeginEvent ("Resolve all Externals"); - DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n"); - TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE, - ExAmlExternalWalkBegin, ExAmlExternalWalkEnd, NULL); - UtEndEvent (Event); + if (Gbl_DoExternals) + { + Event = UtBeginEvent ("Resolve all Externals"); + DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n"); + TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE, + ExAmlExternalWalkBegin, ExAmlExternalWalkEnd, NULL); + UtEndEvent (Event); + } /* * Semantic analysis. This can happen only after the Modified: vendor-sys/acpica/dist/source/compiler/aslcompiler.h ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcompiler.h Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/compiler/aslcompiler.h Fri Mar 18 21:13:19 2016 (r297044) @@ -538,6 +538,14 @@ OptOptimizeNamePath ( /* + * aslpld - ToPLD macro support + */ +void +OpcDoPld ( + ACPI_PARSE_OBJECT *Op); + + +/* * aslprintf - Printf/Fprintf macros */ void Modified: vendor-sys/acpica/dist/source/compiler/aslexternal.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslexternal.c Fri Mar 18 20:24:31 2016 (r297043) +++ vendor-sys/acpica/dist/source/compiler/aslexternal.c Fri Mar 18 21:13:19 2016 (r297044) @@ -146,6 +146,7 @@ ExInsertArgCount ( char * ExternalName; char * CallName; UINT16 ArgCount = 0; + ACPI_STATUS Status; CallName = AcpiNsGetNormalizedPathname (Op->Asl.Node, TRUE); @@ -166,43 +167,49 @@ ExInsertArgCount ( NameOp = Next->Asl.Child->Asl.Child; ExternalName = AcpiNsGetNormalizedPathname (NameOp->Asl.Node, TRUE); - if (!strcmp (CallName, ExternalName)) + if (strcmp (CallName, ExternalName)) { - Next->Asl.Child->Asl.CompileFlags |= NODE_VISITED; + ACPI_FREE (ExternalName); + Next = Next->Asl.Next; + continue; + } - /* - * Since we will reposition Externals to the Root, set Namepath - * to the fully qualified name and recalculate the aml length - */ - if (ACPI_FAILURE (UtInternalizeName ( - ExternalName, &NameOp->Asl.Value.String))) - { - AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, - NULL, "- Could not Internalize External"); + Next->Asl.Child->Asl.CompileFlags |= NODE_VISITED; - break; - } - - NameOp->Asl.AmlLength = strlen (NameOp->Asl.Value.String); + /* + * Since we will reposition Externals to the Root, set Namepath + * to the fully qualified name and recalculate the aml length + */ + Status = UtInternalizeName (ExternalName, + &NameOp->Asl.Value.String); - /* Get argument count */ + ACPI_FREE (ExternalName); + if (ACPI_FAILURE (Status)) + { + AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, + NULL, "- Could not Internalize External"); + break; + } - Child = Op->Asl.Child; - while (Child) - { - ArgCount++; - Child = Child->Asl.Next; - } + NameOp->Asl.AmlLength = strlen (NameOp->Asl.Value.String); - /* Setup ArgCount operand */ + /* Get argument count */ - ArgCountOp = Next->Asl.Child->Asl.Child->Asl.Next->Asl.Next; - ArgCountOp->Asl.Value.Integer = ArgCount; - break; + Child = Op->Asl.Child; + while (Child) + { + ArgCount++; + Child = Child->Asl.Next; } - Next = Next->Asl.Next; + /* Setup ArgCount operand */ + + ArgCountOp = Next->Asl.Child->Asl.Child->Asl.Next->Asl.Next; + ArgCountOp->Asl.Value.Integer = ArgCount; + break; } + + ACPI_FREE (CallName); } *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***