/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ /****************************************************************************** * * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) * * Copyright (C) 2000 - 2023, Intel Corp. * *****************************************************************************/ #ifndef __ACTBL2_H__ #define __ACTBL2_H__ /******************************************************************************* * * Additional ACPI Tables (2) * * These tables are not consumed directly by the ACPICA subsystem, but are * included here to support device drivers and the AML disassembler. * ******************************************************************************/ /* * Values for description table header signatures for tables defined in this * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */ #define ACPI_SIG_AGDI … #define ACPI_SIG_APMT … #define ACPI_SIG_BDAT … #define ACPI_SIG_CCEL … #define ACPI_SIG_CDAT … #define ACPI_SIG_IORT … #define ACPI_SIG_IVRS … #define ACPI_SIG_LPIT … #define ACPI_SIG_MADT … #define ACPI_SIG_MCFG … #define ACPI_SIG_MCHI … #define ACPI_SIG_MPAM … #define ACPI_SIG_MPST … #define ACPI_SIG_MSDM … #define ACPI_SIG_NFIT … #define ACPI_SIG_NHLT … #define ACPI_SIG_PCCT … #define ACPI_SIG_PDTT … #define ACPI_SIG_PHAT … #define ACPI_SIG_PMTT … #define ACPI_SIG_PPTT … #define ACPI_SIG_PRMT … #define ACPI_SIG_RASF … #define ACPI_SIG_RAS2 … #define ACPI_SIG_RGRT … #define ACPI_SIG_RHCT … #define ACPI_SIG_SBST … #define ACPI_SIG_SDEI … #define ACPI_SIG_SDEV … #define ACPI_SIG_SVKL … #define ACPI_SIG_TDEL … /* * All tables must be byte-packed to match the ACPI specification, since * the tables are provided by the system BIOS. */ #pragma pack(1) /* * Note: C bitfields are not used for this reason: * * "Bitfields are great and easy to read, but unfortunately the C language * does not specify the layout of bitfields in memory, which means they are * essentially useless for dealing with packed data in on-disk formats or * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, * this decision was a design error in C. Ritchie could have picked an order * and stuck with it." Norman Ramsey. * See http://stackoverflow.com/a/1053662/41661 */ /******************************************************************************* * * AEST - Arm Error Source Table * * Conforms to: ACPI for the Armv8 RAS Extensions 1.1(Sep 2020) and * 2.0(May 2023) Platform Design Document. * ******************************************************************************/ struct acpi_table_aest { … }; /* Common Subtable header - one per Node Structure (Subtable) */ struct acpi_aest_hdr { … }; /* Values for Type above */ #define ACPI_AEST_PROCESSOR_ERROR_NODE … #define ACPI_AEST_MEMORY_ERROR_NODE … #define ACPI_AEST_SMMU_ERROR_NODE … #define ACPI_AEST_VENDOR_ERROR_NODE … #define ACPI_AEST_GIC_ERROR_NODE … #define ACPI_AEST_PCIE_ERROR_NODE … #define ACPI_AEST_PROXY_ERROR_NODE … #define ACPI_AEST_NODE_TYPE_RESERVED … /* * AEST subtables (Error nodes) */ /* 0: Processor Error */ acpi_aest_processor; /* Values for resource_type above, related structs below */ #define ACPI_AEST_CACHE_RESOURCE … #define ACPI_AEST_TLB_RESOURCE … #define ACPI_AEST_GENERIC_RESOURCE … #define ACPI_AEST_RESOURCE_RESERVED … /* 0R: Processor Cache Resource Substructure */ acpi_aest_processor_cache; /* Values for cache_type above */ #define ACPI_AEST_CACHE_DATA … #define ACPI_AEST_CACHE_INSTRUCTION … #define ACPI_AEST_CACHE_UNIFIED … #define ACPI_AEST_CACHE_RESERVED … /* 1R: Processor TLB Resource Substructure */ acpi_aest_processor_tlb; /* 2R: Processor Generic Resource Substructure */ acpi_aest_processor_generic; /* 1: Memory Error */ acpi_aest_memory; /* 2: Smmu Error */ acpi_aest_smmu; /* 3: Vendor Defined */ acpi_aest_vendor; struct acpi_aest_vendor_v2 { … }; /* 4: Gic Error */ acpi_aest_gic; /* Values for interface_type above */ #define ACPI_AEST_GIC_CPU … #define ACPI_AEST_GIC_DISTRIBUTOR … #define ACPI_AEST_GIC_REDISTRIBUTOR … #define ACPI_AEST_GIC_ITS … #define ACPI_AEST_GIC_RESERVED … /* 5: PCIe Error */ struct acpi_aest_pcie { … }; /* 6: Proxy Error */ struct acpi_aest_proxy { … }; /* Node Interface Structure */ acpi_aest_node_interface; /* Node Interface Structure V2 */ struct acpi_aest_node_interface_header { … }; #define ACPI_AEST_NODE_GROUP_FORMAT_4K … #define ACPI_AEST_NODE_GROUP_FORMAT_16K … #define ACPI_AEST_NODE_GROUP_FORMAT_64K … struct acpi_aest_node_interface_common { … }; struct acpi_aest_node_interface_4k { … }; struct acpi_aest_node_interface_16k { … }; struct acpi_aest_node_interface_64k { … }; /* Values for Type field above */ #define ACPI_AEST_NODE_SYSTEM_REGISTER … #define ACPI_AEST_NODE_MEMORY_MAPPED … #define ACPI_AEST_NODE_SINGLE_RECORD_MEMORY_MAPPED … #define ACPI_AEST_XFACE_RESERVED … /* Node Interrupt Structure */ acpi_aest_node_interrupt; /* Node Interrupt Structure V2 */ struct acpi_aest_node_interrupt_v2 { … }; /* Values for Type field above */ #define ACPI_AEST_NODE_FAULT_HANDLING … #define ACPI_AEST_NODE_ERROR_RECOVERY … #define ACPI_AEST_XRUPT_RESERVED … /******************************************************************************* * AGDI - Arm Generic Diagnostic Dump and Reset Device Interface * * Conforms to "ACPI for Arm Components 1.1, Platform Design Document" * ARM DEN0093 v1.1 * ******************************************************************************/ struct acpi_table_agdi { … }; /* Mask for Flags field above */ #define ACPI_AGDI_SIGNALING_MODE … /******************************************************************************* * * APMT - ARM Performance Monitoring Unit Table * * Conforms to: * ARM Performance Monitoring Unit Architecture 1.0 Platform Design Document * ARM DEN0117 v1.0 November 25, 2021 * ******************************************************************************/ struct acpi_table_apmt { … }; #define ACPI_APMT_NODE_ID_LENGTH … /* * APMT subtables */ struct acpi_apmt_node { … }; /* Masks for Flags field above */ #define ACPI_APMT_FLAGS_DUAL_PAGE … #define ACPI_APMT_FLAGS_AFFINITY … #define ACPI_APMT_FLAGS_ATOMIC … /* Values for Flags dual page field above */ #define ACPI_APMT_FLAGS_DUAL_PAGE_NSUPP … #define ACPI_APMT_FLAGS_DUAL_PAGE_SUPP … /* Values for Flags processor affinity field above */ #define ACPI_APMT_FLAGS_AFFINITY_PROC … #define ACPI_APMT_FLAGS_AFFINITY_PROC_CONTAINER … /* Values for Flags 64-bit atomic field above */ #define ACPI_APMT_FLAGS_ATOMIC_NSUPP … #define ACPI_APMT_FLAGS_ATOMIC_SUPP … /* Values for Type field above */ enum acpi_apmt_node_type { … }; /* Masks for ovflw_irq_flags field above */ #define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE … #define ACPI_APMT_OVFLW_IRQ_FLAGS_TYPE … /* Values for ovflw_irq_flags mode field above */ #define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE_LEVEL … #define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE_EDGE … /* Values for ovflw_irq_flags type field above */ #define ACPI_APMT_OVFLW_IRQ_FLAGS_TYPE_WIRED … /******************************************************************************* * * BDAT - BIOS Data ACPI Table * * Conforms to "BIOS Data ACPI Table", Interface Specification v4.0 Draft 5 * Nov 2020 * ******************************************************************************/ struct acpi_table_bdat { … }; /******************************************************************************* * * CCEL - CC-Event Log * From: "Guest-Host-Communication Interface (GHCI) for Intel * Trust Domain Extensions (Intel TDX)". Feb 2022 * ******************************************************************************/ struct acpi_table_ccel { … }; /******************************************************************************* * * IORT - IO Remapping Table * * Conforms to "IO Remapping Table System Software on ARM Platforms", * Document number: ARM DEN 0049E.e, Sep 2022 * ******************************************************************************/ struct acpi_table_iort { … }; /* * IORT subtables */ struct acpi_iort_node { … }; /* Values for subtable Type above */ enum acpi_iort_node_type { … }; struct acpi_iort_id_mapping { … }; /* Masks for Flags field above for IORT subtable */ #define ACPI_IORT_ID_SINGLE_MAPPING … struct acpi_iort_memory_access { … }; /* Values for cache_coherency field above */ #define ACPI_IORT_NODE_COHERENT … #define ACPI_IORT_NODE_NOT_COHERENT … /* Masks for Hints field above */ #define ACPI_IORT_HT_TRANSIENT … #define ACPI_IORT_HT_WRITE … #define ACPI_IORT_HT_READ … #define ACPI_IORT_HT_OVERRIDE … /* Masks for memory_flags field above */ #define ACPI_IORT_MF_COHERENCY … #define ACPI_IORT_MF_ATTRIBUTES … /* * IORT node specific subtables */ struct acpi_iort_its_group { … }; struct acpi_iort_named_component { … }; /* Masks for Flags field above */ #define ACPI_IORT_NC_STALL_SUPPORTED … #define ACPI_IORT_NC_PASID_BITS … struct acpi_iort_root_complex { … }; /* Masks for ats_attribute field above */ #define ACPI_IORT_ATS_SUPPORTED … #define ACPI_IORT_PRI_SUPPORTED … #define ACPI_IORT_PASID_FWD_SUPPORTED … /* Masks for pasid_capabilities field above */ #define ACPI_IORT_PASID_MAX_WIDTH … struct acpi_iort_smmu { … }; /* Values for Model field above */ #define ACPI_IORT_SMMU_V1 … #define ACPI_IORT_SMMU_V2 … #define ACPI_IORT_SMMU_CORELINK_MMU400 … #define ACPI_IORT_SMMU_CORELINK_MMU500 … #define ACPI_IORT_SMMU_CORELINK_MMU401 … #define ACPI_IORT_SMMU_CAVIUM_THUNDERX … /* Masks for Flags field above */ #define ACPI_IORT_SMMU_DVM_SUPPORTED … #define ACPI_IORT_SMMU_COHERENT_WALK … /* Global interrupt format */ struct acpi_iort_smmu_gsi { … }; struct acpi_iort_smmu_v3 { … }; /* Values for Model field above */ #define ACPI_IORT_SMMU_V3_GENERIC … #define ACPI_IORT_SMMU_V3_HISILICON_HI161X … #define ACPI_IORT_SMMU_V3_CAVIUM_CN99XX … /* Masks for Flags field above */ #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE … #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE … #define ACPI_IORT_SMMU_V3_PXM_VALID … #define ACPI_IORT_SMMU_V3_DEVICEID_VALID … struct acpi_iort_pmcg { … }; struct acpi_iort_rmr { … }; /* Masks for Flags field above */ #define ACPI_IORT_RMR_REMAP_PERMITTED … #define ACPI_IORT_RMR_ACCESS_PRIVILEGE … /* * Macro to access the Access Attributes in flags field above: * Access Attributes is encoded in bits 9:2 */ #define ACPI_IORT_RMR_ACCESS_ATTRIBUTES(flags) … /* Values for above Access Attributes */ #define ACPI_IORT_RMR_ATTR_DEVICE_NGNRNE … #define ACPI_IORT_RMR_ATTR_DEVICE_NGNRE … #define ACPI_IORT_RMR_ATTR_DEVICE_NGRE … #define ACPI_IORT_RMR_ATTR_DEVICE_GRE … #define ACPI_IORT_RMR_ATTR_NORMAL_NC … #define ACPI_IORT_RMR_ATTR_NORMAL_IWB_OWB … struct acpi_iort_rmr_desc { … }; /******************************************************************************* * * IVRS - I/O Virtualization Reporting Structure * Version 1 * * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", * Revision 1.26, February 2009. * ******************************************************************************/ struct acpi_table_ivrs { … }; /* Values for Info field above */ #define ACPI_IVRS_PHYSICAL_SIZE … #define ACPI_IVRS_VIRTUAL_SIZE … #define ACPI_IVRS_ATS_RESERVED … /* IVRS subtable header */ struct acpi_ivrs_header { … }; /* Values for subtable Type above */ enum acpi_ivrs_type { … }; /* Masks for Flags field above for IVHD subtable */ #define ACPI_IVHD_TT_ENABLE … #define ACPI_IVHD_PASS_PW … #define ACPI_IVHD_RES_PASS_PW … #define ACPI_IVHD_ISOC … #define ACPI_IVHD_IOTLB … /* Masks for Flags field above for IVMD subtable */ #define ACPI_IVMD_UNITY … #define ACPI_IVMD_READ … #define ACPI_IVMD_WRITE … #define ACPI_IVMD_EXCLUSION_RANGE … /* * IVRS subtables, correspond to Type in struct acpi_ivrs_header */ /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ struct acpi_ivrs_hardware_10 { … }; /* 0x11: I/O Virtualization Hardware Definition Block (IVHD) */ struct acpi_ivrs_hardware_11 { … }; /* Masks for Info field above */ #define ACPI_IVHD_MSI_NUMBER_MASK … #define ACPI_IVHD_UNIT_ID_MASK … /* * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure. * Upper two bits of the Type field are the (encoded) length of the structure. * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries * are reserved for future use but not defined. */ struct acpi_ivrs_de_header { … }; /* Length of device entry is in the top two bits of Type field above */ #define ACPI_IVHD_ENTRY_LENGTH … /* Values for device entry Type field above */ enum acpi_ivrs_device_entry_type { … }; /* Values for Data field above */ #define ACPI_IVHD_INIT_PASS … #define ACPI_IVHD_EINT_PASS … #define ACPI_IVHD_NMI_PASS … #define ACPI_IVHD_SYSTEM_MGMT … #define ACPI_IVHD_LINT0_PASS … #define ACPI_IVHD_LINT1_PASS … /* Types 0-4: 4-byte device entry */ struct acpi_ivrs_device4 { … }; /* Types 66-67: 8-byte device entry */ struct acpi_ivrs_device8a { … }; /* Types 70-71: 8-byte device entry */ struct acpi_ivrs_device8b { … }; /* Values for extended_data above */ #define ACPI_IVHD_ATS_DISABLED … /* Type 72: 8-byte device entry */ struct acpi_ivrs_device8c { … }; /* Values for Variety field above */ #define ACPI_IVHD_IOAPIC … #define ACPI_IVHD_HPET … /* Type 240: variable-length device entry */ struct acpi_ivrs_device_hid { … }; /* Values for uid_type above */ #define ACPI_IVRS_UID_NOT_PRESENT … #define ACPI_IVRS_UID_IS_INTEGER … #define ACPI_IVRS_UID_IS_STRING … /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ struct acpi_ivrs_memory { … }; /******************************************************************************* * * LPIT - Low Power Idle Table * * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014. * ******************************************************************************/ struct acpi_table_lpit { … }; /* LPIT subtable header */ struct acpi_lpit_header { … }; /* Values for subtable Type above */ enum acpi_lpit_type { … }; /* Masks for Flags field above */ #define ACPI_LPIT_STATE_DISABLED … #define ACPI_LPIT_NO_COUNTER … /* * LPIT subtables, correspond to Type in struct acpi_lpit_header */ /* 0x00: Native C-state instruction based LPI structure */ struct acpi_lpit_native { … }; /******************************************************************************* * * MADT - Multiple APIC Description Table * Version 3 * ******************************************************************************/ struct acpi_table_madt { … }; /* Masks for Flags field above */ #define ACPI_MADT_PCAT_COMPAT … /* Values for PCATCompat flag */ #define ACPI_MADT_DUAL_PIC … #define ACPI_MADT_MULTIPLE_APIC … /* Values for MADT subtable type in struct acpi_subtable_header */ enum acpi_madt_type { … }; /* * MADT Subtables, correspond to Type in struct acpi_subtable_header */ /* 0: Processor Local APIC */ struct acpi_madt_local_apic { … }; /* 1: IO APIC */ struct acpi_madt_io_apic { … }; /* 2: Interrupt Override */ struct acpi_madt_interrupt_override { … }; /* 3: NMI Source */ struct acpi_madt_nmi_source { … }; /* 4: Local APIC NMI */ struct acpi_madt_local_apic_nmi { … }; /* 5: Address Override */ struct acpi_madt_local_apic_override { … }; /* 6: I/O Sapic */ struct acpi_madt_io_sapic { … }; /* 7: Local Sapic */ struct acpi_madt_local_sapic { … }; /* 8: Platform Interrupt Source */ struct acpi_madt_interrupt_source { … }; /* Masks for Flags field above */ #define ACPI_MADT_CPEI_OVERRIDE … /* 9: Processor Local X2APIC (ACPI 4.0) */ struct acpi_madt_local_x2apic { … }; /* 10: Local X2APIC NMI (ACPI 4.0) */ struct acpi_madt_local_x2apic_nmi { … }; /* 11: Generic interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 + ACPI 6.5 changes) */ struct acpi_madt_generic_interrupt { … }; /* Masks for Flags field above */ /* ACPI_MADT_ENABLED (1) Processor is usable if set */ #define ACPI_MADT_PERFORMANCE_IRQ_MODE … #define ACPI_MADT_VGIC_IRQ_MODE … #define ACPI_MADT_GICC_ONLINE_CAPABLE … #define ACPI_MADT_GICC_NON_COHERENT … /* 12: Generic Distributor (ACPI 5.0 + ACPI 6.0 changes) */ struct acpi_madt_generic_distributor { … }; /* Values for Version field above */ enum acpi_madt_gic_version { … }; /* 13: Generic MSI Frame (ACPI 5.1) */ struct acpi_madt_generic_msi_frame { … }; /* Masks for Flags field above */ #define ACPI_MADT_OVERRIDE_SPI_VALUES … /* 14: Generic Redistributor (ACPI 5.1) */ struct acpi_madt_generic_redistributor { … }; #define ACPI_MADT_GICR_NON_COHERENT … /* 15: Generic Translator (ACPI 6.0) */ struct acpi_madt_generic_translator { … }; #define ACPI_MADT_ITS_NON_COHERENT … /* 16: Multiprocessor wakeup (ACPI 6.4) */ struct acpi_madt_multiproc_wakeup { … }; /* Values for Version field above */ enum acpi_madt_multiproc_wakeup_version { … }; #define ACPI_MADT_MP_WAKEUP_SIZE_V0 … #define ACPI_MADT_MP_WAKEUP_SIZE_V1 … #define ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE … #define ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE … struct acpi_madt_multiproc_wakeup_mailbox { … }; #define ACPI_MP_WAKE_COMMAND_WAKEUP … #define ACPI_MP_WAKE_COMMAND_TEST … /* 17: CPU Core Interrupt Controller (ACPI 6.5) */ struct acpi_madt_core_pic { … }; /* Values for Version field above */ enum acpi_madt_core_pic_version { … }; /* 18: Legacy I/O Interrupt Controller (ACPI 6.5) */ struct acpi_madt_lio_pic { … }; /* Values for Version field above */ enum acpi_madt_lio_pic_version { … }; /* 19: HT Interrupt Controller (ACPI 6.5) */ struct acpi_madt_ht_pic { … }; /* Values for Version field above */ enum acpi_madt_ht_pic_version { … }; /* 20: Extend I/O Interrupt Controller (ACPI 6.5) */ struct acpi_madt_eio_pic { … }; /* Values for Version field above */ enum acpi_madt_eio_pic_version { … }; /* 21: MSI Interrupt Controller (ACPI 6.5) */ struct acpi_madt_msi_pic { … }; /* Values for Version field above */ enum acpi_madt_msi_pic_version { … }; /* 22: Bridge I/O Interrupt Controller (ACPI 6.5) */ struct acpi_madt_bio_pic { … }; /* Values for Version field above */ enum acpi_madt_bio_pic_version { … }; /* 23: LPC Interrupt Controller (ACPI 6.5) */ struct acpi_madt_lpc_pic { … }; /* Values for Version field above */ enum acpi_madt_lpc_pic_version { … }; /* 24: RISC-V INTC */ struct acpi_madt_rintc { … }; /* Values for RISC-V INTC Version field above */ enum acpi_madt_rintc_version { … }; /* 25: RISC-V IMSIC */ struct acpi_madt_imsic { … }; /* 26: RISC-V APLIC */ struct acpi_madt_aplic { … }; /* 27: RISC-V PLIC */ struct acpi_madt_plic { … }; /* 80: OEM data */ struct acpi_madt_oem_data { … }; /* * Common flags fields for MADT subtables */ /* MADT Local APIC flags */ #define ACPI_MADT_ENABLED … #define ACPI_MADT_ONLINE_CAPABLE … /* MADT MPS INTI flags (inti_flags) */ #define ACPI_MADT_POLARITY_MASK … #define ACPI_MADT_TRIGGER_MASK … /* Values for MPS INTI flags */ #define ACPI_MADT_POLARITY_CONFORMS … #define ACPI_MADT_POLARITY_ACTIVE_HIGH … #define ACPI_MADT_POLARITY_RESERVED … #define ACPI_MADT_POLARITY_ACTIVE_LOW … #define ACPI_MADT_TRIGGER_CONFORMS … #define ACPI_MADT_TRIGGER_EDGE … #define ACPI_MADT_TRIGGER_RESERVED … #define ACPI_MADT_TRIGGER_LEVEL … /******************************************************************************* * * MCFG - PCI Memory Mapped Configuration table and subtable * Version 1 * * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 * ******************************************************************************/ struct acpi_table_mcfg { … }; /* Subtable */ struct acpi_mcfg_allocation { … }; /******************************************************************************* * * MCHI - Management Controller Host Interface Table * Version 1 * * Conforms to "Management Component Transport Protocol (MCTP) Host * Interface Specification", Revision 1.0.0a, October 13, 2009 * ******************************************************************************/ struct acpi_table_mchi { … }; /******************************************************************************* * * MPAM - Memory System Resource Partitioning and Monitoring * * Conforms to "ACPI for Memory System Resource Partitioning and Monitoring 2.0" * Document number: ARM DEN 0065, December, 2022. * ******************************************************************************/ /* MPAM RIS locator types. Table 11, Location types */ enum acpi_mpam_locator_type { … }; /* MPAM Functional dependency descriptor. Table 10 */ struct acpi_mpam_func_deps { … }; /* MPAM Processor cache locator descriptor. Table 13 */ struct acpi_mpam_resource_cache_locator { … }; /* MPAM Memory locator descriptor. Table 14 */ struct acpi_mpam_resource_memory_locator { … }; /* MPAM SMMU locator descriptor. Table 15 */ struct acpi_mpam_resource_smmu_locator { … }; /* MPAM Memory-side cache locator descriptor. Table 16 */ struct acpi_mpam_resource_memcache_locator { … }; /* MPAM ACPI device locator descriptor. Table 17 */ struct acpi_mpam_resource_acpi_locator { … }; /* MPAM Interconnect locator descriptor. Table 18 */ struct acpi_mpam_resource_interconnect_locator { … }; /* MPAM Locator structure. Table 12 */ struct acpi_mpam_resource_generic_locator { … }; acpi_mpam_resource_locator; /* Memory System Component Resource Node Structure Table 9 */ struct acpi_mpam_resource_node { … }; /* Memory System Component (MSC) Node Structure. Table 4 */ struct acpi_mpam_msc_node { … }; struct acpi_table_mpam { … }; /******************************************************************************* * * MPST - Memory Power State Table (ACPI 5.0) * Version 1 * ******************************************************************************/ #define ACPI_MPST_CHANNEL_INFO … /* Main table */ struct acpi_table_mpst { … }; /* Memory Platform Communication Channel Info */ struct acpi_mpst_channel { … }; /* Memory Power Node Structure */ struct acpi_mpst_power_node { … }; /* Values for Flags field above */ #define ACPI_MPST_ENABLED … #define ACPI_MPST_POWER_MANAGED … #define ACPI_MPST_HOT_PLUG_CAPABLE … /* Memory Power State Structure (follows POWER_NODE above) */ struct acpi_mpst_power_state { … }; /* Physical Component ID Structure (follows POWER_STATE above) */ struct acpi_mpst_component { … }; /* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ struct acpi_mpst_data_hdr { … }; struct acpi_mpst_power_data { … }; /* Values for Flags field above */ #define ACPI_MPST_PRESERVE … #define ACPI_MPST_AUTOENTRY … #define ACPI_MPST_AUTOEXIT … /* Shared Memory Region (not part of an ACPI table) */ struct acpi_mpst_shared { … }; /******************************************************************************* * * MSCT - Maximum System Characteristics Table (ACPI 4.0) * Version 1 * ******************************************************************************/ struct acpi_table_msct { … }; /* subtable - Maximum Proximity Domain Information. Version 1 */ struct acpi_msct_proximity { … }; /******************************************************************************* * * MSDM - Microsoft Data Management table * * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)", * November 29, 2011. Copyright 2011 Microsoft * ******************************************************************************/ /* Basic MSDM table is only the common ACPI header */ struct acpi_table_msdm { … }; /******************************************************************************* * * NFIT - NVDIMM Interface Table (ACPI 6.0+) * Version 1 * ******************************************************************************/ struct acpi_table_nfit { … }; /* Subtable header for NFIT */ struct acpi_nfit_header { … }; /* Values for subtable type in struct acpi_nfit_header */ enum acpi_nfit_type { … }; /* * NFIT Subtables */ /* 0: System Physical Address Range Structure */ struct acpi_nfit_system_address { … }; /* Flags */ #define ACPI_NFIT_ADD_ONLINE_ONLY … #define ACPI_NFIT_PROXIMITY_VALID … #define ACPI_NFIT_LOCATION_COOKIE_VALID … /* Range Type GUIDs appear in the include/acuuid.h file */ /* 1: Memory Device to System Address Range Map Structure */ struct acpi_nfit_memory_map { … }; /* Flags */ #define ACPI_NFIT_MEM_SAVE_FAILED … #define ACPI_NFIT_MEM_RESTORE_FAILED … #define ACPI_NFIT_MEM_FLUSH_FAILED … #define ACPI_NFIT_MEM_NOT_ARMED … #define ACPI_NFIT_MEM_HEALTH_OBSERVED … #define ACPI_NFIT_MEM_HEALTH_ENABLED … #define ACPI_NFIT_MEM_MAP_FAILED … /* 2: Interleave Structure */ struct acpi_nfit_interleave { … }; /* 3: SMBIOS Management Information Structure */ struct acpi_nfit_smbios { … }; /* 4: NVDIMM Control Region Structure */ struct acpi_nfit_control_region { … }; /* Flags */ #define ACPI_NFIT_CONTROL_BUFFERED … /* valid_fields bits */ #define ACPI_NFIT_CONTROL_MFG_INFO_VALID … /* 5: NVDIMM Block Data Window Region Structure */ struct acpi_nfit_data_region { … }; /* 6: Flush Hint Address Structure */ struct acpi_nfit_flush_address { … }; /* 7: Platform Capabilities Structure */ struct acpi_nfit_capabilities { … }; /* Capabilities Flags */ #define ACPI_NFIT_CAPABILITY_CACHE_FLUSH … #define ACPI_NFIT_CAPABILITY_MEM_FLUSH … #define ACPI_NFIT_CAPABILITY_MEM_MIRRORING … /* * NFIT/DVDIMM device handle support - used as the _ADR for each NVDIMM */ struct nfit_device_handle { … }; /* Device handle construction and extraction macros */ #define ACPI_NFIT_DIMM_NUMBER_MASK … #define ACPI_NFIT_CHANNEL_NUMBER_MASK … #define ACPI_NFIT_MEMORY_ID_MASK … #define ACPI_NFIT_SOCKET_ID_MASK … #define ACPI_NFIT_NODE_ID_MASK … #define ACPI_NFIT_DIMM_NUMBER_OFFSET … #define ACPI_NFIT_CHANNEL_NUMBER_OFFSET … #define ACPI_NFIT_MEMORY_ID_OFFSET … #define ACPI_NFIT_SOCKET_ID_OFFSET … #define ACPI_NFIT_NODE_ID_OFFSET … /* Macro to construct a NFIT/NVDIMM device handle */ #define ACPI_NFIT_BUILD_DEVICE_HANDLE(dimm, channel, memory, socket, node) … /* Macros to extract individual fields from a NFIT/NVDIMM device handle */ #define ACPI_NFIT_GET_DIMM_NUMBER(handle) … #define ACPI_NFIT_GET_CHANNEL_NUMBER(handle) … #define ACPI_NFIT_GET_MEMORY_ID(handle) … #define ACPI_NFIT_GET_SOCKET_ID(handle) … #define ACPI_NFIT_GET_NODE_ID(handle) … /******************************************************************************* * * NHLT - Non HDAudio Link Table * Version 1 * ******************************************************************************/ struct acpi_table_nhlt { … }; struct acpi_nhlt_endpoint { … }; /* * Values for link_type field above * * Only types PDM and SSP are used */ #define ACPI_NHLT_LINKTYPE_HDA … #define ACPI_NHLT_LINKTYPE_DSP … #define ACPI_NHLT_LINKTYPE_PDM … #define ACPI_NHLT_LINKTYPE_SSP … #define ACPI_NHLT_LINKTYPE_SLIMBUS … #define ACPI_NHLT_LINKTYPE_SDW … #define ACPI_NHLT_LINKTYPE_UAOL … /* Values for device_id field above */ #define ACPI_NHLT_DEVICEID_DMIC … #define ACPI_NHLT_DEVICEID_BT … #define ACPI_NHLT_DEVICEID_I2S … /* Values for device_type field above */ /* * Device types unique to endpoint of link_type=PDM * * Type PDM used for all SKL+ platforms */ #define ACPI_NHLT_DEVICETYPE_PDM … #define ACPI_NHLT_DEVICETYPE_PDM_SKL … /* Device types unique to endpoint of link_type=SSP */ #define ACPI_NHLT_DEVICETYPE_BT … #define ACPI_NHLT_DEVICETYPE_FM … #define ACPI_NHLT_DEVICETYPE_MODEM … #define ACPI_NHLT_DEVICETYPE_CODEC … /* Values for Direction field above */ #define ACPI_NHLT_DIR_RENDER … #define ACPI_NHLT_DIR_CAPTURE … struct acpi_nhlt_config { … }; struct acpi_nhlt_gendevice_config { … }; /* Values for config_type field above */ #define ACPI_NHLT_CONFIGTYPE_GENERIC … #define ACPI_NHLT_CONFIGTYPE_MICARRAY … struct acpi_nhlt_micdevice_config { … }; /* Values for array_type field above */ #define ACPI_NHLT_ARRAYTYPE_LINEAR2_SMALL … #define ACPI_NHLT_ARRAYTYPE_LINEAR2_BIG … #define ACPI_NHLT_ARRAYTYPE_LINEAR4_GEO1 … #define ACPI_NHLT_ARRAYTYPE_PLANAR4_LSHAPED … #define ACPI_NHLT_ARRAYTYPE_LINEAR4_GEO2 … #define ACPI_NHLT_ARRAYTYPE_VENDOR … struct acpi_nhlt_vendor_mic_config { … }; /* Values for Type field above */ #define ACPI_NHLT_MICTYPE_OMNIDIRECTIONAL … #define ACPI_NHLT_MICTYPE_SUBCARDIOID … #define ACPI_NHLT_MICTYPE_CARDIOID … #define ACPI_NHLT_MICTYPE_SUPERCARDIOID … #define ACPI_NHLT_MICTYPE_HYPERCARDIOID … #define ACPI_NHLT_MICTYPE_8SHAPED … #define ACPI_NHLT_MICTYPE_RESERVED … #define ACPI_NHLT_MICTYPE_VENDORDEFINED … /* Values for Panel field above */ #define ACPI_NHLT_MICLOCATION_TOP … #define ACPI_NHLT_MICLOCATION_BOTTOM … #define ACPI_NHLT_MICLOCATION_LEFT … #define ACPI_NHLT_MICLOCATION_RIGHT … #define ACPI_NHLT_MICLOCATION_FRONT … #define ACPI_NHLT_MICLOCATION_REAR … struct acpi_nhlt_vendor_micdevice_config { … }; acpi_nhlt_device_config; /* Inherited from Microsoft's WAVEFORMATEXTENSIBLE. */ struct acpi_nhlt_wave_formatext { … }; struct acpi_nhlt_format_config { … }; struct acpi_nhlt_formats_config { … }; struct acpi_nhlt_device_info { … }; struct acpi_nhlt_devices_info { … }; /******************************************************************************* * * PCCT - Platform Communications Channel Table (ACPI 5.0) * Version 2 (ACPI 6.2) * ******************************************************************************/ struct acpi_table_pcct { … }; /* Values for Flags field above */ #define ACPI_PCCT_DOORBELL … /* Values for subtable type in struct acpi_subtable_header */ enum acpi_pcct_type { … }; /* * PCCT Subtables, correspond to Type in struct acpi_subtable_header */ /* 0: Generic Communications Subspace */ struct acpi_pcct_subspace { … }; /* 1: HW-reduced Communications Subspace (ACPI 5.1) */ struct acpi_pcct_hw_reduced { … }; /* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */ struct acpi_pcct_hw_reduced_type2 { … }; /* 3: Extended PCC Master Subspace Type 3 (ACPI 6.2) */ struct acpi_pcct_ext_pcc_master { … }; /* 4: Extended PCC Slave Subspace Type 4 (ACPI 6.2) */ struct acpi_pcct_ext_pcc_slave { … }; /* 5: HW Registers based Communications Subspace */ struct acpi_pcct_hw_reg { … }; /* Values for doorbell flags above */ #define ACPI_PCCT_INTERRUPT_POLARITY … #define ACPI_PCCT_INTERRUPT_MODE … /* * PCC memory structures (not part of the ACPI table) */ /* Shared Memory Region */ struct acpi_pcct_shared_memory { … }; /* Extended PCC Subspace Shared Memory Region (ACPI 6.2) */ struct acpi_pcct_ext_pcc_shared_memory { … }; /******************************************************************************* * * PDTT - Platform Debug Trigger Table (ACPI 6.2) * Version 0 * ******************************************************************************/ struct acpi_table_pdtt { … }; /* * PDTT Communication Channel Identifier Structure. * The number of these structures is defined by trigger_count above, * starting at array_offset. */ struct acpi_pdtt_channel { … }; /* Flags for above */ #define ACPI_PDTT_RUNTIME_TRIGGER … #define ACPI_PDTT_WAIT_COMPLETION … #define ACPI_PDTT_TRIGGER_ORDER … /******************************************************************************* * * PHAT - Platform Health Assessment Table (ACPI 6.4) * Version 1 * ******************************************************************************/ struct acpi_table_phat { … }; /* Common header for PHAT subtables that follow main table */ struct acpi_phat_header { … }; /* Values for Type field above */ #define ACPI_PHAT_TYPE_FW_VERSION_DATA … #define ACPI_PHAT_TYPE_FW_HEALTH_DATA … #define ACPI_PHAT_TYPE_RESERVED … /* * PHAT subtables, correspond to Type in struct acpi_phat_header */ /* 0: Firmware Version Data Record */ struct acpi_phat_version_data { … }; struct acpi_phat_version_element { … }; /* 1: Firmware Health Data Record */ struct acpi_phat_health_data { … }; /* Values for Health field above */ #define ACPI_PHAT_ERRORS_FOUND … #define ACPI_PHAT_NO_ERRORS … #define ACPI_PHAT_UNKNOWN_ERRORS … #define ACPI_PHAT_ADVISORY … /******************************************************************************* * * PMTT - Platform Memory Topology Table (ACPI 5.0) * Version 1 * ******************************************************************************/ struct acpi_table_pmtt { … }; /* Common header for PMTT subtables that follow main table */ struct acpi_pmtt_header { … }; /* Values for Type field above */ #define ACPI_PMTT_TYPE_SOCKET … #define ACPI_PMTT_TYPE_CONTROLLER … #define ACPI_PMTT_TYPE_DIMM … #define ACPI_PMTT_TYPE_RESERVED … #define ACPI_PMTT_TYPE_VENDOR … /* Values for Flags field above */ #define ACPI_PMTT_TOP_LEVEL … #define ACPI_PMTT_PHYSICAL … #define ACPI_PMTT_MEMORY_TYPE … /* * PMTT subtables, correspond to Type in struct acpi_pmtt_header */ /* 0: Socket Structure */ struct acpi_pmtt_socket { … }; /* * Immediately followed by: * MEMORY_DEVICE memory_device_struct[memory_device_count]; */ /* 1: Memory Controller subtable */ struct acpi_pmtt_controller { … }; /* * Immediately followed by: * MEMORY_DEVICE memory_device_struct[memory_device_count]; */ /* 2: Physical Component Identifier (DIMM) */ struct acpi_pmtt_physical_component { … }; /* 0xFF: Vendor Specific Data */ struct acpi_pmtt_vendor_specific { … }; /******************************************************************************* * * PPTT - Processor Properties Topology Table (ACPI 6.2) * Version 1 * ******************************************************************************/ struct acpi_table_pptt { … }; /* Values for Type field above */ enum acpi_pptt_type { … }; /* 0: Processor Hierarchy Node Structure */ struct acpi_pptt_processor { … }; /* Flags */ #define ACPI_PPTT_PHYSICAL_PACKAGE … #define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID … #define ACPI_PPTT_ACPI_PROCESSOR_IS_THREAD … #define ACPI_PPTT_ACPI_LEAF_NODE … #define ACPI_PPTT_ACPI_IDENTICAL … /* 1: Cache Type Structure */ struct acpi_pptt_cache { … }; /* 1: Cache Type Structure for PPTT version 3 */ struct acpi_pptt_cache_v1 { … }; /* Flags */ #define ACPI_PPTT_SIZE_PROPERTY_VALID … #define ACPI_PPTT_NUMBER_OF_SETS_VALID … #define ACPI_PPTT_ASSOCIATIVITY_VALID … #define ACPI_PPTT_ALLOCATION_TYPE_VALID … #define ACPI_PPTT_CACHE_TYPE_VALID … #define ACPI_PPTT_WRITE_POLICY_VALID … #define ACPI_PPTT_LINE_SIZE_VALID … #define ACPI_PPTT_CACHE_ID_VALID … /* Masks for Attributes */ #define ACPI_PPTT_MASK_ALLOCATION_TYPE … #define ACPI_PPTT_MASK_CACHE_TYPE … #define ACPI_PPTT_MASK_WRITE_POLICY … /* Attributes describing cache */ #define ACPI_PPTT_CACHE_READ_ALLOCATE … #define ACPI_PPTT_CACHE_WRITE_ALLOCATE … #define ACPI_PPTT_CACHE_RW_ALLOCATE … #define ACPI_PPTT_CACHE_RW_ALLOCATE_ALT … #define ACPI_PPTT_CACHE_TYPE_DATA … #define ACPI_PPTT_CACHE_TYPE_INSTR … #define ACPI_PPTT_CACHE_TYPE_UNIFIED … #define ACPI_PPTT_CACHE_TYPE_UNIFIED_ALT … #define ACPI_PPTT_CACHE_POLICY_WB … #define ACPI_PPTT_CACHE_POLICY_WT … /* 2: ID Structure */ struct acpi_pptt_id { … }; /******************************************************************************* * * PRMT - Platform Runtime Mechanism Table * Version 1 * ******************************************************************************/ struct acpi_table_prmt { … }; struct acpi_table_prmt_header { … }; struct acpi_prmt_module_header { … }; struct acpi_prmt_module_info { … }; struct acpi_prmt_handler_info { … }; /******************************************************************************* * * RASF - RAS Feature Table (ACPI 5.0) * Version 1 * ******************************************************************************/ struct acpi_table_rasf { … }; /* RASF Platform Communication Channel Shared Memory Region */ struct acpi_rasf_shared_memory { … }; /* RASF Parameter Block Structure Header */ struct acpi_rasf_parameter_block { … }; /* RASF Parameter Block Structure for PATROL_SCRUB */ struct acpi_rasf_patrol_scrub_parameter { … }; /* Masks for Flags and Speed fields above */ #define ACPI_RASF_SCRUBBER_RUNNING … #define ACPI_RASF_SPEED … #define ACPI_RASF_SPEED_SLOW … #define ACPI_RASF_SPEED_MEDIUM … #define ACPI_RASF_SPEED_FAST … /* Channel Commands */ enum acpi_rasf_commands { … }; /* Platform RAS Capabilities */ enum acpi_rasf_capabiliities { … }; /* Patrol Scrub Commands */ enum acpi_rasf_patrol_scrub_commands { … }; /* Channel Command flags */ #define ACPI_RASF_GENERATE_SCI … /* Status values */ enum acpi_rasf_status { … }; /* Status flags */ #define ACPI_RASF_COMMAND_COMPLETE … #define ACPI_RASF_SCI_DOORBELL … #define ACPI_RASF_ERROR … #define ACPI_RASF_STATUS … /******************************************************************************* * * RAS2 - RAS2 Feature Table (ACPI 6.5) * Version 1 * * ******************************************************************************/ struct acpi_table_ras2 { … }; /* RAS2 Platform Communication Channel Descriptor */ struct acpi_ras2_pcc_desc { … }; /* RAS2 Platform Communication Channel Shared Memory Region */ struct acpi_ras2_shared_memory { … }; /* RAS2 Parameter Block Structure for PATROL_SCRUB */ struct acpi_ras2_parameter_block { … }; /* RAS2 Parameter Block Structure for PATROL_SCRUB */ struct acpi_ras2_patrol_scrub_parameter { … }; /* Masks for Flags field above */ #define ACPI_RAS2_SCRUBBER_RUNNING … /* RAS2 Parameter Block Structure for LA2PA_TRANSLATION */ struct acpi_ras2_la2pa_translation_parameter { … }; /* Channel Commands */ enum acpi_ras2_commands { … }; /* Platform RAS2 Features */ enum acpi_ras2_features { … }; /* RAS2 Patrol Scrub Commands */ enum acpi_ras2_patrol_scrub_commands { … }; /* RAS2 LA2PA Translation Commands */ enum acpi_ras2_la2_pa_translation_commands { … }; /* RAS2 LA2PA Translation Status values */ enum acpi_ras2_la2_pa_translation_status { … }; /* Channel Command flags */ #define ACPI_RAS2_GENERATE_SCI … /* Status values */ enum acpi_ras2_status { … }; /* Status flags */ #define ACPI_RAS2_COMMAND_COMPLETE … #define ACPI_RAS2_SCI_DOORBELL … #define ACPI_RAS2_ERROR … #define ACPI_RAS2_STATUS … /******************************************************************************* * * RGRT - Regulatory Graphics Resource Table * Version 1 * * Conforms to "ACPI RGRT" available at: * https://microsoft.github.io/mu/dyn/mu_plus/ms_core_pkg/acpi_RGRT/feature_acpi_rgrt/ * ******************************************************************************/ struct acpi_table_rgrt { … }; /* image_type values */ enum acpi_rgrt_image_type { … }; /******************************************************************************* * * RHCT - RISC-V Hart Capabilities Table * Version 1 * ******************************************************************************/ struct acpi_table_rhct { … }; /* RHCT Flags */ #define ACPI_RHCT_TIMER_CANNOT_WAKEUP_CPU … /* * RHCT subtables */ struct acpi_rhct_node_header { … }; /* Values for RHCT subtable Type above */ enum acpi_rhct_node_type { … }; /* * RHCT node specific subtables */ /* ISA string node structure */ struct acpi_rhct_isa_string { … }; struct acpi_rhct_cmo_node { … }; struct acpi_rhct_mmu_node { … }; enum acpi_rhct_mmu_type { … }; /* Hart Info node structure */ struct acpi_rhct_hart_info { … }; /******************************************************************************* * * SBST - Smart Battery Specification Table * Version 1 * ******************************************************************************/ struct acpi_table_sbst { … }; /******************************************************************************* * * SDEI - Software Delegated Exception Interface Descriptor Table * * Conforms to "Software Delegated Exception Interface (SDEI)" ARM DEN0054A, * May 8th, 2017. Copyright 2017 ARM Ltd. * ******************************************************************************/ struct acpi_table_sdei { … }; /******************************************************************************* * * SDEV - Secure Devices Table (ACPI 6.2) * Version 1 * ******************************************************************************/ struct acpi_table_sdev { … }; struct acpi_sdev_header { … }; /* Values for subtable type above */ enum acpi_sdev_type { … }; /* Values for flags above */ #define ACPI_SDEV_HANDOFF_TO_UNSECURE_OS … #define ACPI_SDEV_SECURE_COMPONENTS_PRESENT … /* * SDEV subtables */ /* 0: Namespace Device Based Secure Device Structure */ struct acpi_sdev_namespace { … }; struct acpi_sdev_secure_component { … }; /* * SDEV sub-subtables ("Components") for above */ struct acpi_sdev_component { … }; /* Values for sub-subtable type above */ enum acpi_sac_type { … }; struct acpi_sdev_id_component { … }; struct acpi_sdev_mem_component { … }; /* 1: PCIe Endpoint Device Based Device Structure */ struct acpi_sdev_pcie { … }; /* 1a: PCIe Endpoint path entry */ struct acpi_sdev_pcie_path { … }; /******************************************************************************* * * SVKL - Storage Volume Key Location Table (ACPI 6.4) * From: "Guest-Host-Communication Interface (GHCI) for Intel * Trust Domain Extensions (Intel TDX)". * Version 1 * ******************************************************************************/ struct acpi_table_svkl { … }; struct acpi_svkl_key { … }; enum acpi_svkl_type { … }; enum acpi_svkl_format { … }; /******************************************************************************* * * TDEL - TD-Event Log * From: "Guest-Host-Communication Interface (GHCI) for Intel * Trust Domain Extensions (Intel TDX)". * September 2020 * ******************************************************************************/ struct acpi_table_tdel { … }; /* Reset to default packing */ #pragma pack() #endif /* __ACTBL2_H__ */