Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 717d438d1fde94decef874b9808379d1f4523453 1303 lines 35 kB view raw
1/****************************************************************************** 2 * 3 * Name: actbl1.h - Additional ACPI table definitions 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2008, Intel Corp. 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions, and the following disclaimer, 16 * without modification. 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18 * substantially similar to the "NO WARRANTY" disclaimer below 19 * ("Disclaimer") and any redistribution must be conditioned upon 20 * including a substantially similar Disclaimer requirement for further 21 * binary redistribution. 22 * 3. Neither the names of the above-listed copyright holders nor the names 23 * of any contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * Alternatively, this software may be distributed under the terms of the 27 * GNU General Public License ("GPL") version 2 as published by the Free 28 * Software Foundation. 29 * 30 * NO WARRANTY 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 * POSSIBILITY OF SUCH DAMAGES. 42 */ 43 44#ifndef __ACTBL1_H__ 45#define __ACTBL1_H__ 46 47/******************************************************************************* 48 * 49 * Additional ACPI Tables 50 * 51 * These tables are not consumed directly by the ACPICA subsystem, but are 52 * included here to support device drivers and the AML disassembler. 53 * 54 ******************************************************************************/ 55 56/* 57 * Values for description table header signatures. Useful because they make 58 * it more difficult to inadvertently type in the wrong signature. 59 */ 60#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ 61#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ 62#define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ 63#define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ 64#define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ 65#define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ 66#define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ 67#define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ 68#define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ 69#define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ 70#define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ 71#define ACPI_SIG_IBFT "IBFT" /* i_sCSI Boot Firmware Table */ 72#define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ 73#define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ 74#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ 75#define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ 76#define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ 77#define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ 78#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ 79#define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ 80#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ 81#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ 82#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ 83#define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ 84 85/* 86 * All tables must be byte-packed to match the ACPI specification, since 87 * the tables are provided by the system BIOS. 88 */ 89#pragma pack(1) 90 91/* 92 * Note about bitfields: The u8 type is used for bitfields in ACPI tables. 93 * This is the only type that is even remotely portable. Anything else is not 94 * portable, so do not use any other bitfield types. 95 */ 96 97/* Common Subtable header (used in MADT, SRAT, etc.) */ 98 99struct acpi_subtable_header { 100 u8 type; 101 u8 length; 102}; 103 104/* Common Subtable header for WHEA tables (EINJ, ERST, WDAT) */ 105 106struct acpi_whea_header { 107 u8 action; 108 u8 instruction; 109 u8 flags; 110 u8 reserved; 111 struct acpi_generic_address register_region; 112 u64 value; /* Value used with Read/Write register */ 113 u64 mask; /* Bitmask required for this register instruction */ 114}; 115 116/******************************************************************************* 117 * 118 * ASF - Alert Standard Format table (Signature "ASF!") 119 * 120 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 121 * 122 ******************************************************************************/ 123 124struct acpi_table_asf { 125 struct acpi_table_header header; /* Common ACPI table header */ 126}; 127 128/* ASF subtable header */ 129 130struct acpi_asf_header { 131 u8 type; 132 u8 reserved; 133 u16 length; 134}; 135 136/* Values for Type field above */ 137 138enum acpi_asf_type { 139 ACPI_ASF_TYPE_INFO = 0, 140 ACPI_ASF_TYPE_ALERT = 1, 141 ACPI_ASF_TYPE_CONTROL = 2, 142 ACPI_ASF_TYPE_BOOT = 3, 143 ACPI_ASF_TYPE_ADDRESS = 4, 144 ACPI_ASF_TYPE_RESERVED = 5 145}; 146 147/* 148 * ASF subtables 149 */ 150 151/* 0: ASF Information */ 152 153struct acpi_asf_info { 154 struct acpi_asf_header header; 155 u8 min_reset_value; 156 u8 min_poll_interval; 157 u16 system_id; 158 u32 mfg_id; 159 u8 flags; 160 u8 reserved2[3]; 161}; 162 163/* 1: ASF Alerts */ 164 165struct acpi_asf_alert { 166 struct acpi_asf_header header; 167 u8 assert_mask; 168 u8 deassert_mask; 169 u8 alerts; 170 u8 data_length; 171}; 172 173struct acpi_asf_alert_data { 174 u8 address; 175 u8 command; 176 u8 mask; 177 u8 value; 178 u8 sensor_type; 179 u8 type; 180 u8 offset; 181 u8 source_type; 182 u8 severity; 183 u8 sensor_number; 184 u8 entity; 185 u8 instance; 186}; 187 188/* 2: ASF Remote Control */ 189 190struct acpi_asf_remote { 191 struct acpi_asf_header header; 192 u8 controls; 193 u8 data_length; 194 u16 reserved2; 195}; 196 197struct acpi_asf_control_data { 198 u8 function; 199 u8 address; 200 u8 command; 201 u8 value; 202}; 203 204/* 3: ASF RMCP Boot Options */ 205 206struct acpi_asf_rmcp { 207 struct acpi_asf_header header; 208 u8 capabilities[7]; 209 u8 completion_code; 210 u32 enterprise_id; 211 u8 command; 212 u16 parameter; 213 u16 boot_options; 214 u16 oem_parameters; 215}; 216 217/* 4: ASF Address */ 218 219struct acpi_asf_address { 220 struct acpi_asf_header header; 221 u8 eprom_address; 222 u8 devices; 223}; 224 225/******************************************************************************* 226 * 227 * BERT - Boot Error Record Table 228 * 229 ******************************************************************************/ 230 231struct acpi_table_bert { 232 struct acpi_table_header header; /* Common ACPI table header */ 233 u32 region_length; /* Length of the boot error region */ 234 u64 address; /* Physical addresss of the error region */ 235}; 236 237/* Boot Error Region */ 238 239struct acpi_bert_region { 240 u32 block_status; 241 u32 raw_data_offset; 242 u32 raw_data_length; 243 u32 data_length; 244 u32 error_severity; 245}; 246 247/* block_status Flags */ 248 249#define ACPI_BERT_UNCORRECTABLE (1) 250#define ACPI_BERT_CORRECTABLE (2) 251#define ACPI_BERT_MULTIPLE_UNCORRECTABLE (4) 252#define ACPI_BERT_MULTIPLE_CORRECTABLE (8) 253 254/******************************************************************************* 255 * 256 * BOOT - Simple Boot Flag Table 257 * 258 ******************************************************************************/ 259 260struct acpi_table_boot { 261 struct acpi_table_header header; /* Common ACPI table header */ 262 u8 cmos_index; /* Index in CMOS RAM for the boot register */ 263 u8 reserved[3]; 264}; 265 266/******************************************************************************* 267 * 268 * CPEP - Corrected Platform Error Polling table 269 * 270 ******************************************************************************/ 271 272struct acpi_table_cpep { 273 struct acpi_table_header header; /* Common ACPI table header */ 274 u64 reserved; 275}; 276 277/* Subtable */ 278 279struct acpi_cpep_polling { 280 u8 type; 281 u8 length; 282 u8 id; /* Processor ID */ 283 u8 eid; /* Processor EID */ 284 u32 interval; /* Polling interval (msec) */ 285}; 286 287/******************************************************************************* 288 * 289 * DBGP - Debug Port table 290 * 291 ******************************************************************************/ 292 293struct acpi_table_dbgp { 294 struct acpi_table_header header; /* Common ACPI table header */ 295 u8 type; /* 0=full 16550, 1=subset of 16550 */ 296 u8 reserved[3]; 297 struct acpi_generic_address debug_port; 298}; 299 300/******************************************************************************* 301 * 302 * DMAR - DMA Remapping table 303 * From "Intel Virtualization Technology for Directed I/O", Sept. 2007 304 * 305 ******************************************************************************/ 306 307struct acpi_table_dmar { 308 struct acpi_table_header header; /* Common ACPI table header */ 309 u8 width; /* Host Address Width */ 310 u8 flags; 311 u8 reserved[10]; 312}; 313 314/* Flags */ 315 316#define ACPI_DMAR_INTR_REMAP (1) 317 318/* DMAR subtable header */ 319 320struct acpi_dmar_header { 321 u16 type; 322 u16 length; 323}; 324 325/* Values for subtable type in struct acpi_dmar_header */ 326 327enum acpi_dmar_type { 328 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, 329 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, 330 ACPI_DMAR_TYPE_ATSR = 2, 331 ACPI_DMAR_TYPE_RESERVED = 3 /* 3 and greater are reserved */ 332}; 333 334struct acpi_dmar_device_scope { 335 u8 entry_type; 336 u8 length; 337 u16 reserved; 338 u8 enumeration_id; 339 u8 bus; 340}; 341 342/* Values for entry_type in struct acpi_dmar_device_scope */ 343 344enum acpi_dmar_scope_type { 345 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, 346 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, 347 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, 348 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, 349 ACPI_DMAR_SCOPE_TYPE_HPET = 4, 350 ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ 351}; 352 353struct acpi_dmar_pci_path { 354 u8 dev; 355 u8 fn; 356}; 357 358/* 359 * DMAR Sub-tables, correspond to Type in struct acpi_dmar_header 360 */ 361 362/* 0: Hardware Unit Definition */ 363 364struct acpi_dmar_hardware_unit { 365 struct acpi_dmar_header header; 366 u8 flags; 367 u8 reserved; 368 u16 segment; 369 u64 address; /* Register Base Address */ 370}; 371 372/* Flags */ 373 374#define ACPI_DMAR_INCLUDE_ALL (1) 375 376/* 1: Reserved Memory Defininition */ 377 378struct acpi_dmar_reserved_memory { 379 struct acpi_dmar_header header; 380 u16 reserved; 381 u16 segment; 382 u64 base_address; /* 4_k aligned base address */ 383 u64 end_address; /* 4_k aligned limit address */ 384}; 385 386/* Flags */ 387 388#define ACPI_DMAR_ALLOW_ALL (1) 389 390 391/* 2: Root Port ATS Capability Reporting Structure */ 392 393struct acpi_dmar_atsr { 394 struct acpi_dmar_header header; 395 u8 flags; 396 u8 reserved; 397 u16 segment; 398}; 399 400/* Flags */ 401 402#define ACPI_DMAR_ALL_PORTS (1) 403 404/******************************************************************************* 405 * 406 * ECDT - Embedded Controller Boot Resources Table 407 * 408 ******************************************************************************/ 409 410struct acpi_table_ecdt { 411 struct acpi_table_header header; /* Common ACPI table header */ 412 struct acpi_generic_address control; /* Address of EC command/status register */ 413 struct acpi_generic_address data; /* Address of EC data register */ 414 u32 uid; /* Unique ID - must be same as the EC _UID method */ 415 u8 gpe; /* The GPE for the EC */ 416 u8 id[1]; /* Full namepath of the EC in the ACPI namespace */ 417}; 418 419/******************************************************************************* 420 * 421 * EINJ - Error Injection Table 422 * 423 ******************************************************************************/ 424 425struct acpi_table_einj { 426 struct acpi_table_header header; /* Common ACPI table header */ 427 u32 header_length; 428 u32 reserved; 429 u32 entries; 430}; 431 432/* EINJ Injection Instruction Entries (actions) */ 433 434struct acpi_einj_entry { 435 struct acpi_whea_header whea_header; /* Common header for WHEA tables */ 436}; 437 438/* Values for Action field above */ 439 440enum acpi_einj_actions { 441 ACPI_EINJ_BEGIN_OPERATION = 0, 442 ACPI_EINJ_GET_TRIGGER_TABLE = 1, 443 ACPI_EINJ_SET_ERROR_TYPE = 2, 444 ACPI_EINJ_GET_ERROR_TYPE = 3, 445 ACPI_EINJ_END_OPERATION = 4, 446 ACPI_EINJ_EXECUTE_OPERATION = 5, 447 ACPI_EINJ_CHECK_BUSY_STATUS = 6, 448 ACPI_EINJ_GET_COMMAND_STATUS = 7, 449 ACPI_EINJ_ACTION_RESERVED = 8, /* 8 and greater are reserved */ 450 ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ 451}; 452 453/* Values for Instruction field above */ 454 455enum acpi_einj_instructions { 456 ACPI_EINJ_READ_REGISTER = 0, 457 ACPI_EINJ_READ_REGISTER_VALUE = 1, 458 ACPI_EINJ_WRITE_REGISTER = 2, 459 ACPI_EINJ_WRITE_REGISTER_VALUE = 3, 460 ACPI_EINJ_NOOP = 4, 461 ACPI_EINJ_INSTRUCTION_RESERVED = 5 /* 5 and greater are reserved */ 462}; 463 464/* EINJ Trigger Error Action Table */ 465 466struct acpi_einj_trigger { 467 u32 header_size; 468 u32 revision; 469 u32 table_size; 470 u32 entry_count; 471}; 472 473/******************************************************************************* 474 * 475 * ERST - Error Record Serialization Table 476 * 477 ******************************************************************************/ 478 479struct acpi_table_erst { 480 struct acpi_table_header header; /* Common ACPI table header */ 481 u32 header_length; 482 u32 reserved; 483 u32 entries; 484}; 485 486/* ERST Serialization Entries (actions) */ 487 488struct acpi_erst_entry { 489 struct acpi_whea_header whea_header; /* Common header for WHEA tables */ 490}; 491 492/* Values for Action field above */ 493 494enum acpi_erst_actions { 495 ACPI_ERST_BEGIN_WRITE_OPERATION = 0, 496 ACPI_ERST_BEGIN_READ_OPERATION = 1, 497 ACPI_ERST_BETGIN_CLEAR_OPERATION = 2, 498 ACPI_ERST_END_OPERATION = 3, 499 ACPI_ERST_SET_RECORD_OFFSET = 4, 500 ACPI_ERST_EXECUTE_OPERATION = 5, 501 ACPI_ERST_CHECK_BUSY_STATUS = 6, 502 ACPI_ERST_GET_COMMAND_STATUS = 7, 503 ACPI_ERST_GET_RECORD_IDENTIFIER = 8, 504 ACPI_ERST_SET_RECORD_IDENTIFIER = 9, 505 ACPI_ERST_GET_RECORD_COUNT = 10, 506 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, 507 ACPI_ERST_NOT_USED = 12, 508 ACPI_ERST_GET_ERROR_RANGE = 13, 509 ACPI_ERST_GET_ERROR_LENGTH = 14, 510 ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, 511 ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */ 512}; 513 514/* Values for Instruction field above */ 515 516enum acpi_erst_instructions { 517 ACPI_ERST_READ_REGISTER = 0, 518 ACPI_ERST_READ_REGISTER_VALUE = 1, 519 ACPI_ERST_WRITE_REGISTER = 2, 520 ACPI_ERST_WRITE_REGISTER_VALUE = 3, 521 ACPI_ERST_NOOP = 4, 522 ACPI_ERST_LOAD_VAR1 = 5, 523 ACPI_ERST_LOAD_VAR2 = 6, 524 ACPI_ERST_STORE_VAR1 = 7, 525 ACPI_ERST_ADD = 8, 526 ACPI_ERST_SUBTRACT = 9, 527 ACPI_ERST_ADD_VALUE = 10, 528 ACPI_ERST_SUBTRACT_VALUE = 11, 529 ACPI_ERST_STALL = 12, 530 ACPI_ERST_STALL_WHILE_TRUE = 13, 531 ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, 532 ACPI_ERST_GOTO = 15, 533 ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, 534 ACPI_ERST_SET_DST_ADDRESS_BASE = 17, 535 ACPI_ERST_MOVE_DATA = 18, 536 ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ 537}; 538 539/******************************************************************************* 540 * 541 * HEST - Hardware Error Source Table 542 * 543 ******************************************************************************/ 544 545struct acpi_table_hest { 546 struct acpi_table_header header; /* Common ACPI table header */ 547 u32 error_source_count; 548}; 549 550/* HEST subtable header */ 551 552struct acpi_hest_header { 553 u16 type; 554}; 555 556/* Values for Type field above for subtables */ 557 558enum acpi_hest_types { 559 ACPI_HEST_TYPE_XPF_MACHINE_CHECK = 0, 560 ACPI_HEST_TYPE_XPF_CORRECTED_MACHINE_CHECK = 1, 561 ACPI_HEST_TYPE_XPF_UNUSED = 2, 562 ACPI_HEST_TYPE_XPF_NON_MASKABLE_INTERRUPT = 3, 563 ACPI_HEST_TYPE_IPF_CORRECTED_MACHINE_CHECK = 4, 564 ACPI_HEST_TYPE_IPF_CORRECTED_PLATFORM_ERROR = 5, 565 ACPI_HEST_TYPE_AER_ROOT_PORT = 6, 566 ACPI_HEST_TYPE_AER_ENDPOINT = 7, 567 ACPI_HEST_TYPE_AER_BRIDGE = 8, 568 ACPI_HEST_TYPE_GENERIC_HARDWARE_ERROR_SOURCE = 9, 569 ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ 570}; 571 572/* 573 * HEST Sub-subtables 574 */ 575 576/* XPF Machine Check Error Bank */ 577 578struct acpi_hest_xpf_error_bank { 579 u8 bank_number; 580 u8 clear_status_on_init; 581 u8 status_format; 582 u8 config_write_enable; 583 u32 control_register; 584 u64 control_init_data; 585 u32 status_register; 586 u32 address_register; 587 u32 misc_register; 588}; 589 590/* Generic Error Status */ 591 592struct acpi_hest_generic_status { 593 u32 block_status; 594 u32 raw_data_offset; 595 u32 raw_data_length; 596 u32 data_length; 597 u32 error_severity; 598}; 599 600/* Generic Error Data */ 601 602struct acpi_hest_generic_data { 603 u8 section_type[16]; 604 u32 error_severity; 605 u16 revision; 606 u8 validation_bits; 607 u8 flags; 608 u32 error_data_length; 609 u8 fru_id[16]; 610 u8 fru_text[20]; 611}; 612 613/* Common HEST structure for PCI/AER types below (6,7,8) */ 614 615struct acpi_hest_aer_common { 616 u16 source_id; 617 u16 config_write_enable; 618 u8 flags; 619 u8 enabled; 620 u32 records_to_pre_allocate; 621 u32 max_sections_per_record; 622 u32 bus; 623 u16 device; 624 u16 function; 625 u16 device_control; 626 u16 reserved; 627 u32 uncorrectable_error_mask; 628 u32 uncorrectable_error_severity; 629 u32 correctable_error_mask; 630 u32 advanced_error_cababilities; 631}; 632 633/* Hardware Error Notification */ 634 635struct acpi_hest_notify { 636 u8 type; 637 u8 length; 638 u16 config_write_enable; 639 u32 poll_interval; 640 u32 vector; 641 u32 polling_threshold_value; 642 u32 polling_threshold_window; 643 u32 error_threshold_value; 644 u32 error_threshold_window; 645}; 646 647/* Values for Notify Type field above */ 648 649enum acpi_hest_notify_types { 650 ACPI_HEST_NOTIFY_POLLED = 0, 651 ACPI_HEST_NOTIFY_EXTERNAL = 1, 652 ACPI_HEST_NOTIFY_LOCAL = 2, 653 ACPI_HEST_NOTIFY_SCI = 3, 654 ACPI_HEST_NOTIFY_NMI = 4, 655 ACPI_HEST_NOTIFY_RESERVED = 5 /* 5 and greater are reserved */ 656}; 657 658/* 659 * HEST subtables 660 * 661 * From WHEA Design Document, 16 May 2007. 662 * Note: There is no subtable type 2 in this version of the document, 663 * and there are two different subtable type 3s. 664 */ 665 666 /* 0: XPF Machine Check Exception */ 667 668struct acpi_hest_xpf_machine_check { 669 struct acpi_hest_header header; 670 u16 source_id; 671 u16 config_write_enable; 672 u8 flags; 673 u8 reserved1; 674 u32 records_to_pre_allocate; 675 u32 max_sections_per_record; 676 u64 global_capability_data; 677 u64 global_control_data; 678 u8 num_hardware_banks; 679 u8 reserved2[7]; 680}; 681 682/* 1: XPF Corrected Machine Check */ 683 684struct acpi_table_hest_xpf_corrected { 685 struct acpi_hest_header header; 686 u16 source_id; 687 u16 config_write_enable; 688 u8 flags; 689 u8 enabled; 690 u32 records_to_pre_allocate; 691 u32 max_sections_per_record; 692 struct acpi_hest_notify notify; 693 u8 num_hardware_banks; 694 u8 reserved[3]; 695}; 696 697/* 3: XPF Non-Maskable Interrupt */ 698 699struct acpi_hest_xpf_nmi { 700 struct acpi_hest_header header; 701 u16 source_id; 702 u32 reserved; 703 u32 records_to_pre_allocate; 704 u32 max_sections_per_record; 705 u32 max_raw_data_length; 706}; 707 708/* 4: IPF Corrected Machine Check */ 709 710struct acpi_hest_ipf_corrected { 711 struct acpi_hest_header header; 712 u8 enabled; 713 u8 reserved; 714}; 715 716/* 5: IPF Corrected Platform Error */ 717 718struct acpi_hest_ipf_corrected_platform { 719 struct acpi_hest_header header; 720 u8 enabled; 721 u8 reserved; 722}; 723 724/* 6: PCI Express Root Port AER */ 725 726struct acpi_hest_aer_root { 727 struct acpi_hest_header header; 728 struct acpi_hest_aer_common aer; 729 u32 root_error_command; 730}; 731 732/* 7: PCI Express AER (AER Endpoint) */ 733 734struct acpi_hest_aer { 735 struct acpi_hest_header header; 736 struct acpi_hest_aer_common aer; 737}; 738 739/* 8: PCI Express/PCI-X Bridge AER */ 740 741struct acpi_hest_aer_bridge { 742 struct acpi_hest_header header; 743 struct acpi_hest_aer_common aer; 744 u32 secondary_uncorrectable_error_mask; 745 u32 secondary_uncorrectable_error_severity; 746 u32 secondary_advanced_capabilities; 747}; 748 749/* 9: Generic Hardware Error Source */ 750 751struct acpi_hest_generic { 752 struct acpi_hest_header header; 753 u16 source_id; 754 u16 related_source_id; 755 u8 config_write_enable; 756 u8 enabled; 757 u32 records_to_pre_allocate; 758 u32 max_sections_per_record; 759 u32 max_raw_data_length; 760 struct acpi_generic_address error_status_address; 761 struct acpi_hest_notify notify; 762 u32 error_status_block_length; 763}; 764 765/******************************************************************************* 766 * 767 * HPET - High Precision Event Timer table 768 * 769 ******************************************************************************/ 770 771struct acpi_table_hpet { 772 struct acpi_table_header header; /* Common ACPI table header */ 773 u32 id; /* Hardware ID of event timer block */ 774 struct acpi_generic_address address; /* Address of event timer block */ 775 u8 sequence; /* HPET sequence number */ 776 u16 minimum_tick; /* Main counter min tick, periodic mode */ 777 u8 flags; 778}; 779 780/*! Flags */ 781 782#define ACPI_HPET_PAGE_PROTECT (1) /* 00: No page protection */ 783#define ACPI_HPET_PAGE_PROTECT_4 (1<<1) /* 01: 4KB page protected */ 784#define ACPI_HPET_PAGE_PROTECT_64 (1<<2) /* 02: 64KB page protected */ 785 786/*! [End] no source code translation !*/ 787 788/******************************************************************************* 789 * 790 * IBFT - Boot Firmware Table 791 * 792 ******************************************************************************/ 793 794struct acpi_table_ibft { 795 struct acpi_table_header header; /* Common ACPI table header */ 796 u8 reserved[12]; 797}; 798 799/* IBFT common subtable header */ 800 801struct acpi_ibft_header { 802 u8 type; 803 u8 version; 804 u16 length; 805 u8 index; 806 u8 flags; 807}; 808 809/* Values for Type field above */ 810 811enum acpi_ibft_type { 812 ACPI_IBFT_TYPE_NOT_USED = 0, 813 ACPI_IBFT_TYPE_CONTROL = 1, 814 ACPI_IBFT_TYPE_INITIATOR = 2, 815 ACPI_IBFT_TYPE_NIC = 3, 816 ACPI_IBFT_TYPE_TARGET = 4, 817 ACPI_IBFT_TYPE_EXTENSIONS = 5, 818 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ 819}; 820 821/* IBFT subtables */ 822 823struct acpi_ibft_control { 824 struct acpi_ibft_header header; 825 u16 extensions; 826 u16 initiator_offset; 827 u16 nic0_offset; 828 u16 target0_offset; 829 u16 nic1_offset; 830 u16 target1_offset; 831}; 832 833struct acpi_ibft_initiator { 834 struct acpi_ibft_header header; 835 u8 sns_server[16]; 836 u8 slp_server[16]; 837 u8 primary_server[16]; 838 u8 secondary_server[16]; 839 u16 name_length; 840 u16 name_offset; 841}; 842 843struct acpi_ibft_nic { 844 struct acpi_ibft_header header; 845 u8 ip_address[16]; 846 u8 subnet_mask_prefix; 847 u8 origin; 848 u8 gateway[16]; 849 u8 primary_dns[16]; 850 u8 secondary_dns[16]; 851 u8 dhcp[16]; 852 u16 vlan; 853 u8 mac_address[6]; 854 u16 pci_address; 855 u16 name_length; 856 u16 name_offset; 857}; 858 859struct acpi_ibft_target { 860 struct acpi_ibft_header header; 861 u8 target_ip_address[16]; 862 u16 target_ip_socket; 863 u8 target_boot_lun[8]; 864 u8 chap_type; 865 u8 nic_association; 866 u16 target_name_length; 867 u16 target_name_offset; 868 u16 chap_name_length; 869 u16 chap_name_offset; 870 u16 chap_secret_length; 871 u16 chap_secret_offset; 872 u16 reverse_chap_name_length; 873 u16 reverse_chap_name_offset; 874 u16 reverse_chap_secret_length; 875 u16 reverse_chap_secret_offset; 876}; 877 878/******************************************************************************* 879 * 880 * MADT - Multiple APIC Description Table 881 * 882 ******************************************************************************/ 883 884struct acpi_table_madt { 885 struct acpi_table_header header; /* Common ACPI table header */ 886 u32 address; /* Physical address of local APIC */ 887 u32 flags; 888}; 889 890/* Flags */ 891 892#define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ 893 894/* Values for PCATCompat flag */ 895 896#define ACPI_MADT_DUAL_PIC 0 897#define ACPI_MADT_MULTIPLE_APIC 1 898 899/* Values for subtable type in struct acpi_subtable_header */ 900 901enum acpi_madt_type { 902 ACPI_MADT_TYPE_LOCAL_APIC = 0, 903 ACPI_MADT_TYPE_IO_APIC = 1, 904 ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, 905 ACPI_MADT_TYPE_NMI_SOURCE = 3, 906 ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, 907 ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, 908 ACPI_MADT_TYPE_IO_SAPIC = 6, 909 ACPI_MADT_TYPE_LOCAL_SAPIC = 7, 910 ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, 911 ACPI_MADT_TYPE_RESERVED = 9 /* 9 and greater are reserved */ 912}; 913 914/* 915 * MADT Sub-tables, correspond to Type in struct acpi_subtable_header 916 */ 917 918/* 0: Processor Local APIC */ 919 920struct acpi_madt_local_apic { 921 struct acpi_subtable_header header; 922 u8 processor_id; /* ACPI processor id */ 923 u8 id; /* Processor's local APIC id */ 924 u32 lapic_flags; 925}; 926 927/* 1: IO APIC */ 928 929struct acpi_madt_io_apic { 930 struct acpi_subtable_header header; 931 u8 id; /* I/O APIC ID */ 932 u8 reserved; /* Reserved - must be zero */ 933 u32 address; /* APIC physical address */ 934 u32 global_irq_base; /* Global system interrupt where INTI lines start */ 935}; 936 937/* 2: Interrupt Override */ 938 939struct acpi_madt_interrupt_override { 940 struct acpi_subtable_header header; 941 u8 bus; /* 0 - ISA */ 942 u8 source_irq; /* Interrupt source (IRQ) */ 943 u32 global_irq; /* Global system interrupt */ 944 u16 inti_flags; 945}; 946 947/* 3: NMI Source */ 948 949struct acpi_madt_nmi_source { 950 struct acpi_subtable_header header; 951 u16 inti_flags; 952 u32 global_irq; /* Global system interrupt */ 953}; 954 955/* 4: Local APIC NMI */ 956 957struct acpi_madt_local_apic_nmi { 958 struct acpi_subtable_header header; 959 u8 processor_id; /* ACPI processor id */ 960 u16 inti_flags; 961 u8 lint; /* LINTn to which NMI is connected */ 962}; 963 964/* 5: Address Override */ 965 966struct acpi_madt_local_apic_override { 967 struct acpi_subtable_header header; 968 u16 reserved; /* Reserved, must be zero */ 969 u64 address; /* APIC physical address */ 970}; 971 972/* 6: I/O Sapic */ 973 974struct acpi_madt_io_sapic { 975 struct acpi_subtable_header header; 976 u8 id; /* I/O SAPIC ID */ 977 u8 reserved; /* Reserved, must be zero */ 978 u32 global_irq_base; /* Global interrupt for SAPIC start */ 979 u64 address; /* SAPIC physical address */ 980}; 981 982/* 7: Local Sapic */ 983 984struct acpi_madt_local_sapic { 985 struct acpi_subtable_header header; 986 u8 processor_id; /* ACPI processor id */ 987 u8 id; /* SAPIC ID */ 988 u8 eid; /* SAPIC EID */ 989 u8 reserved[3]; /* Reserved, must be zero */ 990 u32 lapic_flags; 991 u32 uid; /* Numeric UID - ACPI 3.0 */ 992 char uid_string[1]; /* String UID - ACPI 3.0 */ 993}; 994 995/* 8: Platform Interrupt Source */ 996 997struct acpi_madt_interrupt_source { 998 struct acpi_subtable_header header; 999 u16 inti_flags; 1000 u8 type; /* 1=PMI, 2=INIT, 3=corrected */ 1001 u8 id; /* Processor ID */ 1002 u8 eid; /* Processor EID */ 1003 u8 io_sapic_vector; /* Vector value for PMI interrupts */ 1004 u32 global_irq; /* Global system interrupt */ 1005 u32 flags; /* Interrupt Source Flags */ 1006}; 1007 1008/* Flags field above */ 1009 1010#define ACPI_MADT_CPEI_OVERRIDE (1) 1011 1012/* 1013 * Common flags fields for MADT subtables 1014 */ 1015 1016/* MADT Local APIC flags (lapic_flags) */ 1017 1018#define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ 1019 1020/* MADT MPS INTI flags (inti_flags) */ 1021 1022#define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ 1023#define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ 1024 1025/* Values for MPS INTI flags */ 1026 1027#define ACPI_MADT_POLARITY_CONFORMS 0 1028#define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 1029#define ACPI_MADT_POLARITY_RESERVED 2 1030#define ACPI_MADT_POLARITY_ACTIVE_LOW 3 1031 1032#define ACPI_MADT_TRIGGER_CONFORMS (0) 1033#define ACPI_MADT_TRIGGER_EDGE (1<<2) 1034#define ACPI_MADT_TRIGGER_RESERVED (2<<2) 1035#define ACPI_MADT_TRIGGER_LEVEL (3<<2) 1036 1037/******************************************************************************* 1038 * 1039 * MCFG - PCI Memory Mapped Configuration table and sub-table 1040 * 1041 ******************************************************************************/ 1042 1043struct acpi_table_mcfg { 1044 struct acpi_table_header header; /* Common ACPI table header */ 1045 u8 reserved[8]; 1046}; 1047 1048/* Subtable */ 1049 1050struct acpi_mcfg_allocation { 1051 u64 address; /* Base address, processor-relative */ 1052 u16 pci_segment; /* PCI segment group number */ 1053 u8 start_bus_number; /* Starting PCI Bus number */ 1054 u8 end_bus_number; /* Final PCI Bus number */ 1055 u32 reserved; 1056}; 1057 1058/******************************************************************************* 1059 * 1060 * SBST - Smart Battery Specification Table 1061 * 1062 ******************************************************************************/ 1063 1064struct acpi_table_sbst { 1065 struct acpi_table_header header; /* Common ACPI table header */ 1066 u32 warning_level; 1067 u32 low_level; 1068 u32 critical_level; 1069}; 1070 1071/******************************************************************************* 1072 * 1073 * SLIT - System Locality Distance Information Table 1074 * 1075 ******************************************************************************/ 1076 1077struct acpi_table_slit { 1078 struct acpi_table_header header; /* Common ACPI table header */ 1079 u64 locality_count; 1080 u8 entry[1]; /* Real size = localities^2 */ 1081}; 1082 1083/******************************************************************************* 1084 * 1085 * SPCR - Serial Port Console Redirection table 1086 * 1087 ******************************************************************************/ 1088 1089struct acpi_table_spcr { 1090 struct acpi_table_header header; /* Common ACPI table header */ 1091 u8 interface_type; /* 0=full 16550, 1=subset of 16550 */ 1092 u8 reserved[3]; 1093 struct acpi_generic_address serial_port; 1094 u8 interrupt_type; 1095 u8 pc_interrupt; 1096 u32 interrupt; 1097 u8 baud_rate; 1098 u8 parity; 1099 u8 stop_bits; 1100 u8 flow_control; 1101 u8 terminal_type; 1102 u8 reserved1; 1103 u16 pci_device_id; 1104 u16 pci_vendor_id; 1105 u8 pci_bus; 1106 u8 pci_device; 1107 u8 pci_function; 1108 u32 pci_flags; 1109 u8 pci_segment; 1110 u32 reserved2; 1111}; 1112 1113/******************************************************************************* 1114 * 1115 * SPMI - Server Platform Management Interface table 1116 * 1117 ******************************************************************************/ 1118 1119struct acpi_table_spmi { 1120 struct acpi_table_header header; /* Common ACPI table header */ 1121 u8 reserved; 1122 u8 interface_type; 1123 u16 spec_revision; /* Version of IPMI */ 1124 u8 interrupt_type; 1125 u8 gpe_number; /* GPE assigned */ 1126 u8 reserved1; 1127 u8 pci_device_flag; 1128 u32 interrupt; 1129 struct acpi_generic_address ipmi_register; 1130 u8 pci_segment; 1131 u8 pci_bus; 1132 u8 pci_device; 1133 u8 pci_function; 1134}; 1135 1136/******************************************************************************* 1137 * 1138 * SRAT - System Resource Affinity Table 1139 * 1140 ******************************************************************************/ 1141 1142struct acpi_table_srat { 1143 struct acpi_table_header header; /* Common ACPI table header */ 1144 u32 table_revision; /* Must be value '1' */ 1145 u64 reserved; /* Reserved, must be zero */ 1146}; 1147 1148/* Values for subtable type in struct acpi_subtable_header */ 1149 1150enum acpi_srat_type { 1151 ACPI_SRAT_TYPE_CPU_AFFINITY = 0, 1152 ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, 1153 ACPI_SRAT_TYPE_RESERVED = 2 1154}; 1155 1156/* SRAT sub-tables */ 1157 1158struct acpi_srat_cpu_affinity { 1159 struct acpi_subtable_header header; 1160 u8 proximity_domain_lo; 1161 u8 apic_id; 1162 u32 flags; 1163 u8 local_sapic_eid; 1164 u8 proximity_domain_hi[3]; 1165 u32 reserved; /* Reserved, must be zero */ 1166}; 1167 1168/* Flags */ 1169 1170#define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ 1171 1172struct acpi_srat_mem_affinity { 1173 struct acpi_subtable_header header; 1174 u32 proximity_domain; 1175 u16 reserved; /* Reserved, must be zero */ 1176 u64 base_address; 1177 u64 length; 1178 u32 reserved1; 1179 u32 flags; 1180 u64 reserved2; /* Reserved, must be zero */ 1181}; 1182 1183/* Flags */ 1184 1185#define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ 1186#define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ 1187#define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ 1188 1189/******************************************************************************* 1190 * 1191 * TCPA - Trusted Computing Platform Alliance table 1192 * 1193 ******************************************************************************/ 1194 1195struct acpi_table_tcpa { 1196 struct acpi_table_header header; /* Common ACPI table header */ 1197 u16 reserved; 1198 u32 max_log_length; /* Maximum length for the event log area */ 1199 u64 log_address; /* Address of the event log area */ 1200}; 1201 1202/******************************************************************************* 1203 * 1204 * UEFI - UEFI Boot optimization Table 1205 * 1206 ******************************************************************************/ 1207 1208struct acpi_table_uefi { 1209 struct acpi_table_header header; /* Common ACPI table header */ 1210 u8 identifier[16]; /* UUID identifier */ 1211 u16 data_offset; /* Offset of remaining data in table */ 1212 u8 data; 1213}; 1214 1215/******************************************************************************* 1216 * 1217 * WDAT - Watchdog Action Table 1218 * 1219 ******************************************************************************/ 1220 1221struct acpi_table_wdat { 1222 struct acpi_table_header header; /* Common ACPI table header */ 1223 u32 header_length; /* Watchdog Header Length */ 1224 u16 pci_segment; /* PCI Segment number */ 1225 u8 pci_bus; /* PCI Bus number */ 1226 u8 pci_device; /* PCI Device number */ 1227 u8 pci_function; /* PCI Function number */ 1228 u8 reserved[3]; 1229 u32 timer_period; /* Period of one timer count (msec) */ 1230 u32 max_count; /* Maximum counter value supported */ 1231 u32 min_count; /* Minimum counter value */ 1232 u8 flags; 1233 u8 reserved2[3]; 1234 u32 entries; /* Number of watchdog entries that follow */ 1235}; 1236 1237/* WDAT Instruction Entries (actions) */ 1238 1239struct acpi_wdat_entry { 1240 struct acpi_whea_header whea_header; /* Common header for WHEA tables */ 1241}; 1242 1243/* Values for Action field above */ 1244 1245enum acpi_wdat_actions { 1246 ACPI_WDAT_RESET = 1, 1247 ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, 1248 ACPI_WDAT_GET_COUNTDOWN = 5, 1249 ACPI_WDAT_SET_COUNTDOWN = 6, 1250 ACPI_WDAT_GET_RUNNING_STATE = 8, 1251 ACPI_WDAT_SET_RUNNING_STATE = 9, 1252 ACPI_WDAT_GET_STOPPED_STATE = 10, 1253 ACPI_WDAT_SET_STOPPED_STATE = 11, 1254 ACPI_WDAT_GET_REBOOT = 16, 1255 ACPI_WDAT_SET_REBOOT = 17, 1256 ACPI_WDAT_GET_SHUTDOWN = 18, 1257 ACPI_WDAT_SET_SHUTDOWN = 19, 1258 ACPI_WDAT_GET_STATUS = 32, 1259 ACPI_WDAT_SET_STATUS = 33, 1260 ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ 1261}; 1262 1263/* Values for Instruction field above */ 1264 1265enum acpi_wdat_instructions { 1266 ACPI_WDAT_READ_VALUE = 0, 1267 ACPI_WDAT_READ_COUNTDOWN = 1, 1268 ACPI_WDAT_WRITE_VALUE = 2, 1269 ACPI_WDAT_WRITE_COUNTDOWN = 3, 1270 ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ 1271 ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ 1272}; 1273 1274/******************************************************************************* 1275 * 1276 * WDRT - Watchdog Resource Table 1277 * 1278 ******************************************************************************/ 1279 1280struct acpi_table_wdrt { 1281 struct acpi_table_header header; /* Common ACPI table header */ 1282 u32 header_length; /* Watchdog Header Length */ 1283 u8 pci_segment; /* PCI Segment number */ 1284 u8 pci_bus; /* PCI Bus number */ 1285 u8 pci_device; /* PCI Device number */ 1286 u8 pci_function; /* PCI Function number */ 1287 u32 timer_period; /* Period of one timer count (msec) */ 1288 u32 max_count; /* Maximum counter value supported */ 1289 u32 min_count; /* Minimum counter value */ 1290 u8 flags; 1291 u8 reserved[3]; 1292 u32 entries; /* Number of watchdog entries that follow */ 1293}; 1294 1295/* Flags */ 1296 1297#define ACPI_WDRT_TIMER_ENABLED (1) /* 00: Timer enabled */ 1298 1299/* Reset to default packing */ 1300 1301#pragma pack() 1302 1303#endif /* __ACTBL1_H__ */