/** @file
  GUIDs and definitions used for Common Platform Error Record.

  Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>
  (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

  @par Revision Reference:
  GUIDs defined in UEFI 2.7 Specification.

**/

#ifndef __CPER_GUID_H__
#define __CPER_GUID_H__

#pragma pack(1)

#define EFI_ERROR_RECORD_SIGNATURE_START  SIGNATURE_32('C', 'P', 'E', 'R')
#define EFI_ERROR_RECORD_SIGNATURE_END    0xFFFFFFFF

#define EFI_ERROR_RECORD_REVISION  0x0101

///
/// Error Severity in Error Record Header and Error Section Descriptor
///@{
#define EFI_GENERIC_ERROR_RECOVERABLE  0x00000000
#define EFI_GENERIC_ERROR_FATAL        0x00000001
#define EFI_GENERIC_ERROR_CORRECTED    0x00000002
#define EFI_GENERIC_ERROR_INFO         0x00000003
///@}

///
/// The validation bit mask indicates the validity of the following fields
/// in Error Record Header.
///@{
#define EFI_ERROR_RECORD_HEADER_PLATFORM_ID_VALID   BIT0
#define EFI_ERROR_RECORD_HEADER_TIME_STAMP_VALID    BIT1
#define EFI_ERROR_RECORD_HEADER_PARTITION_ID_VALID  BIT2
///@}

///
/// Timestamp is precise if this bit is set and correlates to the time of the
/// error event.
///
#define EFI_ERROR_TIME_STAMP_PRECISE  BIT0

///
/// The timestamp correlates to the time when the error information was collected
/// by the system software and may not necessarily represent the time of the error
/// event. The timestamp contains the local time in BCD format.
///
typedef struct {
  UINT8    Seconds;
  UINT8    Minutes;
  UINT8    Hours;
  UINT8    Flag;
  UINT8    Day;
  UINT8    Month;
  UINT8    Year;
  UINT8    Century;
} EFI_ERROR_TIME_STAMP;

///
/// GUID value indicating the record association with an error event notification type.
///@{
#define EFI_EVENT_NOTIFICATION_TYEP_CMC_GUID \
  { \
    0x2DCE8BB1, 0xBDD7, 0x450e, { 0xB9, 0xAD, 0x9C, 0xF4, 0xEB, 0xD4, 0xF8, 0x90 } \
  }
#define EFI_EVENT_NOTIFICATION_TYEP_CPE_GUID \
  { \
    0x4E292F96, 0xD843, 0x4a55, { 0xA8, 0xC2, 0xD4, 0x81, 0xF2, 0x7E, 0xBE, 0xEE } \
  }
#define EFI_EVENT_NOTIFICATION_TYEP_MCE_GUID \
  { \
    0xE8F56FFE, 0x919C, 0x4cc5, { 0xBA, 0x88, 0x65, 0xAB, 0xE1, 0x49, 0x13, 0xBB } \
  }
#define EFI_EVENT_NOTIFICATION_TYEP_PCIE_GUID \
  { \
    0xCF93C01F, 0x1A16, 0x4dfc, { 0xB8, 0xBC, 0x9C, 0x4D, 0xAF, 0x67, 0xC1, 0x04 } \
  }
#define EFI_EVENT_NOTIFICATION_TYEP_INIT_GUID \
  { \
    0xCC5263E8, 0x9308, 0x454a, { 0x89, 0xD0, 0x34, 0x0B, 0xD3, 0x9B, 0xC9, 0x8E } \
  }
#define EFI_EVENT_NOTIFICATION_TYEP_NMI_GUID \
  { \
    0x5BAD89FF, 0xB7E6, 0x42c9, { 0x81, 0x4A, 0xCF, 0x24, 0x85, 0xD6, 0xE9, 0x8A } \
  }
#define EFI_EVENT_NOTIFICATION_TYEP_BOOT_GUID \
  { \
    0x3D61A466, 0xAB40, 0x409a, { 0xA6, 0x98, 0xF3, 0x62, 0xD4, 0x64, 0xB3, 0x8F } \
  }
#define EFI_EVENT_NOTIFICATION_TYEP_DMAR_GUID \
  { \
    0x667DD791, 0xC6B3, 0x4c27, { 0x8A, 0x6B, 0x0F, 0x8E, 0x72, 0x2D, 0xEB, 0x41 } \
  }
#define EFI_EVENT_NOTIFICATION_TYPE_DMAR_SEA \
  { \
    0x9A78788A, 0xBBE8, 0x11E4, { 0x80, 0x9E, 0x67, 0x61, 0x1E, 0x5D, 0x46, 0xB0 } \
  }
#define EFI_EVENT_NOTIFICATION_TYPE_DMAR_SEI \
  { \
    0x5C284C81, 0xB0AE, 0x4E87, { 0xA3, 0x22, 0xB0, 0x4C, 0x85, 0x62, 0x43, 0x23 } \
  }
#define EFI_EVENT_NOTIFICATION_TYPE_DMAR_PEI \
  { \
    0x09A9D5AC, 0x5204, 0x4214, { 0x96, 0xE5, 0x94, 0x99, 0x2E, 0x75, 0x2B, 0xCD } \
  }
///@}

///
/// Error Record Header Flags
///@{
#define EFI_HW_ERROR_FLAGS_RECOVERED  0x00000001
#define EFI_HW_ERROR_FLAGS_PREVERR    0x00000002
#define EFI_HW_ERROR_FLAGS_SIMULATED  0x00000004
///@}

///
/// Common error record header
///
typedef struct {
  UINT32                  SignatureStart;
  UINT16                  Revision;
  UINT32                  SignatureEnd;
  UINT16                  SectionCount;
  UINT32                  ErrorSeverity;
  UINT32                  ValidationBits;
  UINT32                  RecordLength;
  EFI_ERROR_TIME_STAMP    TimeStamp;
  EFI_GUID                PlatformID;
  EFI_GUID                PartitionID;
  EFI_GUID                CreatorID;
  EFI_GUID                NotificationType;
  UINT64                  RecordID;
  UINT32                  Flags;
  UINT64                  PersistenceInfo;
  UINT8                   Resv1[12];
  ///
  /// An array of SectionCount descriptors for the associated
  /// sections. The number of valid sections is equivalent to the
  /// SectionCount. The buffer size of the record may include
  /// more space to dynamically add additional Section
  /// Descriptors to the error record.
  ///
} EFI_COMMON_ERROR_RECORD_HEADER;

#define EFI_ERROR_SECTION_REVISION  0x0100

///
/// Validity Fields in Error Section Descriptor.
///
#define EFI_ERROR_SECTION_FRU_ID_VALID      BIT0
#define EFI_ERROR_SECTION_FRU_STRING_VALID  BIT1

///
/// Flag field contains information that describes the error section
/// in Error Section Descriptor.
///
#define EFI_ERROR_SECTION_FLAGS_PRIMARY                   BIT0
#define EFI_ERROR_SECTION_FLAGS_CONTAINMENT_WARNING       BIT1
#define EFI_ERROR_SECTION_FLAGS_RESET                     BIT2
#define EFI_ERROR_SECTION_FLAGS_ERROR_THRESHOLD_EXCEEDED  BIT3
#define EFI_ERROR_SECTION_FLAGS_RESOURCE_NOT_ACCESSIBLE   BIT4
#define EFI_ERROR_SECTION_FLAGS_LATENT_ERROR              BIT5

