From owner-svn-src-head@FreeBSD.ORG Wed Jul 11 23:18:36 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B1AE1106564A; Wed, 11 Jul 2012 23:18:36 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 97D2D8FC08; Wed, 11 Jul 2012 23:18:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q6BNIa2L070829; Wed, 11 Jul 2012 23:18:36 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6BNIa8Z070803; Wed, 11 Jul 2012 23:18:36 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201207112318.q6BNIa8Z070803@svn.freebsd.org> From: Jung-uk Kim Date: Wed, 11 Jul 2012 23:18:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r238381 - in head: sys/conf sys/contrib/dev/acpica sys/contrib/dev/acpica/compiler sys/contrib/dev/acpica/components/debugger sys/contrib/dev/acpica/components/events sys/contrib/dev/ac... X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Jul 2012 23:18:36 -0000 Author: jkim Date: Wed Jul 11 23:18:35 2012 New Revision: 238381 URL: http://svn.freebsd.org/changeset/base/238381 Log: Merge ACPICA 20120711. Added: head/sys/contrib/dev/acpica/components/tables/tbxfload.c - copied, changed from r238368, vendor-sys/acpica/dist/source/components/tables/tbxfload.c head/sys/contrib/dev/acpica/components/utilities/utexcep.c - copied, changed from r238368, vendor-sys/acpica/dist/source/components/utilities/utexcep.c Modified: head/sys/conf/files head/sys/contrib/dev/acpica/changes.txt (contents, props changed) head/sys/contrib/dev/acpica/compiler/aslmain.c head/sys/contrib/dev/acpica/components/debugger/dbcmds.c head/sys/contrib/dev/acpica/components/debugger/dbinput.c head/sys/contrib/dev/acpica/components/events/evxfgpe.c head/sys/contrib/dev/acpica/components/executer/exprep.c head/sys/contrib/dev/acpica/components/executer/exresolv.c head/sys/contrib/dev/acpica/components/executer/exstore.c head/sys/contrib/dev/acpica/components/executer/exutils.c head/sys/contrib/dev/acpica/components/hardware/hwsleep.c head/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c head/sys/contrib/dev/acpica/components/namespace/nspredef.c head/sys/contrib/dev/acpica/components/parser/psxface.c head/sys/contrib/dev/acpica/components/resources/rscreate.c head/sys/contrib/dev/acpica/components/resources/rsutils.c head/sys/contrib/dev/acpica/components/tables/tbfadt.c head/sys/contrib/dev/acpica/components/tables/tbinstal.c head/sys/contrib/dev/acpica/components/tables/tbutils.c head/sys/contrib/dev/acpica/components/tables/tbxface.c head/sys/contrib/dev/acpica/components/tables/tbxfroot.c head/sys/contrib/dev/acpica/components/utilities/utdecode.c head/sys/contrib/dev/acpica/components/utilities/utglobal.c head/sys/contrib/dev/acpica/components/utilities/utmisc.c head/sys/contrib/dev/acpica/components/utilities/utobject.c head/sys/contrib/dev/acpica/components/utilities/utresrc.c head/sys/contrib/dev/acpica/components/utilities/utxferror.c head/sys/contrib/dev/acpica/include/acdebug.h head/sys/contrib/dev/acpica/include/acexcep.h head/sys/contrib/dev/acpica/include/acglobal.h head/sys/contrib/dev/acpica/include/acmacros.h head/sys/contrib/dev/acpica/include/acobject.h head/sys/contrib/dev/acpica/include/acoutput.h head/sys/contrib/dev/acpica/include/acpixf.h head/sys/contrib/dev/acpica/include/actbl1.h head/sys/contrib/dev/acpica/include/platform/acenv.h head/sys/modules/acpi/acpi/Makefile head/usr.sbin/acpi/acpidb/Makefile head/usr.sbin/acpi/iasl/Makefile Directory Properties: head/sys/contrib/dev/acpica/ (props changed) head/sys/contrib/dev/acpica/compiler/ (props changed) head/sys/contrib/dev/acpica/components/debugger/ (props changed) head/sys/contrib/dev/acpica/components/events/ (props changed) head/sys/contrib/dev/acpica/components/executer/ (props changed) head/sys/contrib/dev/acpica/components/hardware/ (props changed) head/sys/contrib/dev/acpica/components/namespace/ (props changed) head/sys/contrib/dev/acpica/components/parser/ (props changed) head/sys/contrib/dev/acpica/components/resources/ (props changed) head/sys/contrib/dev/acpica/components/tables/ (props changed) head/sys/contrib/dev/acpica/components/utilities/ (props changed) head/sys/contrib/dev/acpica/include/ (props changed) Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/conf/files Wed Jul 11 23:18:35 2012 (r238381) @@ -412,6 +412,7 @@ contrib/dev/acpica/components/tables/tbf contrib/dev/acpica/components/tables/tbinstal.c optional acpi contrib/dev/acpica/components/tables/tbutils.c optional acpi contrib/dev/acpica/components/tables/tbxface.c optional acpi +contrib/dev/acpica/components/tables/tbxfload.c optional acpi contrib/dev/acpica/components/tables/tbxfroot.c optional acpi contrib/dev/acpica/components/utilities/utaddress.c optional acpi contrib/dev/acpica/components/utilities/utalloc.c optional acpi @@ -421,6 +422,7 @@ contrib/dev/acpica/components/utilities/ contrib/dev/acpica/components/utilities/utdecode.c optional acpi contrib/dev/acpica/components/utilities/utdelete.c optional acpi contrib/dev/acpica/components/utilities/uteval.c optional acpi +contrib/dev/acpica/components/utilities/utexcep.c optional acpi contrib/dev/acpica/components/utilities/utglobal.c optional acpi contrib/dev/acpica/components/utilities/utids.c optional acpi contrib/dev/acpica/components/utilities/utinit.c optional acpi Modified: head/sys/contrib/dev/acpica/changes.txt ============================================================================== --- head/sys/contrib/dev/acpica/changes.txt Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/changes.txt Wed Jul 11 23:18:35 2012 (r238381) @@ -1,4 +1,82 @@ ---------------------------------------- +11 July 2012. Summary of changes for version 20120711: + +This release is available at https://www.acpica.org/downloads The ACPI 5.0 +specification is available at www.acpi.info + +1) ACPICA Kernel-resident Subsystem: + +Fixed a possible fault in the return package object repair code. Fixes a +problem that can occur when a lone package object is wrapped with an outer +package object in order to force conformance to the ACPI specification. Can +affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, _DLM, +_CSD, _PSD, _TSD. + +Removed code to disable/enable bus master arbitration (ARB_DIS bit in the +PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the +ARB_DIS bit must be implemented in the host-dependent C3 processor power state +support. Note, ARB_DIS is obsolete and only applies to older chipsets, both +Intel and other vendors. (for Intel: ICH4-M and earlier) + +This change removes the code to disable/enable bus master arbitration during +suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register causes +resume problems on some machines. The change has been in use for over seven +years within Linux. + +Implemented two new external interfaces to support host-directed dynamic ACPI +table load and unload. They are intended to simplify the host implementation +of hot-plug support: + AcpiLoadTable: Load an SSDT from a buffer into the namespace. + AcpiUnloadParentTable: Unload an SSDT via a named object owned by the table. +See the ACPICA reference for additional details. Adds one new file, +components/tables/tbxfload.c + +Implemented and deployed two new interfaces for errors and warnings that are +known to be caused by BIOS/firmware issues: + AcpiBiosError: Prints "ACPI Firmware Error" message. + AcpiBiosWarning: Prints "ACPI Firmware Warning" message. +Deployed these new interfaces in the ACPICA Table Manager code for ACPI table +and FADT errors. Additional deployment to be completed as appropriate in the +future. The associated conditional macros are ACPI_BIOS_ERROR and +ACPI_BIOS_WARNING. See the ACPICA reference for additional details. ACPICA BZ +843. + +Implicit notify support: ensure that no memory allocation occurs within a +critical region. This fix moves a memory allocation outside of the time that a +spinlock is held. Fixes issues on systems that do not allow this behavior. +Jung-uk Kim. + +Split exception code utilities and tables into a new file, utilities/utexcep.c + +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. + + Previous Release: + Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total + Debug Version: 172.9K Code, 73.6K Data, 246.5K Total + Current Release: + Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total + Debug Version: 173.7K Code, 74.0K Data, 247.7K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead of +0. Jung-uk Kim. + +Debugger: Enhanced the "tables" command to emit additional information about +the current set of ACPI tables, including the owner ID and flags decode. + +Debugger: Reimplemented the "unload" command to use the new +AcpiUnloadParentTable external interface. This command was disable previously +due to need for an unload interface. + +AcpiHelp: Added a new option to decode ACPICA exception codes. The -e option +will decode 16-bit hex status codes (ACPI_STATUS) to name strings. + +---------------------------------------- 20 June 2012. Summary of changes for version 20120620: This release is available at https://www.acpica.org/downloads Modified: head/sys/contrib/dev/acpica/compiler/aslmain.c ============================================================================== --- head/sys/contrib/dev/acpica/compiler/aslmain.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/compiler/aslmain.c Wed Jul 11 23:18:35 2012 (r238381) @@ -96,7 +96,7 @@ AslDoResponseFile ( #define ASL_TOKEN_SEPARATORS " \t\n" -#define ASL_SUPPORTED_OPTIONS "@:2b|c|d^D:e:fgh^i|I:l^mno|p:P^r:s|t|T:G^v|w|x:z" +#define ASL_SUPPORTED_OPTIONS "@:2b|c|d^D:e:fgh^i|I:l^mno|p:P^r:s|t|T:G^v^w|x:z" /******************************************************************************* @@ -119,6 +119,7 @@ Options ( printf ("\nGlobal:\n"); ACPI_OPTION ("-@ ", "Specify command file"); ACPI_OPTION ("-I ", "Specify additional include directory"); + ACPI_OPTION ("-v", "Display compiler version"); printf ("\nPreprocessor:\n"); ACPI_OPTION ("-D ", "Define symbol for preprocessor use"); @@ -751,9 +752,13 @@ AslDoOptions ( break; - case 'v': /* Verbosity settings */ + case 'v': /* Version and verbosity settings */ switch (AcpiGbl_Optarg[0]) { + case '^': + printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME)); + exit (0); + case 'a': /* Disable All error/warning messages */ Modified: head/sys/contrib/dev/acpica/components/debugger/dbcmds.c ============================================================================== --- head/sys/contrib/dev/acpica/components/debugger/dbcmds.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/debugger/dbcmds.c Wed Jul 11 23:18:35 2012 (r238381) @@ -254,12 +254,53 @@ AcpiDbDisplayTableInfo ( ACPI_STATUS Status; + /* Header */ + + AcpiOsPrintf ("Idx ID Status Type Sig Address Len Header\n"); + /* Walk the entire root table list */ for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { TableDesc = &AcpiGbl_RootTableList.Tables[i]; - AcpiOsPrintf ("%u ", i); + + /* Index and Table ID */ + + AcpiOsPrintf ("%3u %.2u ", i, TableDesc->OwnerId); + + /* Decode the table flags */ + + if (!(TableDesc->Flags & ACPI_TABLE_IS_LOADED)) + { + AcpiOsPrintf ("NotLoaded "); + } + else + { + AcpiOsPrintf (" Loaded "); + } + + switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) + { + case ACPI_TABLE_ORIGIN_UNKNOWN: + AcpiOsPrintf ("Unknown "); + break; + + case ACPI_TABLE_ORIGIN_MAPPED: + AcpiOsPrintf ("Mapped "); + break; + + case ACPI_TABLE_ORIGIN_ALLOCATED: + AcpiOsPrintf ("Allocated "); + break; + + case ACPI_TABLE_ORIGIN_OVERRIDE: + AcpiOsPrintf ("Override "); + break; + + default: + AcpiOsPrintf ("INVALID "); + break; + } /* Make sure that the table is mapped */ @@ -290,55 +331,45 @@ AcpiDbDisplayTableInfo ( * * FUNCTION: AcpiDbUnloadAcpiTable * - * PARAMETERS: TableArg - Name of the table to be unloaded - * InstanceArg - Which instance of the table to unload (if - * there are multiple tables of the same type) + * PARAMETERS: ObjectName - Namespace pathname for an object that + * is owned by the table to be unloaded * - * RETURN: Nonde + * RETURN: None * - * DESCRIPTION: Unload an ACPI table. - * Instance is not implemented + * DESCRIPTION: Unload an ACPI table, via any namespace node that is owned + * by the table. * ******************************************************************************/ void AcpiDbUnloadAcpiTable ( - char *TableArg, - char *InstanceArg) + char *ObjectName) { -/* TBD: Need to reimplement for new data structures */ - -#if 0 - UINT32 i; + ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; - /* Search all tables for the target type */ + /* Translate name to an Named object */ - for (i = 0; i < (ACPI_TABLE_ID_MAX+1); i++) + Node = AcpiDbConvertToNode (ObjectName); + if (!Node) { - if (!ACPI_STRNCMP (TableArg, AcpiGbl_TableData[i].Signature, - AcpiGbl_TableData[i].SigLength)) - { - /* Found the table, unload it */ - - Status = AcpiUnloadTable (i); - if (ACPI_SUCCESS (Status)) - { - AcpiOsPrintf ("[%s] unloaded and uninstalled\n", TableArg); - } - else - { - AcpiOsPrintf ("%s, while unloading [%s]\n", - AcpiFormatException (Status), TableArg); - } - - return; - } + AcpiOsPrintf ("Could not find [%s] in namespace\n", + ObjectName); + return; } - AcpiOsPrintf ("Unknown table type [%s]\n", TableArg); -#endif + Status = AcpiUnloadParentTable (ACPI_CAST_PTR (ACPI_HANDLE, Node)); + if (ACPI_SUCCESS (Status)) + { + AcpiOsPrintf ("Parent of [%s] (%p) unloaded and uninstalled\n", + ObjectName, Node); + } + else + { + AcpiOsPrintf ("%s, while unloading parent table of [%s]\n", + AcpiFormatException (Status), ObjectName); + } } Modified: head/sys/contrib/dev/acpica/components/debugger/dbinput.c ============================================================================== --- head/sys/contrib/dev/acpica/components/debugger/dbinput.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/debugger/dbinput.c Wed Jul 11 23:18:35 2012 (r238381) @@ -250,7 +250,7 @@ AcpiDbDisplayHelp ( AcpiOsPrintf (" Stack Display CPU stack usage\n"); AcpiOsPrintf (" Tables Info about current ACPI table(s)\n"); AcpiOsPrintf (" Tables Display info about loaded ACPI tables\n"); - AcpiOsPrintf (" Unload [Instance] Unload an ACPI table\n"); + AcpiOsPrintf (" Unload Unload an ACPI table via namespace object\n"); AcpiOsPrintf (" ! Execute command from history buffer\n"); AcpiOsPrintf (" !! Execute last command again\n"); @@ -894,7 +894,7 @@ AcpiDbCommandDispatch ( break; case CMD_UNLOAD: - AcpiDbUnloadAcpiTable (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); + AcpiDbUnloadAcpiTable (AcpiGbl_DbArgs[1]); break; case CMD_EXIT: Modified: head/sys/contrib/dev/acpica/components/events/evxfgpe.c ============================================================================== --- head/sys/contrib/dev/acpica/components/events/evxfgpe.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/events/evxfgpe.c Wed Jul 11 23:18:35 2012 (r238381) @@ -83,7 +83,7 @@ AcpiUpdateAllGpes ( ACPI_STATUS Status; - ACPI_FUNCTION_TRACE (AcpiUpdateGpes); + ACPI_FUNCTION_TRACE (AcpiUpdateAllGpes); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); @@ -298,7 +298,8 @@ AcpiSetupGpeForWake ( ACPI_STATUS Status; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_NAMESPACE_NODE *DeviceNode; - ACPI_GPE_NOTIFY_INFO *NewNotify, *Notify; + ACPI_GPE_NOTIFY_INFO *Notify; + ACPI_GPE_NOTIFY_INFO *NewNotify; ACPI_CPU_FLAGS Flags; @@ -334,6 +335,11 @@ AcpiSetupGpeForWake ( return_ACPI_STATUS (AE_BAD_PARAMETER); } + /* + * Allocate a new notify object up front, in case it is needed. + * Memory allocation while holding a spinlock is a big no-no + * on some hosts. + */ NewNotify = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_NOTIFY_INFO)); if (!NewNotify) { @@ -401,8 +407,12 @@ AcpiSetupGpeForWake ( GpeEventInfo->Flags |= ACPI_GPE_CAN_WAKE; Status = AE_OK; + UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); + + /* Delete the notify object if it was not used above */ + if (NewNotify) { ACPI_FREE (NewNotify); Modified: head/sys/contrib/dev/acpica/components/executer/exprep.c ============================================================================== --- head/sys/contrib/dev/acpica/components/executer/exprep.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/executer/exprep.c Wed Jul 11 23:18:35 2012 (r238381) @@ -418,8 +418,8 @@ AcpiExPrepCommonFieldObject ( * * RETURN: Status * - * DESCRIPTION: Construct an ACPI_OPERAND_OBJECT of type DefField and - * connect it to the parent Node. + * DESCRIPTION: Construct an object of type ACPI_OPERAND_OBJECT with a + * subtype of DefField and connect it to the parent Node. * ******************************************************************************/ Modified: head/sys/contrib/dev/acpica/components/executer/exresolv.c ============================================================================== --- head/sys/contrib/dev/acpica/components/executer/exresolv.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/executer/exresolv.c Wed Jul 11 23:18:35 2012 (r238381) @@ -165,7 +165,7 @@ AcpiExResolveObjectToValue ( StackDesc = *StackPtr; - /* This is an ACPI_OPERAND_OBJECT */ + /* This is an object of type ACPI_OPERAND_OBJECT */ switch (StackDesc->Common.Type) { Modified: head/sys/contrib/dev/acpica/components/executer/exstore.c ============================================================================== --- head/sys/contrib/dev/acpica/components/executer/exstore.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/executer/exstore.c Wed Jul 11 23:18:35 2012 (r238381) @@ -68,15 +68,15 @@ AcpiExStoreObjectToIndex ( * FUNCTION: AcpiExStore * * PARAMETERS: *SourceDesc - Value to be stored - * *DestDesc - Where to store it. Must be an NS node - * or an ACPI_OPERAND_OBJECT of type + * *DestDesc - Where to store it. Must be an NS node + * or ACPI_OPERAND_OBJECT of type * Reference; * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Store the value described by SourceDesc into the location - * described by DestDesc. Called by various interpreter + * described by DestDesc. Called by various interpreter * functions to store the result of an operation into * the destination operand -- not just simply the actual "Store" * ASL operator. Modified: head/sys/contrib/dev/acpica/components/executer/exutils.c ============================================================================== --- head/sys/contrib/dev/acpica/components/executer/exutils.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/executer/exutils.c Wed Jul 11 23:18:35 2012 (r238381) @@ -121,7 +121,7 @@ AcpiExEnterInterpreter ( * * DESCRIPTION: Reacquire the interpreter execution region from within the * interpreter code. Failure to enter the interpreter region is a - * fatal system error. Used in conjuction with + * fatal system error. Used in conjunction with * RelinquishInterpreter * ******************************************************************************/ Modified: head/sys/contrib/dev/acpica/components/hardware/hwsleep.c ============================================================================== --- head/sys/contrib/dev/acpica/components/hardware/hwsleep.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/hardware/hwsleep.c Wed Jul 11 23:18:35 2012 (r238381) @@ -100,20 +100,6 @@ AcpiHwLegacySleep ( return_ACPI_STATUS (Status); } - if (SleepState != ACPI_STATE_S5) - { - /* - * Disable BM arbitration. This feature is contained within an - * optional register (PM2 Control), so ignore a BAD_ADDRESS - * exception. - */ - Status = AcpiWriteBitRegister (ACPI_BITREG_ARB_DISABLE, 1); - if (ACPI_FAILURE (Status) && (Status != AE_BAD_ADDRESS)) - { - return_ACPI_STATUS (Status); - } - } - /* * 1) Disable/Clear all GPEs * 2) Enable all wakeup GPEs @@ -394,17 +380,6 @@ AcpiHwLegacyWake ( AcpiGbl_FixedEventInfo[ACPI_EVENT_POWER_BUTTON].StatusRegisterId, ACPI_CLEAR_STATUS); - /* - * Enable BM arbitration. This feature is contained within an - * optional register (PM2 Control), so ignore a BAD_ADDRESS - * exception. - */ - Status = AcpiWriteBitRegister (ACPI_BITREG_ARB_DISABLE, 0); - if (ACPI_FAILURE (Status) && (Status != AE_BAD_ADDRESS)) - { - return_ACPI_STATUS (Status); - } - AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WORKING); return_ACPI_STATUS (Status); } Modified: head/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c ============================================================================== --- head/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c Wed Jul 11 23:18:35 2012 (r238381) @@ -101,6 +101,14 @@ AcpiSetFirmwareWakingVector ( ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector); + /* + * According to the ACPI specification 2.0c and later, the 64-bit + * waking vector should be cleared and the 32-bit waking vector should + * be used, unless we want the wake-up code to be called by the BIOS in + * Protected Mode. Some systems (for example HP dv5-1004nr) are known + * to fail to resume if the 64-bit vector is used. + */ + /* Set the 32-bit vector */ AcpiGbl_FACS->FirmwareWakingVector = PhysicalAddress; Modified: head/sys/contrib/dev/acpica/components/namespace/nspredef.c ============================================================================== --- head/sys/contrib/dev/acpica/components/namespace/nspredef.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/namespace/nspredef.c Wed Jul 11 23:18:35 2012 (r238381) @@ -681,7 +681,7 @@ AcpiNsCheckPackage ( { /* Create the new outer package and populate it */ - Status = AcpiNsWrapWithPackage (Data, *Elements, ReturnObjectPtr); + Status = AcpiNsWrapWithPackage (Data, ReturnObject, ReturnObjectPtr); if (ACPI_FAILURE (Status)) { return (Status); Modified: head/sys/contrib/dev/acpica/components/parser/psxface.c ============================================================================== --- head/sys/contrib/dev/acpica/components/parser/psxface.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/parser/psxface.c Wed Jul 11 23:18:35 2012 (r238381) @@ -348,8 +348,8 @@ AcpiPsExecuteMethod ( } /* - * Start method evaluation with an implicit return of zero. This is done - * for Windows compatibility. + * Start method evaluation with an implicit return of zero. + * This is done for Windows compatibility. */ if (AcpiGbl_EnableInterpreterSlack) { Modified: head/sys/contrib/dev/acpica/components/resources/rscreate.c ============================================================================== --- head/sys/contrib/dev/acpica/components/resources/rscreate.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/resources/rscreate.c Wed Jul 11 23:18:35 2012 (r238381) @@ -209,8 +209,8 @@ AcpiRsCreateResourceList ( * * FUNCTION: AcpiRsCreatePciRoutingTable * - * PARAMETERS: PackageObject - Pointer to an ACPI_OPERAND_OBJECT - * package + * PARAMETERS: PackageObject - Pointer to a package containing one + * of more ACPI_OPERAND_OBJECTs * OutputBuffer - Pointer to the user's buffer * * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. @@ -218,7 +218,7 @@ AcpiRsCreateResourceList ( * AE_BUFFER_OVERFLOW and OutputBuffer->Length will point * to the size buffer needed. * - * DESCRIPTION: Takes the ACPI_OPERAND_OBJECT package and creates a + * DESCRIPTION: Takes the ACPI_OPERAND_OBJECT package and creates a * linked list of PCI interrupt descriptions * * NOTE: It is the caller's responsibility to ensure that the start of the Modified: head/sys/contrib/dev/acpica/components/resources/rsutils.c ============================================================================== --- head/sys/contrib/dev/acpica/components/resources/rsutils.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/resources/rsutils.c Wed Jul 11 23:18:35 2012 (r238381) @@ -181,7 +181,7 @@ AcpiRsMoveData ( /* * 16-, 32-, and 64-bit cases must use the move macros that perform - * endian conversion and/or accomodate hardware that cannot perform + * endian conversion and/or accommodate hardware that cannot perform * misaligned memory transfers */ case ACPI_RSC_MOVE16: Modified: head/sys/contrib/dev/acpica/components/tables/tbfadt.c ============================================================================== --- head/sys/contrib/dev/acpica/components/tables/tbfadt.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/tables/tbfadt.c Wed Jul 11 23:18:35 2012 (r238381) @@ -192,7 +192,7 @@ static ACPI_FADT_PM_INFO FadtPmInfoTa * * PARAMETERS: GenericAddress - GAS struct to be initialized * SpaceId - ACPI Space ID for this register - * ByteWidth - Width of this register, in bytes + * ByteWidth - Width of this register * Address - Address of the register * * RETURN: None @@ -338,7 +338,7 @@ AcpiTbCreateLocalFadt ( */ if (Length > sizeof (ACPI_TABLE_FADT)) { - ACPI_WARNING ((AE_INFO, + ACPI_BIOS_WARNING ((AE_INFO, "FADT (revision %u) is longer than ACPI 5.0 version, " "truncating length %u to %u", Table->Revision, Length, (UINT32) sizeof (ACPI_TABLE_FADT))); @@ -486,8 +486,9 @@ AcpiTbConvertFadt ( if (Address64->Address && Address32 && (Address64->Address != (UINT64) Address32)) { - ACPI_ERROR ((AE_INFO, - "32/64X address mismatch in %s: 0x%8.8X/0x%8.8X%8.8X, using 32", + ACPI_BIOS_ERROR ((AE_INFO, + "32/64X address mismatch in FADT/%s: " + "0x%8.8X/0x%8.8X%8.8X, using 32", FadtInfoTable[i].Name, Address32, ACPI_FORMAT_UINT64 (Address64->Address))); } @@ -546,7 +547,7 @@ AcpiTbValidateFadt ( if (AcpiGbl_FADT.Facs && (AcpiGbl_FADT.XFacs != (UINT64) AcpiGbl_FADT.Facs)) { - ACPI_WARNING ((AE_INFO, + ACPI_BIOS_WARNING ((AE_INFO, "32/64X FACS address mismatch in FADT - " "0x%8.8X/0x%8.8X%8.8X, using 32", AcpiGbl_FADT.Facs, ACPI_FORMAT_UINT64 (AcpiGbl_FADT.XFacs))); @@ -557,7 +558,7 @@ AcpiTbValidateFadt ( if (AcpiGbl_FADT.Dsdt && (AcpiGbl_FADT.XDsdt != (UINT64) AcpiGbl_FADT.Dsdt)) { - ACPI_WARNING ((AE_INFO, + ACPI_BIOS_WARNING ((AE_INFO, "32/64X DSDT address mismatch in FADT - " "0x%8.8X/0x%8.8X%8.8X, using 32", AcpiGbl_FADT.Dsdt, ACPI_FORMAT_UINT64 (AcpiGbl_FADT.XDsdt))); @@ -593,8 +594,8 @@ AcpiTbValidateFadt ( if (Address64->Address && (Address64->BitWidth != ACPI_MUL_8 (Length))) { - ACPI_WARNING ((AE_INFO, - "32/64X length mismatch in %s: %u/%u", + ACPI_BIOS_WARNING ((AE_INFO, + "32/64X length mismatch in FADT/%s: %u/%u", Name, ACPI_MUL_8 (Length), Address64->BitWidth)); } @@ -606,9 +607,9 @@ AcpiTbValidateFadt ( */ if (!Address64->Address || !Length) { - ACPI_ERROR ((AE_INFO, - "Required field %s has zero address and/or length:" - " 0x%8.8X%8.8X/0x%X", + ACPI_BIOS_ERROR ((AE_INFO, + "Required FADT field %s has zero address and/or length: " + "0x%8.8X%8.8X/0x%X", Name, ACPI_FORMAT_UINT64 (Address64->Address), Length)); } } @@ -622,8 +623,8 @@ AcpiTbValidateFadt ( if ((Address64->Address && !Length) || (!Address64->Address && Length)) { - ACPI_WARNING ((AE_INFO, - "Optional field %s has zero address or length: " + ACPI_BIOS_WARNING ((AE_INFO, + "Optional FADT field %s has zero address or length: " "0x%8.8X%8.8X/0x%X", Name, ACPI_FORMAT_UINT64 (Address64->Address), Length)); } @@ -674,8 +675,8 @@ AcpiTbSetupFadtRegisters ( (FadtInfoTable[i].DefaultLength > 0) && (FadtInfoTable[i].DefaultLength != Target64->BitWidth)) { - ACPI_WARNING ((AE_INFO, - "Invalid length for %s: %u, using default %u", + ACPI_BIOS_WARNING ((AE_INFO, + "Invalid length for FADT/%s: %u, using default %u", FadtInfoTable[i].Name, Target64->BitWidth, FadtInfoTable[i].DefaultLength)); Modified: head/sys/contrib/dev/acpica/components/tables/tbinstal.c ============================================================================== --- head/sys/contrib/dev/acpica/components/tables/tbinstal.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/tables/tbinstal.c Wed Jul 11 23:18:35 2012 (r238381) @@ -157,8 +157,9 @@ AcpiTbAddTable ( (!ACPI_COMPARE_NAME (TableDesc->Pointer->Signature, ACPI_SIG_SSDT)) && (ACPI_STRNCMP (TableDesc->Pointer->Signature, "OEM", 3))) { - ACPI_ERROR ((AE_INFO, - "Table has invalid signature [%4.4s] (0x%8.8X), must be SSDT or OEMx", + ACPI_BIOS_ERROR ((AE_INFO, + "Table has invalid signature [%4.4s] (0x%8.8X), " + "must be SSDT or OEMx", AcpiUtValidAcpiName (*(UINT32 *) TableDesc->Pointer->Signature) ? TableDesc->Pointer->Signature : "????", *(UINT32 *) TableDesc->Pointer->Signature)); Modified: head/sys/contrib/dev/acpica/components/tables/tbutils.c ============================================================================== --- head/sys/contrib/dev/acpica/components/tables/tbutils.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/tables/tbutils.c Wed Jul 11 23:18:35 2012 (r238381) @@ -287,8 +287,9 @@ AcpiTbVerifyChecksum ( if (Checksum) { - ACPI_WARNING ((AE_INFO, - "Incorrect checksum in table [%4.4s] - 0x%2.2X, should be 0x%2.2X", + ACPI_BIOS_WARNING ((AE_INFO, + "Incorrect checksum in table [%4.4s] - 0x%2.2X, " + "should be 0x%2.2X", Table->Signature, Table->Checksum, (UINT8) (Table->Checksum - Checksum))); @@ -356,8 +357,9 @@ AcpiTbCheckDsdtHeader ( if (AcpiGbl_OriginalDsdtHeader.Length != AcpiGbl_DSDT->Length || AcpiGbl_OriginalDsdtHeader.Checksum != AcpiGbl_DSDT->Checksum) { - ACPI_ERROR ((AE_INFO, - "The DSDT has been corrupted or replaced - old, new headers below")); + ACPI_BIOS_ERROR ((AE_INFO, + "The DSDT has been corrupted or replaced - " + "old, new headers below")); AcpiTbPrintTableHeader (0, &AcpiGbl_OriginalDsdtHeader); AcpiTbPrintTableHeader (0, AcpiGbl_DSDT); @@ -460,27 +462,12 @@ AcpiTbInstallTable ( return; } - /* Skip SSDT when DSDT is overriden */ - - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) && - (AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Flags & - ACPI_TABLE_ORIGIN_OVERRIDE)) - { - ACPI_INFO ((AE_INFO, - "%4.4s @ 0x%p Table override, replaced with:", ACPI_SIG_SSDT, - ACPI_CAST_PTR (void, Address))); - AcpiTbPrintTableHeader ( - AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Address, - AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer); - goto UnmapAndExit; - } - /* If a particular signature is expected (DSDT/FACS), it must match */ if (Signature && !ACPI_COMPARE_NAME (Table->Signature, Signature)) { - ACPI_ERROR ((AE_INFO, + ACPI_BIOS_ERROR ((AE_INFO, "Invalid signature 0x%X for ACPI table, expected [%s]", *ACPI_CAST_PTR (UINT32, Table->Signature), Signature)); goto UnmapAndExit; @@ -498,6 +485,19 @@ AcpiTbInstallTable ( TableDesc->Flags = ACPI_TABLE_ORIGIN_MAPPED; ACPI_MOVE_32_TO_32 (TableDesc->Signature.Ascii, Table->Signature); + /* When DSDT is overriden, assume SSDT is also overriden with it */ + + if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) && + (AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Flags & + ACPI_TABLE_ORIGIN_OVERRIDE)) + { + TableDesc->Flags = ACPI_TABLE_ORIGIN_OVERRIDE; + ACPI_INFO ((AE_INFO, + "%4.4s %p Logical table override, replaced with %4.4s", + ACPI_SIG_SSDT, ACPI_CAST_PTR (void, Address), ACPI_SIG_DSDT)); + goto UnmapAndExit; + } + /* * ACPI Table Override: * @@ -599,7 +599,7 @@ AcpiTbGetRootTableEntry ( { /* Will truncate 64-bit address to 32 bits, issue warning */ - ACPI_WARNING ((AE_INFO, + ACPI_BIOS_WARNING ((AE_INFO, "64-bit Physical Address in XSDT is too large (0x%8.8X%8.8X)," " truncating", ACPI_FORMAT_UINT64 (Address64))); @@ -701,7 +701,8 @@ AcpiTbParseRootTable ( if (Length < sizeof (ACPI_TABLE_HEADER)) { - ACPI_ERROR ((AE_INFO, "Invalid length 0x%X in RSDT/XSDT", Length)); + ACPI_BIOS_ERROR ((AE_INFO, + "Invalid table length 0x%X in RSDT/XSDT", Length)); return_ACPI_STATUS (AE_INVALID_TABLE_LENGTH); } Modified: head/sys/contrib/dev/acpica/components/tables/tbxface.c ============================================================================== --- head/sys/contrib/dev/acpica/components/tables/tbxface.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/tables/tbxface.c Wed Jul 11 23:18:35 2012 (r238381) @@ -1,7 +1,6 @@ /****************************************************************************** * - * Module Name: tbxface - Public interfaces to the ACPI subsystem - * ACPI table oriented interfaces + * Module Name: tbxface - ACPI table oriented external interfaces * *****************************************************************************/ @@ -46,18 +45,11 @@ #include #include -#include #include #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbxface") -/* Local prototypes */ - -static ACPI_STATUS -AcpiTbLoadNamespace ( - void); - /******************************************************************************* * @@ -458,165 +450,6 @@ ACPI_EXPORT_SYMBOL (AcpiGetTableByIndex) /******************************************************************************* * - * FUNCTION: AcpiTbLoadNamespace - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Load the namespace from the DSDT and all SSDTs/PSDTs found in - * the RSDT/XSDT. - * - ******************************************************************************/ - -static ACPI_STATUS -AcpiTbLoadNamespace ( - void) -{ - ACPI_STATUS Status; - UINT32 i; - ACPI_TABLE_HEADER *NewDsdt; - - - ACPI_FUNCTION_TRACE (TbLoadNamespace); - - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - - /* - * Load the namespace. The DSDT is required, but any SSDT and - * PSDT tables are optional. Verify the DSDT. - */ - if (!AcpiGbl_RootTableList.CurrentTableCount || - !ACPI_COMPARE_NAME ( - &(AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Signature), - ACPI_SIG_DSDT) || - ACPI_FAILURE (AcpiTbVerifyTable ( - &AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT]))) - { - Status = AE_NO_ACPI_TABLES; - goto UnlockAndExit; - } - - /* - * Save the DSDT pointer for simple access. This is the mapped memory - * address. We must take care here because the address of the .Tables - * array can change dynamically as tables are loaded at run-time. Note: - * .Pointer field is not validated until after call to AcpiTbVerifyTable. - */ - AcpiGbl_DSDT = AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer; - - /* - * Optionally copy the entire DSDT to local memory (instead of simply - * mapping it.) There are some BIOSs that corrupt or replace the original - * DSDT, creating the need for this option. Default is FALSE, do not copy - * the DSDT. - */ - if (AcpiGbl_CopyDsdtLocally) - { - NewDsdt = AcpiTbCopyDsdt (ACPI_TABLE_INDEX_DSDT); - if (NewDsdt) - { - AcpiGbl_DSDT = NewDsdt; - } - } - - /* - * Save the original DSDT header for detection of table corruption - * and/or replacement of the DSDT from outside the OS. - */ - ACPI_MEMCPY (&AcpiGbl_OriginalDsdtHeader, AcpiGbl_DSDT, - sizeof (ACPI_TABLE_HEADER)); - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - - /* Load and parse tables */ - - Status = AcpiNsLoadTable (ACPI_TABLE_INDEX_DSDT, AcpiGbl_RootNode); - if (ACPI_FAILURE (Status)) - { - return_ACPI_STATUS (Status); - } - - /* Load any SSDT or PSDT tables. Note: Loop leaves tables locked */ - - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - for (i = 2; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) - { - if ((!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - ACPI_SIG_SSDT) && - !ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - ACPI_SIG_PSDT)) || - ACPI_FAILURE (AcpiTbVerifyTable ( - &AcpiGbl_RootTableList.Tables[i]))) - { - continue; - } - - /* Skip SSDT when DSDT is overriden */ - - if (ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), - ACPI_SIG_SSDT) && - (AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Flags & - ACPI_TABLE_ORIGIN_OVERRIDE)) - { - continue; - } - - /* Ignore errors while loading tables, get as many as possible */ - - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - (void) AcpiNsLoadTable (i, AcpiGbl_RootNode); - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - } - - ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "ACPI Tables successfully acquired\n")); - -UnlockAndExit: - (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); - return_ACPI_STATUS (Status); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiLoadTables - * - * PARAMETERS: None - * - * RETURN: Status - * - * DESCRIPTION: Load the ACPI tables from the RSDT/XSDT - * - ******************************************************************************/ - -ACPI_STATUS -AcpiLoadTables ( - void) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (AcpiLoadTables); - - - /* Load the namespace from the tables */ - - Status = AcpiTbLoadNamespace (); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "While loading namespace from ACPI tables")); - } - - return_ACPI_STATUS (Status); -} - -ACPI_EXPORT_SYMBOL (AcpiLoadTables) - - -/******************************************************************************* - * * FUNCTION: AcpiInstallTableHandler * * PARAMETERS: Handler - Table event handler Copied and modified: head/sys/contrib/dev/acpica/components/tables/tbxfload.c (from r238368, vendor-sys/acpica/dist/source/components/tables/tbxfload.c) ============================================================================== --- vendor-sys/acpica/dist/source/components/tables/tbxfload.c Wed Jul 11 16:52:25 2012 (r238368, copy source) +++ head/sys/contrib/dev/acpica/components/tables/tbxfload.c Wed Jul 11 23:18:35 2012 (r238381) @@ -43,10 +43,10 @@ #define __TBXFLOAD_C__ -#include "acpi.h" -#include "accommon.h" -#include "acnamesp.h" -#include "actables.h" +#include +#include +#include +#include #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbxfload") @@ -180,7 +180,7 @@ AcpiTbLoadNamespace ( /* Load any SSDT or PSDT tables. Note: Loop leaves tables locked */ (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) + for (i = 2; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) { if ((!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), ACPI_SIG_SSDT) && @@ -192,6 +192,15 @@ AcpiTbLoadNamespace ( continue; } + /* Skip SSDT when it is overriden with DSDT */ + if (ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), + ACPI_SIG_SSDT) && + (AcpiGbl_RootTableList.Tables[i].Flags & + ACPI_TABLE_ORIGIN_OVERRIDE)) + { + continue; + } + /* Ignore errors while loading tables, get as many as possible */ (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); Modified: head/sys/contrib/dev/acpica/components/tables/tbxfroot.c ============================================================================== --- head/sys/contrib/dev/acpica/components/tables/tbxfroot.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/tables/tbxfroot.c Wed Jul 11 23:18:35 2012 (r238381) @@ -234,7 +234,7 @@ AcpiFindRootPointer ( /* A valid RSDP was not found */ - ACPI_ERROR ((AE_INFO, "A valid RSDP was not found")); + ACPI_BIOS_ERROR ((AE_INFO, "A valid RSDP was not found")); return_ACPI_STATUS (AE_NOT_FOUND); } Modified: head/sys/contrib/dev/acpica/components/utilities/utdecode.c ============================================================================== --- head/sys/contrib/dev/acpica/components/utilities/utdecode.c Wed Jul 11 23:12:17 2012 (r238380) +++ head/sys/contrib/dev/acpica/components/utilities/utdecode.c Wed Jul 11 23:18:35 2012 (r238381) @@ -51,47 +51,6 @@ ACPI_MODULE_NAME ("utdecode") -/******************************************************************************* - * - * FUNCTION: AcpiFormatException - * - * PARAMETERS: Status - The ACPI_STATUS code to be formatted - * - * RETURN: A string containing the exception text. A valid pointer is - * always returned. - * - * DESCRIPTION: This function translates an ACPI exception into an ASCII string - * It is here instead of utxface.c so it is always present. - * - ******************************************************************************/ - -const char * -AcpiFormatException ( - ACPI_STATUS Status) -{ - const char *Exception = NULL; - - - ACPI_FUNCTION_ENTRY (); - - - Exception = AcpiUtValidateException (Status); - if (!Exception) - { - /* Exception code was not recognized */ - - ACPI_ERROR ((AE_INFO, *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***