https://git.reactos.org/?p=reactos.git;a=commitdiff;h=040546d8ff3b9163335a7e...
commit 040546d8ff3b9163335a7eeb1ab137f205cd949e Author: Thomas Faber thomas.faber@reactos.org AuthorDate: Wed Apr 1 22:27:34 2020 +0200 Commit: Thomas Faber thomas.faber@reactos.org CommitDate: Sun Apr 5 14:44:53 2020 +0200
[ACPICA] Update to version 20200326. CORE-16783 --- drivers/bus/acpi/acpica/dispatcher/dswexec.c | 32 +++++++++++++++++++++-- drivers/bus/acpi/acpica/dispatcher/dswload.c | 2 -- drivers/bus/acpi/acpica/dispatcher/dswload2.c | 37 +++++++++++++++++++++++++++ drivers/bus/acpi/acpica/hardware/hwsleep.c | 4 +-- drivers/bus/acpi/acpica/include/acdisasm.h | 1 + drivers/bus/acpi/acpica/include/acnamesp.h | 4 +++ drivers/bus/acpi/acpica/include/acpixf.h | 2 +- drivers/bus/acpi/acpica/include/actbinfo.h | 3 ++- drivers/bus/acpi/acpica/include/actbl2.h | 24 ++++++++++++++--- drivers/bus/acpi/acpica/include/actbl3.h | 6 ++--- drivers/bus/acpi/acpica/include/acuuid.h | 2 +- drivers/bus/acpi/acpica/namespace/nsnames.c | 8 +----- drivers/bus/acpi/acpica/utilities/utdecode.c | 2 +- drivers/bus/acpi/acpica/utilities/utdelete.c | 9 ++++--- drivers/bus/acpi/acpica/utilities/utprint.c | 8 +++++- media/doc/3rd Party Files.txt | 2 +- 16 files changed, 116 insertions(+), 30 deletions(-)
diff --git a/drivers/bus/acpi/acpica/dispatcher/dswexec.c b/drivers/bus/acpi/acpica/dispatcher/dswexec.c index 32444a2128b..d9d79be2080 100644 --- a/drivers/bus/acpi/acpica/dispatcher/dswexec.c +++ b/drivers/bus/acpi/acpica/dispatcher/dswexec.c @@ -50,7 +50,9 @@ #include "acinterp.h" #include "acnamesp.h" #include "acdebug.h" - +#ifdef ACPI_EXEC_APP +#include "aecommon.h" +#endif
#define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dswexec") @@ -396,7 +398,10 @@ AcpiDsExecEndOp ( UINT32 OpClass; ACPI_PARSE_OBJECT *NextOp; ACPI_PARSE_OBJECT *FirstArg; - +#ifdef ACPI_EXEC_APP + char *Namepath; + ACPI_OPERAND_OBJECT *ObjDesc; +#endif
ACPI_FUNCTION_TRACE_PTR (DsExecEndOp, WalkState);
@@ -609,6 +614,29 @@ AcpiDsExecEndOp ( }
Status = AcpiDsEvalBufferFieldOperands (WalkState, Op); + if (ACPI_FAILURE (Status)) + { + break; + } + +#ifdef ACPI_EXEC_APP + /* + * AcpiExec support for namespace initialization file (initialize + * BufferFields in this code.) + */ + Namepath = AcpiNsGetExternalPathname (Op->Common.Node); + Status = AeLookupInitFileEntry (Namepath, &ObjDesc); + if (ACPI_SUCCESS (Status)) + { + Status = AcpiExWriteDataToField (ObjDesc, Op->Common.Node->Object, NULL); + if ACPI_FAILURE (Status) + { + ACPI_EXCEPTION ((AE_INFO, Status, "While writing to buffer field")); + } + } + ACPI_FREE (Namepath); + Status = AE_OK; +#endif break;
diff --git a/drivers/bus/acpi/acpica/dispatcher/dswload.c b/drivers/bus/acpi/acpica/dispatcher/dswload.c index dbcf8f123f2..d3e11bc661e 100644 --- a/drivers/bus/acpi/acpica/dispatcher/dswload.c +++ b/drivers/bus/acpi/acpica/dispatcher/dswload.c @@ -48,7 +48,6 @@ #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" - #ifdef ACPI_ASL_COMPILER #include "acdisasm.h" #endif @@ -447,7 +446,6 @@ AcpiDsLoad1EndOp ( ACPI_PARSE_OBJECT *Op; ACPI_OBJECT_TYPE ObjectType; ACPI_STATUS Status = AE_OK; - #ifdef ACPI_ASL_COMPILER UINT8 ParamCount; #endif diff --git a/drivers/bus/acpi/acpica/dispatcher/dswload2.c b/drivers/bus/acpi/acpica/dispatcher/dswload2.c index df6e4c486c0..a916eec7fd9 100644 --- a/drivers/bus/acpi/acpica/dispatcher/dswload2.c +++ b/drivers/bus/acpi/acpica/dispatcher/dswload2.c @@ -49,6 +49,9 @@ #include "acinterp.h" #include "acnamesp.h" #include "acevents.h" +#ifdef ACPI_EXEC_APP +#include "aecommon.h" +#endif
#define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dswload2") @@ -423,6 +426,10 @@ AcpiDsLoad2EndOp ( ACPI_NAMESPACE_NODE *NewNode; UINT32 i; UINT8 RegionSpace; +#ifdef ACPI_EXEC_APP + ACPI_OPERAND_OBJECT *ObjDesc; + char *Namepath; +#endif
ACPI_FUNCTION_TRACE (DsLoad2EndOp); @@ -519,6 +526,11 @@ AcpiDsLoad2EndOp ( * be evaluated later during the execution phase */ Status = AcpiDsCreateBufferField (Op, WalkState); + if ACPI_FAILURE (Status) + { + ACPI_EXCEPTION ((AE_INFO, Status, "CreateBufferField failure")); + goto Cleanup; + } break;
case AML_TYPE_NAMED_FIELD: @@ -658,6 +670,31 @@ AcpiDsLoad2EndOp ( case AML_NAME_OP:
Status = AcpiDsCreateNode (WalkState, Node, Op); + if (ACPI_FAILURE (Status)) + { + goto Cleanup; + } + +#ifdef ACPI_EXEC_APP + /* + * AcpiExec support for namespace initialization file (initialize + * Name opcodes in this code.) + */ + Namepath = AcpiNsGetExternalPathname (Node); + Status = AeLookupInitFileEntry (Namepath, &ObjDesc); + if (ACPI_SUCCESS (Status)) + { + /* Detach any existing object, attach new object */ + + if (Node->Object) + { + AcpiNsDetachObject (Node); + } + AcpiNsAttachObject (Node, ObjDesc, ObjDesc->Common.Type); + } + ACPI_FREE (Namepath); + Status = AE_OK; +#endif break;
case AML_METHOD_OP: diff --git a/drivers/bus/acpi/acpica/hardware/hwsleep.c b/drivers/bus/acpi/acpica/hardware/hwsleep.c index 3d65e4394ff..6963d4e6826 100644 --- a/drivers/bus/acpi/acpica/hardware/hwsleep.c +++ b/drivers/bus/acpi/acpica/hardware/hwsleep.c @@ -358,11 +358,11 @@ AcpiHwLegacyWake (
/* Enable sleep button */
- (void) AcpiWriteBitRegister ( + (void) AcpiWriteBitRegister ( AcpiGbl_FixedEventInfo[ACPI_EVENT_SLEEP_BUTTON].EnableRegisterId, ACPI_ENABLE_EVENT);
- (void) AcpiWriteBitRegister ( + (void) AcpiWriteBitRegister ( AcpiGbl_FixedEventInfo[ACPI_EVENT_SLEEP_BUTTON].StatusRegisterId, ACPI_CLEAR_STATUS);
diff --git a/drivers/bus/acpi/acpica/include/acdisasm.h b/drivers/bus/acpi/acpica/include/acdisasm.h index f8b9b8cc3c4..c998022f469 100644 --- a/drivers/bus/acpi/acpica/include/acdisasm.h +++ b/drivers/bus/acpi/acpica/include/acdisasm.h @@ -349,6 +349,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs01[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[]; diff --git a/drivers/bus/acpi/acpica/include/acnamesp.h b/drivers/bus/acpi/acpica/include/acnamesp.h index f0c1e98dc79..2a81d278f01 100644 --- a/drivers/bus/acpi/acpica/include/acnamesp.h +++ b/drivers/bus/acpi/acpica/include/acnamesp.h @@ -379,6 +379,10 @@ AcpiNsBuildNormalizedPath ( UINT32 PathSize, BOOLEAN NoTrailing);
+void +AcpiNsNormalizePathname ( + char *OriginalPath); + char * AcpiNsGetNormalizedPathname ( ACPI_NAMESPACE_NODE *Node, diff --git a/drivers/bus/acpi/acpica/include/acpixf.h b/drivers/bus/acpi/acpica/include/acpixf.h index 0669a5712cf..d3503841c27 100644 --- a/drivers/bus/acpi/acpica/include/acpixf.h +++ b/drivers/bus/acpi/acpica/include/acpixf.h @@ -46,7 +46,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20200214 +#define ACPI_CA_VERSION 0x20200326
#include "acconfig.h" #include "actypes.h" diff --git a/drivers/bus/acpi/acpica/include/actbinfo.h b/drivers/bus/acpi/acpica/include/actbinfo.h index 4f05863d97d..ee6c1f63034 100644 --- a/drivers/bus/acpi/acpica/include/actbinfo.h +++ b/drivers/bus/acpi/acpica/include/actbinfo.h @@ -156,7 +156,8 @@ #define ACPI_IORTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_NODE,f) #define ACPI_IORTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_ID_MAPPING,f) #define ACPI_IVRSH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HEADER,f) -#define ACPI_IVRS0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HARDWARE,f) +#define ACPI_IVRS0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HARDWARE1,f) +#define ACPI_IVRS01_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HARDWARE2,f) #define ACPI_IVRS1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_MEMORY,f) #define ACPI_IVRSD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DE_HEADER,f) #define ACPI_IVRS8A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8A,f) diff --git a/drivers/bus/acpi/acpica/include/actbl2.h b/drivers/bus/acpi/acpica/include/actbl2.h index b1d33ab7975..fff11574a89 100644 --- a/drivers/bus/acpi/acpica/include/actbl2.h +++ b/drivers/bus/acpi/acpica/include/actbl2.h @@ -79,6 +79,7 @@ #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */ #define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */ +#define ACPI_SIG_NHLT "NHLT" /* Non-HDAudio Link Table */
/* @@ -349,7 +350,8 @@ typedef struct acpi_ivrs_header
enum AcpiIvrsType { - ACPI_IVRS_TYPE_HARDWARE = 0x10, + ACPI_IVRS_TYPE_HARDWARE1 = 0x10, + ACPI_IVRS_TYPE_HARDWARE2 = 0x11, ACPI_IVRS_TYPE_MEMORY1 = 0x20, ACPI_IVRS_TYPE_MEMORY2 = 0x21, ACPI_IVRS_TYPE_MEMORY3 = 0x22 @@ -377,16 +379,30 @@ enum AcpiIvrsType
/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */
-typedef struct acpi_ivrs_hardware +typedef struct acpi_ivrs_hardware_10 { ACPI_IVRS_HEADER Header; UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ UINT64 BaseAddress; /* IOMMU control registers */ UINT16 PciSegmentGroup; UINT16 Info; /* MSI number and unit ID */ - UINT32 Reserved; + UINT32 FeatureReporting; + +} ACPI_IVRS_HARDWARE1; + +/* 0x11: I/O Virtualization Hardware Definition Block (IVHD) */
-} ACPI_IVRS_HARDWARE; +typedef struct acpi_ivrs_hardware_11 +{ + ACPI_IVRS_HEADER Header; + UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ + UINT64 BaseAddress; /* IOMMU control registers */ + UINT16 PciSegmentGroup; + UINT16 Info; /* MSI number and unit ID */ + UINT32 Attributes; + UINT64 EfrRegisterImage; + UINT64 Reserved; +} ACPI_IVRS_HARDWARE2;
/* Masks for Info field above */
diff --git a/drivers/bus/acpi/acpica/include/actbl3.h b/drivers/bus/acpi/acpica/include/actbl3.h index 2d877cd9a1a..7a9c90917f3 100644 --- a/drivers/bus/acpi/acpica/include/actbl3.h +++ b/drivers/bus/acpi/acpica/include/actbl3.h @@ -75,7 +75,7 @@ #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ -#define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Migrations Table */ +#define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Mitigations Table */ #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */
@@ -796,10 +796,10 @@ typedef struct acpi_table_wpbt
/******************************************************************************* * - * WSMT - Windows SMM Security Migrations Table + * WSMT - Windows SMM Security Mitigations Table * Version 1 * - * Conforms to "Windows SMM Security Migrations Table", + * Conforms to "Windows SMM Security Mitigations Table", * Version 1.0, April 18, 2016 * ******************************************************************************/ diff --git a/drivers/bus/acpi/acpica/include/acuuid.h b/drivers/bus/acpi/acpica/include/acuuid.h index 104f6482ff3..39e3d2d9231 100644 --- a/drivers/bus/acpi/acpica/include/acuuid.h +++ b/drivers/bus/acpi/acpica/include/acuuid.h @@ -92,4 +92,4 @@ #define UUID_DEVICE_PROPERTIES "daffd814-6eba-4d8c-8a91-bc9bbf4aa301"
-#endif /* __AUUID_H__ */ +#endif /* __ACUUID_H__ */ diff --git a/drivers/bus/acpi/acpica/namespace/nsnames.c b/drivers/bus/acpi/acpica/namespace/nsnames.c index 87f4bea030f..ef3108e328a 100644 --- a/drivers/bus/acpi/acpica/namespace/nsnames.c +++ b/drivers/bus/acpi/acpica/namespace/nsnames.c @@ -50,12 +50,6 @@ #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsnames")
-/* Local Prototypes */ - -static void -AcpiNsNormalizePathname ( - char *OriginalPath); -
/******************************************************************************* * @@ -508,7 +502,7 @@ Cleanup: * ******************************************************************************/
-static void +void AcpiNsNormalizePathname ( char *OriginalPath) { diff --git a/drivers/bus/acpi/acpica/utilities/utdecode.c b/drivers/bus/acpi/acpica/utilities/utdecode.c index dbbd12bc245..5726f2f15e5 100644 --- a/drivers/bus/acpi/acpica/utilities/utdecode.c +++ b/drivers/bus/acpi/acpica/utilities/utdecode.c @@ -116,7 +116,7 @@ const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = "IPMI", /* 0x07 */ "GeneralPurposeIo", /* 0x08 */ "GenericSerialBus", /* 0x09 */ - "PlatformCommChannel"/* 0x0A */ + "PCC" /* 0x0A */ };
diff --git a/drivers/bus/acpi/acpica/utilities/utdelete.c b/drivers/bus/acpi/acpica/utilities/utdelete.c index fc8cefb5a34..c339dba4557 100644 --- a/drivers/bus/acpi/acpica/utilities/utdelete.c +++ b/drivers/bus/acpi/acpica/utilities/utdelete.c @@ -518,13 +518,13 @@ AcpiUtUpdateRefCount ( * * FUNCTION: AcpiUtUpdateObjectReference * - * PARAMETERS: Object - Increment ref count for this object - * and all sub-objects + * PARAMETERS: Object - Increment or decrement the ref count for + * this object and all sub-objects * Action - Either REF_INCREMENT or REF_DECREMENT * * RETURN: Status * - * DESCRIPTION: Increment the object reference count + * DESCRIPTION: Increment or decrement the object reference count * * Object references are incremented when: * 1) An object is attached to a Node (namespace object) @@ -563,7 +563,7 @@ AcpiUtUpdateObjectReference ( }
/* - * All sub-objects must have their reference count incremented + * All sub-objects must have their reference count updated * also. Different object types have different subobjects. */ switch (Object->Common.Type) @@ -632,6 +632,7 @@ AcpiUtUpdateObjectReference ( break; } } + NextObject = NULL; break;
diff --git a/drivers/bus/acpi/acpica/utilities/utprint.c b/drivers/bus/acpi/acpica/utilities/utprint.c index 81316fc56c5..89c1d3bda57 100644 --- a/drivers/bus/acpi/acpica/utilities/utprint.c +++ b/drivers/bus/acpi/acpica/utilities/utprint.c @@ -452,7 +452,13 @@ vsnprintf (
Pos = String; - End = String + Size; + + + if (Size != ACPI_UINT32_MAX) { + End = String + Size; + } else { + End = ACPI_CAST_PTR(char, ACPI_UINT32_MAX); + }
for (; *Format; ++Format) { diff --git a/media/doc/3rd Party Files.txt b/media/doc/3rd Party Files.txt index 9d7850fd3f6..c39445c5321 100644 --- a/media/doc/3rd Party Files.txt +++ b/media/doc/3rd Party Files.txt @@ -92,7 +92,7 @@ Used Version: 1.6.37 Website: http://libpng.sourceforge.net/
Title: ACPICA -Used Version: 20200110 +Used Version: 20200326 Website: https://acpica.org/
Title: Schily Tools, mkisofs