/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */1/******************************************************************************2*3* Name: actbl1.h - Additional ACPI table definitions4*5* Copyright (C) 2000 - 2025, Intel Corp.6*7*****************************************************************************/89#ifndef __ACTBL1_H__10#define __ACTBL1_H__1112/*******************************************************************************13*14* Additional ACPI Tables15*16* These tables are not consumed directly by the ACPICA subsystem, but are17* included here to support device drivers and the AML disassembler.18*19******************************************************************************/2021/*22* Values for description table header signatures for tables defined in this23* file. Useful because they make it more difficult to inadvertently type in24* the wrong signature.25*/26#define ACPI_SIG_AEST "AEST" /* Arm Error Source Table */27#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */28#define ACPI_SIG_ASPT "ASPT" /* AMD Secure Processor Table */29#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */30#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */31#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */32#define ACPI_SIG_CEDT "CEDT" /* CXL Early Discovery Table */33#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */34#define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */35#define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */36#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */37#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */38#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */39#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */40#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */41#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */42#define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */43#define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */44#define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */45#define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */46#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */47#define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */48#define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */4950#define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */51#define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */5253#define ACPI_SIG_NBFT "NBFT" /* NVMe Boot Firmware Table */5455/* Reserved table signatures */5657#define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */58#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */5960/*61* These tables have been seen in the field, but no definition has been found62*/63#ifdef ACPI_UNDEFINED_TABLES64#define ACPI_SIG_ATKG "ATKG"65#define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */66#define ACPI_SIG_IEIT "IEIT"67#endif6869/*70* All tables must be byte-packed to match the ACPI specification, since71* the tables are provided by the system BIOS.72*/73#pragma pack(1)7475/*76* Note: C bitfields are not used for this reason:77*78* "Bitfields are great and easy to read, but unfortunately the C language79* does not specify the layout of bitfields in memory, which means they are80* essentially useless for dealing with packed data in on-disk formats or81* binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,82* this decision was a design error in C. Ritchie could have picked an order83* and stuck with it." Norman Ramsey.84* See http://stackoverflow.com/a/1053662/4166185*/8687/*******************************************************************************88*89* Common subtable headers90*91******************************************************************************/9293/* Generic subtable header (used in MADT, SRAT, etc.) */9495struct acpi_subtable_header {96u8 type;97u8 length;98};99100/* Subtable header for WHEA tables (EINJ, ERST, WDAT) */101102struct acpi_whea_header {103u8 action;104u8 instruction;105u8 flags;106u8 reserved;107struct acpi_generic_address register_region;108u64 value; /* Value used with Read/Write register */109u64 mask; /* Bitmask required for this register instruction */110};111112/* https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/acpitabl/ns-acpitabl-aspt_table */113#define ASPT_REVISION_ID 0x01114struct acpi_table_aspt {115struct acpi_table_header header;116u32 num_entries;117};118119struct acpi_aspt_header {120u16 type;121u16 length;122};123124enum acpi_aspt_type {125ACPI_ASPT_TYPE_GLOBAL_REGS = 0,126ACPI_ASPT_TYPE_SEV_MBOX_REGS = 1,127ACPI_ASPT_TYPE_ACPI_MBOX_REGS = 2,128};129130/* 0: ASPT Global Registers */131struct acpi_aspt_global_regs {132struct acpi_aspt_header header;133u32 reserved;134u64 feature_reg_addr;135u64 irq_en_reg_addr;136u64 irq_st_reg_addr;137};138139/* 1: ASPT SEV Mailbox Registers */140struct acpi_aspt_sev_mbox_regs {141struct acpi_aspt_header header;142u8 mbox_irq_id;143u8 reserved[3];144u64 cmd_resp_reg_addr;145u64 cmd_buf_lo_reg_addr;146u64 cmd_buf_hi_reg_addr;147};148149/* 2: ASPT ACPI Mailbox Registers */150struct acpi_aspt_acpi_mbox_regs {151struct acpi_aspt_header header;152u32 reserved1;153u64 cmd_resp_reg_addr;154u64 reserved2[2];155};156157/* Larger subtable header (when Length can exceed 255) */158159struct acpi_subtbl_hdr_16 {160u16 type;161u16 length;162};163164/*******************************************************************************165*166* ASF - Alert Standard Format table (Signature "ASF!")167* Revision 0x10168*169* Conforms to the Alert Standard Format Specification V2.0, 23 April 2003170*171******************************************************************************/172173struct acpi_table_asf {174struct acpi_table_header header; /* Common ACPI table header */175};176177/* ASF subtable header */178179struct acpi_asf_header {180u8 type;181u8 reserved;182u16 length;183};184185/* Values for Type field above */186187enum acpi_asf_type {188ACPI_ASF_TYPE_INFO = 0,189ACPI_ASF_TYPE_ALERT = 1,190ACPI_ASF_TYPE_CONTROL = 2,191ACPI_ASF_TYPE_BOOT = 3,192ACPI_ASF_TYPE_ADDRESS = 4,193ACPI_ASF_TYPE_RESERVED = 5194};195196/*197* ASF subtables198*/199200/* 0: ASF Information */201202struct acpi_asf_info {203struct acpi_asf_header header;204u8 min_reset_value;205u8 min_poll_interval;206u16 system_id;207u32 mfg_id;208u8 flags;209u8 reserved2[3];210};211212/* Masks for Flags field above */213214#define ACPI_ASF_SMBUS_PROTOCOLS (1)215216/* 1: ASF Alerts */217218struct acpi_asf_alert {219struct acpi_asf_header header;220u8 assert_mask;221u8 deassert_mask;222u8 alerts;223u8 data_length;224};225226struct acpi_asf_alert_data {227u8 address;228u8 command;229u8 mask;230u8 value;231u8 sensor_type;232u8 type;233u8 offset;234u8 source_type;235u8 severity;236u8 sensor_number;237u8 entity;238u8 instance;239};240241/* 2: ASF Remote Control */242243struct acpi_asf_remote {244struct acpi_asf_header header;245u8 controls;246u8 data_length;247u16 reserved2;248};249250struct acpi_asf_control_data {251u8 function;252u8 address;253u8 command;254u8 value;255};256257/* 3: ASF RMCP Boot Options */258259struct acpi_asf_rmcp {260struct acpi_asf_header header;261u8 capabilities[7];262u8 completion_code;263u32 enterprise_id;264u8 command;265u16 parameter;266u16 boot_options;267u16 oem_parameters;268};269270/* 4: ASF Address */271272struct acpi_asf_address {273struct acpi_asf_header header;274u8 eprom_address;275u8 devices;276};277278/*******************************************************************************279*280* BERT - Boot Error Record Table (ACPI 4.0)281* Version 1282*283******************************************************************************/284285struct acpi_table_bert {286struct acpi_table_header header; /* Common ACPI table header */287u32 region_length; /* Length of the boot error region */288u64 address; /* Physical address of the error region */289};290291/* Boot Error Region (not a subtable, pointed to by Address field above) */292293struct acpi_bert_region {294u32 block_status; /* Type of error information */295u32 raw_data_offset; /* Offset to raw error data */296u32 raw_data_length; /* Length of raw error data */297u32 data_length; /* Length of generic error data */298u32 error_severity; /* Severity code */299};300301/* Values for block_status flags above */302303#define ACPI_BERT_UNCORRECTABLE (1)304#define ACPI_BERT_CORRECTABLE (1<<1)305#define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2)306#define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3)307#define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */308309/* Values for error_severity above */310311enum acpi_bert_error_severity {312ACPI_BERT_ERROR_CORRECTABLE = 0,313ACPI_BERT_ERROR_FATAL = 1,314ACPI_BERT_ERROR_CORRECTED = 2,315ACPI_BERT_ERROR_NONE = 3,316ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */317};318319/*320* Note: The generic error data that follows the error_severity field above321* uses the struct acpi_hest_generic_data defined under the HEST table below322*/323324/*******************************************************************************325*326* BGRT - Boot Graphics Resource Table (ACPI 5.0)327* Version 1328*329******************************************************************************/330331struct acpi_table_bgrt {332struct acpi_table_header header; /* Common ACPI table header */333u16 version;334u8 status;335u8 image_type;336u64 image_address;337u32 image_offset_x;338u32 image_offset_y;339};340341/* Flags for Status field above */342343#define ACPI_BGRT_DISPLAYED (1)344#define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1)345346/*******************************************************************************347*348* BOOT - Simple Boot Flag Table349* Version 1350*351* Conforms to the "Simple Boot Flag Specification", Version 2.1352*353******************************************************************************/354355struct acpi_table_boot {356struct acpi_table_header header; /* Common ACPI table header */357u8 cmos_index; /* Index in CMOS RAM for the boot register */358u8 reserved[3];359};360361/*******************************************************************************362*363* CDAT - Coherent Device Attribute Table364* Version 1365*366* Conforms to the "Coherent Device Attribute Table (CDAT) Specification367" (Revision 1.01, October 2020.)368*369******************************************************************************/370371struct acpi_table_cdat {372u32 length; /* Length of table in bytes, including this header */373u8 revision; /* ACPI Specification minor version number */374u8 checksum; /* To make sum of entire table == 0 */375u8 reserved[6];376u32 sequence; /* Used to detect runtime CDAT table changes */377};378379/* CDAT common subtable header */380381struct acpi_cdat_header {382u8 type;383u8 reserved;384u16 length;385};386387/* Values for Type field above */388389enum acpi_cdat_type {390ACPI_CDAT_TYPE_DSMAS = 0,391ACPI_CDAT_TYPE_DSLBIS = 1,392ACPI_CDAT_TYPE_DSMSCIS = 2,393ACPI_CDAT_TYPE_DSIS = 3,394ACPI_CDAT_TYPE_DSEMTS = 4,395ACPI_CDAT_TYPE_SSLBIS = 5,396ACPI_CDAT_TYPE_RESERVED = 6 /* 6 through 0xFF are reserved */397};398399/* Subtable 0: Device Scoped Memory Affinity Structure (DSMAS) */400401struct acpi_cdat_dsmas {402u8 dsmad_handle;403u8 flags;404u16 reserved;405u64 dpa_base_address;406u64 dpa_length;407};408409/* Flags for subtable above */410411#define ACPI_CDAT_DSMAS_NON_VOLATILE (1 << 2)412#define ACPI_CDAT_DSMAS_SHAREABLE (1 << 3)413#define ACPI_CDAT_DSMAS_READ_ONLY (1 << 6)414415/* Subtable 1: Device scoped Latency and Bandwidth Information Structure (DSLBIS) */416417struct acpi_cdat_dslbis {418u8 handle;419u8 flags; /* If Handle matches a DSMAS handle, the definition of this field matches420* Flags field in HMAT System Locality Latency */421u8 data_type;422u8 reserved;423u64 entry_base_unit;424u16 entry[3];425u16 reserved2;426};427428/* Subtable 2: Device Scoped Memory Side Cache Information Structure (DSMSCIS) */429430struct acpi_cdat_dsmscis {431u8 dsmas_handle;432u8 reserved[3];433u64 side_cache_size;434u32 cache_attributes;435};436437/* Subtable 3: Device Scoped Initiator Structure (DSIS) */438439struct acpi_cdat_dsis {440u8 flags;441u8 handle;442u16 reserved;443};444445/* Flags for above subtable */446447#define ACPI_CDAT_DSIS_MEM_ATTACHED (1 << 0)448449/* Subtable 4: Device Scoped EFI Memory Type Structure (DSEMTS) */450451struct acpi_cdat_dsemts {452u8 dsmas_handle;453u8 memory_type;454u16 reserved;455u64 dpa_offset;456u64 range_length;457};458459/* Subtable 5: Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) */460461struct acpi_cdat_sslbis {462u8 data_type;463u8 reserved[3];464u64 entry_base_unit;465};466467/* Sub-subtable for above, sslbe_entries field */468469struct acpi_cdat_sslbe {470u16 portx_id;471u16 porty_id;472u16 latency_or_bandwidth;473u16 reserved;474};475476#define ACPI_CDAT_SSLBIS_US_PORT 0x0100477#define ACPI_CDAT_SSLBIS_ANY_PORT 0xffff478479/*******************************************************************************480*481* CEDT - CXL Early Discovery Table482* Version 1483*484* Conforms to the "CXL Early Discovery Table" (CXL 2.0, October 2020)485*486******************************************************************************/487488struct acpi_table_cedt {489struct acpi_table_header header; /* Common ACPI table header */490};491492/* CEDT subtable header (Performance Record Structure) */493494struct acpi_cedt_header {495u8 type;496u8 reserved;497u16 length;498};499500/* Values for Type field above */501502enum acpi_cedt_type {503ACPI_CEDT_TYPE_CHBS = 0,504ACPI_CEDT_TYPE_CFMWS = 1,505ACPI_CEDT_TYPE_CXIMS = 2,506ACPI_CEDT_TYPE_RDPAS = 3,507ACPI_CEDT_TYPE_RESERVED = 4,508};509510/* Values for version field above */511512#define ACPI_CEDT_CHBS_VERSION_CXL11 (0)513#define ACPI_CEDT_CHBS_VERSION_CXL20 (1)514515/* Values for length field above */516517#define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000)518#define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000)519520/*521* CEDT subtables522*/523524/* 0: CXL Host Bridge Structure */525526struct acpi_cedt_chbs {527struct acpi_cedt_header header;528u32 uid;529u32 cxl_version;530u32 reserved;531u64 base;532u64 length;533};534535/* 1: CXL Fixed Memory Window Structure */536537struct acpi_cedt_cfmws {538struct acpi_cedt_header header;539u32 reserved1;540u64 base_hpa;541u64 window_size;542u8 interleave_ways;543u8 interleave_arithmetic;544u16 reserved2;545u32 granularity;546u16 restrictions;547u16 qtg_id;548u32 interleave_targets[];549};550551struct acpi_cedt_cfmws_target_element {552u32 interleave_target;553};554555/* Values for Interleave Arithmetic field above */556557#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)558#define ACPI_CEDT_CFMWS_ARITHMETIC_XOR (1)559560/* Values for Restrictions field above */561562#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1)563#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1)564#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2)565#define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)566#define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)567568/* 2: CXL XOR Interleave Math Structure */569570struct acpi_cedt_cxims {571struct acpi_cedt_header header;572u16 reserved1;573u8 hbig;574u8 nr_xormaps;575u64 xormap_list[];576};577578struct acpi_cedt_cxims_target_element {579u64 xormap;580};581582/* 3: CXL RCEC Downstream Port Association Structure */583584struct acpi_cedt_rdpas {585struct acpi_cedt_header header;586u16 segment;587u16 bdf;588u8 protocol;589u64 address;590};591592/* Masks for bdf field above */593#define ACPI_CEDT_RDPAS_BUS_MASK 0xff00594#define ACPI_CEDT_RDPAS_DEVICE_MASK 0x00f8595#define ACPI_CEDT_RDPAS_FUNCTION_MASK 0x0007596597#define ACPI_CEDT_RDPAS_PROTOCOL_IO (0)598#define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM (1)599600/*******************************************************************************601*602* CPEP - Corrected Platform Error Polling table (ACPI 4.0)603* Version 1604*605******************************************************************************/606607struct acpi_table_cpep {608struct acpi_table_header header; /* Common ACPI table header */609u64 reserved;610};611612/* Subtable */613614struct acpi_cpep_polling {615struct acpi_subtable_header header;616u8 id; /* Processor ID */617u8 eid; /* Processor EID */618u32 interval; /* Polling interval (msec) */619};620621/*******************************************************************************622*623* CSRT - Core System Resource Table624* Version 0625*626* Conforms to the "Core System Resource Table (CSRT)", November 14, 2011627*628******************************************************************************/629630struct acpi_table_csrt {631struct acpi_table_header header; /* Common ACPI table header */632};633634/* Resource Group subtable */635636struct acpi_csrt_group {637u32 length;638u32 vendor_id;639u32 subvendor_id;640u16 device_id;641u16 subdevice_id;642u16 revision;643u16 reserved;644u32 shared_info_length;645646/* Shared data immediately follows (Length = shared_info_length) */647};648649/* Shared Info subtable */650651struct acpi_csrt_shared_info {652u16 major_version;653u16 minor_version;654u32 mmio_base_low;655u32 mmio_base_high;656u32 gsi_interrupt;657u8 interrupt_polarity;658u8 interrupt_mode;659u8 num_channels;660u8 dma_address_width;661u16 base_request_line;662u16 num_handshake_signals;663u32 max_block_size;664665/* Resource descriptors immediately follow (Length = Group length - shared_info_length) */666};667668/* Resource Descriptor subtable */669670struct acpi_csrt_descriptor {671u32 length;672u16 type;673u16 subtype;674u32 uid;675676/* Resource-specific information immediately follows */677};678679/* Resource Types */680681#define ACPI_CSRT_TYPE_INTERRUPT 0x0001682#define ACPI_CSRT_TYPE_TIMER 0x0002683#define ACPI_CSRT_TYPE_DMA 0x0003684685/* Resource Subtypes */686687#define ACPI_CSRT_XRUPT_LINE 0x0000688#define ACPI_CSRT_XRUPT_CONTROLLER 0x0001689#define ACPI_CSRT_TIMER 0x0000690#define ACPI_CSRT_DMA_CHANNEL 0x0000691#define ACPI_CSRT_DMA_CONTROLLER 0x0001692693/*******************************************************************************694*695* DBG2 - Debug Port Table 2696* Version 0 (Both main table and subtables)697*698* Conforms to "Microsoft Debug Port Table 2 (DBG2)", September 21, 2020699*700******************************************************************************/701702struct acpi_table_dbg2 {703struct acpi_table_header header; /* Common ACPI table header */704u32 info_offset;705u32 info_count;706};707708struct acpi_dbg2_header {709u32 info_offset;710u32 info_count;711};712713/* Debug Device Information Subtable */714715struct acpi_dbg2_device {716u8 revision;717u16 length;718u8 register_count; /* Number of base_address registers */719u16 namepath_length;720u16 namepath_offset;721u16 oem_data_length;722u16 oem_data_offset;723u16 port_type;724u16 port_subtype;725u16 reserved;726u16 base_address_offset;727u16 address_size_offset;728/*729* Data that follows:730* base_address (required) - Each in 12-byte Generic Address Structure format.731* address_size (required) - Array of u32 sizes corresponding to each base_address register.732* Namepath (required) - Null terminated string. Single dot if not supported.733* oem_data (optional) - Length is oem_data_length.734*/735};736737/* Types for port_type field above */738739#define ACPI_DBG2_SERIAL_PORT 0x8000740#define ACPI_DBG2_1394_PORT 0x8001741#define ACPI_DBG2_USB_PORT 0x8002742#define ACPI_DBG2_NET_PORT 0x8003743744/* Subtypes for port_subtype field above */745746#define ACPI_DBG2_16550_COMPATIBLE 0x0000747#define ACPI_DBG2_16550_SUBSET 0x0001748#define ACPI_DBG2_MAX311XE_SPI 0x0002749#define ACPI_DBG2_ARM_PL011 0x0003750#define ACPI_DBG2_MSM8X60 0x0004751#define ACPI_DBG2_16550_NVIDIA 0x0005752#define ACPI_DBG2_TI_OMAP 0x0006753#define ACPI_DBG2_APM88XXXX 0x0008754#define ACPI_DBG2_MSM8974 0x0009755#define ACPI_DBG2_SAM5250 0x000A756#define ACPI_DBG2_INTEL_USIF 0x000B757#define ACPI_DBG2_IMX6 0x000C758#define ACPI_DBG2_ARM_SBSA_32BIT 0x000D759#define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E760#define ACPI_DBG2_ARM_DCC 0x000F761#define ACPI_DBG2_BCM2835 0x0010762#define ACPI_DBG2_SDM845_1_8432MHZ 0x0011763#define ACPI_DBG2_16550_WITH_GAS 0x0012764#define ACPI_DBG2_SDM845_7_372MHZ 0x0013765#define ACPI_DBG2_INTEL_LPSS 0x0014766#define ACPI_DBG2_RISCV_SBI_CON 0x0015767768#define ACPI_DBG2_1394_STANDARD 0x0000769770#define ACPI_DBG2_USB_XHCI 0x0000771#define ACPI_DBG2_USB_EHCI 0x0001772773/*******************************************************************************774*775* DBGP - Debug Port table776* Version 1777*778* Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000779*780******************************************************************************/781782struct acpi_table_dbgp {783struct acpi_table_header header; /* Common ACPI table header */784u8 type; /* 0=full 16550, 1=subset of 16550 */785u8 reserved[3];786struct acpi_generic_address debug_port;787};788789/*******************************************************************************790*791* DMAR - DMA Remapping table792* Version 1793*794* Conforms to "Intel Virtualization Technology for Directed I/O",795* Version 2.3, October 2014796*797******************************************************************************/798799struct acpi_table_dmar {800struct acpi_table_header header; /* Common ACPI table header */801u8 width; /* Host Address Width */802u8 flags;803u8 reserved[10];804};805806/* Masks for Flags field above */807808#define ACPI_DMAR_INTR_REMAP (1)809#define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)810#define ACPI_DMAR_X2APIC_MODE (1<<2)811812/* DMAR subtable header */813814struct acpi_dmar_header {815u16 type;816u16 length;817};818819/* Values for subtable type in struct acpi_dmar_header */820821enum acpi_dmar_type {822ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,823ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,824ACPI_DMAR_TYPE_ROOT_ATS = 2,825ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,826ACPI_DMAR_TYPE_NAMESPACE = 4,827ACPI_DMAR_TYPE_SATC = 5,828ACPI_DMAR_TYPE_SIDP = 6,829ACPI_DMAR_TYPE_RESERVED = 7 /* 7 and greater are reserved */830};831832/* DMAR Device Scope structure */833834struct acpi_dmar_device_scope {835u8 entry_type;836u8 length;837u8 flags;838u8 reserved;839u8 enumeration_id;840u8 bus;841};842843/* Values for entry_type in struct acpi_dmar_device_scope - device types */844845enum acpi_dmar_scope_type {846ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,847ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,848ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,849ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,850ACPI_DMAR_SCOPE_TYPE_HPET = 4,851ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,852ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */853};854855struct acpi_dmar_pci_path {856u8 device;857u8 function;858};859860/*861* DMAR Subtables, correspond to Type in struct acpi_dmar_header862*/863864/* 0: Hardware Unit Definition */865866struct acpi_dmar_hardware_unit {867struct acpi_dmar_header header;868u8 flags;869u8 size; /* Size of the register set */870u16 segment;871u64 address; /* Register Base Address */872};873874/* Masks for Flags field above */875876#define ACPI_DMAR_INCLUDE_ALL (1)877878/* 1: Reserved Memory Definition */879880struct acpi_dmar_reserved_memory {881struct acpi_dmar_header header;882u16 reserved;883u16 segment;884u64 base_address; /* 4K aligned base address */885u64 end_address; /* 4K aligned limit address */886};887888/* Masks for Flags field above */889890#define ACPI_DMAR_ALLOW_ALL (1)891892/* 2: Root Port ATS Capability Reporting Structure */893894struct acpi_dmar_atsr {895struct acpi_dmar_header header;896u8 flags;897u8 reserved;898u16 segment;899};900901/* Masks for Flags field above */902903#define ACPI_DMAR_ALL_PORTS (1)904905/* 3: Remapping Hardware Static Affinity Structure */906907struct acpi_dmar_rhsa {908struct acpi_dmar_header header;909u32 reserved;910u64 base_address;911u32 proximity_domain;912};913914/* 4: ACPI Namespace Device Declaration Structure */915916struct acpi_dmar_andd {917struct acpi_dmar_header header;918u8 reserved[3];919u8 device_number;920union {921char __pad;922ACPI_FLEX_ARRAY(char, device_name);923};924};925926/* 5: SOC Integrated Address Translation Cache Reporting Structure */927928struct acpi_dmar_satc {929struct acpi_dmar_header header;930u8 flags;931u8 reserved;932u16 segment;933};934935/* 6: so_c Integrated Device Property Reporting Structure */936937struct acpi_dmar_sidp {938struct acpi_dmar_header header;939u16 reserved;940u16 segment;941};942943/*******************************************************************************944*945* DRTM - Dynamic Root of Trust for Measurement table946* Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0947* Table version 1948*949******************************************************************************/950951struct acpi_table_drtm {952struct acpi_table_header header; /* Common ACPI table header */953u64 entry_base_address;954u64 entry_length;955u32 entry_address32;956u64 entry_address64;957u64 exit_address;958u64 log_area_address;959u32 log_area_length;960u64 arch_dependent_address;961u32 flags;962};963964/* Flag Definitions for above */965966#define ACPI_DRTM_ACCESS_ALLOWED (1)967#define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)968#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)969#define ACPI_DRTM_AUTHORITY_ORDER (1<<3)970971/* 1) Validated Tables List (64-bit addresses) */972973struct acpi_drtm_vtable_list {974u32 validated_table_count;975u64 validated_tables[];976};977978/* 2) Resources List (of Resource Descriptors) */979980/* Resource Descriptor */981982struct acpi_drtm_resource {983u8 size[7];984u8 type;985u64 address;986};987988struct acpi_drtm_resource_list {989u32 resource_count;990struct acpi_drtm_resource resources[];991};992993/* 3) Platform-specific Identifiers List */994995struct acpi_drtm_dps_id {996u32 dps_id_length;997u8 dps_id[16];998};9991000/*******************************************************************************1001*1002* ECDT - Embedded Controller Boot Resources Table1003* Version 11004*1005******************************************************************************/10061007struct acpi_table_ecdt {1008struct acpi_table_header header; /* Common ACPI table header */1009struct acpi_generic_address control; /* Address of EC command/status register */1010struct acpi_generic_address data; /* Address of EC data register */1011u32 uid; /* Unique ID - must be same as the EC _UID method */1012u8 gpe; /* The GPE for the EC */1013u8 id[]; /* Full namepath of the EC in the ACPI namespace */1014};10151016/*******************************************************************************1017*1018* EINJ - Error Injection Table (ACPI 4.0)1019* Version 11020*1021******************************************************************************/10221023struct acpi_table_einj {1024struct acpi_table_header header; /* Common ACPI table header */1025u32 header_length;1026u8 flags;1027u8 reserved[3];1028u32 entries;1029};10301031/* EINJ Injection Instruction Entries (actions) */10321033struct acpi_einj_entry {1034struct acpi_whea_header whea_header; /* Common header for WHEA tables */1035};10361037/* Masks for Flags field above */10381039#define ACPI_EINJ_PRESERVE (1)10401041/* Values for Action field above */10421043enum acpi_einj_actions {1044ACPI_EINJ_BEGIN_OPERATION = 0x0,1045ACPI_EINJ_GET_TRIGGER_TABLE = 0x1,1046ACPI_EINJ_SET_ERROR_TYPE = 0x2,1047ACPI_EINJ_GET_ERROR_TYPE = 0x3,1048ACPI_EINJ_END_OPERATION = 0x4,1049ACPI_EINJ_EXECUTE_OPERATION = 0x5,1050ACPI_EINJ_CHECK_BUSY_STATUS = 0x6,1051ACPI_EINJ_GET_COMMAND_STATUS = 0x7,1052ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 0x8,1053ACPI_EINJ_GET_EXECUTE_TIMINGS = 0x9,1054ACPI_EINJV2_GET_ERROR_TYPE = 0x11,1055ACPI_EINJ_ACTION_RESERVED = 0x12, /* 0x12 and greater are reserved */1056ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */1057};10581059/* Values for Instruction field above */10601061enum acpi_einj_instructions {1062ACPI_EINJ_READ_REGISTER = 0,1063ACPI_EINJ_READ_REGISTER_VALUE = 1,1064ACPI_EINJ_WRITE_REGISTER = 2,1065ACPI_EINJ_WRITE_REGISTER_VALUE = 3,1066ACPI_EINJ_NOOP = 4,1067ACPI_EINJ_FLUSH_CACHELINE = 5,1068ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */1069};10701071struct acpi_einj_error_type_with_addr {1072u32 error_type;1073u32 vendor_struct_offset;1074u32 flags;1075u32 apic_id;1076u64 address;1077u64 range;1078u32 pcie_id;1079};10801081struct acpi_einj_vendor {1082u32 length;1083u32 pcie_id;1084u16 vendor_id;1085u16 device_id;1086u8 revision_id;1087u8 reserved[3];1088};10891090/* EINJ Trigger Error Action Table */10911092struct acpi_einj_trigger {1093u32 header_size;1094u32 revision;1095u32 table_size;1096u32 entry_count;1097};10981099/* Command status return values */11001101enum acpi_einj_command_status {1102ACPI_EINJ_SUCCESS = 0,1103ACPI_EINJ_FAILURE = 1,1104ACPI_EINJ_INVALID_ACCESS = 2,1105ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */1106};11071108/* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */11091110#define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)1111#define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)1112#define ACPI_EINJ_PROCESSOR_FATAL (1<<2)1113#define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)1114#define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)1115#define ACPI_EINJ_MEMORY_FATAL (1<<5)1116#define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)1117#define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)1118#define ACPI_EINJ_PCIX_FATAL (1<<8)1119#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)1120#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)1121#define ACPI_EINJ_PLATFORM_FATAL (1<<11)1122#define ACPI_EINJ_CXL_CACHE_CORRECTABLE (1<<12)1123#define ACPI_EINJ_CXL_CACHE_UNCORRECTABLE (1<<13)1124#define ACPI_EINJ_CXL_CACHE_FATAL (1<<14)1125#define ACPI_EINJ_CXL_MEM_CORRECTABLE (1<<15)1126#define ACPI_EINJ_CXL_MEM_UNCORRECTABLE (1<<16)1127#define ACPI_EINJ_CXL_MEM_FATAL (1<<17)1128#define ACPI_EINJ_VENDOR_DEFINED (1<<31)11291130/*******************************************************************************1131*1132* ERST - Error Record Serialization Table (ACPI 4.0)1133* Version 11134*1135******************************************************************************/11361137struct acpi_table_erst {1138struct acpi_table_header header; /* Common ACPI table header */1139u32 header_length;1140u32 reserved;1141u32 entries;1142};11431144/* ERST Serialization Entries (actions) */11451146struct acpi_erst_entry {1147struct acpi_whea_header whea_header; /* Common header for WHEA tables */1148};11491150/* Masks for Flags field above */11511152#define ACPI_ERST_PRESERVE (1)11531154/* Values for Action field above */11551156enum acpi_erst_actions {1157ACPI_ERST_BEGIN_WRITE = 0,1158ACPI_ERST_BEGIN_READ = 1,1159ACPI_ERST_BEGIN_CLEAR = 2,1160ACPI_ERST_END = 3,1161ACPI_ERST_SET_RECORD_OFFSET = 4,1162ACPI_ERST_EXECUTE_OPERATION = 5,1163ACPI_ERST_CHECK_BUSY_STATUS = 6,1164ACPI_ERST_GET_COMMAND_STATUS = 7,1165ACPI_ERST_GET_RECORD_ID = 8,1166ACPI_ERST_SET_RECORD_ID = 9,1167ACPI_ERST_GET_RECORD_COUNT = 10,1168ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,1169ACPI_ERST_NOT_USED = 12,1170ACPI_ERST_GET_ERROR_RANGE = 13,1171ACPI_ERST_GET_ERROR_LENGTH = 14,1172ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,1173ACPI_ERST_EXECUTE_TIMINGS = 16,1174ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */1175};11761177/* Values for Instruction field above */11781179enum acpi_erst_instructions {1180ACPI_ERST_READ_REGISTER = 0,1181ACPI_ERST_READ_REGISTER_VALUE = 1,1182ACPI_ERST_WRITE_REGISTER = 2,1183ACPI_ERST_WRITE_REGISTER_VALUE = 3,1184ACPI_ERST_NOOP = 4,1185ACPI_ERST_LOAD_VAR1 = 5,1186ACPI_ERST_LOAD_VAR2 = 6,1187ACPI_ERST_STORE_VAR1 = 7,1188ACPI_ERST_ADD = 8,1189ACPI_ERST_SUBTRACT = 9,1190ACPI_ERST_ADD_VALUE = 10,1191ACPI_ERST_SUBTRACT_VALUE = 11,1192ACPI_ERST_STALL = 12,1193ACPI_ERST_STALL_WHILE_TRUE = 13,1194ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,1195ACPI_ERST_GOTO = 15,1196ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,1197ACPI_ERST_SET_DST_ADDRESS_BASE = 17,1198ACPI_ERST_MOVE_DATA = 18,1199ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */1200};12011202/* Command status return values */12031204enum acpi_erst_command_status {1205ACPI_ERST_SUCCESS = 0,1206ACPI_ERST_NO_SPACE = 1,1207ACPI_ERST_NOT_AVAILABLE = 2,1208ACPI_ERST_FAILURE = 3,1209ACPI_ERST_RECORD_EMPTY = 4,1210ACPI_ERST_NOT_FOUND = 5,1211ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */1212};12131214/* Error Record Serialization Information */12151216struct acpi_erst_info {1217u16 signature; /* Should be "ER" */1218u8 data[48];1219};12201221/*******************************************************************************1222*1223* FPDT - Firmware Performance Data Table (ACPI 5.0)1224* Version 11225*1226******************************************************************************/12271228struct acpi_table_fpdt {1229struct acpi_table_header header; /* Common ACPI table header */1230};12311232/* FPDT subtable header (Performance Record Structure) */12331234struct acpi_fpdt_header {1235u16 type;1236u8 length;1237u8 revision;1238};12391240/* Values for Type field above */12411242enum acpi_fpdt_type {1243ACPI_FPDT_TYPE_BOOT = 0,1244ACPI_FPDT_TYPE_S3PERF = 11245};12461247/*1248* FPDT subtables1249*/12501251/* 0: Firmware Basic Boot Performance Record */12521253struct acpi_fpdt_boot_pointer {1254struct acpi_fpdt_header header;1255u8 reserved[4];1256u64 address;1257};12581259/* 1: S3 Performance Table Pointer Record */12601261struct acpi_fpdt_s3pt_pointer {1262struct acpi_fpdt_header header;1263u8 reserved[4];1264u64 address;1265};12661267/*1268* S3PT - S3 Performance Table. This table is pointed to by the1269* S3 Pointer Record above.1270*/1271struct acpi_table_s3pt {1272u8 signature[4]; /* "S3PT" */1273u32 length;1274};12751276/*1277* S3PT Subtables (Not part of the actual FPDT)1278*/12791280/* Values for Type field in S3PT header */12811282enum acpi_s3pt_type {1283ACPI_S3PT_TYPE_RESUME = 0,1284ACPI_S3PT_TYPE_SUSPEND = 1,1285ACPI_FPDT_BOOT_PERFORMANCE = 21286};12871288struct acpi_s3pt_resume {1289struct acpi_fpdt_header header;1290u32 resume_count;1291u64 full_resume;1292u64 average_resume;1293};12941295struct acpi_s3pt_suspend {1296struct acpi_fpdt_header header;1297u64 suspend_start;1298u64 suspend_end;1299};13001301/*1302* FPDT Boot Performance Record (Not part of the actual FPDT)1303*/1304struct acpi_fpdt_boot {1305struct acpi_fpdt_header header;1306u8 reserved[4];1307u64 reset_end;1308u64 load_start;1309u64 startup_start;1310u64 exit_services_entry;1311u64 exit_services_exit;1312};13131314/*******************************************************************************1315*1316* GTDT - Generic Timer Description Table (ACPI 5.1)1317* Version 21318*1319******************************************************************************/13201321struct acpi_table_gtdt {1322struct acpi_table_header header; /* Common ACPI table header */1323u64 counter_block_addresss;1324u32 reserved;1325u32 secure_el1_interrupt;1326u32 secure_el1_flags;1327u32 non_secure_el1_interrupt;1328u32 non_secure_el1_flags;1329u32 virtual_timer_interrupt;1330u32 virtual_timer_flags;1331u32 non_secure_el2_interrupt;1332u32 non_secure_el2_flags;1333u64 counter_read_block_address;1334u32 platform_timer_count;1335u32 platform_timer_offset;1336};13371338/* Flag Definitions: Timer Block Physical Timers and Virtual timers */13391340#define ACPI_GTDT_INTERRUPT_MODE (1)1341#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)1342#define ACPI_GTDT_ALWAYS_ON (1<<2)13431344struct acpi_gtdt_el2 {1345u32 virtual_el2_timer_gsiv;1346u32 virtual_el2_timer_flags;1347};13481349/* Common GTDT subtable header */13501351struct acpi_gtdt_header {1352u8 type;1353u16 length;1354};13551356/* Values for GTDT subtable type above */13571358enum acpi_gtdt_type {1359ACPI_GTDT_TYPE_TIMER_BLOCK = 0,1360ACPI_GTDT_TYPE_WATCHDOG = 1,1361ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */1362};13631364/* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */13651366/* 0: Generic Timer Block */13671368struct acpi_gtdt_timer_block {1369struct acpi_gtdt_header header;1370u8 reserved;1371u64 block_address;1372u32 timer_count;1373u32 timer_offset;1374};13751376/* Timer Sub-Structure, one per timer */13771378struct acpi_gtdt_timer_entry {1379u8 frame_number;1380u8 reserved[3];1381u64 base_address;1382u64 el0_base_address;1383u32 timer_interrupt;1384u32 timer_flags;1385u32 virtual_timer_interrupt;1386u32 virtual_timer_flags;1387u32 common_flags;1388};13891390/* Flag Definitions: timer_flags and virtual_timer_flags above */13911392#define ACPI_GTDT_GT_IRQ_MODE (1)1393#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)13941395/* Flag Definitions: common_flags above */13961397#define ACPI_GTDT_GT_IS_SECURE_TIMER (1)1398#define ACPI_GTDT_GT_ALWAYS_ON (1<<1)13991400/* 1: SBSA Generic Watchdog Structure */14011402struct acpi_gtdt_watchdog {1403struct acpi_gtdt_header header;1404u8 reserved;1405u64 refresh_frame_address;1406u64 control_frame_address;1407u32 timer_interrupt;1408u32 timer_flags;1409};14101411/* Flag Definitions: timer_flags above */14121413#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)1414#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)1415#define ACPI_GTDT_WATCHDOG_SECURE (1<<2)14161417/*******************************************************************************1418*1419* HEST - Hardware Error Source Table (ACPI 4.0)1420* Version 11421*1422******************************************************************************/14231424struct acpi_table_hest {1425struct acpi_table_header header; /* Common ACPI table header */1426u32 error_source_count;1427};14281429/* HEST subtable header */14301431struct acpi_hest_header {1432u16 type;1433u16 source_id;1434};14351436/* Values for Type field above for subtables */14371438enum acpi_hest_types {1439ACPI_HEST_TYPE_IA32_CHECK = 0,1440ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,1441ACPI_HEST_TYPE_IA32_NMI = 2,1442ACPI_HEST_TYPE_NOT_USED3 = 3,1443ACPI_HEST_TYPE_NOT_USED4 = 4,1444ACPI_HEST_TYPE_NOT_USED5 = 5,1445ACPI_HEST_TYPE_AER_ROOT_PORT = 6,1446ACPI_HEST_TYPE_AER_ENDPOINT = 7,1447ACPI_HEST_TYPE_AER_BRIDGE = 8,1448ACPI_HEST_TYPE_GENERIC_ERROR = 9,1449ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10,1450ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11,1451ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */1452};14531454/*1455* HEST substructures contained in subtables1456*/14571458/*1459* IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and1460* struct acpi_hest_ia_corrected structures.1461*/1462struct acpi_hest_ia_error_bank {1463u8 bank_number;1464u8 clear_status_on_init;1465u8 status_format;1466u8 reserved;1467u32 control_register;1468u64 control_data;1469u32 status_register;1470u32 address_register;1471u32 misc_register;1472};14731474/* Common HEST sub-structure for PCI/AER structures below (6,7,8) */14751476struct acpi_hest_aer_common {1477u16 reserved1;1478u8 flags;1479u8 enabled;1480u32 records_to_preallocate;1481u32 max_sections_per_record;1482u32 bus; /* Bus and Segment numbers */1483u16 device;1484u16 function;1485u16 device_control;1486u16 reserved2;1487u32 uncorrectable_mask;1488u32 uncorrectable_severity;1489u32 correctable_mask;1490u32 advanced_capabilities;1491};14921493/* Masks for HEST Flags fields */14941495#define ACPI_HEST_FIRMWARE_FIRST (1)1496#define ACPI_HEST_GLOBAL (1<<1)1497#define ACPI_HEST_GHES_ASSIST (1<<2)14981499/*1500* Macros to access the bus/segment numbers in Bus field above:1501* Bus number is encoded in bits 7:01502* Segment number is encoded in bits 23:81503*/1504#define ACPI_HEST_BUS(bus) ((bus) & 0xFF)1505#define ACPI_HEST_SEGMENT(bus) (((bus) >> 8) & 0xFFFF)15061507/* Hardware Error Notification */15081509struct acpi_hest_notify {1510u8 type;1511u8 length;1512u16 config_write_enable;1513u32 poll_interval;1514u32 vector;1515u32 polling_threshold_value;1516u32 polling_threshold_window;1517u32 error_threshold_value;1518u32 error_threshold_window;1519};15201521/* Values for Notify Type field above */15221523enum acpi_hest_notify_types {1524ACPI_HEST_NOTIFY_POLLED = 0,1525ACPI_HEST_NOTIFY_EXTERNAL = 1,1526ACPI_HEST_NOTIFY_LOCAL = 2,1527ACPI_HEST_NOTIFY_SCI = 3,1528ACPI_HEST_NOTIFY_NMI = 4,1529ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */1530ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */1531ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */1532ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */1533ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */1534ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */1535ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */1536ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */1537};15381539/* Values for config_write_enable bitfield above */15401541#define ACPI_HEST_TYPE (1)1542#define ACPI_HEST_POLL_INTERVAL (1<<1)1543#define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)1544#define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)1545#define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)1546#define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)15471548/*1549* HEST subtables1550*/15511552/* 0: IA32 Machine Check Exception */15531554struct acpi_hest_ia_machine_check {1555struct acpi_hest_header header;1556u16 reserved1;1557u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */1558u8 enabled;1559u32 records_to_preallocate;1560u32 max_sections_per_record;1561u64 global_capability_data;1562u64 global_control_data;1563u8 num_hardware_banks;1564u8 reserved3[7];1565};15661567/* 1: IA32 Corrected Machine Check */15681569struct acpi_hest_ia_corrected {1570struct acpi_hest_header header;1571u16 reserved1;1572u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */1573u8 enabled;1574u32 records_to_preallocate;1575u32 max_sections_per_record;1576struct acpi_hest_notify notify;1577u8 num_hardware_banks;1578u8 reserved2[3];1579};15801581/* 2: IA32 Non-Maskable Interrupt */15821583struct acpi_hest_ia_nmi {1584struct acpi_hest_header header;1585u32 reserved;1586u32 records_to_preallocate;1587u32 max_sections_per_record;1588u32 max_raw_data_length;1589};15901591/* 3,4,5: Not used */15921593/* 6: PCI Express Root Port AER */15941595struct acpi_hest_aer_root {1596struct acpi_hest_header header;1597struct acpi_hest_aer_common aer;1598u32 root_error_command;1599};16001601/* 7: PCI Express AER (AER Endpoint) */16021603struct acpi_hest_aer {1604struct acpi_hest_header header;1605struct acpi_hest_aer_common aer;1606};16071608/* 8: PCI Express/PCI-X Bridge AER */16091610struct acpi_hest_aer_bridge {1611struct acpi_hest_header header;1612struct acpi_hest_aer_common aer;1613u32 uncorrectable_mask2;1614u32 uncorrectable_severity2;1615u32 advanced_capabilities2;1616};16171618/* 9: Generic Hardware Error Source */16191620struct acpi_hest_generic {1621struct acpi_hest_header header;1622u16 related_source_id;1623u8 reserved;1624u8 enabled;1625u32 records_to_preallocate;1626u32 max_sections_per_record;1627u32 max_raw_data_length;1628struct acpi_generic_address error_status_address;1629struct acpi_hest_notify notify;1630u32 error_block_length;1631};16321633/* 10: Generic Hardware Error Source, version 2 */16341635struct acpi_hest_generic_v2 {1636struct acpi_hest_header header;1637u16 related_source_id;1638u8 reserved;1639u8 enabled;1640u32 records_to_preallocate;1641u32 max_sections_per_record;1642u32 max_raw_data_length;1643struct acpi_generic_address error_status_address;1644struct acpi_hest_notify notify;1645u32 error_block_length;1646struct acpi_generic_address read_ack_register;1647u64 read_ack_preserve;1648u64 read_ack_write;1649};16501651/* Generic Error Status block */16521653struct acpi_hest_generic_status {1654u32 block_status;1655u32 raw_data_offset;1656u32 raw_data_length;1657u32 data_length;1658u32 error_severity;1659};16601661/* Values for block_status flags above */16621663#define ACPI_HEST_UNCORRECTABLE (1)1664#define ACPI_HEST_CORRECTABLE (1<<1)1665#define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)1666#define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)1667#define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */16681669/* Generic Error Data entry */16701671struct acpi_hest_generic_data {1672u8 section_type[16];1673u32 error_severity;1674u16 revision;1675u8 validation_bits;1676u8 flags;1677u32 error_data_length;1678u8 fru_id[16];1679u8 fru_text[20];1680};16811682/* Extension for revision 0x0300 */16831684struct acpi_hest_generic_data_v300 {1685u8 section_type[16];1686u32 error_severity;1687u16 revision;1688u8 validation_bits;1689u8 flags;1690u32 error_data_length;1691u8 fru_id[16];1692u8 fru_text[20];1693u64 time_stamp;1694};16951696/* Values for error_severity above */16971698#define ACPI_HEST_GEN_ERROR_RECOVERABLE 01699#define ACPI_HEST_GEN_ERROR_FATAL 11700#define ACPI_HEST_GEN_ERROR_CORRECTED 21701#define ACPI_HEST_GEN_ERROR_NONE 317021703/* Flags for validation_bits above */17041705#define ACPI_HEST_GEN_VALID_FRU_ID (1)1706#define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)1707#define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)17081709/* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */17101711struct acpi_hest_ia_deferred_check {1712struct acpi_hest_header header;1713u16 reserved1;1714u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */1715u8 enabled;1716u32 records_to_preallocate;1717u32 max_sections_per_record;1718struct acpi_hest_notify notify;1719u8 num_hardware_banks;1720u8 reserved2[3];1721};17221723/*******************************************************************************1724*1725* HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2)1726* Version 11727*1728******************************************************************************/17291730struct acpi_table_hmat {1731struct acpi_table_header header; /* Common ACPI table header */1732u32 reserved;1733};17341735/* Values for HMAT structure types */17361737enum acpi_hmat_type {1738ACPI_HMAT_TYPE_PROXIMITY = 0, /* Memory proximity domain attributes */1739ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */1740ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */1741ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */1742};17431744struct acpi_hmat_structure {1745u16 type;1746u16 reserved;1747u32 length;1748};17491750/*1751* HMAT Structures, correspond to Type in struct acpi_hmat_structure1752*/17531754/* 0: Memory proximity domain attributes */17551756struct acpi_hmat_proximity_domain {1757struct acpi_hmat_structure header;1758u16 flags;1759u16 reserved1;1760u32 processor_PD; /* Processor proximity domain */1761u32 memory_PD; /* Memory proximity domain */1762u32 reserved2;1763u64 reserved3;1764u64 reserved4;1765};17661767/* Masks for Flags field above */17681769#define ACPI_HMAT_PROCESSOR_PD_VALID (1) /* 1: processor_PD field is valid */1770#define ACPI_HMAT_MEMORY_PD_VALID (1<<1) /* 1: memory_PD field is valid */1771#define ACPI_HMAT_RESERVATION_HINT (1<<2) /* 1: Reservation hint */17721773/* 1: System locality latency and bandwidth information */17741775struct acpi_hmat_locality {1776struct acpi_hmat_structure header;1777u8 flags;1778u8 data_type;1779u8 min_transfer_size;1780u8 reserved1;1781u32 number_of_initiator_Pds;1782u32 number_of_target_Pds;1783u32 reserved2;1784u64 entry_base_unit;1785};17861787/* Masks for Flags field above */17881789#define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) /* Bits 0-3 */17901791/* Values for Memory Hierarchy flags */17921793#define ACPI_HMAT_MEMORY 01794#define ACPI_HMAT_LAST_LEVEL_CACHE 11795#define ACPI_HMAT_1ST_LEVEL_CACHE 21796#define ACPI_HMAT_2ND_LEVEL_CACHE 31797#define ACPI_HMAT_3RD_LEVEL_CACHE 41798#define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10 /* Bit 4: ACPI 6.4 */1799#define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20 /* Bit 5: ACPI 6.4 */180018011802/* Values for data_type field above */18031804#define ACPI_HMAT_ACCESS_LATENCY 01805#define ACPI_HMAT_READ_LATENCY 11806#define ACPI_HMAT_WRITE_LATENCY 21807#define ACPI_HMAT_ACCESS_BANDWIDTH 31808#define ACPI_HMAT_READ_BANDWIDTH 41809#define ACPI_HMAT_WRITE_BANDWIDTH 518101811/* 2: Memory side cache information */18121813struct acpi_hmat_cache {1814struct acpi_hmat_structure header;1815u32 memory_PD;1816u32 reserved1;1817u64 cache_size;1818u32 cache_attributes;1819u16 address_mode;1820u16 number_of_SMBIOShandles;1821};18221823/* Masks for cache_attributes field above */18241825#define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)1826#define ACPI_HMAT_CACHE_LEVEL (0x000000F0)1827#define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)1828#define ACPI_HMAT_WRITE_POLICY (0x0000F000)1829#define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)18301831#define ACPI_HMAT_CACHE_MODE_UNKNOWN (0)1832#define ACPI_HMAT_CACHE_MODE_EXTENDED_LINEAR (1)18331834/* Values for cache associativity flag */18351836#define ACPI_HMAT_CA_NONE (0)1837#define ACPI_HMAT_CA_DIRECT_MAPPED (1)1838#define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)18391840/* Values for write policy flag */18411842#define ACPI_HMAT_CP_NONE (0)1843#define ACPI_HMAT_CP_WB (1)1844#define ACPI_HMAT_CP_WT (2)18451846/*******************************************************************************1847*1848* HPET - High Precision Event Timer table1849* Version 11850*1851* Conforms to "IA-PC HPET (High Precision Event Timers) Specification",1852* Version 1.0a, October 20041853*1854******************************************************************************/18551856struct acpi_table_hpet {1857struct acpi_table_header header; /* Common ACPI table header */1858u32 id; /* Hardware ID of event timer block */1859struct acpi_generic_address address; /* Address of event timer block */1860u8 sequence; /* HPET sequence number */1861u16 minimum_tick; /* Main counter min tick, periodic mode */1862u8 flags;1863};18641865/* Masks for Flags field above */18661867#define ACPI_HPET_PAGE_PROTECT_MASK (3)18681869/* Values for Page Protect flags */18701871enum acpi_hpet_page_protect {1872ACPI_HPET_NO_PAGE_PROTECT = 0,1873ACPI_HPET_PAGE_PROTECT4 = 1,1874ACPI_HPET_PAGE_PROTECT64 = 21875};18761877/*******************************************************************************1878*1879* IBFT - Boot Firmware Table1880* Version 11881*1882* Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b1883* Specification", Version 1.01, March 1, 20071884*1885* Note: It appears that this table is not intended to appear in the RSDT/XSDT.1886* Therefore, it is not currently supported by the disassembler.1887*1888******************************************************************************/18891890struct acpi_table_ibft {1891struct acpi_table_header header; /* Common ACPI table header */1892u8 reserved[12];1893};18941895/* IBFT common subtable header */18961897struct acpi_ibft_header {1898u8 type;1899u8 version;1900u16 length;1901u8 index;1902u8 flags;1903};19041905/* Values for Type field above */19061907enum acpi_ibft_type {1908ACPI_IBFT_TYPE_NOT_USED = 0,1909ACPI_IBFT_TYPE_CONTROL = 1,1910ACPI_IBFT_TYPE_INITIATOR = 2,1911ACPI_IBFT_TYPE_NIC = 3,1912ACPI_IBFT_TYPE_TARGET = 4,1913ACPI_IBFT_TYPE_EXTENSIONS = 5,1914ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */1915};19161917/* IBFT subtables */19181919struct acpi_ibft_control {1920struct acpi_ibft_header header;1921u16 extensions;1922u16 initiator_offset;1923u16 nic0_offset;1924u16 target0_offset;1925u16 nic1_offset;1926u16 target1_offset;1927};19281929struct acpi_ibft_initiator {1930struct acpi_ibft_header header;1931u8 sns_server[16];1932u8 slp_server[16];1933u8 primary_server[16];1934u8 secondary_server[16];1935u16 name_length;1936u16 name_offset;1937};19381939struct acpi_ibft_nic {1940struct acpi_ibft_header header;1941u8 ip_address[16];1942u8 subnet_mask_prefix;1943u8 origin;1944u8 gateway[16];1945u8 primary_dns[16];1946u8 secondary_dns[16];1947u8 dhcp[16];1948u16 vlan;1949u8 mac_address[6];1950u16 pci_address;1951u16 name_length;1952u16 name_offset;1953};19541955struct acpi_ibft_target {1956struct acpi_ibft_header header;1957u8 target_ip_address[16];1958u16 target_ip_socket;1959u8 target_boot_lun[8];1960u8 chap_type;1961u8 nic_association;1962u16 target_name_length;1963u16 target_name_offset;1964u16 chap_name_length;1965u16 chap_name_offset;1966u16 chap_secret_length;1967u16 chap_secret_offset;1968u16 reverse_chap_name_length;1969u16 reverse_chap_name_offset;1970u16 reverse_chap_secret_length;1971u16 reverse_chap_secret_offset;1972};19731974/* Reset to default packing */19751976#pragma pack()19771978#endif /* __ACTBL1_H__ */197919801981