svn commit: r363292 - in vendor-sys/acpica/dist: . source/compiler source/components/executer source/components/utilities source/include source/include/platform
Jung-uk Kim
jkim at FreeBSD.org
Fri Jul 17 22:53:39 UTC 2020
Author: jkim
Date: Fri Jul 17 22:53:36 2020
New Revision: 363292
URL: https://svnweb.freebsd.org/changeset/base/363292
Log:
Import ACPICA 20200717.
Modified:
vendor-sys/acpica/dist/changes.txt
vendor-sys/acpica/dist/source/compiler/aslerror.c
vendor-sys/acpica/dist/source/compiler/aslexternal.c
vendor-sys/acpica/dist/source/compiler/aslload.c
vendor-sys/acpica/dist/source/compiler/aslmethod.c
vendor-sys/acpica/dist/source/compiler/aslxref.c
vendor-sys/acpica/dist/source/components/executer/exprep.c
vendor-sys/acpica/dist/source/components/utilities/utdelete.c
vendor-sys/acpica/dist/source/components/utilities/utids.c
vendor-sys/acpica/dist/source/include/acpixf.h
vendor-sys/acpica/dist/source/include/actypes.h
vendor-sys/acpica/dist/source/include/platform/acmsvc.h
Modified: vendor-sys/acpica/dist/changes.txt
==============================================================================
--- vendor-sys/acpica/dist/changes.txt Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/changes.txt Fri Jul 17 22:53:36 2020 (r363292)
@@ -1,6 +1,53 @@
----------------------------------------
+17 July 2020. Summary of changes for version 20200717:
+
+This release is available at https://acpica.org/downloads
+
+
+1) ACPICA kernel-resident subsystem:
+
+Do not increment OperationRegion reference counts for field units. Recent
+server firmware has revealed that this reference count can overflow on
+large servers that declare many field units (thousands) under the same
+OperationRegion. This occurs because each field unit declaration will add
+a reference count to the source OperationRegion. This release solves the
+reference count overflow for OperationRegion objects by preventing
+fieldUnits from incrementing their parent OperationRegion's reference
+count.
+
+Replaced one-element arrays with flexible-arrays, which were introduced
+in C99.
+
+Restored the readme file containing the directions for generation of
+ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
+located at: generate/msvc2017/readme.txt
+
+2) iASL Compiler/Disassembler and ACPICA tools:
+
+iASL: Fixed a regression found in version 20200214. Prevent iASL from
+emitting an extra byte of garbage data when control methods declared a
+single parameter type without using braces. This extra byte is known to
+cause a blue screen on the Windows AML interpreter.
+
+iASL: Made a change to allow external declarations to specify the type of
+a named object even when some name segments are not defined.
+This change allows the following ASL code to compile (When DEV0 is not
+defined or not defined yet):
+
+ External (\_SB.DEV0.OBJ1, IntObj)
+ External (\_SB.DEV0, DeviceObj)
+
+iASL: Fixed a problem where method names in "Alias ()" statement could be
+misinterpreted. They are now interpreted correctly as method invocations.
+
+iASL: capture a method parameter count (Within the Method info segment,
+as well as the argument node) when using parameter type lists.
+
+----------------------------------------
+
+
28 May 2020. Summary of changes for version 20200528:
Modified: vendor-sys/acpica/dist/source/compiler/aslerror.c
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslerror.c Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/compiler/aslerror.c Fri Jul 17 22:53:36 2020 (r363292)
@@ -1056,7 +1056,7 @@ GetModifiedLevel (
UINT8 Level,
UINT16 MessageId)
{
- UINT16 i;
+ UINT32 i;
UINT16 ExceptionCode;
Modified: vendor-sys/acpica/dist/source/compiler/aslexternal.c
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslexternal.c Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/compiler/aslexternal.c Fri Jul 17 22:53:36 2020 (r363292)
@@ -200,6 +200,14 @@ ExDoExternal (
ExternType = AnMapObjTypeToBtype (ExternTypeOp);
+ if (ExternType != ACPI_BTYPE_METHOD)
+ {
+ /*
+ * If this is not a method, it has zero parameters this local variable
+ * is used only for methods
+ */
+ ParamCount = 0;
+ }
/*
* The parser allows optional parameter return types regardless of the
Modified: vendor-sys/acpica/dist/source/compiler/aslload.c
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslload.c Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/compiler/aslload.c Fri Jul 17 22:53:36 2020 (r363292)
@@ -1177,13 +1177,13 @@ LdAnalyzeExternals (
* previously declared External
*/
Node->Flags &= ~ANOBJ_IS_EXTERNAL;
- Node->Type = (UINT8) ExternalOpType;
+ Node->Type = (UINT8) ActualOpType;
/* Just retyped a node, probably will need to open a scope */
- if (AcpiNsOpensScope (ExternalOpType))
+ if (AcpiNsOpensScope (ActualOpType))
{
- Status = AcpiDsScopeStackPush (Node, ExternalOpType, WalkState);
+ Status = AcpiDsScopeStackPush (Node, ActualOpType, WalkState);
if (ACPI_FAILURE (Status))
{
return (Status);
@@ -1204,11 +1204,11 @@ LdAnalyzeExternals (
}
else if ((Node->Flags & ANOBJ_IS_EXTERNAL) &&
(Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) &&
- (ExternalOpType == ACPI_TYPE_ANY))
+ (ActualOpType == ACPI_TYPE_ANY))
{
/* Allow update of externals of unknown type. */
- Node->Type = (UINT8) ExternalOpType;
+ Node->Type = (UINT8) ActualExternalOpType;
Status = AE_OK;
}
Modified: vendor-sys/acpica/dist/source/compiler/aslmethod.c
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslmethod.c Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/compiler/aslmethod.c Fri Jul 17 22:53:36 2020 (r363292)
@@ -306,6 +306,8 @@ MtMethodAnalysisWalkBegin (
{
ActualArgs = MtProcessParameterTypeList (NextType,
MethodInfo->ValidArgTypes);
+ MethodInfo->NumArguments = ActualArgs;
+ ArgNode->Asl.Value.Integer |= ActualArgs;
}
if ((MethodInfo->NumArguments) &&
@@ -670,6 +672,16 @@ MtProcessParameterTypeList (
{
UINT8 ParameterCount = 0;
+
+ if (ParamTypeOp && ParamTypeOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)
+ {
+ /* Special case for a single parameter without braces */
+
+ TypeList[ParameterCount] =
+ MtProcessTypeOp (ParamTypeOp);
+
+ return (1);
+ }
while (ParamTypeOp)
{
Modified: vendor-sys/acpica/dist/source/compiler/aslxref.c
==============================================================================
--- vendor-sys/acpica/dist/source/compiler/aslxref.c Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/compiler/aslxref.c Fri Jul 17 22:53:36 2020 (r363292)
@@ -994,12 +994,14 @@ XfNamespaceLocateBegin (
* invocation of the method, it is simply a reference to the method.
*
* September 2016: Removed DeRefOf from this list
+ * July 2020: Added Alias to this list
*/
if ((Op->Asl.Parent) &&
((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_REFOF) ||
(Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_PACKAGE) ||
(Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_VAR_PACKAGE)||
- (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_OBJECTTYPE)))
+ (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_OBJECTTYPE) ||
+ (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_ALIAS)))
{
return_ACPI_STATUS (AE_OK);
}
Modified: vendor-sys/acpica/dist/source/components/executer/exprep.c
==============================================================================
--- vendor-sys/acpica/dist/source/components/executer/exprep.c Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/components/executer/exprep.c Fri Jul 17 22:53:36 2020 (r363292)
@@ -651,10 +651,6 @@ AcpiExPrepFieldValue (
}
}
- /* An additional reference for the container */
-
- AcpiUtAddReference (ObjDesc->Field.RegionObj);
-
ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
"RegionField: BitOff %X, Off %X, Gran %X, Region %p\n",
ObjDesc->Field.StartFieldBitOffset,
Modified: vendor-sys/acpica/dist/source/components/utilities/utdelete.c
==============================================================================
--- vendor-sys/acpica/dist/source/components/utilities/utdelete.c Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/components/utilities/utdelete.c Fri Jul 17 22:53:36 2020 (r363292)
@@ -749,11 +749,6 @@ AcpiUtUpdateObjectReference (
NextObject = Object->BufferField.BufferObj;
break;
- case ACPI_TYPE_LOCAL_REGION_FIELD:
-
- NextObject = Object->Field.RegionObj;
- break;
-
case ACPI_TYPE_LOCAL_BANK_FIELD:
NextObject = Object->BankField.BankObj;
@@ -789,6 +784,7 @@ AcpiUtUpdateObjectReference (
}
break;
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
case ACPI_TYPE_REGION:
default:
Modified: vendor-sys/acpica/dist/source/components/utilities/utids.c
==============================================================================
--- vendor-sys/acpica/dist/source/components/utilities/utids.c Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/components/utilities/utids.c Fri Jul 17 22:53:36 2020 (r363292)
@@ -435,7 +435,7 @@ AcpiUtExecute_CID (
* 3) Size of the actual CID strings
*/
CidListSize = sizeof (ACPI_PNP_DEVICE_ID_LIST) +
- ((Count - 1) * sizeof (ACPI_PNP_DEVICE_ID)) +
+ (Count * sizeof (ACPI_PNP_DEVICE_ID)) +
StringAreaSize;
CidList = ACPI_ALLOCATE_ZEROED (CidListSize);
Modified: vendor-sys/acpica/dist/source/include/acpixf.h
==============================================================================
--- vendor-sys/acpica/dist/source/include/acpixf.h Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/include/acpixf.h Fri Jul 17 22:53:36 2020 (r363292)
@@ -154,7 +154,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20200528
+#define ACPI_CA_VERSION 0x20200717
#include "acconfig.h"
#include "actypes.h"
Modified: vendor-sys/acpica/dist/source/include/actypes.h
==============================================================================
--- vendor-sys/acpica/dist/source/include/actypes.h Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/include/actypes.h Fri Jul 17 22:53:36 2020 (r363292)
@@ -1379,7 +1379,7 @@ typedef struct acpi_pnp_device_id_list
{
UINT32 Count; /* Number of IDs in Ids array */
UINT32 ListSize; /* Size of list, including ID strings */
- ACPI_PNP_DEVICE_ID Ids[1]; /* ID array */
+ ACPI_PNP_DEVICE_ID Ids[]; /* ID array */
} ACPI_PNP_DEVICE_ID_LIST;
Modified: vendor-sys/acpica/dist/source/include/platform/acmsvc.h
==============================================================================
--- vendor-sys/acpica/dist/source/include/platform/acmsvc.h Fri Jul 17 22:15:02 2020 (r363291)
+++ vendor-sys/acpica/dist/source/include/platform/acmsvc.h Fri Jul 17 22:53:36 2020 (r363292)
@@ -275,6 +275,9 @@
/* warn C4131: uses old-style declarator (iASL compiler only) */
#pragma warning(disable:4459)
+/* warn c4200: allow flexible arrays (of zero length) */
+#pragma warning(disable:4200)
+
#if _MSC_VER > 1200 /* Versions above VC++ 6 */
#pragma warning( disable : 4295 ) /* needed for acpredef.h array */
#endif
More information about the svn-src-vendor
mailing list