/* 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)567#define ACPI_CEDT_CFMWS_RESTRICT_BI (1<<5)568569/* 2: CXL XOR Interleave Math Structure */570571struct acpi_cedt_cxims {572struct acpi_cedt_header header;573u16 reserved1;574u8 hbig;575u8 nr_xormaps;576u64 xormap_list[];577};578579struct acpi_cedt_cxims_target_element {580u64 xormap;581};582583/* 3: CXL RCEC Downstream Port Association Structure */584585struct acpi_cedt_rdpas {586struct acpi_cedt_header header;587u16 segment;588u16 bdf;589u8 protocol;590u64 address;591};592593/* Masks for bdf field above */594#define ACPI_CEDT_RDPAS_BUS_MASK 0xff00595#define ACPI_CEDT_RDPAS_DEVICE_MASK 0x00f8596#define ACPI_CEDT_RDPAS_FUNCTION_MASK 0x0007597598#define ACPI_CEDT_RDPAS_PROTOCOL_IO (0)599#define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM (1)600601/*******************************************************************************602*603* CPEP - Corrected Platform Error Polling table (ACPI 4.0)604* Version 1605*606******************************************************************************/607608struct acpi_table_cpep {609struct acpi_table_header header; /* Common ACPI table header */610u64 reserved;611};612613/* Subtable */614615struct acpi_cpep_polling {616struct acpi_subtable_header header;617u8 id; /* Processor ID */618u8 eid; /* Processor EID */619u32 interval; /* Polling interval (msec) */620};621622/*******************************************************************************623*624* CSRT - Core System Resource Table625* Version 0626*627* Conforms to the "Core System Resource Table (CSRT)", November 14, 2011628*629******************************************************************************/630631struct acpi_table_csrt {632struct acpi_table_header header; /* Common ACPI table header */633};634635/* Resource Group subtable */636637struct acpi_csrt_group {638u32 length;639u32 vendor_id;640u32 subvendor_id;641u16 device_id;642u16 subdevice_id;643u16 revision;644u16 reserved;645u32 shared_info_length;646647/* Shared data immediately follows (Length = shared_info_length) */648};649650/* Shared Info subtable */651652struct acpi_csrt_shared_info {653u16 major_version;654u16 minor_version;655u32 mmio_base_low;656u32 mmio_base_high;657u32 gsi_interrupt;658u8 interrupt_polarity;659u8 interrupt_mode;660u8 num_channels;661u8 dma_address_width;662u16 base_request_line;663u16 num_handshake_signals;664u32 max_block_size;665666/* Resource descriptors immediately follow (Length = Group length - shared_info_length) */667};668669/* Resource Descriptor subtable */670671struct acpi_csrt_descriptor {672u32 length;673u16 type;674u16 subtype;675u32 uid;676677/* Resource-specific information immediately follows */678};679680/* Resource Types */681682#define ACPI_CSRT_TYPE_INTERRUPT 0x0001683#define ACPI_CSRT_TYPE_TIMER 0x0002684#define ACPI_CSRT_TYPE_DMA 0x0003685686/* Resource Subtypes */687688#define ACPI_CSRT_XRUPT_LINE 0x0000689#define ACPI_CSRT_XRUPT_CONTROLLER 0x0001690#define ACPI_CSRT_TIMER 0x0000691#define ACPI_CSRT_DMA_CHANNEL 0x0000692#define ACPI_CSRT_DMA_CONTROLLER 0x0001693694/*******************************************************************************695*696* DBG2 - Debug Port Table 2697* Version 0 (Both main table and subtables)698*699* Conforms to "Microsoft Debug Port Table 2 (DBG2)", September 21, 2020700*701******************************************************************************/702703struct acpi_table_dbg2 {704struct acpi_table_header header; /* Common ACPI table header */705u32 info_offset;706u32 info_count;707};708709struct acpi_dbg2_header {710u32 info_offset;711u32 info_count;712};713714/* Debug Device Information Subtable */715716struct acpi_dbg2_device {717u8 revision;718u16 length;719u8 register_count; /* Number of base_address registers */720u16 namepath_length;721u16 namepath_offset;722u16 oem_data_length;723u16 oem_data_offset;724u16 port_type;725u16 port_subtype;726u16 reserved;727u16 base_address_offset;728u16 address_size_offset;729/*730* Data that follows:731* base_address (required) - Each in 12-byte Generic Address Structure format.732* address_size (required) - Array of u32 sizes corresponding to each base_address register.733* Namepath (required) - Null terminated string. Single dot if not supported.734* oem_data (optional) - Length is oem_data_length.735*/736};737738/* Types for port_type field above */739740#define ACPI_DBG2_SERIAL_PORT 0x8000741#define ACPI_DBG2_1394_PORT 0x8001742#define ACPI_DBG2_USB_PORT 0x8002743#define ACPI_DBG2_NET_PORT 0x8003744745/* Subtypes for port_subtype field above */746747#define ACPI_DBG2_16550_COMPATIBLE 0x0000748#define ACPI_DBG2_16550_SUBSET 0x0001749#define ACPI_DBG2_MAX311XE_SPI 0x0002750#define ACPI_DBG2_ARM_PL011 0x0003751#define ACPI_DBG2_MSM8X60 0x0004752#define ACPI_DBG2_16550_NVIDIA 0x0005753#define ACPI_DBG2_TI_OMAP 0x0006754#define ACPI_DBG2_APM88XXXX 0x0008755#define ACPI_DBG2_MSM8974 0x0009756#define ACPI_DBG2_SAM5250 0x000A757#define ACPI_DBG2_INTEL_USIF 0x000B758#define ACPI_DBG2_IMX6 0x000C759#define ACPI_DBG2_ARM_SBSA_32BIT 0x000D760#define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E761#define ACPI_DBG2_ARM_DCC 0x000F762#define ACPI_DBG2_BCM2835 0x0010763#define ACPI_DBG2_SDM845_1_8432MHZ 0x0011764#define ACPI_DBG2_16550_WITH_GAS 0x0012765#define ACPI_DBG2_SDM845_7_372MHZ 0x0013766#define ACPI_DBG2_INTEL_LPSS 0x0014767#define ACPI_DBG2_RISCV_SBI_CON 0x0015768769#define ACPI_DBG2_1394_STANDARD 0x0000770771#define ACPI_DBG2_USB_XHCI 0x0000772#define ACPI_DBG2_USB_EHCI 0x0001773774/*******************************************************************************775*776* DBGP - Debug Port table777* Version 1778*779* Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000780*781******************************************************************************/782783struct acpi_table_dbgp {784struct acpi_table_header header; /* Common ACPI table header */785u8 type; /* 0=full 16550, 1=subset of 16550 */786u8 reserved[3];787struct acpi_generic_address debug_port;788};789790/*******************************************************************************791*792* DMAR - DMA Remapping table793* Version 1794*795* Conforms to "Intel Virtualization Technology for Directed I/O",796* Version 2.3, October 2014797*798******************************************************************************/799800struct acpi_table_dmar {801struct acpi_table_header header; /* Common ACPI table header */802u8 width; /* Host Address Width */803u8 flags;804u8 reserved[10];805};806807/* Masks for Flags field above */808809#define ACPI_DMAR_INTR_REMAP (1)810#define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)811#define ACPI_DMAR_X2APIC_MODE (1<<2)812813/* DMAR subtable header */814815struct acpi_dmar_header {816u16 type;817u16 length;818};819820/* Values for subtable type in struct acpi_dmar_header */821822enum acpi_dmar_type {823ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,824ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,825ACPI_DMAR_TYPE_ROOT_ATS = 2,826ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,827ACPI_DMAR_TYPE_NAMESPACE = 4,828ACPI_DMAR_TYPE_SATC = 5,829ACPI_DMAR_TYPE_SIDP = 6,830ACPI_DMAR_TYPE_RESERVED = 7 /* 7 and greater are reserved */831};832833/* DMAR Device Scope structure */834835struct acpi_dmar_device_scope {836u8 entry_type;837u8 length;838u8 flags;839u8 reserved;840u8 enumeration_id;841u8 bus;842};843844/* Values for entry_type in struct acpi_dmar_device_scope - device types */845846enum acpi_dmar_scope_type {847ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,848ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,849ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,850ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,851ACPI_DMAR_SCOPE_TYPE_HPET = 4,852ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,853ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */854};855856struct acpi_dmar_pci_path {857u8 device;858u8 function;859};860861/*862* DMAR Subtables, correspond to Type in struct acpi_dmar_header863*/864865/* 0: Hardware Unit Definition */866867struct acpi_dmar_hardware_unit {868struct acpi_dmar_header header;869u8 flags;870u8 size; /* Size of the register set */871u16 segment;872u64 address; /* Register Base Address */873};874875/* Masks for Flags field above */876877#define ACPI_DMAR_INCLUDE_ALL (1)878879/* 1: Reserved Memory Definition */880881struct acpi_dmar_reserved_memory {882struct acpi_dmar_header header;883u16 reserved;884u16 segment;885u64 base_address; /* 4K aligned base address */886u64 end_address; /* 4K aligned limit address */887};888889/* Masks for Flags field above */890891#define ACPI_DMAR_ALLOW_ALL (1)892893/* 2: Root Port ATS Capability Reporting Structure */894895struct acpi_dmar_atsr {896struct acpi_dmar_header header;897u8 flags;898u8 reserved;899u16 segment;900};901902/* Masks for Flags field above */903904#define ACPI_DMAR_ALL_PORTS (1)905906/* 3: Remapping Hardware Static Affinity Structure */907908struct acpi_dmar_rhsa {909struct acpi_dmar_header header;910u32 reserved;911u64 base_address;912u32 proximity_domain;913};914915/* 4: ACPI Namespace Device Declaration Structure */916917struct acpi_dmar_andd {918struct acpi_dmar_header header;919u8 reserved[3];920u8 device_number;921union {922char __pad;923ACPI_FLEX_ARRAY(char, device_name);924};925};926927/* 5: SOC Integrated Address Translation Cache Reporting Structure */928929struct acpi_dmar_satc {930struct acpi_dmar_header header;931u8 flags;932u8 reserved;933u16 segment;934};935936/* 6: so_c Integrated Device Property Reporting Structure */937938struct acpi_dmar_sidp {939struct acpi_dmar_header header;940u16 reserved;941u16 segment;942};943944/*******************************************************************************945*946* DRTM - Dynamic Root of Trust for Measurement table947* Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0948* Table version 1949*950******************************************************************************/951952struct acpi_table_drtm {953struct acpi_table_header header; /* Common ACPI table header */954u64 entry_base_address;955u64 entry_length;956u32 entry_address32;957u64 entry_address64;958u64 exit_address;959u64 log_area_address;960u32 log_area_length;961u64 arch_dependent_address;962u32 flags;963};964965/* Flag Definitions for above */966967#define ACPI_DRTM_ACCESS_ALLOWED (1)968#define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)969#define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)970#define ACPI_DRTM_AUTHORITY_ORDER (1<<3)971972/* 1) Validated Tables List (64-bit addresses) */973974struct acpi_drtm_vtable_list {975u32 validated_table_count;976u64 validated_tables[];977};978979/* 2) Resources List (of Resource Descriptors) */980981/* Resource Descriptor */982983struct acpi_drtm_resource {984u8 size[7];985u8 type;986u64 address;987};988989struct acpi_drtm_resource_list {990u32 resource_count;991struct acpi_drtm_resource resources[];992};993994/* 3) Platform-specific Identifiers List */995996struct acpi_drtm_dps_id {997u32 dps_id_length;998u8 dps_id[16];999};10001001/*******************************************************************************1002*1003* ECDT - Embedded Controller Boot Resources Table1004* Version 11005*1006******************************************************************************/10071008struct acpi_table_ecdt {1009struct acpi_table_header header; /* Common ACPI table header */1010struct acpi_generic_address control; /* Address of EC command/status register */1011struct acpi_generic_address data; /* Address of EC data register */1012u32 uid; /* Unique ID - must be same as the EC _UID method */1013u8 gpe; /* The GPE for the EC */1014u8 id[]; /* Full namepath of the EC in the ACPI namespace */1015};10161017/*******************************************************************************1018*1019* EINJ - Error Injection Table (ACPI 4.0)1020* Version 11021*1022******************************************************************************/10231024struct acpi_table_einj {1025struct acpi_table_header header; /* Common ACPI table header */1026u32 header_length;1027u8 flags;1028u8 reserved[3];1029u32 entries;1030};10311032/* EINJ Injection Instruction Entries (actions) */10331034struct acpi_einj_entry {1035struct acpi_whea_header whea_header; /* Common header for WHEA tables */1036};10371038/* Masks for Flags field above */10391040#define ACPI_EINJ_PRESERVE (1)10411042/* Values for Action field above */10431044enum acpi_einj_actions {1045ACPI_EINJ_BEGIN_OPERATION = 0x0,1046ACPI_EINJ_GET_TRIGGER_TABLE = 0x1,1047ACPI_EINJ_SET_ERROR_TYPE = 0x2,1048ACPI_EINJ_GET_ERROR_TYPE = 0x3,1049ACPI_EINJ_END_OPERATION = 0x4,1050ACPI_EINJ_EXECUTE_OPERATION = 0x5,1051ACPI_EINJ_CHECK_BUSY_STATUS = 0x6,1052ACPI_EINJ_GET_COMMAND_STATUS = 0x7,1053ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 0x8,1054ACPI_EINJ_GET_EXECUTE_TIMINGS = 0x9,1055ACPI_EINJV2_GET_ERROR_TYPE = 0x11,1056ACPI_EINJ_ACTION_RESERVED = 0x12, /* 0x12 and greater are reserved */1057ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */1058};10591060/* Values for Instruction field above */10611062enum acpi_einj_instructions {1063ACPI_EINJ_READ_REGISTER = 0,1064ACPI_EINJ_READ_REGISTER_VALUE = 1,1065ACPI_EINJ_WRITE_REGISTER = 2,1066ACPI_EINJ_WRITE_REGISTER_VALUE = 3,1067ACPI_EINJ_NOOP = 4,1068ACPI_EINJ_FLUSH_CACHELINE = 5,1069ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */1070};10711072struct acpi_einj_error_type_with_addr {1073u32 error_type;1074u32 vendor_struct_offset;1075u32 flags;1076u32 apic_id;1077u64 address;1078u64 range;1079u32 pcie_id;1080};10811082struct acpi_einj_vendor {1083u32 length;1084u32 pcie_id;1085u16 vendor_id;1086u16 device_id;1087u8 revision_id;1088u8 reserved[3];1089};10901091/* EINJ Trigger Error Action Table */10921093struct acpi_einj_trigger {1094u32 header_size;1095u32 revision;1096u32 table_size;1097u32 entry_count;1098};10991100/* Command status return values */11011102enum acpi_einj_command_status {1103ACPI_EINJ_SUCCESS = 0,1104ACPI_EINJ_FAILURE = 1,1105ACPI_EINJ_INVALID_ACCESS = 2,1106ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */1107};11081109/* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */11101111#define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)1112#define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)1113#define ACPI_EINJ_PROCESSOR_FATAL (1<<2)1114#define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)1115#define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)1116#define ACPI_EINJ_MEMORY_FATAL (1<<5)1117#define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)1118#define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)1119#define ACPI_EINJ_PCIX_FATAL (1<<8)1120#define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)1121#define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)1122#define ACPI_EINJ_PLATFORM_FATAL (1<<11)1123#define ACPI_EINJ_CXL_CACHE_CORRECTABLE (1<<12)1124#define ACPI_EINJ_CXL_CACHE_UNCORRECTABLE (1<<13)1125#define ACPI_EINJ_CXL_CACHE_FATAL (1<<14)1126#define ACPI_EINJ_CXL_MEM_CORRECTABLE (1<<15)1127#define ACPI_EINJ_CXL_MEM_UNCORRECTABLE (1<<16)1128#define ACPI_EINJ_CXL_MEM_FATAL (1<<17)1129#define ACPI_EINJ_VENDOR_DEFINED (1<<31)11301131/*******************************************************************************1132*1133* ERST - Error Record Serialization Table (ACPI 4.0)1134* Version 11135*1136******************************************************************************/11371138struct acpi_table_erst {1139struct acpi_table_header header; /* Common ACPI table header */1140u32 header_length;1141u32 reserved;1142u32 entries;1143};11441145/* ERST Serialization Entries (actions) */11461147struct acpi_erst_entry {1148struct acpi_whea_header whea_header; /* Common header for WHEA tables */1149};11501151/* Masks for Flags field above */11521153#define ACPI_ERST_PRESERVE (1)11541155/* Values for Action field above */11561157enum acpi_erst_actions {1158ACPI_ERST_BEGIN_WRITE = 0,1159ACPI_ERST_BEGIN_READ = 1,1160ACPI_ERST_BEGIN_CLEAR = 2,1161ACPI_ERST_END = 3,1162ACPI_ERST_SET_RECORD_OFFSET = 4,1163ACPI_ERST_EXECUTE_OPERATION = 5,1164ACPI_ERST_CHECK_BUSY_STATUS = 6,1165ACPI_ERST_GET_COMMAND_STATUS = 7,1166ACPI_ERST_GET_RECORD_ID = 8,1167ACPI_ERST_SET_RECORD_ID = 9,1168ACPI_ERST_GET_RECORD_COUNT = 10,1169ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,1170ACPI_ERST_NOT_USED = 12,1171ACPI_ERST_GET_ERROR_RANGE = 13,1172ACPI_ERST_GET_ERROR_LENGTH = 14,1173ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,1174ACPI_ERST_EXECUTE_TIMINGS = 16,1175ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */1176};11771178/* Values for Instruction field above */11791180enum acpi_erst_instructions {1181ACPI_ERST_READ_REGISTER = 0,1182ACPI_ERST_READ_REGISTER_VALUE = 1,1183ACPI_ERST_WRITE_REGISTER = 2,1184ACPI_ERST_WRITE_REGISTER_VALUE = 3,1185ACPI_ERST_NOOP = 4,1186ACPI_ERST_LOAD_VAR1 = 5,1187ACPI_ERST_LOAD_VAR2 = 6,1188ACPI_ERST_STORE_VAR1 = 7,1189ACPI_ERST_ADD = 8,1190ACPI_ERST_SUBTRACT = 9,1191ACPI_ERST_ADD_VALUE = 10,1192ACPI_ERST_SUBTRACT_VALUE = 11,1193ACPI_ERST_STALL = 12,1194ACPI_ERST_STALL_WHILE_TRUE = 13,1195ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,1196ACPI_ERST_GOTO = 15,1197ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,1198ACPI_ERST_SET_DST_ADDRESS_BASE = 17,1199ACPI_ERST_MOVE_DATA = 18,1200ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */1201};12021203/* Command status return values */12041205enum acpi_erst_command_status {1206ACPI_ERST_SUCCESS = 0,1207ACPI_ERST_NO_SPACE = 1,1208ACPI_ERST_NOT_AVAILABLE = 2,1209ACPI_ERST_FAILURE = 3,1210ACPI_ERST_RECORD_EMPTY = 4,1211ACPI_ERST_NOT_FOUND = 5,1212ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */1213};12141215/* Error Record Serialization Information */12161217struct acpi_erst_info {1218u16 signature; /* Should be "ER" */1219u8 data[48];1220};12211222/*******************************************************************************1223*1224* FPDT - Firmware Performance Data Table (ACPI 5.0)1225* Version 11226*1227******************************************************************************/12281229struct acpi_table_fpdt {1230struct acpi_table_header header; /* Common ACPI table header */1231};12321233/* FPDT subtable header (Performance Record Structure) */12341235struct acpi_fpdt_header {1236u16 type;1237u8 length;1238u8 revision;1239};12401241/* Values for Type field above */12421243enum acpi_fpdt_type {1244ACPI_FPDT_TYPE_BOOT = 0,1245ACPI_FPDT_TYPE_S3PERF = 11246};12471248/*1249* FPDT subtables1250*/12511252/* 0: Firmware Basic Boot Performance Record */12531254struct acpi_fpdt_boot_pointer {1255struct acpi_fpdt_header header;1256u8 reserved[4];1257u64 address;1258};12591260/* 1: S3 Performance Table Pointer Record */12611262struct acpi_fpdt_s3pt_pointer {1263struct acpi_fpdt_header header;1264u8 reserved[4];1265u64 address;1266};12671268/*1269* S3PT - S3 Performance Table. This table is pointed to by the1270* S3 Pointer Record above.1271*/1272struct acpi_table_s3pt {1273u8 signature[4]; /* "S3PT" */1274u32 length;1275};12761277/*1278* S3PT Subtables (Not part of the actual FPDT)1279*/12801281/* Values for Type field in S3PT header */12821283enum acpi_s3pt_type {1284ACPI_S3PT_TYPE_RESUME = 0,1285ACPI_S3PT_TYPE_SUSPEND = 1,1286ACPI_FPDT_BOOT_PERFORMANCE = 21287};12881289struct acpi_s3pt_resume {1290struct acpi_fpdt_header header;1291u32 resume_count;1292u64 full_resume;1293u64 average_resume;1294};12951296struct acpi_s3pt_suspend {1297struct acpi_fpdt_header header;1298u64 suspend_start;1299u64 suspend_end;1300};13011302/*1303* FPDT Boot Performance Record (Not part of the actual FPDT)1304*/1305struct acpi_fpdt_boot {1306struct acpi_fpdt_header header;1307u8 reserved[4];1308u64 reset_end;1309u64 load_start;1310u64 startup_start;1311u64 exit_services_entry;1312u64 exit_services_exit;1313};13141315/*******************************************************************************1316*1317* GTDT - Generic Timer Description Table (ACPI 5.1)1318* Version 21319*1320******************************************************************************/13211322struct acpi_table_gtdt {1323struct acpi_table_header header; /* Common ACPI table header */1324u64 counter_block_addresss;1325u32 reserved;1326u32 secure_el1_interrupt;1327u32 secure_el1_flags;1328u32 non_secure_el1_interrupt;1329u32 non_secure_el1_flags;1330u32 virtual_timer_interrupt;1331u32 virtual_timer_flags;1332u32 non_secure_el2_interrupt;1333u32 non_secure_el2_flags;1334u64 counter_read_block_address;1335u32 platform_timer_count;1336u32 platform_timer_offset;1337};13381339/* Flag Definitions: Timer Block Physical Timers and Virtual timers */13401341#define ACPI_GTDT_INTERRUPT_MODE (1)1342#define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)1343#define ACPI_GTDT_ALWAYS_ON (1<<2)13441345struct acpi_gtdt_el2 {1346u32 virtual_el2_timer_gsiv;1347u32 virtual_el2_timer_flags;1348};13491350/* Common GTDT subtable header */13511352struct acpi_gtdt_header {1353u8 type;1354u16 length;1355};13561357/* Values for GTDT subtable type above */13581359enum acpi_gtdt_type {1360ACPI_GTDT_TYPE_TIMER_BLOCK = 0,1361ACPI_GTDT_TYPE_WATCHDOG = 1,1362ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */1363};13641365/* GTDT Subtables, correspond to Type in struct acpi_gtdt_header */13661367/* 0: Generic Timer Block */13681369struct acpi_gtdt_timer_block {1370struct acpi_gtdt_header header;1371u8 reserved;1372u64 block_address;1373u32 timer_count;1374u32 timer_offset;1375};13761377/* Timer Sub-Structure, one per timer */13781379struct acpi_gtdt_timer_entry {1380u8 frame_number;1381u8 reserved[3];1382u64 base_address;1383u64 el0_base_address;1384u32 timer_interrupt;1385u32 timer_flags;1386u32 virtual_timer_interrupt;1387u32 virtual_timer_flags;1388u32 common_flags;1389};13901391/* Flag Definitions: timer_flags and virtual_timer_flags above */13921393#define ACPI_GTDT_GT_IRQ_MODE (1)1394#define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)13951396/* Flag Definitions: common_flags above */13971398#define ACPI_GTDT_GT_IS_SECURE_TIMER (1)1399#define ACPI_GTDT_GT_ALWAYS_ON (1<<1)14001401/* 1: SBSA Generic Watchdog Structure */14021403struct acpi_gtdt_watchdog {1404struct acpi_gtdt_header header;1405u8 reserved;1406u64 refresh_frame_address;1407u64 control_frame_address;1408u32 timer_interrupt;1409u32 timer_flags;1410};14111412/* Flag Definitions: timer_flags above */14131414#define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)1415#define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)1416#define ACPI_GTDT_WATCHDOG_SECURE (1<<2)14171418/*******************************************************************************1419*1420* HEST - Hardware Error Source Table (ACPI 4.0)1421* Version 11422*1423******************************************************************************/14241425struct acpi_table_hest {1426struct acpi_table_header header; /* Common ACPI table header */1427u32 error_source_count;1428};14291430/* HEST subtable header */14311432struct acpi_hest_header {1433u16 type;1434u16 source_id;1435};14361437/* Values for Type field above for subtables */14381439enum acpi_hest_types {1440ACPI_HEST_TYPE_IA32_CHECK = 0,1441ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,1442ACPI_HEST_TYPE_IA32_NMI = 2,1443ACPI_HEST_TYPE_NOT_USED3 = 3,1444ACPI_HEST_TYPE_NOT_USED4 = 4,1445ACPI_HEST_TYPE_NOT_USED5 = 5,1446ACPI_HEST_TYPE_AER_ROOT_PORT = 6,1447ACPI_HEST_TYPE_AER_ENDPOINT = 7,1448ACPI_HEST_TYPE_AER_BRIDGE = 8,1449ACPI_HEST_TYPE_GENERIC_ERROR = 9,1450ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10,1451ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11,1452ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */1453};14541455/*1456* HEST substructures contained in subtables1457*/14581459/*1460* IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and1461* struct acpi_hest_ia_corrected structures.1462*/1463struct acpi_hest_ia_error_bank {1464u8 bank_number;1465u8 clear_status_on_init;1466u8 status_format;1467u8 reserved;1468u32 control_register;1469u64 control_data;1470u32 status_register;1471u32 address_register;1472u32 misc_register;1473};14741475/* Common HEST sub-structure for PCI/AER structures below (6,7,8) */14761477struct acpi_hest_aer_common {1478u16 reserved1;1479u8 flags;1480u8 enabled;1481u32 records_to_preallocate;1482u32 max_sections_per_record;1483u32 bus; /* Bus and Segment numbers */1484u16 device;1485u16 function;1486u16 device_control;1487u16 reserved2;1488u32 uncorrectable_mask;1489u32 uncorrectable_severity;1490u32 correctable_mask;1491u32 advanced_capabilities;1492};14931494/* Masks for HEST Flags fields */14951496#define ACPI_HEST_FIRMWARE_FIRST (1)1497#define ACPI_HEST_GLOBAL (1<<1)1498#define ACPI_HEST_GHES_ASSIST (1<<2)14991500/*1501* Macros to access the bus/segment numbers in Bus field above:1502* Bus number is encoded in bits 7:01503* Segment number is encoded in bits 23:81504*/1505#define ACPI_HEST_BUS(bus) ((bus) & 0xFF)1506#define ACPI_HEST_SEGMENT(bus) (((bus) >> 8) & 0xFFFF)15071508/* Hardware Error Notification */15091510struct acpi_hest_notify {1511u8 type;1512u8 length;1513u16 config_write_enable;1514u32 poll_interval;1515u32 vector;1516u32 polling_threshold_value;1517u32 polling_threshold_window;1518u32 error_threshold_value;1519u32 error_threshold_window;1520};15211522/* Values for Notify Type field above */15231524enum acpi_hest_notify_types {1525ACPI_HEST_NOTIFY_POLLED = 0,1526ACPI_HEST_NOTIFY_EXTERNAL = 1,1527ACPI_HEST_NOTIFY_LOCAL = 2,1528ACPI_HEST_NOTIFY_SCI = 3,1529ACPI_HEST_NOTIFY_NMI = 4,1530ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */1531ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */1532ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */1533ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */1534ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */1535ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */1536ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */1537ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */1538};15391540/* Values for config_write_enable bitfield above */15411542#define ACPI_HEST_TYPE (1)1543#define ACPI_HEST_POLL_INTERVAL (1<<1)1544#define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)1545#define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)1546#define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)1547#define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)15481549/*1550* HEST subtables1551*/15521553/* 0: IA32 Machine Check Exception */15541555struct acpi_hest_ia_machine_check {1556struct acpi_hest_header header;1557u16 reserved1;1558u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */1559u8 enabled;1560u32 records_to_preallocate;1561u32 max_sections_per_record;1562u64 global_capability_data;1563u64 global_control_data;1564u8 num_hardware_banks;1565u8 reserved3[7];1566};15671568/* 1: IA32 Corrected Machine Check */15691570struct acpi_hest_ia_corrected {1571struct acpi_hest_header header;1572u16 reserved1;1573u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */1574u8 enabled;1575u32 records_to_preallocate;1576u32 max_sections_per_record;1577struct acpi_hest_notify notify;1578u8 num_hardware_banks;1579u8 reserved2[3];1580};15811582/* 2: IA32 Non-Maskable Interrupt */15831584struct acpi_hest_ia_nmi {1585struct acpi_hest_header header;1586u32 reserved;1587u32 records_to_preallocate;1588u32 max_sections_per_record;1589u32 max_raw_data_length;1590};15911592/* 3,4,5: Not used */15931594/* 6: PCI Express Root Port AER */15951596struct acpi_hest_aer_root {1597struct acpi_hest_header header;1598struct acpi_hest_aer_common aer;1599u32 root_error_command;1600};16011602/* 7: PCI Express AER (AER Endpoint) */16031604struct acpi_hest_aer {1605struct acpi_hest_header header;1606struct acpi_hest_aer_common aer;1607};16081609/* 8: PCI Express/PCI-X Bridge AER */16101611struct acpi_hest_aer_bridge {1612struct acpi_hest_header header;1613struct acpi_hest_aer_common aer;1614u32 uncorrectable_mask2;1615u32 uncorrectable_severity2;1616u32 advanced_capabilities2;1617};16181619/* 9: Generic Hardware Error Source */16201621struct acpi_hest_generic {1622struct acpi_hest_header header;1623u16 related_source_id;1624u8 reserved;1625u8 enabled;1626u32 records_to_preallocate;1627u32 max_sections_per_record;1628u32 max_raw_data_length;1629struct acpi_generic_address error_status_address;1630struct acpi_hest_notify notify;1631u32 error_block_length;1632};16331634/* 10: Generic Hardware Error Source, version 2 */16351636struct acpi_hest_generic_v2 {1637struct acpi_hest_header header;1638u16 related_source_id;1639u8 reserved;1640u8 enabled;1641u32 records_to_preallocate;1642u32 max_sections_per_record;1643u32 max_raw_data_length;1644struct acpi_generic_address error_status_address;1645struct acpi_hest_notify notify;1646u32 error_block_length;1647struct acpi_generic_address read_ack_register;1648u64 read_ack_preserve;1649u64 read_ack_write;1650};16511652/* Generic Error Status block */16531654struct acpi_hest_generic_status {1655u32 block_status;1656u32 raw_data_offset;1657u32 raw_data_length;1658u32 data_length;1659u32 error_severity;1660};16611662/* Values for block_status flags above */16631664#define ACPI_HEST_UNCORRECTABLE (1)1665#define ACPI_HEST_CORRECTABLE (1<<1)1666#define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)1667#define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)1668#define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */16691670/* Generic Error Data entry */16711672struct acpi_hest_generic_data {1673u8 section_type[16];1674u32 error_severity;1675u16 revision;1676u8 validation_bits;1677u8 flags;1678u32 error_data_length;1679u8 fru_id[16];1680u8 fru_text[20];1681};16821683/* Extension for revision 0x0300 */16841685struct acpi_hest_generic_data_v300 {1686u8 section_type[16];1687u32 error_severity;1688u16 revision;1689u8 validation_bits;1690u8 flags;1691u32 error_data_length;1692u8 fru_id[16];1693u8 fru_text[20];1694u64 time_stamp;1695};16961697/* Values for error_severity above */16981699#define ACPI_HEST_GEN_ERROR_RECOVERABLE 01700#define ACPI_HEST_GEN_ERROR_FATAL 11701#define ACPI_HEST_GEN_ERROR_CORRECTED 21702#define ACPI_HEST_GEN_ERROR_NONE 317031704/* Flags for validation_bits above */17051706#define ACPI_HEST_GEN_VALID_FRU_ID (1)1707#define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)1708#define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)17091710/* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */17111712struct acpi_hest_ia_deferred_check {1713struct acpi_hest_header header;1714u16 reserved1;1715u8 flags; /* See flags ACPI_HEST_GLOBAL, etc. above */1716u8 enabled;1717u32 records_to_preallocate;1718u32 max_sections_per_record;1719struct acpi_hest_notify notify;1720u8 num_hardware_banks;1721u8 reserved2[3];1722};17231724/*******************************************************************************1725*1726* HMAT - Heterogeneous Memory Attributes Table (ACPI 6.2)1727* Version 11728*1729******************************************************************************/17301731struct acpi_table_hmat {1732struct acpi_table_header header; /* Common ACPI table header */1733u32 reserved;1734};17351736/* Values for HMAT structure types */17371738enum acpi_hmat_type {1739ACPI_HMAT_TYPE_PROXIMITY = 0, /* Memory proximity domain attributes */1740ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */1741ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */1742ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */1743};17441745struct acpi_hmat_structure {1746u16 type;1747u16 reserved;1748u32 length;1749};17501751/*1752* HMAT Structures, correspond to Type in struct acpi_hmat_structure1753*/17541755/* 0: Memory proximity domain attributes */17561757struct acpi_hmat_proximity_domain {1758struct acpi_hmat_structure header;1759u16 flags;1760u16 reserved1;1761u32 processor_PD; /* Processor proximity domain */1762u32 memory_PD; /* Memory proximity domain */1763u32 reserved2;1764u64 reserved3;1765u64 reserved4;1766};17671768/* Masks for Flags field above */17691770#define ACPI_HMAT_PROCESSOR_PD_VALID (1) /* 1: processor_PD field is valid */1771#define ACPI_HMAT_MEMORY_PD_VALID (1<<1) /* 1: memory_PD field is valid */1772#define ACPI_HMAT_RESERVATION_HINT (1<<2) /* 1: Reservation hint */17731774/* 1: System locality latency and bandwidth information */17751776struct acpi_hmat_locality {1777struct acpi_hmat_structure header;1778u8 flags;1779u8 data_type;1780u8 min_transfer_size;1781u8 reserved1;1782u32 number_of_initiator_Pds;1783u32 number_of_target_Pds;1784u32 reserved2;1785u64 entry_base_unit;1786};17871788/* Masks for Flags field above */17891790#define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) /* Bits 0-3 */17911792/* Values for Memory Hierarchy flags */17931794#define ACPI_HMAT_MEMORY 01795#define ACPI_HMAT_LAST_LEVEL_CACHE 11796#define ACPI_HMAT_1ST_LEVEL_CACHE 21797#define ACPI_HMAT_2ND_LEVEL_CACHE 31798#define ACPI_HMAT_3RD_LEVEL_CACHE 41799#define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10 /* Bit 4: ACPI 6.4 */1800#define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20 /* Bit 5: ACPI 6.4 */180118021803/* Values for data_type field above */18041805#define ACPI_HMAT_ACCESS_LATENCY 01806#define ACPI_HMAT_READ_LATENCY 11807#define ACPI_HMAT_WRITE_LATENCY 21808#define ACPI_HMAT_ACCESS_BANDWIDTH 31809#define ACPI_HMAT_READ_BANDWIDTH 41810#define ACPI_HMAT_WRITE_BANDWIDTH 518111812/* 2: Memory side cache information */18131814struct acpi_hmat_cache {1815struct acpi_hmat_structure header;1816u32 memory_PD;1817u32 reserved1;1818u64 cache_size;1819u32 cache_attributes;1820u16 address_mode;1821u16 number_of_SMBIOShandles;1822};18231824/* Masks for cache_attributes field above */18251826#define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)1827#define ACPI_HMAT_CACHE_LEVEL (0x000000F0)1828#define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)1829#define ACPI_HMAT_WRITE_POLICY (0x0000F000)1830#define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)18311832#define ACPI_HMAT_CACHE_MODE_UNKNOWN (0)1833#define ACPI_HMAT_CACHE_MODE_EXTENDED_LINEAR (1)18341835/* Values for cache associativity flag */18361837#define ACPI_HMAT_CA_NONE (0)1838#define ACPI_HMAT_CA_DIRECT_MAPPED (1)1839#define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)18401841/* Values for write policy flag */18421843#define ACPI_HMAT_CP_NONE (0)1844#define ACPI_HMAT_CP_WB (1)1845#define ACPI_HMAT_CP_WT (2)18461847/*******************************************************************************1848*1849* HPET - High Precision Event Timer table1850* Version 11851*1852* Conforms to "IA-PC HPET (High Precision Event Timers) Specification",1853* Version 1.0a, October 20041854*1855******************************************************************************/18561857struct acpi_table_hpet {1858struct acpi_table_header header; /* Common ACPI table header */1859u32 id; /* Hardware ID of event timer block */1860struct acpi_generic_address address; /* Address of event timer block */1861u8 sequence; /* HPET sequence number */1862u16 minimum_tick; /* Main counter min tick, periodic mode */1863u8 flags;1864};18651866/* Masks for Flags field above */18671868#define ACPI_HPET_PAGE_PROTECT_MASK (3)18691870/* Values for Page Protect flags */18711872enum acpi_hpet_page_protect {1873ACPI_HPET_NO_PAGE_PROTECT = 0,1874ACPI_HPET_PAGE_PROTECT4 = 1,1875ACPI_HPET_PAGE_PROTECT64 = 21876};18771878/*******************************************************************************1879*1880* IBFT - Boot Firmware Table1881* Version 11882*1883* Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b1884* Specification", Version 1.01, March 1, 20071885*1886* Note: It appears that this table is not intended to appear in the RSDT/XSDT.1887* Therefore, it is not currently supported by the disassembler.1888*1889******************************************************************************/18901891struct acpi_table_ibft {1892struct acpi_table_header header; /* Common ACPI table header */1893u8 reserved[12];1894};18951896/* IBFT common subtable header */18971898struct acpi_ibft_header {1899u8 type;1900u8 version;1901u16 length;1902u8 index;1903u8 flags;1904};19051906/* Values for Type field above */19071908enum acpi_ibft_type {1909ACPI_IBFT_TYPE_NOT_USED = 0,1910ACPI_IBFT_TYPE_CONTROL = 1,1911ACPI_IBFT_TYPE_INITIATOR = 2,1912ACPI_IBFT_TYPE_NIC = 3,1913ACPI_IBFT_TYPE_TARGET = 4,1914ACPI_IBFT_TYPE_EXTENSIONS = 5,1915ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */1916};19171918/* IBFT subtables */19191920struct acpi_ibft_control {1921struct acpi_ibft_header header;1922u16 extensions;1923u16 initiator_offset;1924u16 nic0_offset;1925u16 target0_offset;1926u16 nic1_offset;1927u16 target1_offset;1928};19291930struct acpi_ibft_initiator {1931struct acpi_ibft_header header;1932u8 sns_server[16];1933u8 slp_server[16];1934u8 primary_server[16];1935u8 secondary_server[16];1936u16 name_length;1937u16 name_offset;1938};19391940struct acpi_ibft_nic {1941struct acpi_ibft_header header;1942u8 ip_address[16];1943u8 subnet_mask_prefix;1944u8 origin;1945u8 gateway[16];1946u8 primary_dns[16];1947u8 secondary_dns[16];1948u8 dhcp[16];1949u16 vlan;1950u8 mac_address[6];1951u16 pci_address;1952u16 name_length;1953u16 name_offset;1954};19551956struct acpi_ibft_target {1957struct acpi_ibft_header header;1958u8 target_ip_address[16];1959u16 target_ip_socket;1960u8 target_boot_lun[8];1961u8 chap_type;1962u8 nic_association;1963u16 target_name_length;1964u16 target_name_offset;1965u16 chap_name_length;1966u16 chap_name_offset;1967u16 chap_secret_length;1968u16 chap_secret_offset;1969u16 reverse_chap_name_length;1970u16 reverse_chap_name_offset;1971u16 reverse_chap_secret_length;1972u16 reverse_chap_secret_offset;1973};19741975/* Reset to default packing */19761977#pragma pack()19781979#endif /* __ACTBL1_H__ */198019811982