///
/// Error Sectition Type GUIDs in Error Section Descriptor
///@{
#define EFI_ERROR_SECTION_PROCESSOR_GENERIC_GUID \
  { \
    0x9876ccad, 0x47b4, 0x4bdb, { 0xb6, 0x5e, 0x16, 0xf1, 0x93, 0xc4, 0xf3, 0xdb } \
  }
#define EFI_ERROR_SECTION_PROCESSOR_SPECIFIC_GUID \
  { \
    0xdc3ea0b0, 0xa144, 0x4797, { 0xb9, 0x5b, 0x53, 0xfa, 0x24, 0x2b, 0x6e, 0x1d } \
  }
#define EFI_ERROR_SECTION_PROCESSOR_SPECIFIC_IA32X64_GUID \
  { \
    0xdc3ea0b0, 0xa144, 0x4797, { 0xb9, 0x5b, 0x53, 0xfa, 0x24, 0x2b, 0x6e, 0x1d } \
  }
#define EFI_ERROR_SECTION_PROCESSOR_SPECIFIC_ARM_GUID \
  { \
    0xe19e3d16, 0xbc11, 0x11e4, { 0x9c, 0xaa, 0xc2, 0x05, 0x1d, 0x5d, 0x46, 0xb0 } \
  }
#define EFI_ERROR_SECTION_PLATFORM_MEMORY_GUID \
  { \
    0xa5bc1114, 0x6f64, 0x4ede, { 0xb8, 0x63, 0x3e, 0x83, 0xed, 0x7c, 0x83, 0xb1 } \
  }
#define EFI_ERROR_SECTION_PLATFORM_MEMORY2_GUID \
  { \
    0x61EC04FC, 0x48E6, 0xD813, { 0x25, 0xC9, 0x8D, 0xAA, 0x44, 0x75, 0x0B, 0x12 } \
  }
#define EFI_ERROR_SECTION_PCIE_GUID \
  { \
    0xd995e954, 0xbbc1, 0x430f, { 0xad, 0x91, 0xb4, 0x4d, 0xcb, 0x3c, 0x6f, 0x35 } \
  }
#define EFI_ERROR_SECTION_FW_ERROR_RECORD_GUID \
  { \
    0x81212a96, 0x09ed, 0x4996, { 0x94, 0x71, 0x8d, 0x72, 0x9c, 0x8e, 0x69, 0xed } \
  }
#define EFI_ERROR_SECTION_PCI_PCIX_BUS_GUID \
  { \
    0xc5753963, 0x3b84, 0x4095, { 0xbf, 0x78, 0xed, 0xda, 0xd3, 0xf9, 0xc9, 0xdd } \
  }
#define EFI_ERROR_SECTION_PCI_DEVICE_GUID \
  { \
    0xeb5e4685, 0xca66, 0x4769, { 0xb6, 0xa2, 0x26, 0x06, 0x8b, 0x00, 0x13, 0x26 } \
  }
#define EFI_ERROR_SECTION_DMAR_GENERIC_GUID \
  { \
    0x5b51fef7, 0xc79d, 0x4434, { 0x8f, 0x1b, 0xaa, 0x62, 0xde, 0x3e, 0x2c, 0x64 } \
  }
#define EFI_ERROR_SECTION_DIRECTED_IO_DMAR_GUID \
  { \
    0x71761d37, 0x32b2, 0x45cd, { 0xa7, 0xd0, 0xb0, 0xfe, 0xdd, 0x93, 0xe8, 0xcf } \
  }
#define EFI_ERROR_SECTION_IOMMU_DMAR_GUID \
  { \
    0x036f84e1, 0x7f37, 0x428c, { 0xa7, 0x9e, 0x57, 0x5f, 0xdf, 0xaa, 0x84, 0xec } \
  }
///@}

///
/// Error Section Descriptor
///
typedef struct {
  UINT32      SectionOffset;
  UINT32      SectionLength;
  UINT16      Revision;
  UINT8       SecValidMask;
  UINT8       Resv1;
  UINT32      SectionFlags;
  EFI_GUID    SectionType;
  EFI_GUID    FruId;
  UINT32      Severity;
  CHAR8       FruString[20];
} EFI_ERROR_SECTION_DESCRIPTOR;

///
/// The validation bit mask indicates whether or not each of the following fields are
/// valid in Proessor Generic Error section.
///@{
#define EFI_GENERIC_ERROR_PROC_TYPE_VALID          BIT0
#define EFI_GENERIC_ERROR_PROC_ISA_VALID           BIT1
#define EFI_GENERIC_ERROR_PROC_ERROR_TYPE_VALID    BIT2
#define EFI_GENERIC_ERROR_PROC_OPERATION_VALID     BIT3
#define EFI_GENERIC_ERROR_PROC_FLAGS_VALID         BIT4
#define EFI_GENERIC_ERROR_PROC_LEVEL_VALID         BIT5
#define EFI_GENERIC_ERROR_PROC_VERSION_VALID       BIT6
#define EFI_GENERIC_ERROR_PROC_BRAND_VALID         BIT7
#define EFI_GENERIC_ERROR_PROC_ID_VALID            BIT8
#define EFI_GENERIC_ERROR_PROC_TARGET_ADDR_VALID   BIT9
#define EFI_GENERIC_ERROR_PROC_REQUESTER_ID_VALID  BIT10
#define EFI_GENERIC_ERROR_PROC_RESPONDER_ID_VALID  BIT11
#define EFI_GENERIC_ERROR_PROC_INST_IP_VALID       BIT12
///@}

///
/// The type of the processor architecture in Proessor Generic Error section.
///@{
#define EFI_GENERIC_ERROR_PROC_TYPE_IA32_X64  0x00
#define EFI_GENERIC_ERROR_PROC_TYPE_IA64      0x01
#define EFI_GENERIC_ERROR_PROC_TYPE_ARM       0x02
///@}

///
/// The type of the instruction set executing when the error occurred in Proessor
/// Generic Error section.
///@{
#define EFI_GENERIC_ERROR_PROC_ISA_IA32         0x00
#define EFI_GENERIC_ERROR_PROC_ISA_IA64         0x01
#define EFI_GENERIC_ERROR_PROC_ISA_X64          0x02
#define EFI_GENERIC_ERROR_PROC_ISA_ARM_A32_T32  0x03
#define EFI_GENERIC_ERROR_PROC_ISA_ARM_A64      0x04
///@}

///
/// The type of error that occurred in Proessor Generic Error section.
///@{
#define EFI_GENERIC_ERROR_PROC_ERROR_TYPE_UNKNOWN     0x00
#define EFI_GENERIC_ERROR_PROC_ERROR_TYPE_CACHE       0x01
#define EFI_GENERIC_ERROR_PROC_ERROR_TYPE_TLB         0x02
#define EFI_GENERIC_ERROR_PROC_ERROR_TYPE_BUS         0x04
#define EFI_GENERIC_ERROR_PROC_ERROR_TYPE_MICRO_ARCH  0x08
///@}

///
/// The type of operation in Proessor Generic Error section.
///@{
#define EFI_GENERIC_ERROR_PROC_OPERATION_GENERIC           0x00
#define EFI_GENERIC_ERROR_PROC_OPERATION_DATA_READ         0x01
#define EFI_GENERIC_ERROR_PROC_OPERATION_DATA_WRITE        0x02
#define EFI_GENERIC_ERROR_PROC_OPERATION_INSTRUCTION_EXEC  0x03
///@}

