/** @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 Cr8;
	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;

///
/// 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;

///
/// CPER Generic Error Codes
///
#define CPER_GENERIC_ERROR_TYPES_KEYS                                          \
	(int[])                                                                \
	{                                                                      \
		1, 16, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25,   \
			26                                                     \
	}
#define CPER_GENERIC_ERROR_TYPES_VALUES                                        \
	(const char *[])                                                       \
	{                                                                      \
		"ERR_INTERNAL", "ERR_BUS", "ERR_MEM", "ERR_TLB", "ERR_CACHE",  \
			"ERR_FUNCTION", "ERR_SELFTEST", "ERR_FLOW", "ERR_MAP", \
			"ERR_IMPROPER", "ERR_UNIMPL", "ERR_LOL",               \
			"ERR_RESPONSE", "ERR_PARITY", "ERR_PROTOCOL",          \
			"ERR_ERROR", "ERR_TIMEOUT", "ERR_POISONED"             \
	}
#define CPER_GENERIC_ERROR_TYPES_DESCRIPTIONS                                               \
	(const char *[])                                                                    \
	{                                                                                   \
		"Error detected internal to the component.",                                \
			"Error detected in the bus.",                                       \
			"Storage error in memory (DRAM).",                                  \
			"Storage error in TLB.", "Storage error in cache.",                 \
			"Error in one or more functional units.",                           \
			"Component failed self test.",                                      \
			"Overflow or underflow of internal queue.",                         \
			"Virtual address not found on IO-TLB or IO-PDIR.",                  \
			"Improper access error.",                                           \
			"Access to a memory address which is not mapped to any component.", \
			"Loss of Lockstep error.",                                          \
			"Response not associated with a request.",                          \
			"Bus parity error (must also set the A, C, or D bits).",            \
			"Detection of a protocol error.",                                   \
			"Detection of a PATH_ERROR.",                                       \
			"Bus operation timeout.",                                           \
			"A read was issued to data that has been poisoned."                 \
	}

///
/// 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;
extern EFI_GUID gEfiIpfProcessorErrorSectionGuid;
extern EFI_GUID gEfiArmProcessorErrorSectionGuid;
extern EFI_GUID gEfiPlatformMemoryErrorSectionGuid;
extern EFI_GUID gEfiPlatformMemoryError2SectionGuid;
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;
extern EFI_GUID gEfiCcixPerLogErrorSectionGuid;
extern EFI_GUID gEfiCxlProtocolErrorSectionGuid;
extern EFI_GUID gEfiCxlGeneralMediaErrorSectionGuid;
extern EFI_GUID gEfiCxlDramEventErrorSectionGuid;
extern EFI_GUID gEfiCxlMemoryModuleErrorSectionGuid;
extern EFI_GUID gEfiCxlPhysicalSwitchErrorSectionGuid;
extern EFI_GUID gEfiCxlVirtualSwitchErrorSectionGuid;
extern EFI_GUID gEfiCxlMldPortErrorSectionGuid;
#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
