summaryrefslogtreecommitdiff
path: root/source/include
diff options
context:
space:
mode:
Diffstat (limited to 'source/include')
-rw-r--r--source/include/acdisasm.h21
-rw-r--r--source/include/aclocal.h2
-rw-r--r--source/include/acpixf.h2
-rw-r--r--source/include/acpredef.h5
-rw-r--r--source/include/actbinfo.h12
-rw-r--r--source/include/actbl1.h5
-rw-r--r--source/include/actbl2.h220
-rw-r--r--source/include/actbl3.h1
-rw-r--r--source/include/acuuid.h6
9 files changed, 262 insertions, 12 deletions
diff --git a/source/include/acdisasm.h b/source/include/acdisasm.h
index 9e8d4976221d..5416d0b3f2bd 100644
--- a/source/include/acdisasm.h
+++ b/source/include/acdisasm.h
@@ -282,6 +282,8 @@ typedef enum
ACPI_DMT_HESTNTYP,
ACPI_DMT_HMAT,
ACPI_DMT_IORTMEM,
+ ACPI_DMT_IOVT,
+ ACPI_DMT_IOVTDEV,
ACPI_DMT_IVRS,
ACPI_DMT_IVRS_DE,
ACPI_DMT_IVRS_UNTERMINATED_STRING,
@@ -301,6 +303,7 @@ typedef enum
ACPI_DMT_SDEV,
ACPI_DMT_SLIC,
ACPI_DMT_SRAT,
+ ACPI_DMT_SWFT,
ACPI_DMT_TPM2,
ACPI_DMT_VIOT,
ACPI_DMT_WPBT_UNICODE,
@@ -544,11 +547,15 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort4[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort5[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort6[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort6a[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoIort7[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortAcc[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr3[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoIovt[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoIovt0[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoIovtdev[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware1[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware23[];
@@ -597,6 +604,9 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt24[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt25[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt26[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt27[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt28[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt29[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt30[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt128[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[];
@@ -725,6 +735,9 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoStao[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoSwft[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoSwftFileHdr[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoSwftFileData[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[];
@@ -897,6 +910,10 @@ AcpiDmDumpIort (
ACPI_TABLE_HEADER *Table);
void
+AcpiDmDumpIovt (
+ ACPI_TABLE_HEADER *Table);
+
+void
AcpiDmDumpIvrs (
ACPI_TABLE_HEADER *Table);
@@ -1009,6 +1026,10 @@ AcpiDmDumpSvkl (
ACPI_TABLE_HEADER *Table);
void
+AcpiDmDumpSwft (
+ ACPI_TABLE_HEADER *Table);
+
+void
AcpiDmDumpTcpa (
ACPI_TABLE_HEADER *Table);
diff --git a/source/include/aclocal.h b/source/include/aclocal.h
index 56ce42ba89fc..ff18d617f79a 100644
--- a/source/include/aclocal.h
+++ b/source/include/aclocal.h
@@ -1464,7 +1464,7 @@ typedef struct acpi_port_info
#define ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION 0x91
#define ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG 0x92
#define ACPI_RESOURCE_NAME_CLOCK_INPUT 0x93
-#define ACPI_RESOURCE_NAME_LARGE_MAX 0x94
+#define ACPI_RESOURCE_NAME_LARGE_MAX 0x93
/*****************************************************************************
diff --git a/source/include/acpixf.h b/source/include/acpixf.h
index 8f7047cda920..67d60c68b6c5 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 0x20250807
+#define ACPI_CA_VERSION 0x20251212
#include "acconfig.h"
#include "actypes.h"
diff --git a/source/include/acpredef.h b/source/include/acpredef.h
index 91fd49723b7f..8cf6cf2dfcad 100644
--- a/source/include/acpredef.h
+++ b/source/include/acpredef.h
@@ -587,7 +587,7 @@ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] =
METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: 1 Buf, 1 Pkg */
PACKAGE_INFO (ACPI_PTYPE2_UUID_PAIR, ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_PACKAGE, 1,0),
- {{"_DSM", METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY) | ARG_COUNT_IS_MINIMUM,
+ {{"_DSM", METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY | ACPI_TYPE_PACKAGE) | ARG_COUNT_IS_MINIMUM,
METHOD_RETURNS (ACPI_RTYPE_ALL)}}, /* Must return a value, but it can be of any type */
{{"_DSS", METHOD_1ARGS (ACPI_TYPE_INTEGER),
@@ -721,6 +721,9 @@ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] =
METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (var Ints) */
PACKAGE_INFO (ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0,0,0),
+ {{"_VDM", METHOD_0ARGS,
+ METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
+
{{"_HRV", METHOD_0ARGS,
METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
diff --git a/source/include/actbinfo.h b/source/include/actbinfo.h
index fdf2a989ef6b..0d80f67b6982 100644
--- a/source/include/actbinfo.h
+++ b/source/include/actbinfo.h
@@ -177,6 +177,7 @@
#define ACPI_HPET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HPET,f)
#define ACPI_HMAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HMAT,f)
#define ACPI_IORT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_IORT,f)
+#define ACPI_IOVT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_IOVT,f)
#define ACPI_IVRS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_IVRS,f)
#define ACPI_MADT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MADT,f)
#define ACPI_MCFG_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCFG,f)
@@ -330,9 +331,13 @@
#define ACPI_IORT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_PMCG,f)
#define ACPI_IORT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_RMR,f)
#define ACPI_IORT6A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_RMR_DESC,f)
+#define ACPI_IORT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_IWB,f)
#define ACPI_IORTA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IORT_MEMORY_ACCESS,f)
#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_IOVTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IOVT_HEADER,f)
+#define ACPI_IOVT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IOVT_IOMMU,f)
+#define ACPI_IOVTDEV_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IOVT_DEVICE_ENTRY,f)
#define ACPI_IVRSH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HEADER,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)
@@ -372,6 +377,9 @@
#define ACPI_MADT25_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_IMSIC,f)
#define ACPI_MADT26_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_APLIC,f)
#define ACPI_MADT27_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_PLIC,f)
+#define ACPI_MADT28_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GICV5_IRS,f)
+#define ACPI_MADT29_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GICv5_ITS,f)
+#define ACPI_MADT30_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GICv5_ITS_TRANSLATE,f)
#define ACPI_MADT128_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_OEM_DATA,f)
#define ACPI_MADTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
#define ACPI_MCFG0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f)
@@ -458,6 +466,7 @@
#define ACPI_SRAT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f)
#define ACPI_SRAT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_RINTC_AFFINITY,f)
#define ACPI_SVKL0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SVKL_KEY,f)
+#define ACPI_SWFT_FILE_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SWFT_FILE,f)
#define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f)
#define ACPI_TCPA_SERVER_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f)
#define ACPI_TPM2A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f)
@@ -512,6 +521,7 @@
#define ACPI_IORT6_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_RMR,f,o)
#define ACPI_IORTA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_MEMORY_ACCESS,f,o)
#define ACPI_IORTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_ID_MAPPING,f,o)
+#define ACPI_IOVT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IOVT_IOMMU,f,o)
#define ACPI_IVRS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IVRS_HEADER,f,o)
#define ACPI_IVRSDE_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IVRS_DE_HEADER,f,o)
#define ACPI_LPITH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_LPIT_HEADER,f,o)
@@ -528,6 +538,8 @@
#define ACPI_MADT13_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_MSI_FRAME,f,o)
#define ACPI_MADT14_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_REDISTRIBUTOR,f,o)
#define ACPI_MADT15_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_TRANSLATOR,f,o)
+#define ACPI_MADT28_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GICV5_IRS,f,o)
+#define ACPI_MADT29_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GICv5_ITS,f,o)
#define ACPI_MPST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_NODE,f,o)
#define ACPI_MPST2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_DATA,f,o)
#define ACPI_NFIT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_NFIT_SYSTEM_ADDRESS,f,o)
diff --git a/source/include/actbl1.h b/source/include/actbl1.h
index ec04f0a0ab9f..6e7937999a5b 100644
--- a/source/include/actbl1.h
+++ b/source/include/actbl1.h
@@ -826,11 +826,12 @@ typedef struct acpi_cedt_cfmws_target_element
/* Values for Restrictions field above */
-#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1)
-#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1)
+#define ACPI_CEDT_CFMWS_RESTRICT_DEVMEM (1)
+#define ACPI_CEDT_CFMWS_RESTRICT_HOSTONLYMEM (1<<1)
#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2)
#define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
#define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
+#define ACPI_CEDT_CFMWS_RESTRICT_BI (1<<5)
/* 2: CXL XOR Interleave Math Structure */
diff --git a/source/include/actbl2.h b/source/include/actbl2.h
index a74b6d555a3a..a51ff1ecaa09 100644
--- a/source/include/actbl2.h
+++ b/source/include/actbl2.h
@@ -175,7 +175,9 @@
#define ACPI_SIG_CDAT "CDAT" /* Coherent Device Attribute Table */
#define ACPI_SIG_ERDT "ERDT" /* Enhanced Resource Director Technology */
#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */
+#define ACPI_SIG_IOVT "IOVT" /* I/O Virtualization Table */
#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
+#define ACPI_SIG_KEYP "KEYP" /* Key Programming Interface for IDE */
#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */
#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */
#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */
@@ -917,6 +919,7 @@ enum AcpiIortNodeType
ACPI_IORT_NODE_SMMU_V3 = 0x04,
ACPI_IORT_NODE_PMCG = 0x05,
ACPI_IORT_NODE_RMR = 0x06,
+ ACPI_IORT_NODE_IWB = 0x07,
};
@@ -1120,6 +1123,92 @@ typedef struct acpi_iort_rmr_desc {
} ACPI_IORT_RMR_DESC;
+typedef struct acpi_iort_iwb {
+ UINT64 BaseAddress;
+ UINT16 IwbIndex; /* Unique IWB identifier matching with the IWB GSI namespace. */
+ char DeviceName[]; /* Path of the IWB namespace object */
+
+} ACPI_IORT_IWB;
+
+
+/*******************************************************************************
+ *
+ * IOVT - I/O Virtualization Table
+ *
+ * Conforms to "LoongArch I/O Virtualization Table",
+ * Version 0.1, October 2024
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_iovt
+{
+ ACPI_TABLE_HEADER Header; /* Common ACPI table header */
+ UINT16 IommuCount;
+ UINT16 IommuOffset;
+ UINT8 Reserved[8];
+
+} ACPI_TABLE_IOVT;
+
+/* IOVT subtable header */
+
+typedef struct acpi_iovt_header
+{
+ UINT16 Type;
+ UINT16 Length;
+
+} ACPI_IOVT_HEADER;
+
+/* Values for Type field above */
+
+enum AcpiIovtIommuType
+{
+ ACPI_IOVT_IOMMU_V1 = 0x00,
+ ACPI_IOVT_IOMMU_RESERVED = 0x01 /* 1 and greater are reserved */
+};
+
+/* IOVT subtables */
+
+typedef struct acpi_iovt_iommu
+{
+ ACPI_IOVT_HEADER Header;
+ UINT32 Flags;
+ UINT16 Segment;
+ UINT16 PhyWidth; /* Physical Address Width */
+ UINT16 VirtWidth; /* Virtual Address Width */
+ UINT16 MaxPageLevel;
+ UINT64 PageSize;
+ UINT32 DeviceId;
+ UINT64 BaseAddress;
+ UINT32 AddressSpaceSize;
+ UINT8 InterruptType;
+ UINT8 Reserved[3];
+ UINT32 GsiNumber;
+ UINT32 ProximityDomain;
+ UINT32 MaxDeviceNum;
+ UINT32 DeviceEntryNum;
+ UINT32 DeviceEntryOffset;
+
+} ACPI_IOVT_IOMMU;
+
+typedef struct acpi_iovt_device_entry
+{
+ UINT8 Type;
+ UINT8 Length;
+ UINT8 Flags;
+ UINT8 Reserved[3];
+ UINT16 DeviceId;
+
+} ACPI_IOVT_DEVICE_ENTRY;
+
+enum AcpiIovtDeviceEntryType
+{
+ ACPI_IOVT_DEVICE_ENTRY_SINGLE = 0x00,
+ ACPI_IOVT_DEVICE_ENTRY_START = 0x01,
+ ACPI_IOVT_DEVICE_ENTRY_END = 0x02,
+ ACPI_IOVT_DEVICE_ENTRY_RESERVED = 0x03 /* 3 and greater are reserved */
+};
+
+
/*******************************************************************************
*
* IVRS - I/O Virtualization Reporting Structure
@@ -1354,6 +1443,65 @@ typedef struct acpi_ivrs_memory
} ACPI_IVRS_MEMORY;
+/*******************************************************************************
+ *
+ * KEYP - Key Programming Interface for Root Complex Integrity and Data
+ * Encryption (IDE)
+ * Version 1
+ *
+ * Conforms to "Key Programming Interface for Root Complex Integrity and Data
+ * Encryption (IDE)" document. See under ACPI-Related Documents.
+ *
+ ******************************************************************************/
+typedef struct acpi_table_keyp {
+ ACPI_TABLE_HEADER Header; /* Common ACPI table header */
+ UINT32 Reserved;
+} ACPI_TABLE_KEYP;
+
+/* KEYP common subtable header */
+
+typedef struct acpi_keyp_common_header {
+ UINT8 Type;
+ UINT8 Reserved;
+ UINT16 Length;
+} ACPI_KEYP_COMMON_HEADER;
+
+/* Values for Type field above */
+
+enum AcpiKeypType
+{
+ ACPI_KEYP_TYPE_CONFIG_UNIT = 0,
+};
+
+/* Root Port Information Structure */
+
+typedef struct acpi_keyp_rp_info {
+ UINT16 Segment;
+ UINT8 Bus;
+ UINT8 Devfn;
+} ACPI_KEYP_RP_INFO;
+
+/* Key Configuration Unit Structure */
+
+typedef struct acpi_keyp_config_unit {
+ ACPI_KEYP_COMMON_HEADER Header;
+ UINT8 ProtocolType;
+ UINT8 Version;
+ UINT8 RootPortCount;
+ UINT8 Flags;
+ UINT64 RegisterBaseAddress;
+ ACPI_KEYP_RP_INFO RpInfo[];
+} ACPI_KEYP_CONFIG_UNIT;
+
+enum AcpiKeypProtocolType
+{
+ ACPI_KEYP_PROTO_TYPE_INVALID = 0,
+ ACPI_KEYP_PROTO_TYPE_PCIE,
+ ACPI_KEYP_PROTO_TYPE_CXL,
+ ACPI_KEYP_PROTO_TYPE_RESERVED
+};
+
+#define ACPI_KEYP_F_TVM_USABLE (1)
/*******************************************************************************
*
@@ -1470,7 +1618,10 @@ enum AcpiMadtType
ACPI_MADT_TYPE_IMSIC = 25,
ACPI_MADT_TYPE_APLIC = 26,
ACPI_MADT_TYPE_PLIC = 27,
- ACPI_MADT_TYPE_RESERVED = 28, /* 28 to 0x7F are reserved */
+ ACPI_MADT_TYPE_GICV5_IRS = 28,
+ ACPI_MADT_TYPE_GICV5_ITS = 29,
+ ACPI_MADT_TYPE_GICV5_ITS_TRANSLATE = 30,
+ ACPI_MADT_TYPE_RESERVED = 31, /* 31 to 0x7F are reserved */
ACPI_MADT_TYPE_OEM_RESERVED = 0x80 /* 0x80 to 0xFF are reserved for OEM use */
};
@@ -1626,7 +1777,7 @@ typedef struct acpi_madt_local_x2apic_nmi
} ACPI_MADT_LOCAL_X2APIC_NMI;
-/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 + ACPI 6.5 changes) */
+/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 + ACPI 6.5 + ACPI 6.7 changes) */
typedef struct acpi_madt_generic_interrupt
{
@@ -1648,6 +1799,8 @@ typedef struct acpi_madt_generic_interrupt
UINT8 Reserved2[1];
UINT16 SpeInterrupt; /* ACPI 6.3 */
UINT16 TrbeInterrupt; /* ACPI 6.5 */
+ UINT16 Iaffid; /* ACPI 6.7 */
+ UINT32 IrsId;
} ACPI_MADT_GENERIC_INTERRUPT;
@@ -1673,7 +1826,7 @@ typedef struct acpi_madt_generic_distributor
} ACPI_MADT_GENERIC_DISTRIBUTOR;
-/* Values for Version field above */
+/* Values for Version field above and Version field in acpi_madt_gicv5_irs */
enum AcpiMadtGicVersion
{
@@ -1682,7 +1835,8 @@ enum AcpiMadtGicVersion
ACPI_MADT_GIC_VERSION_V2 = 2,
ACPI_MADT_GIC_VERSION_V3 = 3,
ACPI_MADT_GIC_VERSION_V4 = 4,
- ACPI_MADT_GIC_VERSION_RESERVED = 5 /* 5 and greater are reserved */
+ ACPI_MADT_GIC_VERSION_V5 = 5,
+ ACPI_MADT_GIC_VERSION_RESERVED = 6 /* 6 and greater are reserved */
};
@@ -1734,7 +1888,7 @@ typedef struct acpi_madt_generic_translator
#define ACPI_MADT_ITS_NON_COHERENT (1)
-/* 16: Multiprocessor wakeup (ACPI 6.4) */
+/* 16: Multiprocessor wakeup (ACPI 6.6) */
typedef struct acpi_madt_multiproc_wakeup
{
@@ -1742,6 +1896,7 @@ typedef struct acpi_madt_multiproc_wakeup
UINT16 MailboxVersion;
UINT32 Reserved; /* reserved - must be zero */
UINT64 BaseAddress;
+ UINT64 ResetVector;
} ACPI_MADT_MULTIPROC_WAKEUP;
@@ -1760,6 +1915,7 @@ typedef struct acpi_madt_multiproc_wakeup_mailbox
} ACPI_MADT_MULTIPROC_WAKEUP_MAILBOX;
#define ACPI_MP_WAKE_COMMAND_WAKEUP 1
+#define ACPI_MP_WAKE_COMMAND_TEST 2
/* 17: CPU Core Interrupt Controller (ACPI 6.5) */
@@ -1952,6 +2108,46 @@ typedef struct acpi_madt_plic {
UINT32 GsiBase;
} ACPI_MADT_PLIC;
+/* 28: Arm GICv5 IRS (ACPI 6.7) */
+typedef struct acpi_madt_gicv5_irs {
+ ACPI_SUBTABLE_HEADER Header;
+ UINT8 Version;
+ UINT8 Reserved;
+ UINT32 IrsId;
+ UINT32 Flags;
+ UINT32 Reserved2;
+ UINT64 ConfigBaseAddress;
+ UINT64 SetlpiBaseAddress;
+} ACPI_MADT_GICV5_IRS;
+
+#define ACPI_MADT_IRS_NON_COHERENT (1)
+
+
+/* 29: Arm GICv5 ITS Config Frame (ACPI 6.7) */
+typedef struct acpi_madt_gicv5_translator
+{
+ ACPI_SUBTABLE_HEADER Header;
+ UINT8 Flags;
+ UINT8 Reserved; /* reserved - must be zero */
+ UINT32 TranslatorId;
+ UINT64 BaseAddress;
+
+} ACPI_MADT_GICv5_ITS;
+
+#define ACPI_MADT_GICV5_ITS_NON_COHERENT (1)
+
+/* 30: Arm GICv5 ITS Translate Frame (ACPI 6.7) */
+typedef struct acpi_madt_gicv5_translate_frame
+{
+ ACPI_SUBTABLE_HEADER Header;
+ UINT16 Reserved; /* reserved - must be zero */
+ UINT32 LinkedTranslatorId;
+ UINT32 TranslateFrameId;
+ UINT32 Reserved2;
+ UINT64 BaseAddress;
+
+} ACPI_MADT_GICv5_ITS_TRANSLATE;
+
/* 80: OEM data */
@@ -3356,6 +3552,15 @@ typedef struct acpi_pptt_cache
typedef struct acpi_pptt_cache_v1
{
+ ACPI_SUBTABLE_HEADER Header;
+ UINT16 Reserved;
+ UINT32 Flags;
+ UINT32 NextLevelOfCache;
+ UINT32 Size;
+ UINT32 NumberOfSets;
+ UINT8 Associativity;
+ UINT8 Attributes;
+ UINT16 LineSize;
UINT32 CacheId;
} ACPI_PPTT_CACHE_V1;
@@ -3629,6 +3834,8 @@ typedef struct acpi_ras2_patrol_scrub_param {
UINT32 Flags;
UINT32 ScrubParamsOut;
UINT32 ScrubParamsIn;
+ UINT32 ExtScrubParams;
+ UINT8 ScrubRateDesc[256];
} ACPI_RAS2_PATROL_SCRUB_PARAM;
@@ -4115,9 +4322,8 @@ typedef struct acpi_swft_file
UINT16 VendorID;
UINT32 FileID;
UINT16 FileVersion;
- UINT16 FileLength;
+ UINT32 FileLength;
UINT8 FileData[];
-
} ACPI_SWFT_FILE;
/*******************************************************************************
diff --git a/source/include/actbl3.h b/source/include/actbl3.h
index 07bc8713becc..6392359249c9 100644
--- a/source/include/actbl3.h
+++ b/source/include/actbl3.h
@@ -404,6 +404,7 @@ typedef struct acpi_srat_mem_affinity
#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */
#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */
#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */
+#define ACPI_SRAT_MEM_SPEC_PURPOSE (1<<3) /* 03: Memory is intended for specific-purpose usage */
/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
diff --git a/source/include/acuuid.h b/source/include/acuuid.h
index 071e9a5ad610..a950972b01b3 100644
--- a/source/include/acuuid.h
+++ b/source/include/acuuid.h
@@ -179,6 +179,11 @@
#define UUID_DEVICE_LABELING "e5c937d0-3553-4d7a-9117-ea4d19c3434d"
#define UUID_PHYSICAL_PRESENCE "3dddfaa6-361b-4eb4-a424-8d10089d1653"
+/* TPM */
+#define UUID_HARDWARE_INFORMATION "cf8e16a5-c1e8-4e25-b712-4f54a96702c8"
+#define UUID_START_METHOD "6bbf6cab-5463-4714-b7cd-f0203c0368d4"
+#define UUID_MEMORY_CLEAR "376054ed-cc13-4675-901c-4756d7f2d45d"
+
/* NVDIMM - NFIT table */
#define UUID_NFIT_DIMM "4309ac30-0d11-11e4-9191-0800200c9a66"
@@ -213,4 +218,5 @@
#define UUID_USB4_CAPABILITIES "23a0d13a-26ab-486c-9c5f-0ffa525a575a"
#define UUID_1ST_FUNCTION_ID "893f00a6-660c-494e-bcfd-3043f4fb67c0"
#define UUID_2ND_FUNCTION_ID "107ededd-d381-4fd7-8da9-08e9a6c79644"
+#define UUID_FAN_TRIP_POINTS "a7611840-99fe-41ae-a488-35c75926c8eb"
#endif /* __ACUUID_H__ */