///
/// Flags bit mask indicates additional information about the error in Proessor Generic
/// Error section
///@{
#define EFI_GENERIC_ERROR_PROC_FLAGS_RESTARTABLE  BIT0
#define EFI_GENERIC_ERROR_PROC_FLAGS_PRECISE_IP   BIT1
#define EFI_GENERIC_ERROR_PROC_FLAGS_OVERFLOW     BIT2
#define EFI_GENERIC_ERROR_PROC_FLAGS_CORRECTED    BIT3
///@}

///
/// Processor Generic Error Section
/// describes processor reported hardware errors for logical processors in the system.
///
typedef struct {
  UINT64    ValidFields;
  UINT8     Type;
  UINT8     Isa;
  UINT8     ErrorType;
  UINT8     Operation;
  UINT8     Flags;
  UINT8     Level;
  UINT16    Resv1;
  UINT64    VersionInfo;
  CHAR8     BrandString[128];
  UINT64    ApicId;
  UINT64    TargetAddr;
  UINT64    RequestorId;
  UINT64    ResponderId;
  UINT64    InstructionIP;
} EFI_PROCESSOR_GENERIC_ERROR_DATA;

#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
///
/// IA32 and x64 Specific definitions.
///

///
/// GUID value indicating the type of Processor Error Information structure
/// in IA32/X64 Processor Error Information Structure.
///@{
#define EFI_IA32_X64_ERROR_TYPE_CACHE_CHECK_GUID \
  { \
    0xA55701F5, 0xE3EF, 0x43de, {0xAC, 0x72, 0x24, 0x9B, 0x57, 0x3F, 0xAD, 0x2C } \
  }
#define EFI_IA32_X64_ERROR_TYPE_TLB_CHECK_GUID \
  { \
    0xFC06B535, 0x5E1F, 0x4562, {0x9F, 0x25, 0x0A, 0x3B, 0x9A, 0xDB, 0x63, 0xC3 } \
  }
#define EFI_IA32_X64_ERROR_TYPE_BUS_CHECK_GUID \
  { \
    0x1CF3F8B3, 0xC5B1, 0x49a2, {0xAA, 0x59, 0x5E, 0xEF, 0x92, 0xFF, 0xA6, 0x3C } \
  }
#define EFI_IA32_X64_ERROR_TYPE_MS_CHECK_GUID \
  { \
    0x48AB7F57, 0xDC34, 0x4f6c, {0xA7, 0xD3, 0xB0, 0xB5, 0xB0, 0xA7, 0x43, 0x14 } \
  }
///@}

///
/// The validation bit mask indicates which fields in the IA32/X64 Processor
/// Error Record structure are valid.
///@{
#define EFI_IA32_X64_PROCESSOR_ERROR_APIC_ID_VALID      BIT0
#define EFI_IA32_X64_PROCESSOR_ERROR_CPU_ID_INFO_VALID  BIT1
///@}

///
/// IA32/X64 Processor Error Record
///
typedef struct {
  UINT64    ValidFields;
  UINT64    ApicId;
  UINT8     CpuIdInfo[48];
} EFI_IA32_X64_PROCESSOR_ERROR_RECORD;

///
/// The validation bit mask indicates which fields in the Cache Check structure
/// are valid.
///@{
#define EFI_CACHE_CHECK_TRANSACTION_TYPE_VALID  BIT0
#define EFI_CACHE_CHECK_OPERATION_VALID         BIT1
#define EFI_CACHE_CHECK_LEVEL_VALID             BIT2
#define EFI_CACHE_CHECK_CONTEXT_CORRUPT_VALID   BIT3
#define EFI_CACHE_CHECK_UNCORRECTED_VALID       BIT4
#define EFI_CACHE_CHECK_PRECISE_IP_VALID        BIT5
#define EFI_CACHE_CHECK_RESTARTABLE_VALID       BIT6
#define EFI_CACHE_CHECK_OVERFLOW_VALID          BIT7
///@}

///
/// Type of cache error in the Cache Check structure
///@{
#define EFI_CACHE_CHECK_ERROR_TYPE_INSTRUCTION  0
#define EFI_CACHE_CHECK_ERROR_TYPE_DATA_ACCESS  1
#define EFI_CACHE_CHECK_ERROR_TYPE_GENERIC      2
///@}

///
/// Type of cache operation that caused the error in the Cache
/// Check structure
///@{
#define EFI_CACHE_CHECK_OPERATION_TYPE_GENERIC            0
#define EFI_CACHE_CHECK_OPERATION_TYPE_GENERIC_READ       1
#define EFI_CACHE_CHECK_OPERATION_TYPE_GENERIC_WRITE      2
#define EFI_CACHE_CHECK_OPERATION_TYPE_DATA_READ          3
#define EFI_CACHE_CHECK_OPERATION_TYPE_DATA_WRITE         4
#define EFI_CACHE_CHECK_OPERATION_TYPE_INSTRUCTION_FETCH  5
#define EFI_CACHE_CHECK_OPERATION_TYPE_PREFETCH           6
#define EFI_CACHE_CHECK_OPERATION_TYPE_EVICTION           7
#define EFI_CACHE_CHECK_OPERATION_TYPE_SNOOP              8
///@}

///
/// IA32/X64 Cache Check Structure
///
typedef struct {
  UINT64    ValidFields      : 16;
  UINT64    TransactionType  : 2;
  UINT64    Operation        : 4;
  UINT64    Level            : 3;
  UINT64    ContextCorrupt   : 1;
  UINT64    ErrorUncorrected : 1;
  UINT64    PreciseIp        : 1;
  UINT64    RestartableIp    : 1;
  UINT64    Overflow         : 1;
  UINT64    Resv1            : 34;
} EFI_IA32_X64_CACHE_CHECK_INFO;

///
/// The validation bit mask indicates which fields in the TLB Check structure
/// are valid.
///@{
#define EFI_TLB_CHECK_TRANSACTION_TYPE_VALID  BIT0
#define EFI_TLB_CHECK_OPERATION_VALID         BIT1
#define EFI_TLB_CHECK_LEVEL_VALID             BIT2
#define EFI_TLB_CHECK_CONTEXT_CORRUPT_VALID   BIT3
#define EFI_TLB_CHECK_UNCORRECTED_VALID       BIT4
#define EFI_TLB_CHECK_PRECISE_IP_VALID        BIT5
#define EFI_TLB_CHECK_RESTARTABLE_VALID       BIT6
#define EFI_TLB_CHECK_OVERFLOW_VALID          BIT7
///@}

///
/// Type of cache error in the TLB Check structure
///@{
#define EFI_TLB_CHECK_ERROR_TYPE_INSTRUCTION  0
#define EFI_TLB_CHECK_ERROR_TYPE_DATA_ACCESS  1
#define EFI_TLB_CHECK_ERROR_TYPE_GENERIC      2
///@}

///
/// Type of cache operation that caused the error in the TLB
/// Check structure
///@{
#define EFI_TLB_CHECK_OPERATION_TYPE_GENERIC        0
#define EFI_TLB_CHECK_OPERATION_TYPE_GENERIC_READ   1
#define EFI_TLB_CHECK_OPERATION_TYPE_GENERIC_WRITE  2
#define EFI_TLB_CHECK_OPERATION_TYPE_DATA_READ      3
#define EFI_TLB_CHECK_OPERATION_TYPE_DATA_WRITE     4
#define EFI_TLB_CHECK_OPERATION_TYPE_INST_FETCH     5
#define EFI_TLB_CHECK_OPERATION_TYPE_PREFETCH       6
///@}

