diff --git a/edk/Cper.h b/edk/Cper.h
new file mode 100644
index 0000000..7a3f510
--- /dev/null
+++ b/edk/Cper.h
@@ -0,0 +1,1253 @@
+/** @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;
+
+#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;
+
+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
