aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/dev
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2020-07-18 07:35:34 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2020-07-18 07:35:34 +0000
commit61b180362a37adad5bb505240a02a95c72b1aa50 (patch)
tree26883295803b862b86b14939c95393701704df97 /sys/contrib/dev
parent7cd4443fb1c7396367c74421289fec7cd60ddfbd (diff)
parentb1dc29fa09052190e87f93cf1888edea9c42df24 (diff)
downloadsrc-61b180362a37adad5bb505240a02a95c72b1aa50.tar.gz
src-61b180362a37adad5bb505240a02a95c72b1aa50.zip
MFV: r363292
Merge ACPICA 20200717.
Notes
Notes: svn path=/head/; revision=363300
Diffstat (limited to 'sys/contrib/dev')
-rw-r--r--sys/contrib/dev/acpica/changes.txt47
-rw-r--r--sys/contrib/dev/acpica/compiler/aslerror.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslexternal.c8
-rw-r--r--sys/contrib/dev/acpica/compiler/aslload.c10
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmethod.c12
-rw-r--r--sys/contrib/dev/acpica/compiler/aslxref.c4
-rw-r--r--sys/contrib/dev/acpica/components/executer/exprep.c4
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utdelete.c6
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utids.c2
-rw-r--r--sys/contrib/dev/acpica/include/acpixf.h2
-rw-r--r--sys/contrib/dev/acpica/include/actypes.h2
11 files changed, 80 insertions, 19 deletions
diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt
index 32d7d5648faa..a483f7ec92df 100644
--- a/sys/contrib/dev/acpica/changes.txt
+++ b/sys/contrib/dev/acpica/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/sys/contrib/dev/acpica/compiler/aslerror.c b/sys/contrib/dev/acpica/compiler/aslerror.c
index eada60b3a050..924e8d715712 100644
--- a/sys/contrib/dev/acpica/compiler/aslerror.c
+++ b/sys/contrib/dev/acpica/compiler/aslerror.c
@@ -1056,7 +1056,7 @@ GetModifiedLevel (
UINT8 Level,
UINT16 MessageId)
{
- UINT16 i;
+ UINT32 i;
UINT16 ExceptionCode;
diff --git a/sys/contrib/dev/acpica/compiler/aslexternal.c b/sys/contrib/dev/acpica/compiler/aslexternal.c
index b07e02936407..1a49ef85492a 100644
--- a/sys/contrib/dev/acpica/compiler/aslexternal.c
+++ b/sys/contrib/dev/acpica/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/sys/contrib/dev/acpica/compiler/aslload.c b/sys/contrib/dev/acpica/compiler/aslload.c
index 8f6fd16cee94..d30f79633ec2 100644
--- a/sys/contrib/dev/acpica/compiler/aslload.c
+++ b/sys/contrib/dev/acpica/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/sys/contrib/dev/acpica/compiler/aslmethod.c b/sys/contrib/dev/acpica/compiler/aslmethod.c
index ff3cd6e92e6c..859e0d8e69ac 100644
--- a/sys/contrib/dev/acpica/compiler/aslmethod.c
+++ b/sys/contrib/dev/acpica/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/sys/contrib/dev/acpica/compiler/aslxref.c b/sys/contrib/dev/acpica/compiler/aslxref.c
index 7bdb31867937..b3cb3a1d6bff 100644
--- a/sys/contrib/dev/acpica/compiler/aslxref.c
+++ b/sys/contrib/dev/acpica/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/sys/contrib/dev/acpica/components/executer/exprep.c b/sys/contrib/dev/acpica/components/executer/exprep.c
index 259ce14019f0..fd04de49cf1d 100644
--- a/sys/contrib/dev/acpica/components/executer/exprep.c
+++ b/sys/contrib/dev/acpica/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/sys/contrib/dev/acpica/components/utilities/utdelete.c b/sys/contrib/dev/acpica/components/utilities/utdelete.c
index 541d4a9c6243..032bf9fae7bf 100644
--- a/sys/contrib/dev/acpica/components/utilities/utdelete.c
+++ b/sys/contrib/dev/acpica/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/sys/contrib/dev/acpica/components/utilities/utids.c b/sys/contrib/dev/acpica/components/utilities/utids.c
index dc25b537e76e..3dad35ea27e6 100644
--- a/sys/contrib/dev/acpica/components/utilities/utids.c
+++ b/sys/contrib/dev/acpica/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/sys/contrib/dev/acpica/include/acpixf.h b/sys/contrib/dev/acpica/include/acpixf.h
index 1569d42cfb8c..07c4b758a20d 100644
--- a/sys/contrib/dev/acpica/include/acpixf.h
+++ b/sys/contrib/dev/acpica/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 <contrib/dev/acpica/include/acconfig.h>
#include <contrib/dev/acpica/include/actypes.h>
diff --git a/sys/contrib/dev/acpica/include/actypes.h b/sys/contrib/dev/acpica/include/actypes.h
index 2666ebfbd323..0ec14a36ada9 100644
--- a/sys/contrib/dev/acpica/include/actypes.h
+++ b/sys/contrib/dev/acpica/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;