///
/// IA32/X64 TLB Check Structure
///
typedef struct {
  UINT64    ValidFields      : 16;
  UINT64    TransactionType  : 2;
  UINT64    Operation        : 4;
  UINT64    Level            : 3;
  UINT64    ContextCorrupt   : 1;
  UINT64    ErrorUncorrected : 1;
  UINT64    PreciseIp        : 1;
  UINT64    RestartableIp    : 1;
  UINT64    Overflow         : 1;
  UINT64    Resv1            : 34;
} EFI_IA32_X64_TLB_CHECK_INFO;

///
/// The validation bit mask indicates which fields in the MS Check structure
/// are valid.
///@{
#define EFI_BUS_CHECK_TRANSACTION_TYPE_VALID    BIT0
#define EFI_BUS_CHECK_OPERATION_VALID           BIT1
#define EFI_BUS_CHECK_LEVEL_VALID               BIT2
#define EFI_BUS_CHECK_CONTEXT_CORRUPT_VALID     BIT3
#define EFI_BUS_CHECK_UNCORRECTED_VALID         BIT4
#define EFI_BUS_CHECK_PRECISE_IP_VALID          BIT5
#define EFI_BUS_CHECK_RESTARTABLE_VALID         BIT6
#define EFI_BUS_CHECK_OVERFLOW_VALID            BIT7
#define EFI_BUS_CHECK_PARTICIPATION_TYPE_VALID  BIT8
#define EFI_BUS_CHECK_TIME_OUT_VALID            BIT9
#define EFI_BUS_CHECK_ADDRESS_SPACE_VALID       BIT10
///@}

///
/// Type of cache error in the Bus Check structure
///@{
#define EFI_BUS_CHECK_ERROR_TYPE_INSTRUCTION  0
#define EFI_BUS_CHECK_ERROR_TYPE_DATA_ACCESS  1
#define EFI_BUS_CHECK_ERROR_TYPE_GENERIC      2
///@}

///
/// Type of cache operation that caused the error in the Bus
/// Check structure
///@{
#define EFI_BUS_CHECK_OPERATION_TYPE_GENERIC        0
#define EFI_BUS_CHECK_OPERATION_TYPE_GENERIC_READ   1
#define EFI_BUS_CHECK_OPERATION_TYPE_GENERIC_WRITE  2
#define EFI_BUS_CHECK_OPERATION_TYPE_DATA_READ      3
#define EFI_BUS_CHECK_OPERATION_TYPE_DATA_WRITE     4
#define EFI_BUS_CHECK_OPERATION_TYPE_INST_FETCH     5
#define EFI_BUS_CHECK_OPERATION_TYPE_PREFETCH       6
///@}

///
/// Type of Participation
///@{
#define EFI_BUS_CHECK_PARTICIPATION_TYPE_REQUEST    0
#define EFI_BUS_CHECK_PARTICIPATION_TYPE_RESPONDED  1
#define EFI_BUS_CHECK_PARTICIPATION_TYPE_OBSERVED   2
#define EFI_BUS_CHECK_PARTICIPATION_TYPE_GENERIC    3
///@}

///
/// Type of Address Space
///@{
#define EFI_BUS_CHECK_ADDRESS_SPACE_TYPE_MEMORY    0
#define EFI_BUS_CHECK_ADDRESS_SPACE_TYPE_RESERVED  1
#define EFI_BUS_CHECK_ADDRESS_SPACE_TYPE_IO        2
#define EFI_BUS_CHECK_ADDRESS_SPACE_TYPE_OTHER     3
///@}

///
/// IA32/X64 Bus Check Structure
///
typedef struct {
  UINT64    ValidFields       : 16;
  UINT64    TransactionType   : 2;
  UINT64    Operation         : 4;
  UINT64    Level             : 3;
  UINT64    ContextCorrupt    : 1;
  UINT64    ErrorUncorrected  : 1;
  UINT64    PreciseIp         : 1;
  UINT64    RestartableIp     : 1;
  UINT64    Overflow          : 1;
  UINT64    ParticipationType : 2;
  UINT64    TimeOut           : 1;
  UINT64    AddressSpace      : 2;
  UINT64    Resv1             : 29;
} EFI_IA32_X64_BUS_CHECK_INFO;

///
/// The validation bit mask indicates which fields in the MS Check structure
/// are valid.
///@{
#define EFI_MS_CHECK_ERROR_TYPE_VALID       BIT0
#define EFI_MS_CHECK_CONTEXT_CORRUPT_VALID  BIT1
#define EFI_MS_CHECK_UNCORRECTED_VALID      BIT2
#define EFI_MS_CHECK_PRECISE_IP_VALID       BIT3
#define EFI_MS_CHECK_RESTARTABLE_VALID      BIT4
#define EFI_MS_CHECK_OVERFLOW_VALID         BIT5
///@}

///
/// Error type identifies the operation that caused the error.
///@{
#define EFI_MS_CHECK_ERROR_TYPE_NO                     0
#define EFI_MS_CHECK_ERROR_TYPE_UNCLASSIFIED           1
#define EFI_MS_CHECK_ERROR_TYPE_MICROCODE_PARITY       2
#define EFI_MS_CHECK_ERROR_TYPE_EXTERNAL               3
#define EFI_MS_CHECK_ERROR_TYPE_FRC                    4
#define EFI_MS_CHECK_ERROR_TYPE_INTERNAL_UNCLASSIFIED  5
///@}

///
/// IA32/X64 MS Check Field Description
///
typedef struct {
  UINT64    ValidFields      : 16;
  UINT64    ErrorType        : 3;
  UINT64    ContextCorrupt   : 1;
  UINT64    ErrorUncorrected : 1;
  UINT64    PreciseIp        : 1;
  UINT64    RestartableIp    : 1;
  UINT64    Overflow         : 1;
  UINT64    Resv1            : 40;
} EFI_IA32_X64_MS_CHECK_INFO;

///
/// IA32/X64 Check Information Item
///
typedef union {
  EFI_IA32_X64_CACHE_CHECK_INFO    CacheCheck;
  EFI_IA32_X64_TLB_CHECK_INFO      TlbCheck;
  EFI_IA32_X64_BUS_CHECK_INFO      BusCheck;
  EFI_IA32_X64_MS_CHECK_INFO       MsCheck;
  UINT64                           Data64;
} EFI_IA32_X64_CHECK_INFO_ITEM;

///
/// The validation bit mask indicates which fields in the IA32/X64 Processor Error
/// Information Structure are valid.
///@{
#define EFI_IA32_X64_ERROR_PROC_CHECK_INFO_VALID    BIT0
#define EFI_IA32_X64_ERROR_PROC_TARGET_ADDR_VALID   BIT1
#define EFI_IA32_X64_ERROR_PROC_REQUESTER_ID_VALID  BIT2
#define EFI_IA32_X64_ERROR_PROC_RESPONDER_ID_VALID  BIT3
#define EFI_IA32_X64_ERROR_PROC_INST_IP_VALID       BIT4
///@}

