195857638SErik Schmauss /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 2c5bd6537SBob Moore /****************************************************************************** 3c5bd6537SBob Moore * 4c5bd6537SBob Moore * Name: actbl3.h - ACPI Table Definitions 5c5bd6537SBob Moore * 6612c2932SBob Moore * Copyright (C) 2000 - 2023, Intel Corp. 7c5bd6537SBob Moore * 895857638SErik Schmauss *****************************************************************************/ 9c5bd6537SBob Moore 10c5bd6537SBob Moore #ifndef __ACTBL3_H__ 11c5bd6537SBob Moore #define __ACTBL3_H__ 12c5bd6537SBob Moore 13c5bd6537SBob Moore /******************************************************************************* 14c5bd6537SBob Moore * 15e62f8227SErik Schmauss * Additional ACPI Tables 16c5bd6537SBob Moore * 17c5bd6537SBob Moore * These tables are not consumed directly by the ACPICA subsystem, but are 18c5bd6537SBob Moore * included here to support device drivers and the AML disassembler. 19c5bd6537SBob Moore * 20c5bd6537SBob Moore ******************************************************************************/ 21c5bd6537SBob Moore 22c5bd6537SBob Moore /* 23c5bd6537SBob Moore * Values for description table header signatures for tables defined in this 24c5bd6537SBob Moore * file. Useful because they make it more difficult to inadvertently type in 25c5bd6537SBob Moore * the wrong signature. 26c5bd6537SBob Moore */ 27e62f8227SErik Schmauss #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 28e62f8227SErik Schmauss #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 29e62f8227SErik Schmauss #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 30e62f8227SErik Schmauss #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 31e62f8227SErik Schmauss #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 3237e12657SBob Moore #define ACPI_SIG_STAO "STAO" /* Status Override table */ 33e62f8227SErik Schmauss #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 34e62f8227SErik Schmauss #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ 35e62f8227SErik Schmauss #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 3658225203SJean-Philippe Brucker #define ACPI_SIG_VIOT "VIOT" /* Virtual I/O Translation Table */ 37e62f8227SErik Schmauss #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ 38e62f8227SErik Schmauss #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 39e62f8227SErik Schmauss #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ 40e62f8227SErik Schmauss #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 4168edb038SBob Moore #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 42afb90870SErik Kaneda #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Mitigations Table */ 43b6944efdSBob Moore #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ 44e62f8227SErik Schmauss #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ 45c5bd6537SBob Moore 46c5bd6537SBob Moore /* 47c5bd6537SBob Moore * All tables must be byte-packed to match the ACPI specification, since 48c5bd6537SBob Moore * the tables are provided by the system BIOS. 49c5bd6537SBob Moore */ 50c5bd6537SBob Moore #pragma pack(1) 51c5bd6537SBob Moore 52c5bd6537SBob Moore /* 53be030a57SBob Moore * Note: C bitfields are not used for this reason: 54be030a57SBob Moore * 55be030a57SBob Moore * "Bitfields are great and easy to read, but unfortunately the C language 56be030a57SBob Moore * does not specify the layout of bitfields in memory, which means they are 57be030a57SBob Moore * essentially useless for dealing with packed data in on-disk formats or 58be030a57SBob Moore * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 59be030a57SBob Moore * this decision was a design error in C. Ritchie could have picked an order 60be030a57SBob Moore * and stuck with it." Norman Ramsey. 61be030a57SBob Moore * See http://stackoverflow.com/a/1053662/41661 62c5bd6537SBob Moore */ 63c5bd6537SBob Moore 64c5bd6537SBob Moore /******************************************************************************* 65c5bd6537SBob Moore * 66e62f8227SErik Schmauss * SLIC - Software Licensing Description Table 67e62f8227SErik Schmauss * 68e62f8227SErik Schmauss * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", 69e62f8227SErik Schmauss * November 29, 2011. Copyright 2011 Microsoft 70e62f8227SErik Schmauss * 71e62f8227SErik Schmauss ******************************************************************************/ 72e62f8227SErik Schmauss 73e62f8227SErik Schmauss /* Basic SLIC table is only the common ACPI header */ 74e62f8227SErik Schmauss 75e62f8227SErik Schmauss struct acpi_table_slic { 76e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 77e62f8227SErik Schmauss }; 78e62f8227SErik Schmauss 79e62f8227SErik Schmauss /******************************************************************************* 80e62f8227SErik Schmauss * 81e62f8227SErik Schmauss * SLIT - System Locality Distance Information Table 82c5bd6537SBob Moore * Version 1 83c5bd6537SBob Moore * 84c5bd6537SBob Moore ******************************************************************************/ 85c5bd6537SBob Moore 86e62f8227SErik Schmauss struct acpi_table_slit { 87c5bd6537SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 88e62f8227SErik Schmauss u64 locality_count; 8941e7a72eSWyes Karny u8 entry[]; /* Real size = localities^2 */ 90c5bd6537SBob Moore }; 91c5bd6537SBob Moore 92c5bd6537SBob Moore /******************************************************************************* 93c5bd6537SBob Moore * 94e62f8227SErik Schmauss * SPCR - Serial Port Console Redirection table 9554ea4247STomasz Nowicki * Version 2 96c5bd6537SBob Moore * 97e62f8227SErik Schmauss * Conforms to "Serial Port Console Redirection Table", 98e62f8227SErik Schmauss * Version 1.03, August 10, 2015 99e62f8227SErik Schmauss * 100c5bd6537SBob Moore ******************************************************************************/ 101c5bd6537SBob Moore 102e62f8227SErik Schmauss struct acpi_table_spcr { 103c5bd6537SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 104e62f8227SErik Schmauss u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 10554ea4247STomasz Nowicki u8 reserved[3]; 106e62f8227SErik Schmauss struct acpi_generic_address serial_port; 107e62f8227SErik Schmauss u8 interrupt_type; 108e62f8227SErik Schmauss u8 pc_interrupt; 109e62f8227SErik Schmauss u32 interrupt; 110e62f8227SErik Schmauss u8 baud_rate; 111e62f8227SErik Schmauss u8 parity; 112e62f8227SErik Schmauss u8 stop_bits; 113e62f8227SErik Schmauss u8 flow_control; 114e62f8227SErik Schmauss u8 terminal_type; 115c5bd6537SBob Moore u8 reserved1; 116e62f8227SErik Schmauss u16 pci_device_id; 117e62f8227SErik Schmauss u16 pci_vendor_id; 118e62f8227SErik Schmauss u8 pci_bus; 119e62f8227SErik Schmauss u8 pci_device; 120e62f8227SErik Schmauss u8 pci_function; 121e62f8227SErik Schmauss u32 pci_flags; 122e62f8227SErik Schmauss u8 pci_segment; 123e62f8227SErik Schmauss u32 reserved2; 124c5bd6537SBob Moore }; 125c5bd6537SBob Moore 126e62f8227SErik Schmauss /* Masks for pci_flags field above */ 127c5bd6537SBob Moore 128e62f8227SErik Schmauss #define ACPI_SPCR_DO_NOT_DISABLE (1) 129c5bd6537SBob Moore 130e62f8227SErik Schmauss /* Values for Interface Type: See the definition of the DBG2 table */ 131c5bd6537SBob Moore 132e62f8227SErik Schmauss /******************************************************************************* 133e62f8227SErik Schmauss * 134e62f8227SErik Schmauss * SPMI - Server Platform Management Interface table 135e62f8227SErik Schmauss * Version 5 136e62f8227SErik Schmauss * 137e62f8227SErik Schmauss * Conforms to "Intelligent Platform Management Interface Specification 138e62f8227SErik Schmauss * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with 139e62f8227SErik Schmauss * June 12, 2009 markup. 140e62f8227SErik Schmauss * 141e62f8227SErik Schmauss ******************************************************************************/ 142e62f8227SErik Schmauss 143e62f8227SErik Schmauss struct acpi_table_spmi { 144e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 145e62f8227SErik Schmauss u8 interface_type; 146e62f8227SErik Schmauss u8 reserved; /* Must be 1 */ 147e62f8227SErik Schmauss u16 spec_revision; /* Version of IPMI */ 148e62f8227SErik Schmauss u8 interrupt_type; 149e62f8227SErik Schmauss u8 gpe_number; /* GPE assigned */ 150e62f8227SErik Schmauss u8 reserved1; 151e62f8227SErik Schmauss u8 pci_device_flag; 152e62f8227SErik Schmauss u32 interrupt; 153e62f8227SErik Schmauss struct acpi_generic_address ipmi_register; 154e62f8227SErik Schmauss u8 pci_segment; 155e62f8227SErik Schmauss u8 pci_bus; 156e62f8227SErik Schmauss u8 pci_device; 157e62f8227SErik Schmauss u8 pci_function; 158e62f8227SErik Schmauss u8 reserved2; 159c5bd6537SBob Moore }; 160c5bd6537SBob Moore 161e62f8227SErik Schmauss /* Values for interface_type above */ 162c5bd6537SBob Moore 163e62f8227SErik Schmauss enum acpi_spmi_interface_types { 164e62f8227SErik Schmauss ACPI_SPMI_NOT_USED = 0, 165e62f8227SErik Schmauss ACPI_SPMI_KEYBOARD = 1, 166e62f8227SErik Schmauss ACPI_SPMI_SMI = 2, 167e62f8227SErik Schmauss ACPI_SPMI_BLOCK_TRANSFER = 3, 168e62f8227SErik Schmauss ACPI_SPMI_SMBUS = 4, 169e62f8227SErik Schmauss ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ 170c5bd6537SBob Moore }; 171c5bd6537SBob Moore 172c5bd6537SBob Moore /******************************************************************************* 173c5bd6537SBob Moore * 174e62f8227SErik Schmauss * SRAT - System Resource Affinity Table 175e62f8227SErik Schmauss * Version 3 176c5bd6537SBob Moore * 177c5bd6537SBob Moore ******************************************************************************/ 178c5bd6537SBob Moore 179e62f8227SErik Schmauss struct acpi_table_srat { 180c5bd6537SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 181e62f8227SErik Schmauss u32 table_revision; /* Must be value '1' */ 182e62f8227SErik Schmauss u64 reserved; /* Reserved, must be zero */ 183c5bd6537SBob Moore }; 184c5bd6537SBob Moore 185f0d73664SBob Moore /* Values for subtable type in struct acpi_subtable_header */ 186f0d73664SBob Moore 187e62f8227SErik Schmauss enum acpi_srat_type { 188e62f8227SErik Schmauss ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 189e62f8227SErik Schmauss ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 190e62f8227SErik Schmauss ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, 191e62f8227SErik Schmauss ACPI_SRAT_TYPE_GICC_AFFINITY = 3, 192e62f8227SErik Schmauss ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */ 193aa475a59SErik Schmauss ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5, /* ACPI 6.3 */ 1948a8332f9SAlison Schofield ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */ 1958a8332f9SAlison Schofield ACPI_SRAT_TYPE_RESERVED = 7 /* 7 and greater are reserved */ 196f0d73664SBob Moore }; 197f0d73664SBob Moore 198c5bd6537SBob Moore /* 199e62f8227SErik Schmauss * SRAT Subtables, correspond to Type in struct acpi_subtable_header 200c5bd6537SBob Moore */ 201c5bd6537SBob Moore 202e62f8227SErik Schmauss /* 0: Processor Local APIC/SAPIC Affinity */ 203c5bd6537SBob Moore 204e62f8227SErik Schmauss struct acpi_srat_cpu_affinity { 205c5bd6537SBob Moore struct acpi_subtable_header header; 206e62f8227SErik Schmauss u8 proximity_domain_lo; 207e62f8227SErik Schmauss u8 apic_id; 208c7a1dfb9SDavid E. Box u32 flags; 209e62f8227SErik Schmauss u8 local_sapic_eid; 210e62f8227SErik Schmauss u8 proximity_domain_hi[3]; 211e62f8227SErik Schmauss u32 clock_domain; 212c7a1dfb9SDavid E. Box }; 213c7a1dfb9SDavid E. Box 214e62f8227SErik Schmauss /* Flags */ 215c5bd6537SBob Moore 216e62f8227SErik Schmauss #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ 217c5bd6537SBob Moore 218e62f8227SErik Schmauss /* 1: Memory Affinity */ 219c5bd6537SBob Moore 220e62f8227SErik Schmauss struct acpi_srat_mem_affinity { 221e62f8227SErik Schmauss struct acpi_subtable_header header; 222c5bd6537SBob Moore u32 proximity_domain; 223e62f8227SErik Schmauss u16 reserved; /* Reserved, must be zero */ 224e62f8227SErik Schmauss u64 base_address; 225e62f8227SErik Schmauss u64 length; 226e62f8227SErik Schmauss u32 reserved1; 227e62f8227SErik Schmauss u32 flags; 228e62f8227SErik Schmauss u64 reserved2; /* Reserved, must be zero */ 229c5bd6537SBob Moore }; 230c5bd6537SBob Moore 231e62f8227SErik Schmauss /* Flags */ 232c5bd6537SBob Moore 233e62f8227SErik Schmauss #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 234e62f8227SErik Schmauss #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 235e62f8227SErik Schmauss #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 236e62f8227SErik Schmauss 237e62f8227SErik Schmauss /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ 238e62f8227SErik Schmauss 239e62f8227SErik Schmauss struct acpi_srat_x2apic_cpu_affinity { 240e62f8227SErik Schmauss struct acpi_subtable_header header; 241e62f8227SErik Schmauss u16 reserved; /* Reserved, must be zero */ 242e62f8227SErik Schmauss u32 proximity_domain; 243e62f8227SErik Schmauss u32 apic_id; 244e62f8227SErik Schmauss u32 flags; 245e62f8227SErik Schmauss u32 clock_domain; 246e62f8227SErik Schmauss u32 reserved2; 247e62f8227SErik Schmauss }; 248e62f8227SErik Schmauss 249e62f8227SErik Schmauss /* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */ 250e62f8227SErik Schmauss 251e62f8227SErik Schmauss #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 252e62f8227SErik Schmauss 253e62f8227SErik Schmauss /* 3: GICC Affinity (ACPI 5.1) */ 254e62f8227SErik Schmauss 255e62f8227SErik Schmauss struct acpi_srat_gicc_affinity { 256e62f8227SErik Schmauss struct acpi_subtable_header header; 257e62f8227SErik Schmauss u32 proximity_domain; 258e62f8227SErik Schmauss u32 acpi_processor_uid; 259e62f8227SErik Schmauss u32 flags; 260e62f8227SErik Schmauss u32 clock_domain; 261e62f8227SErik Schmauss }; 262e62f8227SErik Schmauss 263e62f8227SErik Schmauss /* Flags for struct acpi_srat_gicc_affinity */ 264e62f8227SErik Schmauss 265e62f8227SErik Schmauss #define ACPI_SRAT_GICC_ENABLED (1) /* 00: Use affinity structure */ 266e62f8227SErik Schmauss 267e62f8227SErik Schmauss /* 4: GCC ITS Affinity (ACPI 6.2) */ 268e62f8227SErik Schmauss 269e62f8227SErik Schmauss struct acpi_srat_gic_its_affinity { 270e62f8227SErik Schmauss struct acpi_subtable_header header; 271e62f8227SErik Schmauss u32 proximity_domain; 272c5bd6537SBob Moore u16 reserved; 273e62f8227SErik Schmauss u32 its_id; 274c5bd6537SBob Moore }; 275c5bd6537SBob Moore 2768a8332f9SAlison Schofield /* 2778a8332f9SAlison Schofield * Common structure for SRAT subtable types: 2788a8332f9SAlison Schofield * 5: ACPI_SRAT_TYPE_GENERIC_AFFINITY 2798a8332f9SAlison Schofield * 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY 2808a8332f9SAlison Schofield */ 281aa475a59SErik Schmauss 282*25eea707SDave Jiang #define ACPI_SRAT_DEVICE_HANDLE_SIZE 16 283*25eea707SDave Jiang 284aa475a59SErik Schmauss struct acpi_srat_generic_affinity { 285aa475a59SErik Schmauss struct acpi_subtable_header header; 286aa475a59SErik Schmauss u8 reserved; 287aa475a59SErik Schmauss u8 device_handle_type; 288aa475a59SErik Schmauss u32 proximity_domain; 289*25eea707SDave Jiang u8 device_handle[ACPI_SRAT_DEVICE_HANDLE_SIZE]; 290aa475a59SErik Schmauss u32 flags; 291aa475a59SErik Schmauss u32 reserved1; 292aa475a59SErik Schmauss }; 293aa475a59SErik Schmauss 294aa475a59SErik Schmauss /* Flags for struct acpi_srat_generic_affinity */ 295aa475a59SErik Schmauss 296aa475a59SErik Schmauss #define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */ 2972dab2b68SBob Moore #define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS (1<<1) /* ACPI 6.4 */ 298aa475a59SErik Schmauss 299c5bd6537SBob Moore /******************************************************************************* 300c5bd6537SBob Moore * 30137e12657SBob Moore * STAO - Status Override Table (_STA override) - ACPI 6.0 30237e12657SBob Moore * Version 1 30337e12657SBob Moore * 30437e12657SBob Moore * Conforms to "ACPI Specification for Status Override Table" 30537e12657SBob Moore * 6 January 2015 30637e12657SBob Moore * 30737e12657SBob Moore ******************************************************************************/ 30837e12657SBob Moore 30937e12657SBob Moore struct acpi_table_stao { 31037e12657SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 31137e12657SBob Moore u8 ignore_uart; 31237e12657SBob Moore }; 31337e12657SBob Moore 31437e12657SBob Moore /******************************************************************************* 31537e12657SBob Moore * 316e62f8227SErik Schmauss * TCPA - Trusted Computing Platform Alliance table 317e62f8227SErik Schmauss * Version 2 318e62f8227SErik Schmauss * 319e62f8227SErik Schmauss * TCG Hardware Interface Table for TPM 1.2 Clients and Servers 320e62f8227SErik Schmauss * 321e62f8227SErik Schmauss * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 322e62f8227SErik Schmauss * Version 1.2, Revision 8 323e62f8227SErik Schmauss * February 27, 2017 324e62f8227SErik Schmauss * 325e62f8227SErik Schmauss * NOTE: There are two versions of the table with the same signature -- 326e62f8227SErik Schmauss * the client version and the server version. The common platform_class 327e62f8227SErik Schmauss * field is used to differentiate the two types of tables. 328e62f8227SErik Schmauss * 329e62f8227SErik Schmauss ******************************************************************************/ 330e62f8227SErik Schmauss 331e62f8227SErik Schmauss struct acpi_table_tcpa_hdr { 332e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 333e62f8227SErik Schmauss u16 platform_class; 334e62f8227SErik Schmauss }; 335e62f8227SErik Schmauss 336e62f8227SErik Schmauss /* 337e62f8227SErik Schmauss * Values for platform_class above. 338e62f8227SErik Schmauss * This is how the client and server subtables are differentiated 339e62f8227SErik Schmauss */ 340e62f8227SErik Schmauss #define ACPI_TCPA_CLIENT_TABLE 0 341e62f8227SErik Schmauss #define ACPI_TCPA_SERVER_TABLE 1 342e62f8227SErik Schmauss 343e62f8227SErik Schmauss struct acpi_table_tcpa_client { 344e62f8227SErik Schmauss u32 minimum_log_length; /* Minimum length for the event log area */ 345e62f8227SErik Schmauss u64 log_address; /* Address of the event log area */ 346e62f8227SErik Schmauss }; 347e62f8227SErik Schmauss 348e62f8227SErik Schmauss struct acpi_table_tcpa_server { 349e62f8227SErik Schmauss u16 reserved; 350e62f8227SErik Schmauss u64 minimum_log_length; /* Minimum length for the event log area */ 351e62f8227SErik Schmauss u64 log_address; /* Address of the event log area */ 352e62f8227SErik Schmauss u16 spec_revision; 353e62f8227SErik Schmauss u8 device_flags; 354e62f8227SErik Schmauss u8 interrupt_flags; 355e62f8227SErik Schmauss u8 gpe_number; 356e62f8227SErik Schmauss u8 reserved2[3]; 357e62f8227SErik Schmauss u32 global_interrupt; 358e62f8227SErik Schmauss struct acpi_generic_address address; 359e62f8227SErik Schmauss u32 reserved3; 360e62f8227SErik Schmauss struct acpi_generic_address config_address; 361e62f8227SErik Schmauss u8 group; 362e62f8227SErik Schmauss u8 bus; /* PCI Bus/Segment/Function numbers */ 363e62f8227SErik Schmauss u8 device; 364e62f8227SErik Schmauss u8 function; 365e62f8227SErik Schmauss }; 366e62f8227SErik Schmauss 367e62f8227SErik Schmauss /* Values for device_flags above */ 368e62f8227SErik Schmauss 369e62f8227SErik Schmauss #define ACPI_TCPA_PCI_DEVICE (1) 370e62f8227SErik Schmauss #define ACPI_TCPA_BUS_PNP (1<<1) 371e62f8227SErik Schmauss #define ACPI_TCPA_ADDRESS_VALID (1<<2) 372e62f8227SErik Schmauss 373e62f8227SErik Schmauss /* Values for interrupt_flags above */ 374e62f8227SErik Schmauss 375e62f8227SErik Schmauss #define ACPI_TCPA_INTERRUPT_MODE (1) 376e62f8227SErik Schmauss #define ACPI_TCPA_INTERRUPT_POLARITY (1<<1) 377e62f8227SErik Schmauss #define ACPI_TCPA_SCI_VIA_GPE (1<<2) 378e62f8227SErik Schmauss #define ACPI_TCPA_GLOBAL_INTERRUPT (1<<3) 379e62f8227SErik Schmauss 380e62f8227SErik Schmauss /******************************************************************************* 381e62f8227SErik Schmauss * 382e62f8227SErik Schmauss * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table 383e62f8227SErik Schmauss * Version 4 384e62f8227SErik Schmauss * 385e62f8227SErik Schmauss * TCG Hardware Interface Table for TPM 2.0 Clients and Servers 386e62f8227SErik Schmauss * 387e62f8227SErik Schmauss * Conforms to "TCG ACPI Specification, Family 1.2 and 2.0", 388e62f8227SErik Schmauss * Version 1.2, Revision 8 389e62f8227SErik Schmauss * February 27, 2017 390e62f8227SErik Schmauss * 391e62f8227SErik Schmauss ******************************************************************************/ 392e62f8227SErik Schmauss 393c159597cSErik Schmauss /* Revision 3 */ 394c159597cSErik Schmauss 395c159597cSErik Schmauss struct acpi_table_tpm23 { 396c159597cSErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 397c159597cSErik Schmauss u32 reserved; 398c159597cSErik Schmauss u64 control_address; 399c159597cSErik Schmauss u32 start_method; 400c159597cSErik Schmauss }; 401c159597cSErik Schmauss 402c159597cSErik Schmauss /* Value for start_method above */ 403c159597cSErik Schmauss 404c159597cSErik Schmauss #define ACPI_TPM23_ACPI_START_METHOD 2 405c159597cSErik Schmauss 406c159597cSErik Schmauss /* 407c159597cSErik Schmauss * Optional trailer for revision 3. If start method is 2, there is a 4 byte 408c159597cSErik Schmauss * reserved area of all zeros. 409c159597cSErik Schmauss */ 410c159597cSErik Schmauss struct acpi_tmp23_trailer { 411c159597cSErik Schmauss u32 reserved; 412c159597cSErik Schmauss }; 413c159597cSErik Schmauss 414c159597cSErik Schmauss /* Revision 4 */ 415c159597cSErik Schmauss 416e62f8227SErik Schmauss struct acpi_table_tpm2 { 417e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 418e62f8227SErik Schmauss u16 platform_class; 419e62f8227SErik Schmauss u16 reserved; 420e62f8227SErik Schmauss u64 control_address; 421e62f8227SErik Schmauss u32 start_method; 422e62f8227SErik Schmauss 423e62f8227SErik Schmauss /* Platform-specific data follows */ 424e62f8227SErik Schmauss }; 425e62f8227SErik Schmauss 42618306111SStefan Berger /* Optional trailer for revision 4 holding platform-specific data */ 42718306111SStefan Berger struct acpi_tpm2_phy { 42818306111SStefan Berger u8 start_method_specific[12]; 42918306111SStefan Berger u32 log_area_minimum_length; 43018306111SStefan Berger u64 log_area_start_address; 43118306111SStefan Berger }; 43218306111SStefan Berger 433e62f8227SErik Schmauss /* Values for start_method above */ 434e62f8227SErik Schmauss 435e62f8227SErik Schmauss #define ACPI_TPM2_NOT_ALLOWED 0 436e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED1 1 437e62f8227SErik Schmauss #define ACPI_TPM2_START_METHOD 2 438e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED3 3 439e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED4 4 440e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED5 5 441e62f8227SErik Schmauss #define ACPI_TPM2_MEMORY_MAPPED 6 442e62f8227SErik Schmauss #define ACPI_TPM2_COMMAND_BUFFER 7 443e62f8227SErik Schmauss #define ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD 8 444e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED9 9 445e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED10 10 446e62f8227SErik Schmauss #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC 11 /* V1.2 Rev 8 */ 447e62f8227SErik Schmauss #define ACPI_TPM2_RESERVED 12 4484d273288SMatthew Garrett #define ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON 13 449e62f8227SErik Schmauss 450e62f8227SErik Schmauss /* Optional trailer appears after any start_method subtables */ 451e62f8227SErik Schmauss 452e62f8227SErik Schmauss struct acpi_tpm2_trailer { 453e62f8227SErik Schmauss u8 method_parameters[12]; 454e62f8227SErik Schmauss u32 minimum_log_length; /* Minimum length for the event log area */ 455e62f8227SErik Schmauss u64 log_address; /* Address of the event log area */ 456e62f8227SErik Schmauss }; 457e62f8227SErik Schmauss 458e62f8227SErik Schmauss /* 459e62f8227SErik Schmauss * Subtables (start_method-specific) 460e62f8227SErik Schmauss */ 461e62f8227SErik Schmauss 462e62f8227SErik Schmauss /* 11: Start Method for ARM SMC (V1.2 Rev 8) */ 463e62f8227SErik Schmauss 464e62f8227SErik Schmauss struct acpi_tpm2_arm_smc { 465e62f8227SErik Schmauss u32 global_interrupt; 466e62f8227SErik Schmauss u8 interrupt_flags; 467e62f8227SErik Schmauss u8 operation_flags; 468e62f8227SErik Schmauss u16 reserved; 469e62f8227SErik Schmauss u32 function_id; 470e62f8227SErik Schmauss }; 471e62f8227SErik Schmauss 472e62f8227SErik Schmauss /* Values for interrupt_flags above */ 473e62f8227SErik Schmauss 474e62f8227SErik Schmauss #define ACPI_TPM2_INTERRUPT_SUPPORT (1) 475e62f8227SErik Schmauss 476e62f8227SErik Schmauss /* Values for operation_flags above */ 477e62f8227SErik Schmauss 478e62f8227SErik Schmauss #define ACPI_TPM2_IDLE_SUPPORT (1) 479e62f8227SErik Schmauss 480e62f8227SErik Schmauss /******************************************************************************* 481e62f8227SErik Schmauss * 482e62f8227SErik Schmauss * UEFI - UEFI Boot optimization Table 483e62f8227SErik Schmauss * Version 1 484e62f8227SErik Schmauss * 485e62f8227SErik Schmauss * Conforms to "Unified Extensible Firmware Interface Specification", 486e62f8227SErik Schmauss * Version 2.3, May 8, 2009 487e62f8227SErik Schmauss * 488e62f8227SErik Schmauss ******************************************************************************/ 489e62f8227SErik Schmauss 490e62f8227SErik Schmauss struct acpi_table_uefi { 491e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 492e62f8227SErik Schmauss u8 identifier[16]; /* UUID identifier */ 493e62f8227SErik Schmauss u16 data_offset; /* Offset of remaining data in table */ 494e62f8227SErik Schmauss }; 495e62f8227SErik Schmauss 496e62f8227SErik Schmauss /******************************************************************************* 497e62f8227SErik Schmauss * 49858225203SJean-Philippe Brucker * VIOT - Virtual I/O Translation Table 49958225203SJean-Philippe Brucker * Version 1 50058225203SJean-Philippe Brucker * 50158225203SJean-Philippe Brucker ******************************************************************************/ 50258225203SJean-Philippe Brucker 50358225203SJean-Philippe Brucker struct acpi_table_viot { 50458225203SJean-Philippe Brucker struct acpi_table_header header; /* Common ACPI table header */ 50558225203SJean-Philippe Brucker u16 node_count; 50658225203SJean-Philippe Brucker u16 node_offset; 50758225203SJean-Philippe Brucker u8 reserved[8]; 50858225203SJean-Philippe Brucker }; 50958225203SJean-Philippe Brucker 51058225203SJean-Philippe Brucker /* VIOT subtable header */ 51158225203SJean-Philippe Brucker 51258225203SJean-Philippe Brucker struct acpi_viot_header { 51358225203SJean-Philippe Brucker u8 type; 51458225203SJean-Philippe Brucker u8 reserved; 51558225203SJean-Philippe Brucker u16 length; 51658225203SJean-Philippe Brucker }; 51758225203SJean-Philippe Brucker 51858225203SJean-Philippe Brucker /* Values for Type field above */ 51958225203SJean-Philippe Brucker 52058225203SJean-Philippe Brucker enum acpi_viot_node_type { 52158225203SJean-Philippe Brucker ACPI_VIOT_NODE_PCI_RANGE = 0x01, 52258225203SJean-Philippe Brucker ACPI_VIOT_NODE_MMIO = 0x02, 52358225203SJean-Philippe Brucker ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI = 0x03, 52458225203SJean-Philippe Brucker ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO = 0x04, 525f73b8619SBob Moore ACPI_VIOT_RESERVED = 0x05 52658225203SJean-Philippe Brucker }; 52758225203SJean-Philippe Brucker 52858225203SJean-Philippe Brucker /* VIOT subtables */ 52958225203SJean-Philippe Brucker 53058225203SJean-Philippe Brucker struct acpi_viot_pci_range { 531e563f6fcSJean-Philippe Brucker struct acpi_viot_header header; 53258225203SJean-Philippe Brucker u32 endpoint_start; 53358225203SJean-Philippe Brucker u16 segment_start; 53458225203SJean-Philippe Brucker u16 segment_end; 53558225203SJean-Philippe Brucker u16 bdf_start; 53658225203SJean-Philippe Brucker u16 bdf_end; 53758225203SJean-Philippe Brucker u16 output_node; 53858225203SJean-Philippe Brucker u8 reserved[6]; 53958225203SJean-Philippe Brucker }; 54058225203SJean-Philippe Brucker 54158225203SJean-Philippe Brucker struct acpi_viot_mmio { 542e563f6fcSJean-Philippe Brucker struct acpi_viot_header header; 54358225203SJean-Philippe Brucker u32 endpoint; 54458225203SJean-Philippe Brucker u64 base_address; 54558225203SJean-Philippe Brucker u16 output_node; 54658225203SJean-Philippe Brucker u8 reserved[6]; 54758225203SJean-Philippe Brucker }; 54858225203SJean-Philippe Brucker 54958225203SJean-Philippe Brucker struct acpi_viot_virtio_iommu_pci { 550e563f6fcSJean-Philippe Brucker struct acpi_viot_header header; 55158225203SJean-Philippe Brucker u16 segment; 55258225203SJean-Philippe Brucker u16 bdf; 55358225203SJean-Philippe Brucker u8 reserved[8]; 55458225203SJean-Philippe Brucker }; 55558225203SJean-Philippe Brucker 55658225203SJean-Philippe Brucker struct acpi_viot_virtio_iommu_mmio { 557e563f6fcSJean-Philippe Brucker struct acpi_viot_header header; 55858225203SJean-Philippe Brucker u8 reserved[4]; 55958225203SJean-Philippe Brucker u64 base_address; 56058225203SJean-Philippe Brucker }; 56158225203SJean-Philippe Brucker 56258225203SJean-Philippe Brucker /******************************************************************************* 56358225203SJean-Philippe Brucker * 564e62f8227SErik Schmauss * WAET - Windows ACPI Emulated devices Table 565e62f8227SErik Schmauss * Version 1 566e62f8227SErik Schmauss * 567e62f8227SErik Schmauss * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 568e62f8227SErik Schmauss * 569e62f8227SErik Schmauss ******************************************************************************/ 570e62f8227SErik Schmauss 571e62f8227SErik Schmauss struct acpi_table_waet { 572e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 573e62f8227SErik Schmauss u32 flags; 574e62f8227SErik Schmauss }; 575e62f8227SErik Schmauss 576e62f8227SErik Schmauss /* Masks for Flags field above */ 577e62f8227SErik Schmauss 578e62f8227SErik Schmauss #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ 579e62f8227SErik Schmauss #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ 580e62f8227SErik Schmauss 581e62f8227SErik Schmauss /******************************************************************************* 582e62f8227SErik Schmauss * 583e62f8227SErik Schmauss * WDAT - Watchdog Action Table 584e62f8227SErik Schmauss * Version 1 585e62f8227SErik Schmauss * 586e62f8227SErik Schmauss * Conforms to "Hardware Watchdog Timers Design Specification", 587e62f8227SErik Schmauss * Copyright 2006 Microsoft Corporation. 588e62f8227SErik Schmauss * 589e62f8227SErik Schmauss ******************************************************************************/ 590e62f8227SErik Schmauss 591e62f8227SErik Schmauss struct acpi_table_wdat { 592e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 593e62f8227SErik Schmauss u32 header_length; /* Watchdog Header Length */ 594e62f8227SErik Schmauss u16 pci_segment; /* PCI Segment number */ 595e62f8227SErik Schmauss u8 pci_bus; /* PCI Bus number */ 596e62f8227SErik Schmauss u8 pci_device; /* PCI Device number */ 597e62f8227SErik Schmauss u8 pci_function; /* PCI Function number */ 598e62f8227SErik Schmauss u8 reserved[3]; 599e62f8227SErik Schmauss u32 timer_period; /* Period of one timer count (msec) */ 600e62f8227SErik Schmauss u32 max_count; /* Maximum counter value supported */ 601e62f8227SErik Schmauss u32 min_count; /* Minimum counter value */ 602e62f8227SErik Schmauss u8 flags; 603e62f8227SErik Schmauss u8 reserved2[3]; 604e62f8227SErik Schmauss u32 entries; /* Number of watchdog entries that follow */ 605e62f8227SErik Schmauss }; 606e62f8227SErik Schmauss 607e62f8227SErik Schmauss /* Masks for Flags field above */ 608e62f8227SErik Schmauss 609e62f8227SErik Schmauss #define ACPI_WDAT_ENABLED (1) 610e62f8227SErik Schmauss #define ACPI_WDAT_STOPPED 0x80 611e62f8227SErik Schmauss 612e62f8227SErik Schmauss /* WDAT Instruction Entries (actions) */ 613e62f8227SErik Schmauss 614e62f8227SErik Schmauss struct acpi_wdat_entry { 615e62f8227SErik Schmauss u8 action; 616e62f8227SErik Schmauss u8 instruction; 617e62f8227SErik Schmauss u16 reserved; 618e62f8227SErik Schmauss struct acpi_generic_address register_region; 619e62f8227SErik Schmauss u32 value; /* Value used with Read/Write register */ 620e62f8227SErik Schmauss u32 mask; /* Bitmask required for this register instruction */ 621e62f8227SErik Schmauss }; 622e62f8227SErik Schmauss 623e62f8227SErik Schmauss /* Values for Action field above */ 624e62f8227SErik Schmauss 625e62f8227SErik Schmauss enum acpi_wdat_actions { 626e62f8227SErik Schmauss ACPI_WDAT_RESET = 1, 627e62f8227SErik Schmauss ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 628e62f8227SErik Schmauss ACPI_WDAT_GET_COUNTDOWN = 5, 629e62f8227SErik Schmauss ACPI_WDAT_SET_COUNTDOWN = 6, 630e62f8227SErik Schmauss ACPI_WDAT_GET_RUNNING_STATE = 8, 631e62f8227SErik Schmauss ACPI_WDAT_SET_RUNNING_STATE = 9, 632e62f8227SErik Schmauss ACPI_WDAT_GET_STOPPED_STATE = 10, 633e62f8227SErik Schmauss ACPI_WDAT_SET_STOPPED_STATE = 11, 634e62f8227SErik Schmauss ACPI_WDAT_GET_REBOOT = 16, 635e62f8227SErik Schmauss ACPI_WDAT_SET_REBOOT = 17, 636e62f8227SErik Schmauss ACPI_WDAT_GET_SHUTDOWN = 18, 637e62f8227SErik Schmauss ACPI_WDAT_SET_SHUTDOWN = 19, 638e62f8227SErik Schmauss ACPI_WDAT_GET_STATUS = 32, 639e62f8227SErik Schmauss ACPI_WDAT_SET_STATUS = 33, 640e62f8227SErik Schmauss ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 641e62f8227SErik Schmauss }; 642e62f8227SErik Schmauss 643e62f8227SErik Schmauss /* Values for Instruction field above */ 644e62f8227SErik Schmauss 645e62f8227SErik Schmauss enum acpi_wdat_instructions { 646e62f8227SErik Schmauss ACPI_WDAT_READ_VALUE = 0, 647e62f8227SErik Schmauss ACPI_WDAT_READ_COUNTDOWN = 1, 648e62f8227SErik Schmauss ACPI_WDAT_WRITE_VALUE = 2, 649e62f8227SErik Schmauss ACPI_WDAT_WRITE_COUNTDOWN = 3, 650e62f8227SErik Schmauss ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 651e62f8227SErik Schmauss ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 652e62f8227SErik Schmauss }; 653e62f8227SErik Schmauss 654e62f8227SErik Schmauss /******************************************************************************* 655e62f8227SErik Schmauss * 656e62f8227SErik Schmauss * WDDT - Watchdog Descriptor Table 657e62f8227SErik Schmauss * Version 1 658e62f8227SErik Schmauss * 659e62f8227SErik Schmauss * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", 660e62f8227SErik Schmauss * Version 001, September 2002 661e62f8227SErik Schmauss * 662e62f8227SErik Schmauss ******************************************************************************/ 663e62f8227SErik Schmauss 664e62f8227SErik Schmauss struct acpi_table_wddt { 665e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 666e62f8227SErik Schmauss u16 spec_version; 667e62f8227SErik Schmauss u16 table_version; 668e62f8227SErik Schmauss u16 pci_vendor_id; 669e62f8227SErik Schmauss struct acpi_generic_address address; 670e62f8227SErik Schmauss u16 max_count; /* Maximum counter value supported */ 671e62f8227SErik Schmauss u16 min_count; /* Minimum counter value supported */ 672e62f8227SErik Schmauss u16 period; 673e62f8227SErik Schmauss u16 status; 674e62f8227SErik Schmauss u16 capability; 675e62f8227SErik Schmauss }; 676e62f8227SErik Schmauss 677e62f8227SErik Schmauss /* Flags for Status field above */ 678e62f8227SErik Schmauss 679e62f8227SErik Schmauss #define ACPI_WDDT_AVAILABLE (1) 680e62f8227SErik Schmauss #define ACPI_WDDT_ACTIVE (1<<1) 681e62f8227SErik Schmauss #define ACPI_WDDT_TCO_OS_OWNED (1<<2) 682e62f8227SErik Schmauss #define ACPI_WDDT_USER_RESET (1<<11) 683e62f8227SErik Schmauss #define ACPI_WDDT_WDT_RESET (1<<12) 684e62f8227SErik Schmauss #define ACPI_WDDT_POWER_FAIL (1<<13) 685e62f8227SErik Schmauss #define ACPI_WDDT_UNKNOWN_RESET (1<<14) 686e62f8227SErik Schmauss 687e62f8227SErik Schmauss /* Flags for Capability field above */ 688e62f8227SErik Schmauss 689e62f8227SErik Schmauss #define ACPI_WDDT_AUTO_RESET (1) 690e62f8227SErik Schmauss #define ACPI_WDDT_ALERT_SUPPORT (1<<1) 691e62f8227SErik Schmauss 692e62f8227SErik Schmauss /******************************************************************************* 693e62f8227SErik Schmauss * 694e62f8227SErik Schmauss * WDRT - Watchdog Resource Table 695e62f8227SErik Schmauss * Version 1 696e62f8227SErik Schmauss * 697e62f8227SErik Schmauss * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", 698e62f8227SErik Schmauss * Version 1.01, August 28, 2006 699e62f8227SErik Schmauss * 700e62f8227SErik Schmauss ******************************************************************************/ 701e62f8227SErik Schmauss 702e62f8227SErik Schmauss struct acpi_table_wdrt { 703e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 704e62f8227SErik Schmauss struct acpi_generic_address control_register; 705e62f8227SErik Schmauss struct acpi_generic_address count_register; 706e62f8227SErik Schmauss u16 pci_device_id; 707e62f8227SErik Schmauss u16 pci_vendor_id; 708e62f8227SErik Schmauss u8 pci_bus; /* PCI Bus number */ 709e62f8227SErik Schmauss u8 pci_device; /* PCI Device number */ 710e62f8227SErik Schmauss u8 pci_function; /* PCI Function number */ 711e62f8227SErik Schmauss u8 pci_segment; /* PCI Segment number */ 712e62f8227SErik Schmauss u16 max_count; /* Maximum counter value supported */ 713e62f8227SErik Schmauss u8 units; 714e62f8227SErik Schmauss }; 715e62f8227SErik Schmauss 716e62f8227SErik Schmauss /******************************************************************************* 717e62f8227SErik Schmauss * 71868edb038SBob Moore * WPBT - Windows Platform Environment Table (ACPI 6.0) 71968edb038SBob Moore * Version 1 72068edb038SBob Moore * 72168edb038SBob Moore * Conforms to "Windows Platform Binary Table (WPBT)" 29 November 2011 72268edb038SBob Moore * 72368edb038SBob Moore ******************************************************************************/ 72468edb038SBob Moore 72568edb038SBob Moore struct acpi_table_wpbt { 72668edb038SBob Moore struct acpi_table_header header; /* Common ACPI table header */ 72768edb038SBob Moore u32 handoff_size; 72868edb038SBob Moore u64 handoff_address; 72968edb038SBob Moore u8 layout; 73068edb038SBob Moore u8 type; 73168edb038SBob Moore u16 arguments_length; 73268edb038SBob Moore }; 73368edb038SBob Moore 73487b8ec58SBob Moore struct acpi_wpbt_unicode { 73587b8ec58SBob Moore u16 *unicode_string; 73687b8ec58SBob Moore }; 73787b8ec58SBob Moore 73868edb038SBob Moore /******************************************************************************* 73968edb038SBob Moore * 740afb90870SErik Kaneda * WSMT - Windows SMM Security Mitigations Table 741e62f8227SErik Schmauss * Version 1 742e62f8227SErik Schmauss * 743afb90870SErik Kaneda * Conforms to "Windows SMM Security Mitigations Table", 744e62f8227SErik Schmauss * Version 1.0, April 18, 2016 745e62f8227SErik Schmauss * 746e62f8227SErik Schmauss ******************************************************************************/ 747e62f8227SErik Schmauss 748e62f8227SErik Schmauss struct acpi_table_wsmt { 749e62f8227SErik Schmauss struct acpi_table_header header; /* Common ACPI table header */ 750e62f8227SErik Schmauss u32 protection_flags; 751e62f8227SErik Schmauss }; 752e62f8227SErik Schmauss 753e62f8227SErik Schmauss /* Flags for protection_flags field above */ 754e62f8227SErik Schmauss 755e62f8227SErik Schmauss #define ACPI_WSMT_FIXED_COMM_BUFFERS (1) 756e62f8227SErik Schmauss #define ACPI_WSMT_COMM_BUFFER_NESTED_PTR_PROTECTION (2) 757e62f8227SErik Schmauss #define ACPI_WSMT_SYSTEM_RESOURCE_PROTECTION (4) 758e62f8227SErik Schmauss 759e62f8227SErik Schmauss /******************************************************************************* 760e62f8227SErik Schmauss * 761b6944efdSBob Moore * XENV - Xen Environment Table (ACPI 6.0) 762b6944efdSBob Moore * Version 1 763b6944efdSBob Moore * 764b6944efdSBob Moore * Conforms to "ACPI Specification for Xen Environment Table" 4 January 2015 765b6944efdSBob Moore * 766b6944efdSBob Moore ******************************************************************************/ 767b6944efdSBob Moore 768b6944efdSBob Moore struct acpi_table_xenv { 769b6944efdSBob Moore struct acpi_table_header header; /* Common ACPI table header */ 770b6944efdSBob Moore u64 grant_table_address; 771b6944efdSBob Moore u64 grant_table_size; 772b6944efdSBob Moore u32 event_interrupt; 773b6944efdSBob Moore u8 event_flags; 774b6944efdSBob Moore }; 775b6944efdSBob Moore 7766e596084SRobert Moore /* Reset to default packing */ 7776e596084SRobert Moore 7786e596084SRobert Moore #pragma pack() 779c5bd6537SBob Moore 780c5bd6537SBob Moore #endif /* __ACTBL3_H__ */ 781