/** @file
  GUIDs and definitions used for Common Platform Error Record.

  Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>
  This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD License
  which accompanies this distribution.  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.php

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

  @par Revision Reference:
  GUIDs introduced from UEFI 2.3.1 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

///
/// 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 } \
  }
///@}

///
/// 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;

///
/// 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_PLATFORM_MEMORY_GUID \
  { \
    0xa5bc1114, 0x6f64, 0x4ede, { 0xb8, 0x63, 0x3e, 0x83, 0xed, 0x7c, 0x83, 0xb1 } \
  }
#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
///@}

///
/// 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
///@}

///
/// 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 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
///@}

///
/// 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                    Resv1;
  UINT16                   RankNum;
  UINT16                   CardHandle;
  UINT16                   ModuleHandle;
} EFI_PLATFORM_MEMORY_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

///
/// Firmware Error Record Section
///
typedef struct {
  UINT8       ErrorType;
  UINT8       Resv1[7];
  UINT64      RecordId;
} 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 gEfiProcessorGenericErrorSectionGuid;
extern EFI_GUID gEfiProcessorSpecificErrorSectionGuid;
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;

#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