///
/// IA32/X64 Processor Error Information Structure
///
typedef struct {
  EFI_GUID                        ErrorType;
  UINT64                          ValidFields;
  EFI_IA32_X64_CHECK_INFO_ITEM    CheckInfo;
  UINT64                          TargetId;
  UINT64                          RequestorId;
  UINT64                          ResponderId;
  UINT64                          InstructionIP;
} EFI_IA32_X64_PROCESS_ERROR_INFO;

///
/// IA32/X64 Processor Context Information Structure
///
typedef struct {
  UINT16    RegisterType;
  UINT16    ArraySize;
  UINT32    MsrAddress;
  UINT64    MmRegisterAddress;
  //
  // This field will provide the contents of the actual registers or raw data.
  // The number of Registers or size of the raw data reported is determined
  // by (Array Size / 8) or otherwise specified by the context structure type
  // definition.
  //
} EFI_IA32_X64_PROCESSOR_CONTEXT_INFO;

///
/// Register Context Type
///@{
#define EFI_REG_CONTEXT_TYPE_UNCLASSIFIED  0x0000
#define EFI_REG_CONTEXT_TYPE_MSR           0x0001
#define EFI_REG_CONTEXT_TYPE_IA32          0x0002
#define EFI_REG_CONTEXT_TYPE_X64           0x0003
#define EFI_REG_CONTEXT_TYPE_FXSAVE        0x0004
#define EFI_REG_CONTEXT_TYPE_DR_IA32       0x0005
#define EFI_REG_CONTEXT_TYPE_DR_X64        0x0006
#define EFI_REG_CONTEXT_TYPE_MEM_MAP       0x0007
///@}

///
/// IA32 Register State
///
typedef struct {
  UINT32    Eax;
  UINT32    Ebx;
  UINT32    Ecx;
  UINT32    Edx;
  UINT32    Esi;
  UINT32    Edi;
  UINT32    Ebp;
  UINT32    Esp;
  UINT16    Cs;
  UINT16    Ds;
  UINT16    Ss;
  UINT16    Es;
  UINT16    Fs;
  UINT16    Gs;
  UINT32    Eflags;
  UINT32    Eip;
  UINT32    Cr0;
  UINT32    Cr1;
  UINT32    Cr2;
  UINT32    Cr3;
  UINT32    Cr4;
  UINT32    Gdtr[2];
  UINT32    Idtr[2];
  UINT16    Ldtr;
  UINT16    Tr;
} EFI_CONTEXT_IA32_REGISTER_STATE;

///
/// X64 Register State
///
typedef struct {
  UINT64    Rax;
  UINT64    Rbx;
  UINT64    Rcx;
  UINT64    Rdx;
  UINT64    Rsi;
  UINT64    Rdi;
  UINT64    Rbp;
  UINT64    Rsp;
  UINT64    R8;
  UINT64    R9;
  UINT64    R10;
  UINT64    R11;
  UINT64    R12;
  UINT64    R13;
  UINT64    R14;
  UINT64    R15;
  UINT16    Cs;
  UINT16    Ds;
  UINT16    Ss;
  UINT16    Es;
  UINT16    Fs;
  UINT16    Gs;
  UINT32    Resv1;
  UINT64    Rflags;
  UINT64    Rip;
  UINT64    Cr0;
  UINT64    Cr1;
  UINT64    Cr2;
  UINT64    Cr3;
  UINT64    Cr4;
  UINT64    Gdtr[2];
  UINT64    Idtr[2];
  UINT16    Ldtr;
  UINT16    Tr;
} EFI_CONTEXT_X64_REGISTER_STATE;

///
/// The validation bit mask indicates each of the following field is in IA32/X64
/// Processor Error Section.
///
typedef struct {
  UINT64    ApicIdValid     : 1;
  UINT64    CpuIdInforValid : 1;
  UINT64    ErrorInfoNum    : 6;
  UINT64    ContextNum      : 6;
  UINT64    Resv1           : 50;
} EFI_IA32_X64_VALID_BITS;

#endif

///
/// Error Status Fields
///
typedef struct {
  UINT64    Resv1               : 8;
  UINT64    Type                : 8;
  UINT64    AddressSignal       : 1;      ///< Error in Address signals or in Address portion of transaction
  UINT64    ControlSignal       : 1;      ///< Error in Control signals or in Control portion of transaction
  UINT64    DataSignal          : 1;      ///< Error in Data signals or in Data portion of transaction
  UINT64    DetectedByResponder : 1;      ///< Error detected by responder
  UINT64    DetectedByRequester : 1;      ///< Error detected by requestor
  UINT64    FirstError          : 1;      ///< First Error in the sequence - option field
  UINT64    OverflowNotLogged   : 1;      ///< Additional errors were not logged due to lack of resources
  UINT64    Resv2               : 41;
} EFI_GENERIC_ERROR_STATUS;

///
/// Error Type
///
typedef enum {
  ///
  /// General Internal errors
  ///
  ErrorInternal = 1,
  ErrorBus      = 16,
  ///
  /// Component Internal errors
  ///
  ErrorMemStorage     = 4,        // Error in memory device
  ErrorTlbStorage     = 5,        // TLB error in cache
  ErrorCacheStorage   = 6,
  ErrorFunctionalUnit = 7,
  ErrorSelftest       = 8,
  ErrorOverflow       = 9,
  ///
  /// Bus internal errors
  ///
  ErrorVirtualMap      = 17,
  ErrorAccessInvalid   = 18,      // Improper access
  ErrorUnimplAccess    = 19,      // Unimplemented memory access
  ErrorLossOfLockstep  = 20,
  ErrorResponseInvalid = 21,       // Response not associated with request
  ErrorParity          = 22,
  ErrorProtocol        = 23,
  ErrorPath            = 24,      // Detected path error
  ErrorTimeout         = 25,      // Bus timeout
  ErrorPoisoned        = 26       // Read data poisoned
} EFI_GENERIC_ERROR_STATUS_ERROR_TYPE;

///
/// Validation bit mask indicates which fields in the memory error record are valid
/// in Memory Error section
///@{
#define EFI_PLATFORM_MEMORY_ERROR_STATUS_VALID                  BIT0
#define EFI_PLATFORM_MEMORY_PHY_ADDRESS_VALID                   BIT1
#define EFI_PLATFORM_MEMORY_PHY_ADDRESS_MASK_VALID              BIT2
#define EFI_PLATFORM_MEMORY_NODE_VALID                          BIT3
#define EFI_PLATFORM_MEMORY_CARD_VALID                          BIT4
#define EFI_PLATFORM_MEMORY_MODULE_VALID                        BIT5
#define EFI_PLATFORM_MEMORY_BANK_VALID                          BIT6
#define EFI_PLATFORM_MEMORY_DEVICE_VALID                        BIT7
#define EFI_PLATFORM_MEMORY_ROW_VALID                           BIT8
#define EFI_PLATFORM_MEMORY_COLUMN_VALID                        BIT9
#define EFI_PLATFORM_MEMORY_BIT_POS_VALID                       BIT10
#define EFI_PLATFORM_MEMORY_REQUESTOR_ID_VALID                  BIT11
#define EFI_PLATFORM_MEMORY_RESPONDER_ID_VALID                  BIT12
#define EFI_PLATFORM_MEMORY_TARGET_ID_VALID                     BIT13
#define EFI_PLATFORM_MEMORY_ERROR_TYPE_VALID                    BIT14
#define EFI_PLATFORM_MEMORY_ERROR_RANK_NUM_VALID                BIT15
#define EFI_PLATFORM_MEMORY_ERROR_CARD_HANDLE_VALID             BIT16
#define EFI_PLATFORM_MEMORY_ERROR_MODULE_HANDLE_VALID           BIT17
#define EFI_PLATFORM_MEMORY_ERROR_EXTENDED_ROW_BIT_16_17_VALID  BIT18
#define EFI_PLATFORM_MEMORY_ERROR_BANK_GROUP_VALID              BIT19
#define EFI_PLATFORM_MEMORY_ERROR_BANK_ADDRESS_VALID            BIT20
#define EFI_PLATFORM_MEMORY_ERROR_CHIP_IDENTIFICATION_VALID     BIT21
///@}

