···12121313/* Current ACPICA subsystem version in YYYYMMDD format */14141515-#define ACPI_CA_VERSION 0x202508071515+#define ACPI_CA_VERSION 0x2025121216161717#include <acpi/acconfig.h>1818#include <acpi/actypes.h>
+257
include/acpi/actbl1.h
···3737#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */3838#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */3939#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */4040+#define ACPI_SIG_DTPR "DTPR" /* DMA TXT Protection Ranges table */4041#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */4142#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */4243#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */···998997struct acpi_drtm_dps_id {999998 u32 dps_id_length;1000999 u8 dps_id[16];10001000+};10011001+10021002+/*******************************************************************************10031003+ *10041004+ * DTPR - DMA TXT Protection Ranges Table10051005+ * Version 110061006+ *10071007+ * Conforms to "Intel® Trusted Execution Technology (Intel® TXT) DMA Protection10081008+ * Ranges",10091009+ * Revision 0.73, August 202110101010+ *10111011+ ******************************************************************************/10121012+10131013+struct acpi_table_dtpr {10141014+ struct acpi_table_header header;10151015+ u32 flags; /* 36 */10161016+ u32 ins_cnt;10171017+};10181018+10191019+struct acpi_tpr_array {10201020+ u64 base;10211021+};10221022+10231023+struct acpi_tpr_instance {10241024+ u32 flags;10251025+ u32 tpr_cnt;10261026+};10271027+10281028+struct acpi_tpr_aux_sr {10291029+ u32 srl_cnt;10301030+};10311031+10321032+/*10331033+ * TPRn_BASE (ACPI_TPRN_BASE_REG)10341034+ *10351035+ * Specifies the start address of TPRn region. TPR region address and size must10361036+ * be with 1MB resolution. These bits are compared with the result of the10371037+ * TPRn_LIMIT[63:20], which is applied to the incoming address, to10381038+ * determine if an access fall within the TPRn defined region.10391039+ *10401040+ * Minimal TPRn_Base resolution is 1MB. Applied to the incoming address, to10411041+ * determine if an access fall within the TPRn defined region. Width is10421042+ * determined by a bus width which can be obtained via CPUID10431043+ * function 0x80000008.10441044+ */10451045+10461046+typedef u64 ACPI_TPRN_BASE_REG;10471047+10481048+/* TPRn_BASE Register Bit Masks */10491049+10501050+/* Bit 3 - RW: access: 1 == RO, 0 == RW register (for TPR must be RW) */10511051+#define ACPI_TPRN_BASE_RW_SHIFT 310521052+10531053+#define ACPI_TPRN_BASE_RW_MASK ((u64) 1 << ACPI_TPRN_BASE_RW_SHIFT)10541054+10551055+/*10561056+ * Bit 4 - Enable: 0 – TPRn address range enabled;10571057+ * 1 – TPRn address range disabled.10581058+ */10591059+#define ACPI_TPRN_BASE_ENABLE_SHIFT 410601060+10611061+#define ACPI_TPRN_BASE_ENABLE_MASK ((u64) 1 << ACPI_TPRN_BASE_ENABLE_SHIFT)10621062+10631063+/* Bits 63:20 - tpr_base_rw */10641064+#define ACPI_TPRN_BASE_ADDR_SHIFT 2010651065+10661066+#define ACPI_TPRN_BASE_ADDR_MASK ((u64) 0xFFFFFFFFFFF << \10671067+ ACPI_TPRN_BASE_ADDR_SHIFT)10681068+10691069+/* TPRn_BASE Register Bit Handlers*/10701070+10711071+/*10721072+ * GET_TPRN_BASE_RW:10731073+ *10741074+ * Read RW bit from TPRn Base register - bit 3.10751075+ *10761076+ * Input:10771077+ * - reg (represents TPRn Base Register (ACPI_TPRN_BASE_REG))10781078+ *10791079+ * Output:10801080+ *10811081+ * Returns RW bit value (u64).10821082+ */10831083+#define GET_TPRN_BASE_RW(reg) (((u64) reg & ACPI_TPRN_BASE_RW_MASK) >> \10841084+ ACPI_TPRN_BASE_RW_SHIFT)10851085+10861086+/*10871087+ * GET_TPRN_BASE_ENABLE:10881088+ *10891089+ * Read Enable bit from TPRn Base register - bit 4.10901090+ *10911091+ * Input:10921092+ * - reg (represents TPRn Base Register (ACPI_TPRN_BASE_REG))10931093+ *10941094+ * Output:10951095+ *10961096+ * Returns Enable bit value (u64).10971097+ */10981098+#define GET_TPRN_BASE_ENABLE(reg) (((u64) reg & ACPI_TPRN_BASE_ENABLE_MASK) \10991099+ >> ACPI_TPRN_BASE_ENABLE_SHIFT)11001100+11011101+/*11021102+ * GET_TPRN_BASE_ADDR:11031103+ *11041104+ * Read TPRn Base Register address from bits 63:20.11051105+ *11061106+ * Input:11071107+ * - reg (represents TPRn Base Register (ACPI_TPRN_BASE_REG))11081108+ *11091109+ * Output:11101110+ *11111111+ * Returns TPRn Base Register address (u64).11121112+ */11131113+#define GET_TPRN_BASE_ADDR(reg) (((u64) reg & ACPI_TPRN_BASE_ADDR_MASK) \11141114+ >> ACPI_TPRN_BASE_ADDR_SHIFT)11151115+11161116+/*11171117+ * SET_TPRN_BASE_RW:11181118+ *11191119+ * Set RW bit in TPRn Base register - bit 3.11201120+ *11211121+ * Input:11221122+ * - reg (represents TPRn Base Register (ACPI_TPRN_BASE_REG))11231123+ * - val (represents RW value to be set (u64))11241124+ */11251125+#define SET_TPRN_BASE_RW(reg, val) ACPI_REGISTER_INSERT_VALUE(reg, \11261126+ ACPI_TPRN_BASE_RW_SHIFT, \11271127+ ACPI_TPRN_BASE_RW_MASK, val);11281128+11291129+/*11301130+ * SET_TPRN_BASE_ENABLE:11311131+ *11321132+ * Set Enable bit in TPRn Base register - bit 4.11331133+ *11341134+ * Input:11351135+ * - reg (represents TPRn Base Register (ACPI_TPRN_BASE_REG))11361136+ * - val (represents Enable value to be set (u64))11371137+ */11381138+#define SET_TPRN_BASE_ENABLE(reg, val) ACPI_REGISTER_INSERT_VALUE(reg, \11391139+ ACPI_TPRN_BASE_ENABLE_SHIFT, \11401140+ ACPI_TPRN_BASE_ENABLE_MASK, val);11411141+11421142+/*11431143+ * SET_TPRN_BASE_ADDR:11441144+ *11451145+ * Set TPRn Base Register address - bits 63:2011461146+ *11471147+ * Input11481148+ * - reg (represents TPRn Base Register (ACPI_TPRN_BASE_REG))11491149+ * - val (represents address value to be set (u64))11501150+ */11511151+#define SET_TPRN_BASE_ADDR(reg, val) ACPI_REGISTER_INSERT_VALUE(reg, \11521152+ ACPI_TPRN_BASE_ADDR_SHIFT, \11531153+ ACPI_TPRN_BASE_ADDR_MASK, val);11541154+11551155+/*11561156+ * TPRn_LIMIT11571157+ *11581158+ * This register defines an isolated region of memory that can be enabled11591159+ * to prohibit certain system agents from accessing memory. When an agent11601160+ * sends a request upstream, whether snooped or not, a TPR prevents that11611161+ * transaction from changing the state of memory.11621162+ *11631163+ * Minimal TPRn_Limit resolution is 1MB. Width is determined by a bus width.11641164+ */11651165+11661166+typedef u64 ACPI_TPRN_LIMIT_REG;11671167+11681168+/* TPRn_LIMIT Register Bit Masks */11691169+11701170+/* Bit 3 - RW: access: 1 == RO, 0 == RW register (for TPR must be RW) */11711171+#define ACPI_TPRN_LIMIT_RW_SHIFT 311721172+11731173+#define ACPI_TPRN_LIMIT_RW_MASK ((u64) 1 << ACPI_TPRN_LIMIT_RW_SHIFT)11741174+11751175+/* Bits 63:20 - tpr_limit_rw */11761176+#define ACPI_TPRN_LIMIT_ADDR_SHIFT 2011771177+11781178+#define ACPI_TPRN_LIMIT_ADDR_MASK ((u64) 0xFFFFFFFFFFF << \11791179+ ACPI_TPRN_LIMIT_ADDR_SHIFT)11801180+11811181+/* TPRn_LIMIT Register Bit Handlers*/11821182+11831183+/*11841184+ * GET_TPRN_LIMIT_RW:11851185+ *11861186+ * Read RW bit from TPRn Limit register - bit 3.11871187+ *11881188+ * Input:11891189+ * - reg (represents TPRn Limit Register (ACPI_TPRN_LIMIT_REG))11901190+ *11911191+ * Output:11921192+ *11931193+ * Returns RW bit value (u64).11941194+ */11951195+#define GET_TPRN_LIMIT_RW(reg) (((u64) reg & ACPI_TPRN_LIMIT_RW_MASK) \11961196+ >> ACPI_TPRN_LIMIT_RW_SHIFT)11971197+11981198+/*11991199+ * GET_TPRN_LIMIT_ADDR:12001200+ *12011201+ * Read TPRn Limit Register address from bits 63:20.12021202+ *12031203+ * Input:12041204+ * - reg (represents TPRn Limit Register (ACPI_TPRN_LIMIT_REG))12051205+ *12061206+ * Output:12071207+ *12081208+ * Returns TPRn Limit Register address (u64).12091209+ */12101210+#define GET_TPRN_LIMIT_ADDR(reg) (((u64) reg & ACPI_TPRN_LIMIT_ADDR_MASK) \12111211+ >> ACPI_TPRN_LIMIT_ADDR_SHIFT)12121212+12131213+/*12141214+ * SET_TPRN_LIMIT_RW:12151215+ *12161216+ * Set RW bit in TPRn Limit register - bit 3.12171217+ *12181218+ * Input:12191219+ * - reg (represents TPRn Limit Register (ACPI_TPRN_LIMIT_REG))12201220+ * - val (represents RW value to be set (u64))12211221+ */12221222+#define SET_TPRN_LIMIT_RW(reg, val) ACPI_REGISTER_INSERT_VALUE(reg, \12231223+ ACPI_TPRN_LIMIT_RW_SHIFT, \12241224+ ACPI_TPRN_LIMIT_RW_MASK, val);12251225+12261226+/*12271227+ * SET_TPRN_LIMIT_ADDR:12281228+ *12291229+ * Set TPRn Limit Register address - bits 63:20.12301230+ *12311231+ * Input:12321232+ * - reg (represents TPRn Limit Register (ACPI_TPRN_LIMIT_REG))12331233+ * - val (represents address value to be set (u64))12341234+ */12351235+#define SET_TPRN_LIMIT_ADDR(reg, val) ACPI_REGISTER_INSERT_VALUE(reg, \12361236+ ACPI_TPRN_LIMIT_ADDR_SHIFT, \12371237+ ACPI_TPRN_LIMIT_ADDR_MASK, val);12381238+12391239+/*12401240+ * SERIALIZE_REQUEST12411241+ *12421242+ * This register is used to request serialization of non-coherent DMA12431243+ * transactions. OS shall issue it before changing of TPR settings12441244+ * (base / size).12451245+ */12461246+12471247+struct acpi_tpr_serialize_request {12481248+ u64 sr_register;12491249+ /*12501250+ * BIT 1 - Status of serialization request (RO)12511251+ * 0 == register idle, 1 == serialization in progress12521252+ * BIT 2 - Control field to initiate serialization (RW)12531253+ * 0 == normal, 1 == initialize serialization12541254+ * (self-clear to allow multiple serialization requests)12551255+ */10011256};1002125710031258/*******************************************************************************
+190-4
include/acpi/actbl2.h
···3131#define ACPI_SIG_CDAT "CDAT" /* Coherent Device Attribute Table */3232#define ACPI_SIG_ERDT "ERDT" /* Enhanced Resource Director Technology */3333#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */3434+#define ACPI_SIG_IOVT "IOVT" /* I/O Virtualization Table */3435#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */3636+#define ACPI_SIG_KEYP "KEYP" /* Key Programming Interface for IDE */3537#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */3638#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */3739#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */···682680 ACPI_IORT_NODE_SMMU_V3 = 0x04,683681 ACPI_IORT_NODE_PMCG = 0x05,684682 ACPI_IORT_NODE_RMR = 0x06,683683+ ACPI_IORT_NODE_IWB = 0x07,685684};686685687686struct acpi_iort_id_mapping {···859856 u64 base_address;860857 u64 length;861858 u32 reserved;859859+};860860+861861+struct acpi_iort_iwb {862862+ u64 base_address;863863+ u16 iwb_index; /* Unique IWB identifier matching with the IWB GSI namespace. */864864+ char device_name[]; /* Path of the IWB namespace object */865865+};866866+867867+/*******************************************************************************868868+ *869869+ * IOVT - I/O Virtualization Table870870+ *871871+ * Conforms to "LoongArch I/O Virtualization Table",872872+ * Version 0.1, October 2024873873+ *874874+ ******************************************************************************/875875+876876+struct acpi_table_iovt {877877+ struct acpi_table_header header; /* Common ACPI table header */878878+ u16 iommu_count;879879+ u16 iommu_offset;880880+ u8 reserved[8];881881+};882882+883883+/* IOVT subtable header */884884+885885+struct acpi_iovt_header {886886+ u16 type;887887+ u16 length;888888+};889889+890890+/* Values for Type field above */891891+892892+enum acpi_iovt_iommu_type {893893+ ACPI_IOVT_IOMMU_V1 = 0x00,894894+ ACPI_IOVT_IOMMU_RESERVED = 0x01 /* 1 and greater are reserved */895895+};896896+897897+/* IOVT subtables */898898+899899+struct acpi_iovt_iommu {900900+ struct acpi_iovt_header header;901901+ u32 flags;902902+ u16 segment;903903+ u16 phy_width; /* Physical Address Width */904904+ u16 virt_width; /* Virtual Address Width */905905+ u16 max_page_level;906906+ u64 page_size;907907+ u32 device_id;908908+ u64 base_address;909909+ u32 address_space_size;910910+ u8 interrupt_type;911911+ u8 reserved[3];912912+ u32 gsi_number;913913+ u32 proximity_domain;914914+ u32 max_device_num;915915+ u32 device_entry_num;916916+ u32 device_entry_offset;917917+};918918+919919+struct acpi_iovt_device_entry {920920+ u8 type;921921+ u8 length;922922+ u8 flags;923923+ u8 reserved[3];924924+ u16 device_id;925925+};926926+927927+enum acpi_iovt_device_entry_type {928928+ ACPI_IOVT_DEVICE_ENTRY_SINGLE = 0x00,929929+ ACPI_IOVT_DEVICE_ENTRY_START = 0x01,930930+ ACPI_IOVT_DEVICE_ENTRY_END = 0x02,931931+ ACPI_IOVT_DEVICE_ENTRY_RESERVED = 0x03 /* 3 and greater are reserved */862932};863933864934/*******************************************************************************···1143106711441068/*******************************************************************************11451069 *10701070+ * KEYP - Key Programming Interface for Root Complex Integrity and Data10711071+ * Encryption (IDE)10721072+ * Version 110731073+ *10741074+ * Conforms to "Key Programming Interface for Root Complex Integrity and Data10751075+ * Encryption (IDE)" document. See under ACPI-Related Documents.10761076+ *10771077+ ******************************************************************************/10781078+struct acpi_table_keyp {10791079+ struct acpi_table_header header; /* Common ACPI table header */10801080+ u32 reserved;10811081+};10821082+10831083+/* KEYP common subtable header */10841084+10851085+struct acpi_keyp_common_header {10861086+ u8 type;10871087+ u8 reserved;10881088+ u16 length;10891089+};10901090+10911091+/* Values for Type field above */10921092+10931093+enum acpi_keyp_type {10941094+ ACPI_KEYP_TYPE_CONFIG_UNIT = 0,10951095+};10961096+10971097+/* Root Port Information Structure */10981098+10991099+struct acpi_keyp_rp_info {11001100+ u16 segment;11011101+ u8 bus;11021102+ u8 devfn;11031103+};11041104+11051105+/* Key Configuration Unit Structure */11061106+11071107+struct acpi_keyp_config_unit {11081108+ struct acpi_keyp_common_header header;11091109+ u8 protocol_type;11101110+ u8 version;11111111+ u8 root_port_count;11121112+ u8 flags;11131113+ u64 register_base_address;11141114+ struct acpi_keyp_rp_info rp_info[];11151115+};11161116+11171117+enum acpi_keyp_protocol_type {11181118+ ACPI_KEYP_PROTO_TYPE_INVALID = 0,11191119+ ACPI_KEYP_PROTO_TYPE_PCIE,11201120+ ACPI_KEYP_PROTO_TYPE_CXL,11211121+ ACPI_KEYP_PROTO_TYPE_RESERVED11221122+};11231123+11241124+#define ACPI_KEYP_F_TVM_USABLE (1)11251125+11261126+/*******************************************************************************11271127+ *11461128 * LPIT - Low Power Idle Table11471129 *11481130 * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014.···13011167 ACPI_MADT_TYPE_IMSIC = 25,13021168 ACPI_MADT_TYPE_APLIC = 26,13031169 ACPI_MADT_TYPE_PLIC = 27,13041304- ACPI_MADT_TYPE_RESERVED = 28, /* 28 to 0x7F are reserved */11701170+ ACPI_MADT_TYPE_GICV5_IRS = 28,11711171+ ACPI_MADT_TYPE_GICV5_ITS = 29,11721172+ ACPI_MADT_TYPE_GICV5_ITS_TRANSLATE = 30,11731173+ ACPI_MADT_TYPE_RESERVED = 31, /* 31 to 0x7F are reserved */13051174 ACPI_MADT_TYPE_OEM_RESERVED = 0x80 /* 0x80 to 0xFF are reserved for OEM use */13061175};13071176···14261289 u8 reserved[3]; /* reserved - must be zero */14271290};1428129114291429-/* 11: Generic interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 + ACPI 6.5 changes) */12921292+/* 11: Generic interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 + ACPI 6.5 + ACPI 6.7 changes) */1430129314311294struct acpi_madt_generic_interrupt {14321295 struct acpi_subtable_header header;···14471310 u8 reserved2[1];14481311 u16 spe_interrupt; /* ACPI 6.3 */14491312 u16 trbe_interrupt; /* ACPI 6.5 */13131313+ u16 iaffid; /* ACPI 6.7 */13141314+ u32 irs_id;14501315};1451131614521317/* Masks for Flags field above */···14711332 u8 reserved2[3]; /* reserved - must be zero */14721333};1473133414741474-/* Values for Version field above */13351335+/* Values for Version field above and Version field in acpi_madt_gicv5_irs */1475133614761337enum acpi_madt_gic_version {14771338 ACPI_MADT_GIC_VERSION_NONE = 0,···14791340 ACPI_MADT_GIC_VERSION_V2 = 2,14801341 ACPI_MADT_GIC_VERSION_V3 = 3,14811342 ACPI_MADT_GIC_VERSION_V4 = 4,14821482- ACPI_MADT_GIC_VERSION_RESERVED = 5 /* 5 and greater are reserved */13431343+ ACPI_MADT_GIC_VERSION_V5 = 5,13441344+ ACPI_MADT_GIC_VERSION_RESERVED = 6 /* 6 and greater are reserved */14831345};1484134614851347/* 13: Generic MSI Frame (ACPI 5.1) */···17491609 u32 size;17501610 u64 base_addr;17511611 u32 gsi_base;16121612+};16131613+16141614+/* 28: Arm GICv5 IRS (ACPI 6.7) */16151615+struct acpi_madt_gicv5_irs {16161616+ struct acpi_subtable_header header;16171617+ u8 version;16181618+ u8 reserved;16191619+ u32 irs_id;16201620+ u32 flags;16211621+ u32 reserved2;16221622+ u64 config_base_address;16231623+ u64 setlpi_base_address;16241624+};16251625+16261626+#define ACPI_MADT_IRS_NON_COHERENT (1)16271627+16281628+/* 29: Arm GICv5 ITS Config Frame (ACPI 6.7) */16291629+struct acpi_madt_gicv5_translator {16301630+ struct acpi_subtable_header header;16311631+ u8 flags;16321632+ u8 reserved; /* reserved - must be zero */16331633+ u32 translator_id;16341634+ u64 base_address;16351635+};16361636+16371637+#define ACPI_MADT_GICV5_ITS_NON_COHERENT (1)16381638+16391639+/* 30: Arm GICv5 ITS Translate Frame (ACPI 6.7) */16401640+struct acpi_madt_gicv5_translate_frame {16411641+ struct acpi_subtable_header header;16421642+ u16 reserved; /* reserved - must be zero */16431643+ u32 linked_translator_id;16441644+ u32 translate_frame_id;16451645+ u32 reserved2;16461646+ u64 base_address;17521647};1753164817541649/* 80: OEM data */···30012826/* 1: Cache Type Structure for PPTT version 3 */3002282730032828struct acpi_pptt_cache_v1 {28292829+ struct acpi_subtable_header header;28302830+ u16 reserved;28312831+ u32 flags;28322832+ u32 next_level_of_cache;28332833+ u32 size;28342834+ u32 number_of_sets;28352835+ u8 associativity;28362836+ u8 attributes;28372837+ u16 line_size;30042838 u32 cache_id;30052839};30062840···32493065 u32 flags;32503066 u32 scrub_params_out;32513067 u32 scrub_params_in;30683068+ u32 ext_scrub_params;30693069+ u8 scrub_rate_desc[256];32523070};3253307132543072/* Masks for Flags field above */
+1
include/acpi/actbl3.h
···238238#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */239239#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */240240#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */241241+#define ACPI_SRAT_MEM_SPEC_PURPOSE (1<<3) /* 03: Memory is intended for specific-purpose usage */241242242243/* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */243244