cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

actbl3.h (22526B)


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