///
/// Memory Error Type identifies the type of error that occurred in Memory
/// Error section
///@{
#define EFI_PLATFORM_MEMORY_ERROR_UNKNOWN                 0x00
#define EFI_PLATFORM_MEMORY_ERROR_NONE                    0x01
#define EFI_PLATFORM_MEMORY_ERROR_SINGLEBIT_ECC           0x02
#define EFI_PLATFORM_MEMORY_ERROR_MLTIBIT_ECC             0x03
#define EFI_PLATFORM_MEMORY_ERROR_SINGLESYMBOLS_CHIPKILL  0x04
#define EFI_PLATFORM_MEMORY_ERROR_MULTISYMBOL_CHIPKILL    0x05
#define EFI_PLATFORM_MEMORY_ERROR_MATER_ABORT             0x06
#define EFI_PLATFORM_MEMORY_ERROR_TARGET_ABORT            0x07
#define EFI_PLATFORM_MEMORY_ERROR_PARITY                  0x08
#define EFI_PLATFORM_MEMORY_ERROR_WDT                     0x09
#define EFI_PLATFORM_MEMORY_ERROR_INVALID_ADDRESS         0x0A
#define EFI_PLATFORM_MEMORY_ERROR_MIRROR_FAILED           0x0B
#define EFI_PLATFORM_MEMORY_ERROR_SPARING                 0x0C
#define EFI_PLATFORM_MEMORY_ERROR_SCRUB_CORRECTED         0x0D
#define EFI_PLATFORM_MEMORY_ERROR_SCRUB_UNCORRECTED       0x0E
#define EFI_PLATFORM_MEMORY_ERROR_MEMORY_MAP_EVENT        0x0F
///@}

///
/// Memory Error Section
///
typedef struct {
  UINT64                      ValidFields;
  EFI_GENERIC_ERROR_STATUS    ErrorStatus;
  UINT64                      PhysicalAddress;     // Error physical address
  UINT64                      PhysicalAddressMask; // Grnaularity
  UINT16                      Node;                // Node #
  UINT16                      Card;
  UINT16                      ModuleRank;        // Module or Rank#
  UINT16                      Bank;
  UINT16                      Device;
  UINT16                      Row;
  UINT16                      Column;
  UINT16                      BitPosition;
  UINT64                      RequestorId;
  UINT64                      ResponderId;
  UINT64                      TargetId;
  UINT8                       ErrorType;
  UINT8                       Extended;
  UINT16                      RankNum;
  UINT16                      CardHandle;
  UINT16                      ModuleHandle;
} EFI_PLATFORM_MEMORY_ERROR_DATA;

///
/// Validation bit mask indicates which fields in the memory error record 2 are valid
/// in Memory Error section 2
///@{
#define EFI_PLATFORM_MEMORY2_ERROR_STATUS_VALID       BIT0
#define EFI_PLATFORM_MEMORY2_PHY_ADDRESS_VALID        BIT1
#define EFI_PLATFORM_MEMORY2_PHY_ADDRESS_MASK_VALID   BIT2
#define EFI_PLATFORM_MEMORY2_NODE_VALID               BIT3
#define EFI_PLATFORM_MEMORY2_CARD_VALID               BIT4
#define EFI_PLATFORM_MEMORY2_MODULE_VALID             BIT5
#define EFI_PLATFORM_MEMORY2_BANK_VALID               BIT6
#define EFI_PLATFORM_MEMORY2_DEVICE_VALID             BIT7
#define EFI_PLATFORM_MEMORY2_ROW_VALID                BIT8
#define EFI_PLATFORM_MEMORY2_COLUMN_VALID             BIT9
#define EFI_PLATFORM_MEMORY2_RANK_VALID               BIT10
#define EFI_PLATFORM_MEMORY2_BIT_POS_VALID            BIT11
#define EFI_PLATFORM_MEMORY2_CHIP_ID_VALID            BIT12
#define EFI_PLATFORM_MEMORY2_MEMORY_ERROR_TYPE_VALID  BIT13
#define EFI_PLATFORM_MEMORY2_STATUS_VALID             BIT14
#define EFI_PLATFORM_MEMORY2_REQUESTOR_ID_VALID       BIT15
#define EFI_PLATFORM_MEMORY2_RESPONDER_ID_VALID       BIT16
#define EFI_PLATFORM_MEMORY2_TARGET_ID_VALID          BIT17
#define EFI_PLATFORM_MEMORY2_CARD_HANDLE_VALID        BIT18
#define EFI_PLATFORM_MEMORY2_MODULE_HANDLE_VALID      BIT19
#define EFI_PLATFORM_MEMORY2_BANK_GROUP_VALID         BIT20
#define EFI_PLATFORM_MEMORY2_BANK_ADDRESS_VALID       BIT21
///@}

///
/// Memory Error Type identifies the type of error that occurred in Memory
/// Error section 2
///@{
#define EFI_PLATFORM_MEMORY2_ERROR_UNKNOWN                0x00
#define EFI_PLATFORM_MEMORY2_ERROR_NONE                   0x01
#define EFI_PLATFORM_MEMORY2_ERROR_SINGLEBIT_ECC          0x02
#define EFI_PLATFORM_MEMORY2_ERROR_MLTIBIT_ECC            0x03
#define EFI_PLATFORM_MEMORY2_ERROR_SINGLESYMBOL_CHIPKILL  0x04
#define EFI_PLATFORM_MEMORY2_ERROR_MULTISYMBOL_CHIPKILL   0x05
#define EFI_PLATFORM_MEMORY2_ERROR_MASTER_ABORT           0x06
#define EFI_PLATFORM_MEMORY2_ERROR_TARGET_ABORT           0x07
#define EFI_PLATFORM_MEMORY2_ERROR_PARITY                 0x08
#define EFI_PLATFORM_MEMORY2_ERROR_WDT                    0x09
#define EFI_PLATFORM_MEMORY2_ERROR_INVALID_ADDRESS        0x0A
#define EFI_PLATFORM_MEMORY2_ERROR_MIRROR_BROKEN          0x0B
#define EFI_PLATFORM_MEMORY2_ERROR_MEMORY_SPARING         0x0C
#define EFI_PLATFORM_MEMORY2_ERROR_SCRUB_CORRECTED        0x0D
#define EFI_PLATFORM_MEMORY2_ERROR_SCRUB_UNCORRECTED      0x0E
#define EFI_PLATFORM_MEMORY2_ERROR_MEMORY_MAP_EVENT       0x0F
///@}

