ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

actbl1.h
Go to the documentation of this file.
00001 /******************************************************************************
00002  *
00003  * Name: actbl1.h - Additional ACPI table definitions
00004  *
00005  *****************************************************************************/
00006 
00007 /******************************************************************************
00008  *
00009  * 1. Copyright Notice
00010  *
00011  * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
00012  * All rights reserved.
00013  *
00014  * 2. License
00015  *
00016  * 2.1. This is your license from Intel Corp. under its intellectual property
00017  * rights.  You may have additional license terms from the party that provided
00018  * you this software, covering your right to use that party's intellectual
00019  * property rights.
00020  *
00021  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
00022  * copy of the source code appearing in this file ("Covered Code") an
00023  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
00024  * base code distributed originally by Intel ("Original Intel Code") to copy,
00025  * make derivatives, distribute, use and display any portion of the Covered
00026  * Code in any form, with the right to sublicense such rights; and
00027  *
00028  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
00029  * license (with the right to sublicense), under only those claims of Intel
00030  * patents that are infringed by the Original Intel Code, to make, use, sell,
00031  * offer to sell, and import the Covered Code and derivative works thereof
00032  * solely to the minimum extent necessary to exercise the above copyright
00033  * license, and in no event shall the patent license extend to any additions
00034  * to or modifications of the Original Intel Code.  No other license or right
00035  * is granted directly or by implication, estoppel or otherwise;
00036  *
00037  * The above copyright and patent license is granted only if the following
00038  * conditions are met:
00039  *
00040  * 3. Conditions
00041  *
00042  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
00043  * Redistribution of source code of any substantial portion of the Covered
00044  * Code or modification with rights to further distribute source must include
00045  * the above Copyright Notice, the above License, this list of Conditions,
00046  * and the following Disclaimer and Export Compliance provision.  In addition,
00047  * Licensee must cause all Covered Code to which Licensee contributes to
00048  * contain a file documenting the changes Licensee made to create that Covered
00049  * Code and the date of any change.  Licensee must include in that file the
00050  * documentation of any changes made by any predecessor Licensee.  Licensee
00051  * must include a prominent statement that the modification is derived,
00052  * directly or indirectly, from Original Intel Code.
00053  *
00054  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
00055  * Redistribution of source code of any substantial portion of the Covered
00056  * Code or modification without rights to further distribute source must
00057  * include the following Disclaimer and Export Compliance provision in the
00058  * documentation and/or other materials provided with distribution.  In
00059  * addition, Licensee may not authorize further sublicense of source of any
00060  * portion of the Covered Code, and must include terms to the effect that the
00061  * license from Licensee to its licensee is limited to the intellectual
00062  * property embodied in the software Licensee provides to its licensee, and
00063  * not to intellectual property embodied in modifications its licensee may
00064  * make.
00065  *
00066  * 3.3. Redistribution of Executable. Redistribution in executable form of any
00067  * substantial portion of the Covered Code or modification must reproduce the
00068  * above Copyright Notice, and the following Disclaimer and Export Compliance
00069  * provision in the documentation and/or other materials provided with the
00070  * distribution.
00071  *
00072  * 3.4. Intel retains all right, title, and interest in and to the Original
00073  * Intel Code.
00074  *
00075  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
00076  * Intel shall be used in advertising or otherwise to promote the sale, use or
00077  * other dealings in products derived from or relating to the Covered Code
00078  * without prior written authorization from Intel.
00079  *
00080  * 4. Disclaimer and Export Compliance
00081  *
00082  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
00083  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
00084  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
00085  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
00086  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
00087  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
00088  * PARTICULAR PURPOSE.
00089  *
00090  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
00091  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
00092  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
00093  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
00094  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
00095  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
00096  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
00097  * LIMITED REMEDY.
00098  *
00099  * 4.3. Licensee shall not export, either directly or indirectly, any of this
00100  * software or system incorporating such software without first obtaining any
00101  * required license or other approval from the U. S. Department of Commerce or
00102  * any other agency or department of the United States Government.  In the
00103  * event Licensee exports any such software from the United States or
00104  * re-exports any such software from a foreign destination, Licensee shall
00105  * ensure that the distribution and export/re-export of the software is in
00106  * compliance with all laws, regulations, orders, or other restrictions of the
00107  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
00108  * any of its subsidiaries will export/re-export any technical data, process,
00109  * software, or service, directly or indirectly, to any country for which the
00110  * United States government or any agency thereof requires an export license,
00111  * other governmental approval, or letter of assurance, without first obtaining
00112  * such license, approval or letter.
00113  *
00114  *****************************************************************************/
00115 
00116 #ifndef __ACTBL1_H__
00117 #define __ACTBL1_H__
00118 
00119 
00120 /*******************************************************************************
00121  *
00122  * Additional ACPI Tables (1)
00123  *
00124  * These tables are not consumed directly by the ACPICA subsystem, but are
00125  * included here to support device drivers and the AML disassembler.
00126  *
00127  * The tables in this file are fully defined within the ACPI specification.
00128  *
00129  ******************************************************************************/
00130 
00131 
00132 /*
00133  * Values for description table header signatures for tables defined in this
00134  * file. Useful because they make it more difficult to inadvertently type in
00135  * the wrong signature.
00136  */
00137 #define ACPI_SIG_BERT           "BERT"      /* Boot Error Record Table */
00138 #define ACPI_SIG_CPEP           "CPEP"      /* Corrected Platform Error Polling table */
00139 #define ACPI_SIG_ECDT           "ECDT"      /* Embedded Controller Boot Resources Table */
00140 #define ACPI_SIG_EINJ           "EINJ"      /* Error Injection table */
00141 #define ACPI_SIG_ERST           "ERST"      /* Error Record Serialization Table */
00142 #define ACPI_SIG_HEST           "HEST"      /* Hardware Error Source Table */
00143 #define ACPI_SIG_MADT           "APIC"      /* Multiple APIC Description Table */
00144 #define ACPI_SIG_MSCT           "MSCT"      /* Maximum System Characteristics Table */
00145 #define ACPI_SIG_SBST           "SBST"      /* Smart Battery Specification Table */
00146 #define ACPI_SIG_SLIT           "SLIT"      /* System Locality Distance Information Table */
00147 #define ACPI_SIG_SRAT           "SRAT"      /* System Resource Affinity Table */
00148 
00149 
00150 /*
00151  * All tables must be byte-packed to match the ACPI specification, since
00152  * the tables are provided by the system BIOS.
00153  */
00154 #pragma pack(1)
00155 
00156 /*
00157  * Note about bitfields: The UINT8 type is used for bitfields in ACPI tables.
00158  * This is the only type that is even remotely portable. Anything else is not
00159  * portable, so do not use any other bitfield types.
00160  */
00161 
00162 
00163 /*******************************************************************************
00164  *
00165  * Common subtable headers
00166  *
00167  ******************************************************************************/
00168 
00169 /* Generic subtable header (used in MADT, SRAT, etc.) */
00170 
00171 typedef struct acpi_subtable_header
00172 {
00173     UINT8                   Type;
00174     UINT8                   Length;
00175 
00176 } ACPI_SUBTABLE_HEADER;
00177 
00178 
00179 /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
00180 
00181 typedef struct acpi_whea_header
00182 {
00183     UINT8                   Action;
00184     UINT8                   Instruction;
00185     UINT8                   Flags;
00186     UINT8                   Reserved;
00187     ACPI_GENERIC_ADDRESS    RegisterRegion;
00188     UINT64                  Value;              /* Value used with Read/Write register */
00189     UINT64                  Mask;               /* Bitmask required for this register instruction */
00190 
00191 } ACPI_WHEA_HEADER;
00192 
00193 
00194 /*******************************************************************************
00195  *
00196  * BERT - Boot Error Record Table (ACPI 4.0)
00197  *        Version 1
00198  *
00199  ******************************************************************************/
00200 
00201 typedef struct acpi_table_bert
00202 {
00203     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
00204     UINT32                  RegionLength;       /* Length of the boot error region */
00205     UINT64                  Address;            /* Physical addresss of the error region */
00206 
00207 } ACPI_TABLE_BERT;
00208 
00209 
00210 /* Boot Error Region (not a subtable, pointed to by Address field above) */
00211 
00212 typedef struct acpi_bert_region
00213 {
00214     UINT32                  BlockStatus;        /* Type of error information */
00215     UINT32                  RawDataOffset;      /* Offset to raw error data */
00216     UINT32                  RawDataLength;      /* Length of raw error data */
00217     UINT32                  DataLength;         /* Length of generic error data */
00218     UINT32                  ErrorSeverity;      /* Severity code */
00219 
00220 } ACPI_BERT_REGION;
00221 
00222 /* Values for BlockStatus flags above */
00223 
00224 #define ACPI_BERT_UNCORRECTABLE             (1)
00225 #define ACPI_BERT_CORRECTABLE               (1<<1)
00226 #define ACPI_BERT_MULTIPLE_UNCORRECTABLE    (1<<2)
00227 #define ACPI_BERT_MULTIPLE_CORRECTABLE      (1<<3)
00228 #define ACPI_BERT_ERROR_ENTRY_COUNT         (0xFF<<4) /* 8 bits, error count */
00229 
00230 /* Values for ErrorSeverity above */
00231 
00232 enum AcpiBertErrorSeverity
00233 {
00234     ACPI_BERT_ERROR_CORRECTABLE     = 0,
00235     ACPI_BERT_ERROR_FATAL           = 1,
00236     ACPI_BERT_ERROR_CORRECTED       = 2,
00237     ACPI_BERT_ERROR_NONE            = 3,
00238     ACPI_BERT_ERROR_RESERVED        = 4     /* 4 and greater are reserved */
00239 };
00240 
00241 /*
00242  * Note: The generic error data that follows the ErrorSeverity field above
00243  * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below
00244  */
00245 
00246 
00247 /*******************************************************************************
00248  *
00249  * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
00250  *        Version 1
00251  *
00252  ******************************************************************************/
00253 
00254 typedef struct acpi_table_cpep
00255 {
00256     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
00257     UINT64                  Reserved;
00258 
00259 } ACPI_TABLE_CPEP;
00260 
00261 
00262 /* Subtable */
00263 
00264 typedef struct acpi_cpep_polling
00265 {
00266     ACPI_SUBTABLE_HEADER    Header;
00267     UINT8                   Id;                 /* Processor ID */
00268     UINT8                   Eid;                /* Processor EID */
00269     UINT32                  Interval;           /* Polling interval (msec) */
00270 
00271 } ACPI_CPEP_POLLING;
00272 
00273 
00274 /*******************************************************************************
00275  *
00276  * ECDT - Embedded Controller Boot Resources Table
00277  *        Version 1
00278  *
00279  ******************************************************************************/
00280 
00281 typedef struct acpi_table_ecdt
00282 {
00283     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
00284     ACPI_GENERIC_ADDRESS    Control;            /* Address of EC command/status register */
00285     ACPI_GENERIC_ADDRESS    Data;               /* Address of EC data register */
00286     UINT32                  Uid;                /* Unique ID - must be same as the EC _UID method */
00287     UINT8                   Gpe;                /* The GPE for the EC */
00288     UINT8                   Id[1];              /* Full namepath of the EC in the ACPI namespace */
00289 
00290 } ACPI_TABLE_ECDT;
00291 
00292 
00293 /*******************************************************************************
00294  *
00295  * EINJ - Error Injection Table (ACPI 4.0)
00296  *        Version 1
00297  *
00298  ******************************************************************************/
00299 
00300 typedef struct acpi_table_einj
00301 {
00302     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
00303     UINT32                  HeaderLength;
00304     UINT8                   Flags;
00305     UINT8                   Reserved[3];
00306     UINT32                  Entries;
00307 
00308 } ACPI_TABLE_EINJ;
00309 
00310 
00311 /* EINJ Injection Instruction Entries (actions) */
00312 
00313 typedef struct acpi_einj_entry
00314 {
00315     ACPI_WHEA_HEADER        WheaHeader;         /* Common header for WHEA tables */
00316 
00317 } ACPI_EINJ_ENTRY;
00318 
00319 /* Masks for Flags field above */
00320 
00321 #define ACPI_EINJ_PRESERVE          (1)
00322 
00323 /* Values for Action field above */
00324 
00325 enum AcpiEinjActions
00326 {
00327     ACPI_EINJ_BEGIN_OPERATION       = 0,
00328     ACPI_EINJ_GET_TRIGGER_TABLE     = 1,
00329     ACPI_EINJ_SET_ERROR_TYPE        = 2,
00330     ACPI_EINJ_GET_ERROR_TYPE        = 3,
00331     ACPI_EINJ_END_OPERATION         = 4,
00332     ACPI_EINJ_EXECUTE_OPERATION     = 5,
00333     ACPI_EINJ_CHECK_BUSY_STATUS     = 6,
00334     ACPI_EINJ_GET_COMMAND_STATUS    = 7,
00335     ACPI_EINJ_ACTION_RESERVED       = 8,     /* 8 and greater are reserved */
00336     ACPI_EINJ_TRIGGER_ERROR         = 0xFF   /* Except for this value */
00337 };
00338 
00339 /* Values for Instruction field above */
00340 
00341 enum AcpiEinjInstructions
00342 {
00343     ACPI_EINJ_READ_REGISTER         = 0,
00344     ACPI_EINJ_READ_REGISTER_VALUE   = 1,
00345     ACPI_EINJ_WRITE_REGISTER        = 2,
00346     ACPI_EINJ_WRITE_REGISTER_VALUE  = 3,
00347     ACPI_EINJ_NOOP                  = 4,
00348     ACPI_EINJ_INSTRUCTION_RESERVED  = 5     /* 5 and greater are reserved */
00349 };
00350 
00351 
00352 /* EINJ Trigger Error Action Table */
00353 
00354 typedef struct acpi_einj_trigger
00355 {
00356     UINT32                  HeaderSize;
00357     UINT32                  Revision;
00358     UINT32                  TableSize;
00359     UINT32                  EntryCount;
00360 
00361 } ACPI_EINJ_TRIGGER;
00362 
00363 /* Command status return values */
00364 
00365 enum AcpiEinjCommandStatus
00366 {
00367     ACPI_EINJ_SUCCESS               = 0,
00368     ACPI_EINJ_FAILURE               = 1,
00369     ACPI_EINJ_INVALID_ACCESS        = 2,
00370     ACPI_EINJ_STATUS_RESERVED       = 3     /* 3 and greater are reserved */
00371 };
00372 
00373 
00374 /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
00375 
00376 #define ACPI_EINJ_PROCESSOR_CORRECTABLE     (1)
00377 #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE   (1<<1)
00378 #define ACPI_EINJ_PROCESSOR_FATAL           (1<<2)
00379 #define ACPI_EINJ_MEMORY_CORRECTABLE        (1<<3)
00380 #define ACPI_EINJ_MEMORY_UNCORRECTABLE      (1<<4)
00381 #define ACPI_EINJ_MEMORY_FATAL              (1<<5)
00382 #define ACPI_EINJ_PCIX_CORRECTABLE          (1<<6)
00383 #define ACPI_EINJ_PCIX_UNCORRECTABLE        (1<<7)
00384 #define ACPI_EINJ_PCIX_FATAL                (1<<8)
00385 #define ACPI_EINJ_PLATFORM_CORRECTABLE      (1<<9)
00386 #define ACPI_EINJ_PLATFORM_UNCORRECTABLE    (1<<10)
00387 #define ACPI_EINJ_PLATFORM_FATAL            (1<<11)
00388 
00389 
00390 /*******************************************************************************
00391  *
00392  * ERST - Error Record Serialization Table (ACPI 4.0)
00393  *        Version 1
00394  *
00395  ******************************************************************************/
00396 
00397 typedef struct acpi_table_erst
00398 {
00399     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
00400     UINT32                  HeaderLength;
00401     UINT32                  Reserved;
00402     UINT32                  Entries;
00403 
00404 } ACPI_TABLE_ERST;
00405 
00406 
00407 /* ERST Serialization Entries (actions) */
00408 
00409 typedef struct acpi_erst_entry
00410 {
00411     ACPI_WHEA_HEADER        WheaHeader;         /* Common header for WHEA tables */
00412 
00413 } ACPI_ERST_ENTRY;
00414 
00415 /* Masks for Flags field above */
00416 
00417 #define ACPI_ERST_PRESERVE          (1)
00418 
00419 /* Values for Action field above */
00420 
00421 enum AcpiErstActions
00422 {
00423     ACPI_ERST_BEGIN_WRITE           = 0,
00424     ACPI_ERST_BEGIN_READ            = 1,
00425     ACPI_ERST_BEGIN_CLEAR           = 2,
00426     ACPI_ERST_END                   = 3,
00427     ACPI_ERST_SET_RECORD_OFFSET     = 4,
00428     ACPI_ERST_EXECUTE_OPERATION     = 5,
00429     ACPI_ERST_CHECK_BUSY_STATUS     = 6,
00430     ACPI_ERST_GET_COMMAND_STATUS    = 7,
00431     ACPI_ERST_GET_RECORD_ID         = 8,
00432     ACPI_ERST_SET_RECORD_ID         = 9,
00433     ACPI_ERST_GET_RECORD_COUNT      = 10,
00434     ACPI_ERST_BEGIN_DUMMY_WRIITE    = 11,
00435     ACPI_ERST_NOT_USED              = 12,
00436     ACPI_ERST_GET_ERROR_RANGE       = 13,
00437     ACPI_ERST_GET_ERROR_LENGTH      = 14,
00438     ACPI_ERST_GET_ERROR_ATTRIBUTES  = 15,
00439     ACPI_ERST_ACTION_RESERVED       = 16    /* 16 and greater are reserved */
00440 };
00441 
00442 /* Values for Instruction field above */
00443 
00444 enum AcpiErstInstructions
00445 {
00446     ACPI_ERST_READ_REGISTER         = 0,
00447     ACPI_ERST_READ_REGISTER_VALUE   = 1,
00448     ACPI_ERST_WRITE_REGISTER        = 2,
00449     ACPI_ERST_WRITE_REGISTER_VALUE  = 3,
00450     ACPI_ERST_NOOP                  = 4,
00451     ACPI_ERST_LOAD_VAR1             = 5,
00452     ACPI_ERST_LOAD_VAR2             = 6,
00453     ACPI_ERST_STORE_VAR1            = 7,
00454     ACPI_ERST_ADD                   = 8,
00455     ACPI_ERST_SUBTRACT              = 9,
00456     ACPI_ERST_ADD_VALUE             = 10,
00457     ACPI_ERST_SUBTRACT_VALUE        = 11,
00458     ACPI_ERST_STALL                 = 12,
00459     ACPI_ERST_STALL_WHILE_TRUE      = 13,
00460     ACPI_ERST_SKIP_NEXT_IF_TRUE     = 14,
00461     ACPI_ERST_GOTO                  = 15,
00462     ACPI_ERST_SET_SRC_ADDRESS_BASE  = 16,
00463     ACPI_ERST_SET_DST_ADDRESS_BASE  = 17,
00464     ACPI_ERST_MOVE_DATA             = 18,
00465     ACPI_ERST_INSTRUCTION_RESERVED  = 19    /* 19 and greater are reserved */
00466 };
00467 
00468 /* Command status return values */
00469 
00470 enum AcpiErstCommandStatus
00471 {
00472     ACPI_ERST_SUCESS                = 0,
00473     ACPI_ERST_NO_SPACE              = 1,
00474     ACPI_ERST_NOT_AVAILABLE         = 2,
00475     ACPI_ERST_FAILURE               = 3,
00476     ACPI_ERST_RECORD_EMPTY          = 4,
00477     ACPI_ERST_NOT_FOUND             = 5,
00478     ACPI_ERST_STATUS_RESERVED       = 6     /* 6 and greater are reserved */
00479 };
00480 
00481 
00482 /* Error Record Serialization Information */
00483 
00484 typedef struct acpi_erst_info
00485 {
00486     UINT16                  Signature;          /* Should be "ER" */
00487     UINT8                   Data[48];
00488 
00489 } ACPI_ERST_INFO;
00490 
00491 
00492 /*******************************************************************************
00493  *
00494  * HEST - Hardware Error Source Table (ACPI 4.0)
00495  *        Version 1
00496  *
00497  ******************************************************************************/
00498 
00499 typedef struct acpi_table_hest
00500 {
00501     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
00502     UINT32                  ErrorSourceCount;
00503 
00504 } ACPI_TABLE_HEST;
00505 
00506 
00507 /* HEST subtable header */
00508 
00509 typedef struct acpi_hest_header
00510 {
00511     UINT16                  Type;
00512     UINT16                  SourceId;
00513 
00514 } ACPI_HEST_HEADER;
00515 
00516 
00517 /* Values for Type field above for subtables */
00518 
00519 enum AcpiHestTypes
00520 {
00521     ACPI_HEST_TYPE_IA32_CHECK           = 0,
00522     ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
00523     ACPI_HEST_TYPE_IA32_NMI             = 2,
00524     ACPI_HEST_TYPE_NOT_USED3            = 3,
00525     ACPI_HEST_TYPE_NOT_USED4            = 4,
00526     ACPI_HEST_TYPE_NOT_USED5            = 5,
00527     ACPI_HEST_TYPE_AER_ROOT_PORT        = 6,
00528     ACPI_HEST_TYPE_AER_ENDPOINT         = 7,
00529     ACPI_HEST_TYPE_AER_BRIDGE           = 8,
00530     ACPI_HEST_TYPE_GENERIC_ERROR        = 9,
00531     ACPI_HEST_TYPE_RESERVED             = 10    /* 10 and greater are reserved */
00532 };
00533 
00534 
00535 /*
00536  * HEST substructures contained in subtables
00537  */
00538 
00539 /*
00540  * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
00541  * ACPI_HEST_IA_CORRECTED structures.
00542  */
00543 typedef struct acpi_hest_ia_error_bank
00544 {
00545     UINT8                   BankNumber;
00546     UINT8                   ClearStatusOnInit;
00547     UINT8                   StatusFormat;
00548     UINT8                   Reserved;
00549     UINT32                  ControlRegister;
00550     UINT64                  ControlData;
00551     UINT32                  StatusRegister;
00552     UINT32                  AddressRegister;
00553     UINT32                  MiscRegister;
00554 
00555 } ACPI_HEST_IA_ERROR_BANK;
00556 
00557 
00558 /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
00559 
00560 typedef struct acpi_hest_aer_common
00561 {
00562     UINT16                  Reserved1;
00563     UINT8                   Flags;
00564     UINT8                   Enabled;
00565     UINT32                  RecordsToPreallocate;
00566     UINT32                  MaxSectionsPerRecord;
00567     UINT32                  Bus;
00568     UINT16                  Device;
00569     UINT16                  Function;
00570     UINT16                  DeviceControl;
00571     UINT16                  Reserved2;
00572     UINT32                  UncorrectableMask;
00573     UINT32                  UncorrectableSeverity;
00574     UINT32                  CorrectableMask;
00575     UINT32                  AdvancedCapabilities;
00576 
00577 } ACPI_HEST_AER_COMMON;
00578 
00579 /* Masks for HEST Flags fields */
00580 
00581 #define ACPI_HEST_FIRMWARE_FIRST        (1)
00582 #define ACPI_HEST_GLOBAL                (1<<1)
00583 
00584 
00585 /* Hardware Error Notification */
00586 
00587 typedef struct acpi_hest_notify
00588 {
00589     UINT8                   Type;
00590     UINT8                   Length;
00591     UINT16                  ConfigWriteEnable;
00592     UINT32                  PollInterval;
00593     UINT32                  Vector;
00594     UINT32                  PollingThresholdValue;
00595     UINT32                  PollingThresholdWindow;
00596     UINT32                  ErrorThresholdValue;
00597     UINT32                  ErrorThresholdWindow;
00598 
00599 } ACPI_HEST_NOTIFY;
00600 
00601 /* Values for Notify Type field above */
00602 
00603 enum AcpiHestNotifyTypes
00604 {
00605     ACPI_HEST_NOTIFY_POLLED     = 0,
00606     ACPI_HEST_NOTIFY_EXTERNAL   = 1,
00607     ACPI_HEST_NOTIFY_LOCAL      = 2,
00608     ACPI_HEST_NOTIFY_SCI        = 3,
00609     ACPI_HEST_NOTIFY_NMI        = 4,
00610     ACPI_HEST_NOTIFY_RESERVED   = 5     /* 5 and greater are reserved */
00611 };
00612 
00613 /* Values for ConfigWriteEnable bitfield above */
00614 
00615 #define ACPI_HEST_TYPE                  (1)
00616 #define ACPI_HEST_POLL_INTERVAL         (1<<1)
00617 #define ACPI_HEST_POLL_THRESHOLD_VALUE  (1<<2)
00618 #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
00619 #define ACPI_HEST_ERR_THRESHOLD_VALUE   (1<<4)
00620 #define ACPI_HEST_ERR_THRESHOLD_WINDOW  (1<<5)
00621 
00622 
00623 /*
00624  * HEST subtables
00625  */
00626 
00627 /* 0: IA32 Machine Check Exception */
00628 
00629 typedef struct acpi_hest_ia_machine_check
00630 {
00631     ACPI_HEST_HEADER        Header;
00632     UINT16                  Reserved1;
00633     UINT8                   Flags;
00634     UINT8                   Enabled;
00635     UINT32                  RecordsToPreallocate;
00636     UINT32                  MaxSectionsPerRecord;
00637     UINT64                  GlobalCapabilityData;
00638     UINT64                  GlobalControlData;
00639     UINT8                   NumHardwareBanks;
00640     UINT8                   Reserved3[7];
00641 
00642 } ACPI_HEST_IA_MACHINE_CHECK;
00643 
00644 
00645 /* 1: IA32 Corrected Machine Check */
00646 
00647 typedef struct acpi_hest_ia_corrected
00648 {
00649     ACPI_HEST_HEADER        Header;
00650     UINT16                  Reserved1;
00651     UINT8                   Flags;
00652     UINT8                   Enabled;
00653     UINT32                  RecordsToPreallocate;
00654     UINT32                  MaxSectionsPerRecord;
00655     ACPI_HEST_NOTIFY        Notify;
00656     UINT8                   NumHardwareBanks;
00657     UINT8                   Reserved2[3];
00658 
00659 } ACPI_HEST_IA_CORRECTED;
00660 
00661 
00662 /* 2: IA32 Non-Maskable Interrupt */
00663 
00664 typedef struct acpi_hest_ia_nmi
00665 {
00666     ACPI_HEST_HEADER        Header;
00667     UINT32                  Reserved;
00668     UINT32                  RecordsToPreallocate;
00669     UINT32                  MaxSectionsPerRecord;
00670     UINT32                  MaxRawDataLength;
00671 
00672 } ACPI_HEST_IA_NMI;
00673 
00674 
00675 /* 3,4,5: Not used */
00676 
00677 /* 6: PCI Express Root Port AER */
00678 
00679 typedef struct acpi_hest_aer_root
00680 {
00681     ACPI_HEST_HEADER        Header;
00682     ACPI_HEST_AER_COMMON    Aer;
00683     UINT32                  RootErrorCommand;
00684 
00685 } ACPI_HEST_AER_ROOT;
00686 
00687 
00688 /* 7: PCI Express AER (AER Endpoint) */
00689 
00690 typedef struct acpi_hest_aer
00691 {
00692     ACPI_HEST_HEADER        Header;
00693     ACPI_HEST_AER_COMMON    Aer;
00694 
00695 } ACPI_HEST_AER;
00696 
00697 
00698 /* 8: PCI Express/PCI-X Bridge AER */
00699 
00700 typedef struct acpi_hest_aer_bridge
00701 {
00702     ACPI_HEST_HEADER        Header;
00703     ACPI_HEST_AER_COMMON    Aer;
00704     UINT32                  UncorrectableMask2;
00705     UINT32                  UncorrectableSeverity2;
00706     UINT32                  AdvancedCapabilities2;
00707 
00708 } ACPI_HEST_AER_BRIDGE;
00709 
00710 
00711 /* 9: Generic Hardware Error Source */
00712 
00713 typedef struct acpi_hest_generic
00714 {
00715     ACPI_HEST_HEADER        Header;
00716     UINT16                  RelatedSourceId;
00717     UINT8                   Reserved;
00718     UINT8                   Enabled;
00719     UINT32                  RecordsToPreallocate;
00720     UINT32                  MaxSectionsPerRecord;
00721     UINT32                  MaxRawDataLength;
00722     ACPI_GENERIC_ADDRESS    ErrorStatusAddress;
00723     ACPI_HEST_NOTIFY        Notify;
00724     UINT32                  ErrorBlockLength;
00725 
00726 } ACPI_HEST_GENERIC;
00727 
00728 
00729 /* Generic Error Status block */
00730 
00731 typedef struct acpi_hest_generic_status
00732 {
00733     UINT32                  BlockStatus;
00734     UINT32                  RawDataOffset;
00735     UINT32                  RawDataLength;
00736     UINT32                  DataLength;
00737     UINT32                  ErrorSeverity;
00738 
00739 } ACPI_HEST_GENERIC_STATUS;
00740 
00741 /* Values for BlockStatus flags above */
00742 
00743 #define ACPI_HEST_UNCORRECTABLE             (1)
00744 #define ACPI_HEST_CORRECTABLE               (1<<1)
00745 #define ACPI_HEST_MULTIPLE_UNCORRECTABLE    (1<<2)
00746 #define ACPI_HEST_MULTIPLE_CORRECTABLE      (1<<3)
00747 #define ACPI_HEST_ERROR_ENTRY_COUNT         (0xFF<<4) /* 8 bits, error count */
00748 
00749 
00750 /* Generic Error Data entry */
00751 
00752 typedef struct acpi_hest_generic_data
00753 {
00754     UINT8                   SectionType[16];
00755     UINT32                  ErrorSeverity;
00756     UINT16                  Revision;
00757     UINT8                   ValidationBits;
00758     UINT8                   Flags;
00759     UINT32                  ErrorDataLength;
00760     UINT8                   FruId[16];
00761     UINT8                   FruText[20];
00762 
00763 } ACPI_HEST_GENERIC_DATA;
00764 
00765 
00766 /*******************************************************************************
00767  *
00768  * MADT - Multiple APIC Description Table
00769  *        Version 3
00770  *
00771  ******************************************************************************/
00772 
00773 typedef struct acpi_table_madt
00774 {
00775     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
00776     UINT32                  Address;            /* Physical address of local APIC */
00777     UINT32                  Flags;
00778 
00779 } ACPI_TABLE_MADT;
00780 
00781 /* Masks for Flags field above */
00782 
00783 #define ACPI_MADT_PCAT_COMPAT       (1)         /* 00: System also has dual 8259s */
00784 
00785 /* Values for PCATCompat flag */
00786 
00787 #define ACPI_MADT_DUAL_PIC          0
00788 #define ACPI_MADT_MULTIPLE_APIC     1
00789 
00790 
00791 /* Values for MADT subtable type in ACPI_SUBTABLE_HEADER */
00792 
00793 enum AcpiMadtType
00794 {
00795     ACPI_MADT_TYPE_LOCAL_APIC           = 0,
00796     ACPI_MADT_TYPE_IO_APIC              = 1,
00797     ACPI_MADT_TYPE_INTERRUPT_OVERRIDE   = 2,
00798     ACPI_MADT_TYPE_NMI_SOURCE           = 3,
00799     ACPI_MADT_TYPE_LOCAL_APIC_NMI       = 4,
00800     ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE  = 5,
00801     ACPI_MADT_TYPE_IO_SAPIC             = 6,
00802     ACPI_MADT_TYPE_LOCAL_SAPIC          = 7,
00803     ACPI_MADT_TYPE_INTERRUPT_SOURCE     = 8,
00804     ACPI_MADT_TYPE_LOCAL_X2APIC         = 9,
00805     ACPI_MADT_TYPE_LOCAL_X2APIC_NMI     = 10,
00806     ACPI_MADT_TYPE_RESERVED             = 11    /* 11 and greater are reserved */
00807 };
00808 
00809 
00810 /*
00811  * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER
00812  */
00813 
00814 /* 0: Processor Local APIC */
00815 
00816 typedef struct acpi_madt_local_apic
00817 {
00818     ACPI_SUBTABLE_HEADER    Header;
00819     UINT8                   ProcessorId;        /* ACPI processor id */
00820     UINT8                   Id;                 /* Processor's local APIC id */
00821     UINT32                  LapicFlags;
00822 
00823 } ACPI_MADT_LOCAL_APIC;
00824 
00825 
00826 /* 1: IO APIC */
00827 
00828 typedef struct acpi_madt_io_apic
00829 {
00830     ACPI_SUBTABLE_HEADER    Header;
00831     UINT8                   Id;                 /* I/O APIC ID */
00832     UINT8                   Reserved;           /* Reserved - must be zero */
00833     UINT32                  Address;            /* APIC physical address */
00834     UINT32                  GlobalIrqBase;      /* Global system interrupt where INTI lines start */
00835 
00836 } ACPI_MADT_IO_APIC;
00837 
00838 
00839 /* 2: Interrupt Override */
00840 
00841 typedef struct acpi_madt_interrupt_override
00842 {
00843     ACPI_SUBTABLE_HEADER    Header;
00844     UINT8                   Bus;                /* 0 - ISA */
00845     UINT8                   SourceIrq;          /* Interrupt source (IRQ) */
00846     UINT32                  GlobalIrq;          /* Global system interrupt */
00847     UINT16                  IntiFlags;
00848 
00849 } ACPI_MADT_INTERRUPT_OVERRIDE;
00850 
00851 
00852 /* 3: NMI Source */
00853 
00854 typedef struct acpi_madt_nmi_source
00855 {
00856     ACPI_SUBTABLE_HEADER    Header;
00857     UINT16                  IntiFlags;
00858     UINT32                  GlobalIrq;          /* Global system interrupt */
00859 
00860 } ACPI_MADT_NMI_SOURCE;
00861 
00862 
00863 /* 4: Local APIC NMI */
00864 
00865 typedef struct acpi_madt_local_apic_nmi
00866 {
00867     ACPI_SUBTABLE_HEADER    Header;
00868     UINT8                   ProcessorId;        /* ACPI processor id */
00869     UINT16                  IntiFlags;
00870     UINT8                   Lint;               /* LINTn to which NMI is connected */
00871 
00872 } ACPI_MADT_LOCAL_APIC_NMI;
00873 
00874 
00875 /* 5: Address Override */
00876 
00877 typedef struct acpi_madt_local_apic_override
00878 {
00879     ACPI_SUBTABLE_HEADER    Header;
00880     UINT16                  Reserved;           /* Reserved, must be zero */
00881     UINT64                  Address;            /* APIC physical address */
00882 
00883 } ACPI_MADT_LOCAL_APIC_OVERRIDE;
00884 
00885 
00886 /* 6: I/O Sapic */
00887 
00888 typedef struct acpi_madt_io_sapic
00889 {
00890     ACPI_SUBTABLE_HEADER    Header;
00891     UINT8                   Id;                 /* I/O SAPIC ID */
00892     UINT8                   Reserved;           /* Reserved, must be zero */
00893     UINT32                  GlobalIrqBase;      /* Global interrupt for SAPIC start */
00894     UINT64                  Address;            /* SAPIC physical address */
00895 
00896 } ACPI_MADT_IO_SAPIC;
00897 
00898 
00899 /* 7: Local Sapic */
00900 
00901 typedef struct acpi_madt_local_sapic
00902 {
00903     ACPI_SUBTABLE_HEADER    Header;
00904     UINT8                   ProcessorId;        /* ACPI processor id */
00905     UINT8                   Id;                 /* SAPIC ID */
00906     UINT8                   Eid;                /* SAPIC EID */
00907     UINT8                   Reserved[3];        /* Reserved, must be zero */
00908     UINT32                  LapicFlags;
00909     UINT32                  Uid;                /* Numeric UID - ACPI 3.0 */
00910     char                    UidString[1];       /* String UID  - ACPI 3.0 */
00911 
00912 } ACPI_MADT_LOCAL_SAPIC;
00913 
00914 
00915 /* 8: Platform Interrupt Source */
00916 
00917 typedef struct acpi_madt_interrupt_source
00918 {
00919     ACPI_SUBTABLE_HEADER    Header;
00920     UINT16                  IntiFlags;
00921     UINT8                   Type;               /* 1=PMI, 2=INIT, 3=corrected */
00922     UINT8                   Id;                 /* Processor ID */
00923     UINT8                   Eid;                /* Processor EID */
00924     UINT8                   IoSapicVector;      /* Vector value for PMI interrupts */
00925     UINT32                  GlobalIrq;          /* Global system interrupt */
00926     UINT32                  Flags;              /* Interrupt Source Flags */
00927 
00928 } ACPI_MADT_INTERRUPT_SOURCE;
00929 
00930 /* Masks for Flags field above */
00931 
00932 #define ACPI_MADT_CPEI_OVERRIDE     (1)
00933 
00934 
00935 /* 9: Processor Local X2APIC (ACPI 4.0) */
00936 
00937 typedef struct acpi_madt_local_x2apic
00938 {
00939     ACPI_SUBTABLE_HEADER    Header;
00940     UINT16                  Reserved;           /* Reserved - must be zero */
00941     UINT32                  LocalApicId;        /* Processor x2APIC ID  */
00942     UINT32                  LapicFlags;
00943     UINT32                  Uid;                /* ACPI processor UID */
00944 
00945 } ACPI_MADT_LOCAL_X2APIC;
00946 
00947 
00948 /* 10: Local X2APIC NMI (ACPI 4.0) */
00949 
00950 typedef struct acpi_madt_local_x2apic_nmi
00951 {
00952     ACPI_SUBTABLE_HEADER    Header;
00953     UINT16                  IntiFlags;
00954     UINT32                  Uid;                /* ACPI processor UID */
00955     UINT8                   Lint;               /* LINTn to which NMI is connected */
00956     UINT8                   Reserved[3];        /* Reserved - must be zero */
00957 
00958 } ACPI_MADT_LOCAL_X2APIC_NMI;
00959 
00960 
00961 /*
00962  * Common flags fields for MADT subtables
00963  */
00964 
00965 /* MADT Local APIC flags (LapicFlags) */
00966 
00967 #define ACPI_MADT_ENABLED           (1)         /* 00: Processor is usable if set */
00968 
00969 /* MADT MPS INTI flags (IntiFlags) */
00970 
00971 #define ACPI_MADT_POLARITY_MASK     (3)         /* 00-01: Polarity of APIC I/O input signals */
00972 #define ACPI_MADT_TRIGGER_MASK      (3<<2)      /* 02-03: Trigger mode of APIC input signals */
00973 
00974 /* Values for MPS INTI flags */
00975 
00976 #define ACPI_MADT_POLARITY_CONFORMS       0
00977 #define ACPI_MADT_POLARITY_ACTIVE_HIGH    1
00978 #define ACPI_MADT_POLARITY_RESERVED       2
00979 #define ACPI_MADT_POLARITY_ACTIVE_LOW     3
00980 
00981 #define ACPI_MADT_TRIGGER_CONFORMS        (0)
00982 #define ACPI_MADT_TRIGGER_EDGE            (1<<2)
00983 #define ACPI_MADT_TRIGGER_RESERVED        (2<<2)
00984 #define ACPI_MADT_TRIGGER_LEVEL           (3<<2)
00985 
00986 
00987 /*******************************************************************************
00988  *
00989  * MSCT - Maximum System Characteristics Table (ACPI 4.0)
00990  *        Version 1
00991  *
00992  ******************************************************************************/
00993 
00994 typedef struct acpi_table_msct
00995 {
00996     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
00997     UINT32                  ProximityOffset;    /* Location of proximity info struct(s) */
00998     UINT32                  MaxProximityDomains;/* Max number of proximity domains */
00999     UINT32                  MaxClockDomains;    /* Max number of clock domains */
01000     UINT64                  MaxAddress;         /* Max physical address in system */
01001 
01002 } ACPI_TABLE_MSCT;
01003 
01004 
01005 /* Subtable - Maximum Proximity Domain Information. Version 1 */
01006 
01007 typedef struct acpi_msct_proximity
01008 {
01009     UINT8                   Revision;
01010     UINT8                   Length;
01011     UINT32                  RangeStart;         /* Start of domain range */
01012     UINT32                  RangeEnd;           /* End of domain range */
01013     UINT32                  ProcessorCapacity;
01014     UINT64                  MemoryCapacity;     /* In bytes */
01015 
01016 } ACPI_MSCT_PROXIMITY;
01017 
01018 
01019 /*******************************************************************************
01020  *
01021  * SBST - Smart Battery Specification Table
01022  *        Version 1
01023  *
01024  ******************************************************************************/
01025 
01026 typedef struct acpi_table_sbst
01027 {
01028     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
01029     UINT32                  WarningLevel;
01030     UINT32                  LowLevel;
01031     UINT32                  CriticalLevel;
01032 
01033 } ACPI_TABLE_SBST;
01034 
01035 
01036 /*******************************************************************************
01037  *
01038  * SLIT - System Locality Distance Information Table
01039  *        Version 1
01040  *
01041  ******************************************************************************/
01042 
01043 typedef struct acpi_table_slit
01044 {
01045     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
01046     UINT64                  LocalityCount;
01047     UINT8                   Entry[1];           /* Real size = localities^2 */
01048 
01049 } ACPI_TABLE_SLIT;
01050 
01051 
01052 /*******************************************************************************
01053  *
01054  * SRAT - System Resource Affinity Table
01055  *        Version 3
01056  *
01057  ******************************************************************************/
01058 
01059 typedef struct acpi_table_srat
01060 {
01061     ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
01062     UINT32                  TableRevision;      /* Must be value '1' */
01063     UINT64                  Reserved;           /* Reserved, must be zero */
01064 
01065 } ACPI_TABLE_SRAT;
01066 
01067 /* Values for subtable type in ACPI_SUBTABLE_HEADER */
01068 
01069 enum AcpiSratType
01070 {
01071     ACPI_SRAT_TYPE_CPU_AFFINITY         = 0,
01072     ACPI_SRAT_TYPE_MEMORY_AFFINITY      = 1,
01073     ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY  = 2,
01074     ACPI_SRAT_TYPE_RESERVED             = 3     /* 3 and greater are reserved */
01075 };
01076 
01077 /*
01078  * SRAT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER
01079  */
01080 
01081 /* 0: Processor Local APIC/SAPIC Affinity */
01082 
01083 typedef struct acpi_srat_cpu_affinity
01084 {
01085     ACPI_SUBTABLE_HEADER    Header;
01086     UINT8                   ProximityDomainLo;
01087     UINT8                   ApicId;
01088     UINT32                  Flags;
01089     UINT8                   LocalSapicEid;
01090     UINT8                   ProximityDomainHi[3];
01091     UINT32                  Reserved;           /* Reserved, must be zero */
01092 
01093 } ACPI_SRAT_CPU_AFFINITY;
01094 
01095 /* Flags */
01096 
01097 #define ACPI_SRAT_CPU_USE_AFFINITY  (1)         /* 00: Use affinity structure */
01098 
01099 
01100 /* 1: Memory Affinity */
01101 
01102 typedef struct acpi_srat_mem_affinity
01103 {
01104     ACPI_SUBTABLE_HEADER    Header;
01105     UINT32                  ProximityDomain;
01106     UINT16                  Reserved;           /* Reserved, must be zero */
01107     UINT64                  BaseAddress;
01108     UINT64                  Length;
01109     UINT32                  Reserved1;
01110     UINT32                  Flags;
01111     UINT64                  Reserved2;          /* Reserved, must be zero */
01112 
01113 } ACPI_SRAT_MEM_AFFINITY;
01114 
01115 /* Flags */
01116 
01117 #define ACPI_SRAT_MEM_ENABLED       (1)         /* 00: Use affinity structure */
01118 #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1)      /* 01: Memory region is hot pluggable */
01119 #define ACPI_SRAT_MEM_NON_VOLATILE  (1<<2)      /* 02: Memory region is non-volatile */
01120 
01121 
01122 /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
01123 
01124 typedef struct acpi_srat_x2apic_cpu_affinity
01125 {
01126     ACPI_SUBTABLE_HEADER    Header;
01127     UINT16                  Reserved;           /* Reserved, must be zero */
01128     UINT32                  ProximityDomain;
01129     UINT32                  ApicId;
01130     UINT32                  Flags;
01131     UINT32                  ClockDomain;
01132     UINT32                  Reserved2;
01133 
01134 } ACPI_SRAT_X2APIC_CPU_AFFINITY;
01135 
01136 /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */
01137 
01138 #define ACPI_SRAT_CPU_ENABLED       (1)         /* 00: Use affinity structure */
01139 
01140 
01141 /* Reset to default packing */
01142 
01143 #pragma pack()
01144 
01145 #endif /* __ACTBL1_H__ */

Generated on Sat May 26 2012 04:25:52 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.