mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-07 13:14:51 +00:00
MFV: r333378
Import ACPICA 20180508.
This commit is contained in:
commit
e7dfa7d8ab
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=333380
@ -1,3 +1,24 @@
|
||||
----------------------------------------
|
||||
8 May 2018. Summary of changes for version 20180508:
|
||||
|
||||
|
||||
1) ACPICA kernel-resident subsystem:
|
||||
|
||||
Completed the new (recently deployed) package resolution mechanism for
|
||||
the Load and LoadTable ASL/AML operators. This fixes a regression that
|
||||
was introduced in version 20180209 that could result in an
|
||||
AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
|
||||
(SSDT) that contains package objects.
|
||||
|
||||
|
||||
2) iASL Compiler/Disassembler and Tools:
|
||||
|
||||
AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
|
||||
1 MB. This change allows for table offsets within the acpidump file to be
|
||||
up to 8 characters. These changes are backwards compatible with existing
|
||||
acpidump files.
|
||||
|
||||
|
||||
----------------------------------------
|
||||
27 April 2018. Summary of changes for version 20180427:
|
||||
|
||||
|
@ -342,6 +342,11 @@ AcpiExLoadTableOp (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Complete the initialization/resolution of package objects */
|
||||
|
||||
Status = AcpiNsWalkNamespace (ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT,
|
||||
ACPI_UINT32_MAX, 0, AcpiNsInitOnePackage, NULL, NULL, NULL);
|
||||
|
||||
/* Parameter Data (optional) */
|
||||
|
||||
if (ParameterNode)
|
||||
@ -615,6 +620,11 @@ AcpiExLoadOp (
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Complete the initialization/resolution of package objects */
|
||||
|
||||
Status = AcpiNsWalkNamespace (ACPI_TYPE_PACKAGE, ACPI_ROOT_OBJECT,
|
||||
ACPI_UINT32_MAX, 0, AcpiNsInitOnePackage, NULL, NULL, NULL);
|
||||
|
||||
/* Store the DdbHandle into the Target operand */
|
||||
|
||||
Status = AcpiExStore (DdbHandle, Target, WalkState);
|
||||
|
@ -406,6 +406,65 @@ AcpiNsInitializeDevices (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiNsInitOnePackage
|
||||
*
|
||||
* PARAMETERS: ObjHandle - Node
|
||||
* Level - Current nesting level
|
||||
* Context - Not used
|
||||
* ReturnValue - Not used
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every package
|
||||
* within the namespace. Used during dynamic load of an SSDT.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiNsInitOnePackage (
|
||||
ACPI_HANDLE ObjHandle,
|
||||
UINT32 Level,
|
||||
void *Context,
|
||||
void **ReturnValue)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
ACPI_OPERAND_OBJECT *ObjDesc;
|
||||
ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
|
||||
|
||||
|
||||
ObjDesc = AcpiNsGetAttachedObject (Node);
|
||||
if (!ObjDesc)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* Exit if package is already initialized */
|
||||
|
||||
if (ObjDesc->Package.Flags & AOPOBJ_DATA_VALID)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
Status = AcpiDsGetPackageArguments (ObjDesc);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
Status = AcpiUtWalkPackageTree (ObjDesc, NULL, AcpiDsInitPackageElement,
|
||||
NULL);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiNsInitOneObject
|
||||
@ -533,27 +592,10 @@ AcpiNsInitOneObject (
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
/* Complete the initialization/resolution of the package object */
|
||||
|
||||
Info->PackageInit++;
|
||||
Status = AcpiDsGetPackageArguments (ObjDesc);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
|
||||
"%s: Completing resolution of Package elements\n",
|
||||
ACPI_GET_FUNCTION_NAME));
|
||||
|
||||
/*
|
||||
* Resolve all named references in package objects (and all
|
||||
* sub-packages). This action has been deferred until the entire
|
||||
* namespace has been loaded, in order to support external and
|
||||
* forward references from individual package elements (05/2017).
|
||||
*/
|
||||
Status = AcpiUtWalkPackageTree (ObjDesc, NULL,
|
||||
AcpiDsInitPackageElement, NULL);
|
||||
|
||||
ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID;
|
||||
Status = AcpiNsInitOnePackage (ObjHandle, Level, NULL, NULL);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -205,7 +205,7 @@ AcpiUtDumpBuffer (
|
||||
{
|
||||
/* Print current offset */
|
||||
|
||||
AcpiOsPrintf ("%6.4X: ", (BaseOffset + i));
|
||||
AcpiOsPrintf ("%8.4X: ", (BaseOffset + i));
|
||||
|
||||
/* Print 16 hex chars */
|
||||
|
||||
@ -387,7 +387,7 @@ AcpiUtDumpBufferToFile (
|
||||
{
|
||||
/* Print current offset */
|
||||
|
||||
fprintf (File, "%6.4X: ", (BaseOffset + i));
|
||||
fprintf (File, "%8.4X: ", (BaseOffset + i));
|
||||
|
||||
/* Print 16 hex chars */
|
||||
|
||||
|
@ -284,7 +284,7 @@ typedef enum
|
||||
* DescriptorType is used to differentiate between internal descriptors.
|
||||
*
|
||||
* The node is optimized for both 32-bit and 64-bit platforms:
|
||||
* 20 bytes for the 32-bit case, 32 bytes for the 64-bit case.
|
||||
* 28 bytes for the 32-bit case, 48 bytes for the 64-bit case.
|
||||
*
|
||||
* Note: The DescriptorType and Type fields must appear in the identical
|
||||
* position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT
|
||||
@ -301,10 +301,12 @@ typedef struct acpi_namespace_node
|
||||
struct acpi_namespace_node *Parent; /* Parent node */
|
||||
struct acpi_namespace_node *Child; /* First child */
|
||||
struct acpi_namespace_node *Peer; /* First peer */
|
||||
struct acpi_namespace_node *OwnerList; /* All nodes owned by a table or method */
|
||||
|
||||
/*
|
||||
* The following fields are used by the ASL compiler and disassembler only
|
||||
*/
|
||||
/*
|
||||
* The following fields are appended to the namespace node and
|
||||
* are used by the ASL compiler and AML disassembler only
|
||||
*/
|
||||
#ifdef ACPI_LARGE_NAMESPACE_NODE
|
||||
union acpi_parse_object *Op;
|
||||
void *MethodLocals;
|
||||
@ -312,7 +314,6 @@ typedef struct acpi_namespace_node
|
||||
UINT32 Value;
|
||||
UINT32 Length;
|
||||
UINT8 ArgCount;
|
||||
|
||||
#endif
|
||||
|
||||
} ACPI_NAMESPACE_NODE;
|
||||
|
@ -204,6 +204,12 @@ ACPI_STATUS
|
||||
AcpiNsInitializeDevices (
|
||||
UINT32 Flags);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiNsInitOnePackage (
|
||||
ACPI_HANDLE ObjHandle,
|
||||
UINT32 Level,
|
||||
void *Context,
|
||||
void **ReturnValue);
|
||||
|
||||
/*
|
||||
* nsload - Namespace loading
|
||||
|
@ -154,7 +154,7 @@
|
||||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20180427
|
||||
#define ACPI_CA_VERSION 0x20180508
|
||||
|
||||
#include <contrib/dev/acpica/include/acconfig.h>
|
||||
#include <contrib/dev/acpica/include/actypes.h>
|
||||
|
Loading…
Reference in New Issue
Block a user