///
/// Memory Error Section 2
///
typedef struct {
  UINT64                      ValidFields;
  EFI_GENERIC_ERROR_STATUS    ErrorStatus;
  UINT64                      PhysicalAddress;     // Error physical address
  UINT64                      PhysicalAddressMask; // Grnaularity
  UINT16                      Node;                // Node #
  UINT16                      Card;
  UINT16                      Module;             // Module or Rank#
  UINT16                      Bank;
  UINT32                      Device;
  UINT32                      Row;
  UINT32                      Column;
  UINT32                      Rank;
  UINT32                      BitPosition;
  UINT8                       ChipId;
  UINT8                       MemErrorType;
  UINT8                       Status;
  UINT8                       Reserved;
  UINT64                      RequestorId;
  UINT64                      ResponderId;
  UINT64                      TargetId;
  UINT32                      CardHandle;
  UINT32                      ModuleHandle;
} EFI_PLATFORM_MEMORY2_ERROR_DATA;

///
/// Validation bits mask indicates which of the following fields is valid
/// in PCI Express Error Record.
///@{
#define EFI_PCIE_ERROR_PORT_TYPE_VALID        BIT0
#define EFI_PCIE_ERROR_VERSION_VALID          BIT1
#define EFI_PCIE_ERROR_COMMAND_STATUS_VALID   BIT2
#define EFI_PCIE_ERROR_DEVICE_ID_VALID        BIT3
#define EFI_PCIE_ERROR_SERIAL_NO_VALID        BIT4
#define EFI_PCIE_ERROR_BRIDGE_CRL_STS_VALID   BIT5
#define EFI_PCIE_ERROR_CAPABILITY_INFO_VALID  BIT6
#define EFI_PCIE_ERROR_AER_INFO_VALID         BIT7
///@}

///
/// PCIe Device/Port Type as defined in the PCI Express capabilities register
///@{
#define EFI_PCIE_ERROR_PORT_PCIE_ENDPOINT         0x00000000
#define EFI_PCIE_ERROR_PORT_PCI_ENDPOINT          0x00000001
#define EFI_PCIE_ERROR_PORT_ROOT_PORT             0x00000004
#define EFI_PCIE_ERROR_PORT_UPSWITCH_PORT         0x00000005
#define EFI_PCIE_ERROR_PORT_DOWNSWITCH_PORT       0x00000006
#define EFI_PCIE_ERROR_PORT_PCIE_TO_PCI_BRIDGE    0x00000007
#define EFI_PCIE_ERROR_PORT_PCI_TO_PCIE_BRIDGE    0x00000008
#define EFI_PCIE_ERROR_PORT_ROOT_INT_ENDPOINT     0x00000009
#define EFI_PCIE_ERROR_PORT_ROOT_EVENT_COLLECTOR  0x0000000A
///@}

///
/// PCI Slot number
///
typedef struct {
  UINT16    Resv1  : 3;
  UINT16    Number : 13;
} EFI_GENERIC_ERROR_PCI_SLOT;

///
/// PCIe Root Port PCI/bridge PCI compatible device number and
/// bus number information to uniquely identify the root port or
/// bridge. Default values for both the bus numbers is zero.
///
typedef struct {
  UINT16                        VendorId;
  UINT16                        DeviceId;
  UINT8                         ClassCode[3];
  UINT8                         Function;
  UINT8                         Device;
  UINT16                        Segment;
  UINT8                         PrimaryOrDeviceBus;
  UINT8                         SecondaryBus;
  EFI_GENERIC_ERROR_PCI_SLOT    Slot;
  UINT8                         Resv1;
} EFI_GENERIC_ERROR_PCIE_DEV_BRIDGE_ID;

///
/// PCIe Capability Structure
///
typedef struct {
  UINT8    PcieCap[60];
} EFI_PCIE_ERROR_DATA_CAPABILITY;

///
/// PCIe Advanced Error Reporting Extended Capability Structure.
///
typedef struct {
  UINT8    PcieAer[96];
} EFI_PCIE_ERROR_DATA_AER;

///
/// PCI Express Error Record
///
typedef struct {
  UINT64                                  ValidFields;
  UINT32                                  PortType;
  UINT32                                  Version;
  UINT32                                  CommandStatus;
  UINT32                                  Resv2;
  EFI_GENERIC_ERROR_PCIE_DEV_BRIDGE_ID    DevBridge;
  UINT64                                  SerialNo;
  UINT32                                  BridgeControlStatus;
  EFI_PCIE_ERROR_DATA_CAPABILITY          Capability;
  EFI_PCIE_ERROR_DATA_AER                 AerInfo;
} EFI_PCIE_ERROR_DATA;

///
/// Validation bits Indicates which of the following fields is valid
/// in PCI/PCI-X Bus Error Section.
///@{
#define EFI_PCI_PCIX_BUS_ERROR_STATUS_VALID        BIT0
#define EFI_PCI_PCIX_BUS_ERROR_TYPE_VALID          BIT1
#define EFI_PCI_PCIX_BUS_ERROR_BUS_ID_VALID        BIT2
#define EFI_PCI_PCIX_BUS_ERROR_BUS_ADDRESS_VALID   BIT3
#define EFI_PCI_PCIX_BUS_ERROR_BUS_DATA_VALID      BIT4
#define EFI_PCI_PCIX_BUS_ERROR_COMMAND_VALID       BIT5
#define EFI_PCI_PCIX_BUS_ERROR_REQUESTOR_ID_VALID  BIT6
#define EFI_PCI_PCIX_BUS_ERROR_COMPLETER_ID_VALID  BIT7
#define EFI_PCI_PCIX_BUS_ERROR_TARGET_ID_VALID     BIT8
///@}

///
/// PCI Bus Error Type in PCI/PCI-X Bus Error Section
///@{
#define EFI_PCI_PCIX_BUS_ERROR_UNKNOWN             0x0000
#define EFI_PCI_PCIX_BUS_ERROR_DATA_PARITY         0x0001
#define EFI_PCI_PCIX_BUS_ERROR_SYSTEM              0x0002
#define EFI_PCI_PCIX_BUS_ERROR_MASTER_ABORT        0x0003
#define EFI_PCI_PCIX_BUS_ERROR_BUS_TIMEOUT         0x0004
#define EFI_PCI_PCIX_BUS_ERROR_MASTER_DATA_PARITY  0x0005
#define EFI_PCI_PCIX_BUS_ERROR_ADDRESS_PARITY      0x0006
#define EFI_PCI_PCIX_BUS_ERROR_COMMAND_PARITY      0x0007
///@}

///
/// PCI/PCI-X Bus Error Section
///
typedef struct {
  UINT64                      ValidFields;
  EFI_GENERIC_ERROR_STATUS    ErrorStatus;
  UINT16                      Type;
  UINT16                      BusId;
  UINT32                      Resv2;
  UINT64                      BusAddress;
  UINT64                      BusData;
  UINT64                      BusCommand;
  UINT64                      RequestorId;
  UINT64                      ResponderId;
  UINT64                      TargetId;
} EFI_PCI_PCIX_BUS_ERROR_DATA;

