/** @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.

**/
#include "BaseTypes.h"

#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;

///
/// 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 } \
  }
extern EFI_GUID   gEfiIa32x64ErrorTypeCacheCheckGuid;
extern EFI_GUID   gEfiIa32x64ErrorTypeTlbCheckGuid;
extern EFI_GUID   gEfiIa32x64ErrorTypeBusCheckGuid;
extern EFI_GUID   gEfiIa32x64ErrorTypeMsCheckGuid;

///@}

///
/// 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;


///
/// ARM Processor Error Structure
///
typedef struct {
  UINT32    ValidFields;
  UINT16    ErrInfoNum;
  UINT16    ContextInfoNum;
  UINT32    SectionLength;
  UINT32  ErrorAffinityLevel;
  UINT64  MPIDR_EL1;
  UINT64  MIDR_EL1;
  UINT32 RunningState;
  UINT32 PsciState;
} EFI_ARM_PROCESSOR_ERROR_RECORD;

///
/// 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;

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   gEfiEventNotificationTypeCxlGuid;
extern EFI_GUID   gEfiProcessorGenericErrorSectionGuid;
extern EFI_GUID   gEfiProcessorSpecificErrorSectionGuid;
extern EFI_GUID   gEfiIa32X64ProcessorErrorSectionGuid;
//todo: Why does the IPF GUID have an excess of elements?
//extern EFI_GUID   gEfiIpfProcessorErrorSectionGuid;
extern EFI_GUID   gEfiArmProcessorErrorSectionGuid;
extern EFI_GUID   gEfiPlatformMemoryErrorSectionGuid;
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;

#pragma pack()

#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
