Date: Thu, 27 Sep 2018 16:43:03 +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: r338971 - in vendor-sys/acpica/dist: . generate/unix/acpiexamples generate/unix/acpiexec source/common source/compiler source/components/debugger source/components/disassembler source/c... Message-ID: <201809271643.w8RGh3Wi017099@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jkim Date: Thu Sep 27 16:43:02 2018 New Revision: 338971 URL: https://svnweb.freebsd.org/changeset/base/338971 Log: Import ACPICA 20180927. Added: vendor-sys/acpica/dist/source/components/executer/exserial.c (contents, props changed) Modified: vendor-sys/acpica/dist/changes.txt vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile vendor-sys/acpica/dist/source/common/adisasm.c vendor-sys/acpica/dist/source/common/ahtable.c vendor-sys/acpica/dist/source/common/dmextern.c vendor-sys/acpica/dist/source/common/dmtable.c vendor-sys/acpica/dist/source/compiler/aslallocate.c vendor-sys/acpica/dist/source/compiler/aslanalyze.c vendor-sys/acpica/dist/source/compiler/aslcache.c vendor-sys/acpica/dist/source/compiler/aslcodegen.c vendor-sys/acpica/dist/source/compiler/aslcompile.c vendor-sys/acpica/dist/source/compiler/aslcompiler.l vendor-sys/acpica/dist/source/compiler/asldefine.h vendor-sys/acpica/dist/source/compiler/aslerror.c vendor-sys/acpica/dist/source/compiler/aslexternal.c vendor-sys/acpica/dist/source/compiler/aslfileio.c vendor-sys/acpica/dist/source/compiler/aslfiles.c vendor-sys/acpica/dist/source/compiler/aslfold.c vendor-sys/acpica/dist/source/compiler/aslglobal.h vendor-sys/acpica/dist/source/compiler/aslhex.c vendor-sys/acpica/dist/source/compiler/aslkeywords.y vendor-sys/acpica/dist/source/compiler/asllength.c vendor-sys/acpica/dist/source/compiler/asllisting.c vendor-sys/acpica/dist/source/compiler/asllistsup.c vendor-sys/acpica/dist/source/compiler/aslload.c vendor-sys/acpica/dist/source/compiler/asllookup.c vendor-sys/acpica/dist/source/compiler/aslmain.c vendor-sys/acpica/dist/source/compiler/aslmap.c vendor-sys/acpica/dist/source/compiler/aslmapenter.c vendor-sys/acpica/dist/source/compiler/aslmapoutput.c vendor-sys/acpica/dist/source/compiler/aslmessages.c vendor-sys/acpica/dist/source/compiler/aslmessages.h vendor-sys/acpica/dist/source/compiler/aslmethod.c vendor-sys/acpica/dist/source/compiler/aslnamesp.c vendor-sys/acpica/dist/source/compiler/asloffset.c vendor-sys/acpica/dist/source/compiler/aslopcodes.c vendor-sys/acpica/dist/source/compiler/asloperands.c vendor-sys/acpica/dist/source/compiler/aslopt.c vendor-sys/acpica/dist/source/compiler/asloptions.c vendor-sys/acpica/dist/source/compiler/aslparseop.c vendor-sys/acpica/dist/source/compiler/aslpld.c vendor-sys/acpica/dist/source/compiler/aslpredef.c vendor-sys/acpica/dist/source/compiler/aslprepkg.c vendor-sys/acpica/dist/source/compiler/aslprune.c vendor-sys/acpica/dist/source/compiler/aslresource.c vendor-sys/acpica/dist/source/compiler/aslstartup.c vendor-sys/acpica/dist/source/compiler/aslsupport.l vendor-sys/acpica/dist/source/compiler/aslsupport.y vendor-sys/acpica/dist/source/compiler/asltokens.y vendor-sys/acpica/dist/source/compiler/asltransform.c vendor-sys/acpica/dist/source/compiler/asltree.c vendor-sys/acpica/dist/source/compiler/aslutils.c vendor-sys/acpica/dist/source/compiler/aslwalks.c vendor-sys/acpica/dist/source/compiler/aslxref.c vendor-sys/acpica/dist/source/compiler/aslxrefout.c vendor-sys/acpica/dist/source/compiler/cvcompiler.c vendor-sys/acpica/dist/source/compiler/cvdisasm.c vendor-sys/acpica/dist/source/compiler/cvparser.c vendor-sys/acpica/dist/source/compiler/dtcompile.c vendor-sys/acpica/dist/source/compiler/dtcompiler.h vendor-sys/acpica/dist/source/compiler/dtexpress.c vendor-sys/acpica/dist/source/compiler/dtfield.c vendor-sys/acpica/dist/source/compiler/dtio.c vendor-sys/acpica/dist/source/compiler/dtparser.y vendor-sys/acpica/dist/source/compiler/dtsubtable.c vendor-sys/acpica/dist/source/compiler/dttable.c vendor-sys/acpica/dist/source/compiler/dttable2.c vendor-sys/acpica/dist/source/compiler/dttemplate.c vendor-sys/acpica/dist/source/compiler/dtutils.c vendor-sys/acpica/dist/source/compiler/preprocess.h vendor-sys/acpica/dist/source/compiler/prexpress.c vendor-sys/acpica/dist/source/compiler/prmacros.c vendor-sys/acpica/dist/source/compiler/prparser.l vendor-sys/acpica/dist/source/compiler/prparser.y vendor-sys/acpica/dist/source/compiler/prscan.c vendor-sys/acpica/dist/source/compiler/prutils.c vendor-sys/acpica/dist/source/components/debugger/dbinput.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/events/evxfregn.c vendor-sys/acpica/dist/source/components/executer/exfield.c vendor-sys/acpica/dist/source/components/hardware/hwsleep.c vendor-sys/acpica/dist/source/include/acconfig.h vendor-sys/acpica/dist/source/include/acdisasm.h vendor-sys/acpica/dist/source/include/acevents.h vendor-sys/acpica/dist/source/include/acexcep.h vendor-sys/acpica/dist/source/include/acinterp.h vendor-sys/acpica/dist/source/include/aclocal.h vendor-sys/acpica/dist/source/include/acpixf.h vendor-sys/acpica/dist/source/include/amlcode.h vendor-sys/acpica/dist/source/tools/acpiexec/aeregion.c vendor-sys/acpica/dist/source/tools/acpihelp/acpihelp.h vendor-sys/acpica/dist/source/tools/acpihelp/ahdecode.c Modified: vendor-sys/acpica/dist/changes.txt ============================================================================== --- vendor-sys/acpica/dist/changes.txt Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/changes.txt Thu Sep 27 16:43:02 2018 (r338971) @@ -1,4 +1,97 @@ ---------------------------------------- +27 September 2018. Summary of changes for version 20180927: + + +1) ACPICA kernel-resident subsystem: + +Updated the GPE support to clear the status of all ACPI events when +entering any/all sleep states in order to avoid premature wakeups. In +theory, this may cause some wakeup events to be missed, but the +likelihood of this is small. This change restores the original behavior +of the ACPICA code in order to fix a regression seen from the previous +"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. +This regression could cause some systems to incorrectly wake immediately. + +Updated the execution of the _REG methods during initialization and +namespace loading to bring the behavior into closer conformance to the +ACPI specification and other ACPI implementations: + +From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): + "Control methods must assume all operation regions are inaccessible +until the _REG(RegionSpace, 1) method is executed" + + "The exceptions to this rule are: +1. OSPM must guarantee that the following operation regions are always +accessible: + SystemIO operation regions. + SystemMemory operation regions when accessing memory returned by the +System Address Map reporting interfaces." + +Since the state of both the SystemIO and SystemMemory address spaces are +defined by the specification to never change, this ACPICA change ensures +that now _REG is never called on them. This solves some problems seen in +the field and provides compatibility with other ACPI implementations. An +update to the upcoming new version of the ACPI specification will help +clarify this behavior. + +Updated the implementation of support for the Generic Serial Bus. For the +"bidirectional" protocols, the internal implementation now automatically +creates a return data buffer of the maximum size (255). This handles the +worst-case for data that is returned from the serial bus handler, and +fixes some problems seen in the field. This new buffer is directly +returned to the ASL. As such, there is no true "bidirectional" buffer, +which matches the ACPI specification. This is the reason for the "double +store" seen in the example ASL code in the specification, shown below: + +Word Process Call (AttribProcessCall): + OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) + Field(TOP1, BufferAcc, NoLock, Preserve) + { + FLD1, 8, // Virtual register at command value 1. + } + + Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer + // as BUFF + CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) + + Store(0x5416, DATA) // Save 0x5416 into the data buffer + Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call +transaction + // This is the "double store". The write to + // FLD1 returns a new buffer, which is stored + // back into BUFF with the second Store. + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented detection of extraneous/redundant uses of the Offset() +operator within a Field Unit list. A remark is now issued for these. For +example, the first two of the Offset() operators below are extraneous. +Because both the compiler and the interpreter track the offsets +automatically, these Offsets simply refer to the current offset and are +unnecessary. Note, when optimization is enabled, the iASL compiler will +in fact remove the redundant Offset operators and will not emit any AML +code for them. + + OperationRegion (OPR1, SystemMemory, 0x100, 0x100) + Field (OPR1) + { + Offset (0), // Never needed + FLD1, 32, + Offset (4), // Redundant, offset is already 4 (bytes) + FLD2, 8, + Offset (64), // OK use of Offset. + FLD3, 16, + } +dsdt.asl 14: Offset (0), +Remark 2158 - ^ Unnecessary/redundant use of Offset +operator + +dsdt.asl 16: Offset (4), +Remark 2158 - ^ Unnecessary/redundant use of Offset +operator + +---------------------------------------- 10 August 2018. Summary of changes for version 20180810: Modified: vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile ============================================================================== --- vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/generate/unix/acpiexamples/Makefile Thu Sep 27 16:43:02 2018 (r338971) @@ -80,6 +80,7 @@ OBJECTS = \ $(OBJDIR)/exresnte.o\ $(OBJDIR)/exresolv.o\ $(OBJDIR)/exresop.o\ + $(OBJDIR)/exserial.o\ $(OBJDIR)/exstore.o\ $(OBJDIR)/exstoren.o\ $(OBJDIR)/exstorob.o\ Modified: vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile ============================================================================== --- vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/generate/unix/acpiexec/Makefile Thu Sep 27 16:43:02 2018 (r338971) @@ -129,6 +129,7 @@ OBJECTS = \ $(OBJDIR)/exresnte.o\ $(OBJDIR)/exresolv.o\ $(OBJDIR)/exresop.o\ + $(OBJDIR)/exserial.o\ $(OBJDIR)/exstore.o\ $(OBJDIR)/exstoren.o\ $(OBJDIR)/exstorob.o\ Modified: vendor-sys/acpica/dist/source/common/adisasm.c ============================================================================== --- vendor-sys/acpica/dist/source/common/adisasm.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/common/adisasm.c Thu Sep 27 16:43:02 2018 (r338971) @@ -576,11 +576,11 @@ AdDisassembleOneTable ( DisasmFilename, CmGetFileSize (File)); } - if (Gbl_MapfileFlag) + if (AslGbl_MapfileFlag) { fprintf (stderr, "%14s %s - %u bytes\n", - Gbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription, - Gbl_Files[ASL_FILE_MAP_OUTPUT].Filename, + AslGbl_Files[ASL_FILE_MAP_OUTPUT].ShortDescription, + AslGbl_Files[ASL_FILE_MAP_OUTPUT].Filename, FlGetFileSize (ASL_FILE_MAP_OUTPUT)); } } Modified: vendor-sys/acpica/dist/source/common/ahtable.c ============================================================================== --- vendor-sys/acpica/dist/source/common/ahtable.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/common/ahtable.c Thu Sep 27 16:43:02 2018 (r338971) @@ -159,7 +159,7 @@ const AH_TABLE * AcpiAhGetTableInfo ( char *Signature); -extern const AH_TABLE Gbl_AcpiSupportedTables[]; +extern const AH_TABLE AcpiGbl_SupportedTables[]; /******************************************************************************* @@ -181,7 +181,7 @@ AcpiAhGetTableInfo ( const AH_TABLE *Info; - for (Info = Gbl_AcpiSupportedTables; Info->Signature; Info++) + for (Info = AcpiGbl_SupportedTables; Info->Signature; Info++) { if (ACPI_COMPARE_NAME (Signature, Info->Signature)) { @@ -197,7 +197,7 @@ AcpiAhGetTableInfo ( * Note: Any tables added here should be duplicated within AcpiDmTableData * in the file common/dmtable.c */ -const AH_TABLE Gbl_AcpiSupportedTables[] = +const AH_TABLE AcpiGbl_SupportedTables[] = { {ACPI_SIG_ASF, "Alert Standard Format table"}, {ACPI_SIG_BERT, "Boot Error Record Table"}, Modified: vendor-sys/acpica/dist/source/common/dmextern.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmextern.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/common/dmextern.c Thu Sep 27 16:43:02 2018 (r338971) @@ -520,27 +520,27 @@ AcpiDmGetExternalsFromFile ( UINT32 ImportCount = 0; - if (!Gbl_ExternalRefFilename) + if (!AslGbl_ExternalRefFilename) { return; } /* Open the file */ - ExternalRefFile = fopen (Gbl_ExternalRefFilename, "r"); + ExternalRefFile = fopen (AslGbl_ExternalRefFilename, "r"); if (!ExternalRefFile) { fprintf (stderr, "Could not open external reference file \"%s\"\n", - Gbl_ExternalRefFilename); + AslGbl_ExternalRefFilename); AslAbort (); return; } /* Each line defines a method */ - while (fgets (StringBuffer, ASL_STRING_BUFFER_SIZE, ExternalRefFile)) + while (fgets (AslGbl_StringBuffer, ASL_STRING_BUFFER_SIZE, ExternalRefFile)) { - Token = strtok (StringBuffer, METHOD_SEPARATORS); /* "External" */ + Token = strtok (AslGbl_StringBuffer, METHOD_SEPARATORS); /* "External" */ if (!Token) { continue; @@ -593,7 +593,7 @@ AcpiDmGetExternalsFromFile ( /* Add this external to the global list */ AcpiOsPrintf ("%s: Importing method external (%u arguments) %s\n", - Gbl_ExternalRefFilename, ArgCount, MethodName); + AslGbl_ExternalRefFilename, ArgCount, MethodName); AcpiDmAddPathToExternalList (MethodName, ACPI_TYPE_METHOD, ArgCount, (ACPI_EXT_RESOLVED_REFERENCE | ACPI_EXT_ORIGIN_FROM_FILE)); @@ -604,7 +604,7 @@ AcpiDmGetExternalsFromFile ( { fprintf (stderr, "Did not find any external methods in reference file \"%s\"\n", - Gbl_ExternalRefFilename); + AslGbl_ExternalRefFilename); } else { @@ -613,7 +613,7 @@ AcpiDmGetExternalsFromFile ( AcpiDmAddExternalListToNamespace (); AcpiOsPrintf ("%s: Imported %u external method definitions\n", - Gbl_ExternalRefFilename, ImportCount); + AslGbl_ExternalRefFilename, ImportCount); } fclose (ExternalRefFile); @@ -1394,12 +1394,12 @@ AcpiDmEmitExternals ( AcpiDmUnresolvedWarning (1); - if (Gbl_ExternalRefFilename) + if (AslGbl_ExternalRefFilename) { AcpiOsPrintf ( " /*\n * External declarations were imported from\n" " * a reference file -- %s\n */\n\n", - Gbl_ExternalRefFilename); + AslGbl_ExternalRefFilename); } /* Modified: vendor-sys/acpica/dist/source/common/dmtable.c ============================================================================== --- vendor-sys/acpica/dist/source/common/dmtable.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/common/dmtable.c Thu Sep 27 16:43:02 2018 (r338971) @@ -637,7 +637,7 @@ AcpiDmDumpDataTable ( if (AcpiUtIsAmlTable (Table)) { - if (Gbl_VerboseTemplates) + if (AslGbl_VerboseTemplates) { /* Dump the raw table data */ @@ -732,7 +732,7 @@ AcpiDmDumpDataTable ( } } - if (!Gbl_DoTemplates || Gbl_VerboseTemplates) + if (!AslGbl_DoTemplates || AslGbl_VerboseTemplates) { /* Dump the raw table data */ @@ -774,7 +774,7 @@ AcpiDmLineHeader ( Name = ""; } - if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ + if (AslGbl_DoTemplates && !AslGbl_VerboseTemplates) /* Terse template */ { if (ByteLength) { @@ -821,7 +821,7 @@ AcpiDmLineHeader2 ( UINT32 Value) { - if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ + if (AslGbl_DoTemplates && !AslGbl_VerboseTemplates) /* Terse template */ { if (ByteLength) { @@ -1232,9 +1232,9 @@ AcpiDmDumpTable ( /* Convert 16-byte UUID buffer to 36-byte formatted UUID string */ - (void) AuConvertUuidToString ((char *) Target, MsgBuffer); + (void) AuConvertUuidToString ((char *) Target, AslGbl_MsgBuffer); - AcpiOsPrintf ("%s\n", MsgBuffer); + AcpiOsPrintf ("%s\n", AslGbl_MsgBuffer); break; case ACPI_DMT_STRING: Modified: vendor-sys/acpica/dist/source/compiler/aslallocate.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslallocate.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/compiler/aslallocate.c Thu Sep 27 16:43:02 2018 (r338971) @@ -186,16 +186,16 @@ UtLocalCalloc ( if (!Allocated) { AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, - Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, - Gbl_InputByteCount, Gbl_CurrentColumn, - Gbl_Files[ASL_FILE_INPUT].Filename, NULL); + AslGbl_CurrentLineNumber, AslGbl_LogicalLineNumber, + AslGbl_InputByteCount, AslGbl_CurrentColumn, + AslGbl_Files[ASL_FILE_INPUT].Filename, NULL); CmCleanupAndExit (); exit (1); } - TotalAllocations++; - TotalAllocated += Size; + AslGbl_TotalAllocations++; + AslGbl_TotalAllocated += Size; return (Allocated); } @@ -209,7 +209,7 @@ UtLocalCalloc ( * RETURN: None. Reallocates the global line buffers * * DESCRIPTION: Called if the current line buffer becomes filled. Reallocates - * all global line buffers and updates Gbl_LineBufferSize. NOTE: + * all global line buffers and updates AslGbl_LineBufferSize. NOTE: * Also used for the initial allocation of the buffers, when * all of the buffer pointers are NULL. Initial allocations are * of size ASL_DEFAULT_LINE_BUFFER_SIZE @@ -225,21 +225,21 @@ UtExpandLineBuffers ( /* Attempt to double the size of all line buffers */ - NewSize = Gbl_LineBufferSize * 2; - if (Gbl_CurrentLineBuffer) + NewSize = AslGbl_LineBufferSize * 2; + if (AslGbl_CurrentLineBuffer) { DbgPrint (ASL_DEBUG_OUTPUT, "Increasing line buffer size from %u to %u\n", - Gbl_LineBufferSize, NewSize); + AslGbl_LineBufferSize, NewSize); } - UtReallocLineBuffers (&Gbl_CurrentLineBuffer, Gbl_LineBufferSize, NewSize); - UtReallocLineBuffers (&Gbl_MainTokenBuffer, Gbl_LineBufferSize, NewSize); - UtReallocLineBuffers (&Gbl_MacroTokenBuffer, Gbl_LineBufferSize, NewSize); - UtReallocLineBuffers (&Gbl_ExpressionTokenBuffer, Gbl_LineBufferSize, NewSize); + UtReallocLineBuffers (&AslGbl_CurrentLineBuffer, AslGbl_LineBufferSize, NewSize); + UtReallocLineBuffers (&AslGbl_MainTokenBuffer, AslGbl_LineBufferSize, NewSize); + UtReallocLineBuffers (&AslGbl_MacroTokenBuffer, AslGbl_LineBufferSize, NewSize); + UtReallocLineBuffers (&AslGbl_ExpressionTokenBuffer, AslGbl_LineBufferSize, NewSize); - Gbl_LineBufPtr = Gbl_CurrentLineBuffer; - Gbl_LineBufferSize = NewSize; + AslGbl_LineBufPtr = AslGbl_CurrentLineBuffer; + AslGbl_LineBufferSize = NewSize; } @@ -296,8 +296,8 @@ UtFreeLineBuffers ( void) { - free (Gbl_CurrentLineBuffer); - free (Gbl_MainTokenBuffer); - free (Gbl_MacroTokenBuffer); - free (Gbl_ExpressionTokenBuffer); + free (AslGbl_CurrentLineBuffer); + free (AslGbl_MainTokenBuffer); + free (AslGbl_MacroTokenBuffer); + free (AslGbl_ExpressionTokenBuffer); } Modified: vendor-sys/acpica/dist/source/compiler/aslanalyze.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslanalyze.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/compiler/aslanalyze.c Thu Sep 27 16:43:02 2018 (r338971) @@ -452,8 +452,8 @@ AnCheckMethodReturnValue ( { /* Method returns a value, but the type is wrong */ - AnFormatBtype (StringBuffer, ThisNodeBtype); - AnFormatBtype (StringBuffer2, RequiredBtypes); + AnFormatBtype (AslGbl_StringBuffer, ThisNodeBtype); + AnFormatBtype (AslGbl_StringBuffer2, RequiredBtypes); /* * The case where the method does not return any value at all @@ -463,11 +463,11 @@ AnCheckMethodReturnValue ( */ if (ThisNodeBtype != 0) { - sprintf (MsgBuffer, + sprintf (AslGbl_MsgBuffer, "Method returns [%s], %s operator requires [%s]", - StringBuffer, OpInfo->Name, StringBuffer2); + AslGbl_StringBuffer, OpInfo->Name, AslGbl_StringBuffer2); - AslError (ASL_ERROR, ASL_MSG_INVALID_TYPE, ArgOp, MsgBuffer); + AslError (ASL_ERROR, ASL_MSG_INVALID_TYPE, ArgOp, AslGbl_MsgBuffer); } } } Modified: vendor-sys/acpica/dist/source/compiler/aslcache.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcache.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/compiler/aslcache.c Thu Sep 27 16:43:02 2018 (r338971) @@ -187,25 +187,25 @@ UtLocalCacheCalloc ( { CacheSize = Length; - if (Gbl_StringCacheList) + if (AslGbl_StringCacheList) { Cache = UtLocalCalloc (sizeof (Cache->Next) + CacheSize); /* Link new cache buffer just following head of list */ - Cache->Next = Gbl_StringCacheList->Next; - Gbl_StringCacheList->Next = Cache; + Cache->Next = AslGbl_StringCacheList->Next; + AslGbl_StringCacheList->Next = Cache; /* Leave cache management pointers alone as they pertain to head */ - Gbl_StringCount++; - Gbl_StringSize += Length; + AslGbl_StringCount++; + AslGbl_StringSize += Length; return (Cache->Buffer); } } - if ((Gbl_StringCacheNext + Length) >= Gbl_StringCacheLast) + if ((AslGbl_StringCacheNext + Length) >= AslGbl_StringCacheLast) { /* Allocate a new buffer */ @@ -213,20 +213,20 @@ UtLocalCacheCalloc ( /* Link new cache buffer to head of list */ - Cache->Next = Gbl_StringCacheList; - Gbl_StringCacheList = Cache; + Cache->Next = AslGbl_StringCacheList; + AslGbl_StringCacheList = Cache; /* Setup cache management pointers */ - Gbl_StringCacheNext = Cache->Buffer; - Gbl_StringCacheLast = Gbl_StringCacheNext + CacheSize; + AslGbl_StringCacheNext = Cache->Buffer; + AslGbl_StringCacheLast = AslGbl_StringCacheNext + CacheSize; } - Gbl_StringCount++; - Gbl_StringSize += Length; + AslGbl_StringCount++; + AslGbl_StringSize += Length; - Buffer = Gbl_StringCacheNext; - Gbl_StringCacheNext += Length; + Buffer = AslGbl_StringCacheNext; + AslGbl_StringCacheNext += Length; return (Buffer); } @@ -252,7 +252,7 @@ UtParseOpCacheCalloc ( ASL_CACHE_INFO *Cache; - if (Gbl_ParseOpCacheNext >= Gbl_ParseOpCacheLast) + if (AslGbl_ParseOpCacheNext >= AslGbl_ParseOpCacheLast) { /* Allocate a new buffer */ @@ -261,17 +261,17 @@ UtParseOpCacheCalloc ( /* Link new cache buffer to head of list */ - Cache->Next = Gbl_ParseOpCacheList; - Gbl_ParseOpCacheList = Cache; + Cache->Next = AslGbl_ParseOpCacheList; + AslGbl_ParseOpCacheList = Cache; /* Setup cache management pointers */ - Gbl_ParseOpCacheNext = ACPI_CAST_PTR (ACPI_PARSE_OBJECT, Cache->Buffer); - Gbl_ParseOpCacheLast = Gbl_ParseOpCacheNext + ASL_PARSEOP_CACHE_SIZE; + AslGbl_ParseOpCacheNext = ACPI_CAST_PTR (ACPI_PARSE_OBJECT, Cache->Buffer); + AslGbl_ParseOpCacheLast = AslGbl_ParseOpCacheNext + ASL_PARSEOP_CACHE_SIZE; } - Gbl_ParseOpCount++; - return (Gbl_ParseOpCacheNext++); + AslGbl_ParseOpCount++; + return (AslGbl_ParseOpCacheNext++); } @@ -296,7 +296,7 @@ UtSubtableCacheCalloc ( ASL_CACHE_INFO *Cache; - if (Gbl_SubtableCacheNext >= Gbl_SubtableCacheLast) + if (AslGbl_SubtableCacheNext >= AslGbl_SubtableCacheLast) { /* Allocate a new buffer */ @@ -305,17 +305,17 @@ UtSubtableCacheCalloc ( /* Link new cache buffer to head of list */ - Cache->Next = Gbl_SubtableCacheList; - Gbl_SubtableCacheList = Cache; + Cache->Next = AslGbl_SubtableCacheList; + AslGbl_SubtableCacheList = Cache; /* Setup cache management pointers */ - Gbl_SubtableCacheNext = ACPI_CAST_PTR (DT_SUBTABLE, Cache->Buffer); - Gbl_SubtableCacheLast = Gbl_SubtableCacheNext + ASL_SUBTABLE_CACHE_SIZE; + AslGbl_SubtableCacheNext = ACPI_CAST_PTR (DT_SUBTABLE, Cache->Buffer); + AslGbl_SubtableCacheLast = AslGbl_SubtableCacheNext + ASL_SUBTABLE_CACHE_SIZE; } - Gbl_SubtableCount++; - return (Gbl_SubtableCacheNext++); + AslGbl_SubtableCount++; + return (AslGbl_SubtableCacheNext++); } @@ -340,7 +340,7 @@ UtFieldCacheCalloc ( ASL_CACHE_INFO *Cache; - if (Gbl_FieldCacheNext >= Gbl_FieldCacheLast) + if (AslGbl_FieldCacheNext >= AslGbl_FieldCacheLast) { /* Allocate a new buffer */ @@ -349,17 +349,17 @@ UtFieldCacheCalloc ( /* Link new cache buffer to head of list */ - Cache->Next = Gbl_FieldCacheList; - Gbl_FieldCacheList = Cache; + Cache->Next = AslGbl_FieldCacheList; + AslGbl_FieldCacheList = Cache; /* Setup cache management pointers */ - Gbl_FieldCacheNext = ACPI_CAST_PTR (DT_FIELD, Cache->Buffer); - Gbl_FieldCacheLast = Gbl_FieldCacheNext + ASL_FIELD_CACHE_SIZE; + AslGbl_FieldCacheNext = ACPI_CAST_PTR (DT_FIELD, Cache->Buffer); + AslGbl_FieldCacheLast =AslGbl_FieldCacheNext + ASL_FIELD_CACHE_SIZE; } - Gbl_FieldCount++; - return (Gbl_FieldCacheNext++); + AslGbl_FieldCount++; + return (AslGbl_FieldCacheNext++); } @@ -387,95 +387,92 @@ UtDeleteLocalCaches ( * Generic cache, arbitrary size allocations */ BufferCount = 0; - while (Gbl_StringCacheList) + while (AslGbl_StringCacheList) { - Next = Gbl_StringCacheList->Next; - ACPI_FREE (Gbl_StringCacheList); - Gbl_StringCacheList = Next; + Next = AslGbl_StringCacheList->Next; + ACPI_FREE (AslGbl_StringCacheList); + AslGbl_StringCacheList = Next; BufferCount++; } DbgPrint (ASL_DEBUG_OUTPUT, "%u Strings (%u bytes), Buffer size: %u bytes, %u Buffers\n", - Gbl_StringCount, Gbl_StringSize, ASL_STRING_CACHE_SIZE, BufferCount); + AslGbl_StringCount, AslGbl_StringSize, ASL_STRING_CACHE_SIZE, BufferCount); /* Reset cache globals */ - Gbl_StringSize = 0; - Gbl_StringCount = 0; - Gbl_StringCacheNext = NULL; - Gbl_StringCacheLast = NULL; + AslGbl_StringSize = 0; + AslGbl_StringCount = 0; + AslGbl_StringCacheNext = NULL; + AslGbl_StringCacheLast = NULL; - /* * Parse Op cache */ BufferCount = 0; - while (Gbl_ParseOpCacheList) + while (AslGbl_ParseOpCacheList) { - Next = Gbl_ParseOpCacheList->Next; - ACPI_FREE (Gbl_ParseOpCacheList); - Gbl_ParseOpCacheList = Next; + Next = AslGbl_ParseOpCacheList->Next; + ACPI_FREE (AslGbl_ParseOpCacheList); + AslGbl_ParseOpCacheList = Next; BufferCount++; } DbgPrint (ASL_DEBUG_OUTPUT, "%u ParseOps, Buffer size: %u ops (%u bytes), %u Buffers\n", - Gbl_ParseOpCount, ASL_PARSEOP_CACHE_SIZE, + AslGbl_ParseOpCount, ASL_PARSEOP_CACHE_SIZE, (sizeof (ACPI_PARSE_OBJECT) * ASL_PARSEOP_CACHE_SIZE), BufferCount); /* Reset cache globals */ - Gbl_ParseOpCount = 0; - Gbl_ParseOpCacheNext = NULL; - Gbl_ParseOpCacheLast = NULL; - Gbl_ParseTreeRoot = NULL; + AslGbl_ParseOpCount = 0; + AslGbl_ParseOpCacheNext = NULL; + AslGbl_ParseOpCacheLast = NULL; + AslGbl_ParseTreeRoot = NULL; - /* * Table Compiler - Field cache */ BufferCount = 0; - while (Gbl_FieldCacheList) + while (AslGbl_FieldCacheList) { - Next = Gbl_FieldCacheList->Next; - ACPI_FREE (Gbl_FieldCacheList); - Gbl_FieldCacheList = Next; + Next = AslGbl_FieldCacheList->Next; + ACPI_FREE (AslGbl_FieldCacheList); + AslGbl_FieldCacheList = Next; BufferCount++; } DbgPrint (ASL_DEBUG_OUTPUT, "%u Fields, Buffer size: %u fields (%u bytes), %u Buffers\n", - Gbl_FieldCount, ASL_FIELD_CACHE_SIZE, + AslGbl_FieldCount, ASL_FIELD_CACHE_SIZE, (sizeof (DT_FIELD) * ASL_FIELD_CACHE_SIZE), BufferCount); /* Reset cache globals */ - Gbl_FieldCount = 0; - Gbl_FieldCacheNext = NULL; - Gbl_FieldCacheLast = NULL; + AslGbl_FieldCount = 0; + AslGbl_FieldCacheNext = NULL; + AslGbl_FieldCacheLast = NULL; - /* * Table Compiler - Subtable cache */ BufferCount = 0; - while (Gbl_SubtableCacheList) + while (AslGbl_SubtableCacheList) { - Next = Gbl_SubtableCacheList->Next; - ACPI_FREE (Gbl_SubtableCacheList); - Gbl_SubtableCacheList = Next; + Next = AslGbl_SubtableCacheList->Next; + ACPI_FREE (AslGbl_SubtableCacheList); + AslGbl_SubtableCacheList = Next; BufferCount++; } DbgPrint (ASL_DEBUG_OUTPUT, "%u Subtables, Buffer size: %u subtables (%u bytes), %u Buffers\n", - Gbl_SubtableCount, ASL_SUBTABLE_CACHE_SIZE, + AslGbl_SubtableCount, ASL_SUBTABLE_CACHE_SIZE, (sizeof (DT_SUBTABLE) * ASL_SUBTABLE_CACHE_SIZE), BufferCount); /* Reset cache globals */ - Gbl_SubtableCount = 0; - Gbl_SubtableCacheNext = NULL; - Gbl_SubtableCacheLast = NULL; + AslGbl_SubtableCount = 0; + AslGbl_SubtableCacheNext = NULL; + AslGbl_SubtableCacheLast = NULL; } Modified: vendor-sys/acpica/dist/source/compiler/aslcodegen.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcodegen.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/compiler/aslcodegen.c Thu Sep 27 16:43:02 2018 (r338971) @@ -203,10 +203,10 @@ CgGenerateAmlOutput ( /* Generate the AML output file */ FlSeekFile (ASL_FILE_SOURCE_OUTPUT, 0); - Gbl_SourceLine = 0; - Gbl_NextError = Gbl_ErrorLog; + AslGbl_SourceLine = 0; + AslGbl_NextError = AslGbl_ErrorLog; - TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD, + TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD, CgAmlWriteWalk, NULL, NULL); DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_HEADER2); @@ -237,7 +237,7 @@ CgAmlWriteWalk ( CgWriteNode (Op); - if (!Gbl_DebugFlag) + if (!AslGbl_DebugFlag) { return (AE_OK); } @@ -556,46 +556,46 @@ CgWriteTableHeader ( Child->Asl.Value.String = ACPI_SIG_XXXX; } - strncpy (TableHeader.Signature, Child->Asl.Value.String, ACPI_NAME_SIZE); + strncpy (AslGbl_TableHeader.Signature, Child->Asl.Value.String, ACPI_NAME_SIZE); /* Revision */ Child = Child->Asl.Next; - TableHeader.Revision = (UINT8) Child->Asl.Value.Integer; + AslGbl_TableHeader.Revision = (UINT8) Child->Asl.Value.Integer; /* Command-line Revision override */ - if (Gbl_RevisionOverride) + if (AslGbl_RevisionOverride) { - TableHeader.Revision = Gbl_RevisionOverride; + AslGbl_TableHeader.Revision = AslGbl_RevisionOverride; } /* OEMID */ Child = Child->Asl.Next; - strncpy (TableHeader.OemId, Child->Asl.Value.String, ACPI_OEM_ID_SIZE); + strncpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, ACPI_OEM_ID_SIZE); /* OEM TableID */ Child = Child->Asl.Next; - strncpy (TableHeader.OemTableId, Child->Asl.Value.String, ACPI_OEM_TABLE_ID_SIZE); + strncpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, ACPI_OEM_TABLE_ID_SIZE); /* OEM Revision */ Child = Child->Asl.Next; - TableHeader.OemRevision = (UINT32) Child->Asl.Value.Integer; + AslGbl_TableHeader.OemRevision = (UINT32) Child->Asl.Value.Integer; /* Compiler ID */ - ACPI_MOVE_NAME (TableHeader.AslCompilerId, ASL_CREATOR_ID); + ACPI_MOVE_NAME (AslGbl_TableHeader.AslCompilerId, ASL_CREATOR_ID); /* Compiler version */ - TableHeader.AslCompilerRevision = ACPI_CA_VERSION; + AslGbl_TableHeader.AslCompilerRevision = ACPI_CA_VERSION; /* Table length. Checksum zero for now, will rewrite later */ - TableHeader.Length = sizeof (ACPI_TABLE_HEADER) + + AslGbl_TableHeader.Length = sizeof (ACPI_TABLE_HEADER) + Op->Asl.AmlSubtreeLength; /* Calculate the comment lengths for this definition block parseOp */ @@ -609,13 +609,15 @@ CgWriteTableHeader ( * Take the filename without extensions, add 3 for the new extension * and another 3 for the a908 bytecode and null terminator. */ - TableHeader.Length += strrchr (Gbl_ParseTreeRoot->Asl.Filename, '.') - - Gbl_ParseTreeRoot->Asl.Filename + 1 + 3 + 3; + AslGbl_TableHeader.Length += strrchr (AslGbl_ParseTreeRoot->Asl.Filename, '.') + - AslGbl_ParseTreeRoot->Asl.Filename + 1 + 3 + 3; + Op->Asl.AmlSubtreeLength += - strlen (Gbl_ParseTreeRoot->Asl.Filename) + 3; - CvDbgPrint (" Length: %lu\n", - strlen (Gbl_ParseTreeRoot->Asl.Filename) + 3); + strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3; + CvDbgPrint (" Length: %lu\n", + strlen (AslGbl_ParseTreeRoot->Asl.Filename) + 3); + if (Op->Asl.CommentList) { Current = Op->Asl.CommentList; @@ -624,10 +626,10 @@ CgWriteTableHeader ( CommentLength = strlen (Current->Comment)+3; CvDbgPrint ("Length of standard comment): %d\n", CommentLength); CvDbgPrint (" Comment string: %s\n\n", Current->Comment); - TableHeader.Length += CommentLength; + AslGbl_TableHeader.Length += CommentLength; Op->Asl.AmlSubtreeLength += CommentLength; Current = Current->Next; - CvDbgPrint (" Length: %u\n", CommentLength); + CvDbgPrint (" Length: %u\n", CommentLength); } } if (Op->Asl.CloseBraceComment) @@ -635,20 +637,19 @@ CgWriteTableHeader ( CommentLength = strlen (Op->Asl.CloseBraceComment)+3; CvDbgPrint ("Length of inline comment +3: %d\n", CommentLength); CvDbgPrint (" Comment string: %s\n\n", Op->Asl.CloseBraceComment); - TableHeader.Length += CommentLength; + AslGbl_TableHeader.Length += CommentLength; Op->Asl.AmlSubtreeLength += CommentLength; - CvDbgPrint (" Length: %u\n", CommentLength); + CvDbgPrint (" Length: %u\n", CommentLength); } } - TableHeader.Checksum = 0; + AslGbl_TableHeader.Checksum = 0; + Op->Asl.FinalAmlOffset = ftell (AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle); - Op->Asl.FinalAmlOffset = ftell (Gbl_Files[ASL_FILE_AML_OUTPUT].Handle); - /* Write entire header and clear the table header global */ - CgLocalWriteAmlData (Op, &TableHeader, sizeof (ACPI_TABLE_HEADER)); - memset (&TableHeader, 0, sizeof (ACPI_TABLE_HEADER)); + CgLocalWriteAmlData (Op, &AslGbl_TableHeader, sizeof (ACPI_TABLE_HEADER)); + memset (&AslGbl_TableHeader, 0, sizeof (ACPI_TABLE_HEADER)); } @@ -727,7 +728,7 @@ CgCloseTable ( /* Process all definition blocks */ - Op = Gbl_ParseTreeRoot->Asl.Child; + Op = AslGbl_ParseTreeRoot->Asl.Child; while (Op) { CgUpdateHeader (Op); @@ -773,7 +774,7 @@ CgWriteNode ( } if ((Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) && - Gbl_DoExternals == FALSE) + AslGbl_DoExternals == FALSE) { return; } Modified: vendor-sys/acpica/dist/source/compiler/aslcompile.c ============================================================================== --- vendor-sys/acpica/dist/source/compiler/aslcompile.c Thu Sep 27 15:53:36 2018 (r338970) +++ vendor-sys/acpica/dist/source/compiler/aslcompile.c Thu Sep 27 16:43:02 2018 (r338971) @@ -205,7 +205,7 @@ CmDoCompile ( UtEndEvent (Event); Event = UtBeginEvent ("Preprocess input file"); - if (Gbl_PreprocessFlag) + if (AslGbl_PreprocessFlag) { /* Enter compiler name as a #define */ @@ -214,10 +214,10 @@ CmDoCompile ( /* Preprocessor */ PrDoPreprocess (); - Gbl_CurrentLineNumber = 1; - Gbl_LogicalLineNumber = 1; + AslGbl_CurrentLineNumber = 1; + AslGbl_LogicalLineNumber = 1; - if (Gbl_PreprocessOnly) + if (AslGbl_PreprocessOnly) { UtEndEvent (Event); CmCleanupAndExit (); @@ -235,7 +235,7 @@ CmDoCompile ( /* Check for parser-detected syntax errors */ - if (Gbl_SyntaxError) + if (AslGbl_SyntaxError) { fprintf (stderr, "Compiler aborting due to parser-detected syntax error(s)\n"); @@ -245,7 +245,7 @@ CmDoCompile ( /* Did the parse tree get successfully constructed? */ - if (!Gbl_ParseTreeRoot) + if (!AslGbl_ParseTreeRoot) { /* * If there are no errors, then we have some sort of @@ -264,23 +264,23 @@ CmDoCompile ( /* Prune the parse tree if requested (debug purposes only) */ - if (Gbl_PruneParseTree) + if (AslGbl_PruneParseTree) { - AslPruneParseTree (Gbl_PruneDepth, Gbl_PruneType); + AslPruneParseTree (AslGbl_PruneDepth, AslGbl_PruneType); } /* Optional parse tree dump, compiler debug output only */ LsDumpParseTree (); - OpcGetIntegerWidth (Gbl_ParseTreeRoot->Asl.Child); + OpcGetIntegerWidth (AslGbl_ParseTreeRoot->Asl.Child); UtEndEvent (Event); /* Pre-process parse tree for any operator transforms */ Event = UtBeginEvent ("Parse tree transforms"); DbgPrint (ASL_DEBUG_OUTPUT, "\nParse tree transforms\n\n"); - TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE, + TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE, TrAmlTransformWalkBegin, TrAmlTransformWalkEnd, NULL); UtEndEvent (Event); @@ -288,7 +288,7 @@ CmDoCompile ( Event = UtBeginEvent ("Generate AML opcodes"); DbgPrint (ASL_DEBUG_OUTPUT, "Generating AML opcodes\n\n"); - TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, NULL, + TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, NULL, OpcAmlOpcodeWalk, NULL); UtEndEvent (Event); @@ -298,7 +298,7 @@ CmDoCompile ( * descriptor within the input file. */ Event = UtBeginEvent ("Open AML output file"); - Status = FlOpenAmlOutputFile (Gbl_OutputFilenamePrefix); + Status = FlOpenAmlOutputFile (AslGbl_OutputFilenamePrefix); UtEndEvent (Event); if (ACPI_FAILURE (Status)) { @@ -312,9 +312,9 @@ CmDoCompile ( DbgPrint (ASL_DEBUG_OUTPUT, "Interpreting compile-time constant expressions\n\n"); - if (Gbl_FoldConstants) + if (AslGbl_FoldConstants) { - TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, + TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, NULL, OpcAmlConstantWalk, NULL); } else @@ -328,7 +328,7 @@ CmDoCompile ( Event = UtBeginEvent ("Updating AML opcodes after constant folding"); DbgPrint (ASL_DEBUG_OUTPUT, "Updating AML opcodes after constant folding\n\n"); - TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, + TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, NULL, OpcAmlOpcodeUpdateWalk, NULL); UtEndEvent (Event); @@ -336,15 +336,15 @@ CmDoCompile ( Event = UtBeginEvent ("Generate AML package lengths"); DbgPrint (ASL_DEBUG_OUTPUT, "Generating Package lengths\n\n"); - TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, NULL, + TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_UPWARD, NULL, LnPackageLengthWalk, NULL); UtEndEvent (Event); - if (Gbl_ParseOnlyFlag) + if (AslGbl_ParseOnlyFlag) { AePrintErrorLog (ASL_FILE_STDERR); UtDisplaySummary (ASL_FILE_STDERR); - if (Gbl_DebugFlag) + if (AslGbl_DebugFlag) { /* Print error summary to the stdout also */ @@ -363,7 +363,7 @@ CmDoCompile ( Event = UtBeginEvent ("Create ACPI Namespace"); DbgPrint (ASL_DEBUG_OUTPUT, "Creating ACPI Namespace\n\n"); - Status = LdLoadNamespace (Gbl_ParseTreeRoot); + Status = LdLoadNamespace (AslGbl_ParseTreeRoot); UtEndEvent (Event); if (ACPI_FAILURE (Status)) { @@ -388,19 +388,19 @@ CmDoCompile ( /* Resolve External Declarations */ - if (Gbl_DoExternals) + if (AslGbl_DoExternals) { Event = UtBeginEvent ("Resolve all Externals"); DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n"); - if (Gbl_DoExternalsInPlace) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201809271643.w8RGh3Wi017099>