///
/// Validation bits Indicates which of the following fields is valid
/// in PCI/PCI-X Component Error Section.
///@{
#define EFI_PCI_PCIX_DEVICE_ERROR_STATUS_VALID         BIT0
#define EFI_PCI_PCIX_DEVICE_ERROR_ID_INFO_VALID        BIT1
#define EFI_PCI_PCIX_DEVICE_ERROR_MEM_NUM_VALID        BIT2
#define EFI_PCI_PCIX_DEVICE_ERROR_IO_NUM_VALID         BIT3
#define EFI_PCI_PCIX_DEVICE_ERROR_REG_DATA_PAIR_VALID  BIT4
///@}

///
/// PCI/PCI-X Device Identification Information
///
typedef struct {
  UINT16    VendorId;
  UINT16    DeviceId;
  UINT8     ClassCode[3];
  UINT8     Function;
  UINT8     Device;
  UINT8     Bus;
  UINT8     Segment;
  UINT8     Resv1;
  UINT32    Resv2;
} EFI_GENERIC_ERROR_PCI_DEVICE_ID;

///
/// Identifies the type of firmware error record
///@{
#define EFI_FIRMWARE_ERROR_TYPE_IPF_SAL    0x00
#define EFI_FIRMWARE_ERROR_TYPE_SOC_TYPE1  0x01
#define EFI_FIRMWARE_ERROR_TYPE_SOC_TYPE2  0x02
///@}

///
/// Firmware Error Record Section
///
typedef struct {
  UINT8       ErrorType;
  UINT8       Revision;
  UINT8       Resv1[6];
  UINT64      RecordId;
  EFI_GUID    RecordIdGuid;
} EFI_FIRMWARE_ERROR_DATA;

///
/// Fault Reason in DMAr Generic Error Section
///@{
#define EFI_DMA_FAULT_REASON_TABLE_ENTRY_NOT_PRESENT            0x01
#define EFI_DMA_FAULT_REASON_TABLE_ENTRY_INVALID                0x02
#define EFI_DMA_FAULT_REASON_ACCESS_MAPPING_TABLE_ERROR         0x03
#define EFI_DMA_FAULT_REASON_RESV_BIT_ERROR_IN_MAPPING_TABLE    0x04
#define EFI_DMA_FAULT_REASON_ACCESS_ADDR_OUT_OF_SPACE           0x05
#define EFI_DMA_FAULT_REASON_INVALID_ACCESS                     0x06
#define EFI_DMA_FAULT_REASON_INVALID_REQUEST                    0x07
#define EFI_DMA_FAULT_REASON_ACCESS_TRANSLATE_TABLE_ERROR       0x08
#define EFI_DMA_FAULT_REASON_RESV_BIT_ERROR_IN_TRANSLATE_TABLE  0x09
#define EFI_DMA_FAULT_REASON_INVALID_COMMAOND                   0x0A
#define EFI_DMA_FAULT_REASON_ACCESS_COMMAND_BUFFER_ERROR        0x0B
///@}

///
/// DMA access type in DMAr Generic Error Section
///@{
#define EFI_DMA_ACCESS_TYPE_READ   0x00
#define EFI_DMA_ACCESS_TYPE_WRITE  0x01
///@}

///
/// DMA address type in DMAr Generic Error Section
///@{
#define EFI_DMA_ADDRESS_UNTRANSLATED  0x00
#define EFI_DMA_ADDRESS_TRANSLATION   0x01
///@}

///
/// Architecture type in DMAr Generic Error Section
///@{
#define EFI_DMA_ARCH_TYPE_VT     0x01
#define EFI_DMA_ARCH_TYPE_IOMMU  0x02
///@}

///
/// DMAr Generic Error Section
///
typedef struct {
  UINT16    RequesterId;
  UINT16    SegmentNumber;
  UINT8     FaultReason;
  UINT8     AccessType;
  UINT8     AddressType;
  UINT8     ArchType;
  UINT64    DeviceAddr;
  UINT8     Resv1[16];
} EFI_DMAR_GENERIC_ERROR_DATA;

///
/// Intel VT for Directed I/O specific DMAr Errors
///
typedef struct {
  UINT8     Version;
  UINT8     Revision;
  UINT8     OemId[6];
  UINT64    Capability;
  UINT64    CapabilityEx;
  UINT32    GlobalCommand;
  UINT32    GlobalStatus;
  UINT32    FaultStatus;
  UINT8     Resv1[12];
  UINT64    FaultRecord[2];
  UINT64    RootEntry[2];
  UINT64    ContextEntry[2];
  UINT64    PteL6;
  UINT64    PteL5;
  UINT64    PteL4;
  UINT64    PteL3;
  UINT64    PteL2;
  UINT64    PteL1;
} EFI_DIRECTED_IO_DMAR_ERROR_DATA;

///
/// IOMMU specific DMAr Errors
///
typedef struct {
  UINT8     Revision;
  UINT8     Resv1[7];
  UINT64    Control;
  UINT64    Status;
  UINT8     Resv2[8];
  UINT64    EventLogEntry[2];
  UINT8     Resv3[16];
  UINT64    DeviceTableEntry[4];
  UINT64    PteL6;
  UINT64    PteL5;
  UINT64    PteL4;
  UINT64    PteL3;
  UINT64    PteL2;
  UINT64    PteL1;
} EFI_IOMMU_DMAR_ERROR_DATA;

#pragma pack()

extern EFI_GUID  gEfiEventNotificationTypeCmcGuid;
extern EFI_GUID  gEfiEventNotificationTypeCpeGuid;
extern EFI_GUID  gEfiEventNotificationTypeMceGuid;
extern EFI_GUID  gEfiEventNotificationTypePcieGuid;
extern EFI_GUID  gEfiEventNotificationTypeInitGuid;
extern EFI_GUID  gEfiEventNotificationTypeNmiGuid;
extern EFI_GUID  gEfiEventNotificationTypeBootGuid;
extern EFI_GUID  gEfiEventNotificationTypeDmarGuid;
extern EFI_GUID  gEfiEventNotificationTypeSeaGuid;
extern EFI_GUID  gEfiEventNotificationTypeSeiGuid;
extern EFI_GUID  gEfiEventNotificationTypePeiGuid;

extern EFI_GUID  gEfiProcessorGenericErrorSectionGuid;
extern EFI_GUID  gEfiProcessorSpecificErrorSectionGuid;
extern EFI_GUID  gEfiIa32X64ProcessorErrorSectionGuid;
extern EFI_GUID  gEfiArmProcessorErrorSectionGuid;
extern EFI_GUID  gEfiPlatformMemoryErrorSectionGuid;
extern EFI_GUID  gEfiPlatformMemory2ErrorSectionGuid;
extern EFI_GUID  gEfiPcieErrorSectionGuid;
extern EFI_GUID  gEfiFirmwareErrorSectionGuid;
extern EFI_GUID  gEfiPciBusErrorSectionGuid;
extern EFI_GUID  gEfiPciDevErrorSectionGuid;
extern EFI_GUID  gEfiDMArGenericErrorSectionGuid;
extern EFI_GUID  gEfiDirectedIoDMArErrorSectionGuid;
extern EFI_GUID  gEfiIommuDMArErrorSectionGuid;

#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
///
/// IA32 and x64 Specific definitions.
///

extern EFI_GUID  gEfiIa32X64ErrorTypeCacheCheckGuid;
extern EFI_GUID  gEfiIa32X64ErrorTypeTlbCheckGuid;
extern EFI_GUID  gEfiIa32X64ErrorTypeBusCheckGuid;
extern EFI_GUID  gEfiIa32X64ErrorTypeMsCheckGuid;

#endif

#endif
