aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2020-07-17 22:53:36 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2020-07-17 22:53:36 +0000
commitb1dc29fa09052190e87f93cf1888edea9c42df24 (patch)
treebc4012660993f740d685e5655598353a450706ec
parent93207c1c89bcf8c2291abed617712292c27920f3 (diff)
downloadsrc-b1dc29fa09052190e87f93cf1888edea9c42df24.tar.gz
src-b1dc29fa09052190e87f93cf1888edea9c42df24.zip
Import ACPICA 20200717.vendor/acpica/20200717
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=363292 svn path=/vendor-sys/acpica/20200717/; revision=363293; tag=vendor/acpica/20200717
-rw-r--r--changes.txt47
-rw-r--r--source/compiler/aslerror.c2
-rw-r--r--source/compiler/aslexternal.c8
-rw-r--r--source/compiler/aslload.c10
-rw-r--r--source/compiler/aslmethod.c12
-rw-r--r--source/compiler/aslxref.c4
-rw-r--r--source/components/executer/exprep.c4
-rw-r--r--source/components/utilities/utdelete.c6
-rw-r--r--source/components/utilities/utids.c2
-rw-r--r--source/include/acpixf.h2
-rw-r--r--source/include/actypes.h2
-rw-r--r--source/include/platform/acmsvc.h3
12 files changed, 83 insertions, 19 deletions
diff --git a/changes.txt b/changes.txt
index 32d7d5648faa..a483f7ec92df 100644
--- a/changes.txt
+++ b/changes.txt
@@ -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:
diff --git a/source/compiler/aslerror.c b/source/compiler/aslerror.c
index 8fae779d639e..150983429b3b 100644
--- a/source/compiler/aslerror.c
+++ b/source/compiler/aslerror.c
@@ -1056,7 +1056,7 @@ GetModifiedLevel (
UINT8 Level,
UINT16 MessageId)
{
- UINT16 i;
+ UINT32 i;
UINT16 ExceptionCode;
diff --git a/source/compiler/aslexternal.c b/source/compiler/aslexternal.c
index 315247be60f1..a05ba118df0d 100644
--- a/source/compiler/aslexternal.c
+++ b/source/compiler/aslexternal.c
@@ -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
diff --git a/source/compiler/aslload.c b/source/compiler/aslload.c
index bdc0d805e678..454fa8f5f0db 100644
--- a/source/compiler/aslload.c
+++ b/source/compiler/aslload.c
@@ -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;
}
diff --git a/source/compiler/aslmethod.c b/source/compiler/aslmethod.c
index ff6fd474193d..32b4b123f02e 100644
--- a/source/compiler/aslmethod.c
+++ b/source/compiler/aslmethod.c
@@ -306,6 +306,8 @@ MtMethodAnalysisWalkBegin (
{
ActualArgs = MtProcessParameterTypeList (NextType,
MethodInfo->ValidArgTypes);
+ MethodInfo->NumArguments = ActualArgs;
+ ArgNode->Asl.Value.Integer |= ActualArgs;
}
if ((MethodInfo->NumArguments) &&
@@ -671,6 +673,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)
{
TypeList[ParameterCount] =
diff --git a/source/compiler/aslxref.c b/source/compiler/aslxref.c
index 4bbbe2bd91ec..9306af200f50 100644
--- a/source/compiler/aslxref.c
+++ b/source/compiler/aslxref.c
@@ -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);
}
diff --git a/source/components/executer/exprep.c b/source/components/executer/exprep.c
index 6ceac68f549d..3074366d9a67 100644
--- a/source/components/executer/exprep.c
+++ b/source/components/executer/exprep.c
@@ -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,
diff --git a/source/components/utilities/utdelete.c b/source/components/utilities/utdelete.c
index 502ff4132116..aafd52959379 100644
--- a/source/components/utilities/utdelete.c
+++ b/source/components/utilities/utdelete.c
@@ -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:
diff --git a/source/components/utilities/utids.c b/source/components/utilities/utids.c
index e296c00a0bea..34ae697ab3c2 100644
--- a/source/components/utilities/utids.c
+++ b/source/components/utilities/utids.c
@@ -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);
diff --git a/source/include/acpixf.h b/source/include/acpixf.h
index 2eafdeac6ee1..c1b55401a360 100644
--- a/source/include/acpixf.h
+++ b/source/include/acpixf.h
@@ -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"
diff --git a/source/include/actypes.h b/source/include/actypes.h
index 2666ebfbd323..0ec14a36ada9 100644
--- a/source/include/actypes.h
+++ b/source/include/actypes.h
@@ -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;
diff --git a/source/include/platform/acmsvc.h b/source/include/platform/acmsvc.h
index a003f9fe7ed8..e1a2b51e0731 100644
--- a/source/include/platform/acmsvc.h
+++ b/source/include/platform/acmsvc.h
@@ -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