Cper.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
/** @file
GUIDs and definitions used for Common Platform Error Record.
Copyright (c) 2011, 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
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.1 Specification.
**/
#ifndef __CPER_GUID_H__
#define __CPER_GUID_H__
#pragma pack(1)
#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.
///@{
///@}
///
/// 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 {
///
/// 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 {
///
/// 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.
///
///
/// Validity Fields in Error Section Descriptor.
///
#define EFI_ERROR_SECTION_FRU_ID_VALID BIT0
///
/// 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_RESET BIT2
///
/// 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 } \
}
{ \
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 {
///
/// 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_ISA_VALID BIT1
#define EFI_GENERIC_ERROR_PROC_ID_VALID BIT8
///@}
///
/// 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
///@{
///@}
///
/// Processor Generic Error Section
/// describes processor reported hardware errors for logical processors in the system.
///
typedef struct {
#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
///
/// IA32 and x64 Specific definitions.
///
///
/// GUID value indicating the type of 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_OPERATION_VALID BIT1
#define EFI_CACHE_CHECK_LEVEL_VALID BIT2
#define EFI_CACHE_CHECK_PRECISE_IP_VALID BIT5
#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_DATA_READ 3
#define EFI_CACHE_CHECK_OPERATION_TYPE_PREFETCH 6
#define EFI_CACHE_CHECK_OPERATION_TYPE_EVICTION 7
#define EFI_CACHE_CHECK_OPERATION_TYPE_SNOOP 8
///@}
///
///
typedef struct {
///
/// The validation bit mask indicates which fields in the TLB Check structure
/// are valid.
///@{
#define EFI_TLB_CHECK_OPERATION_VALID BIT1
#define EFI_TLB_CHECK_LEVEL_VALID BIT2
#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_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
///@}
///
///
typedef struct {
///
/// The validation bit mask indicates which fields in the MS Check structure
/// are valid.
///@{
#define EFI_BUS_CHECK_OPERATION_VALID BIT1
#define EFI_BUS_CHECK_LEVEL_VALID BIT2
#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_TIME_OUT_VALID BIT9
///@}
///
/// 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_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_GENERIC 3
///@}
///
/// Type of Address Space
///@{
#define EFI_BUS_CHECK_ADDRESS_SPACE_TYPE_MEMORY 0
#define EFI_BUS_CHECK_ADDRESS_SPACE_TYPE_IO 2
#define EFI_BUS_CHECK_ADDRESS_SPACE_TYPE_OTHER 3
///@}
///
///
typedef struct {
///
/// 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_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
///@}
///
///
typedef struct {
///
///
typedef union {
///
/// Information Structure are valid.
///@{
///@}
///
///
typedef struct {
///
///
typedef struct {
//
// 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.
//
///
/// 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 {
///
/// X64 Register State
///
typedef struct {
///
/// Processor Error Section.
///
typedef struct {
#endif
///
/// Error Status Fields
///
typedef struct {
///
/// Error Type
///
typedef enum {
///
/// General Internal errors
///
ErrorInternal = 1,
ErrorBus = 16,
///
/// Component Internal errors
///
ErrorCacheStorage = 6,
ErrorFunctionalUnit = 7,
ErrorSelftest = 8,
ErrorOverflow = 9,
///
/// Bus internal errors
///
ErrorVirtualMap = 17,
ErrorLossOfLockstep = 20,
ErrorParity = 22,
ErrorProtocol = 23,
///
/// Validation bit mask indicates which fields in the memory error record are valid
/// in Memory Error section
///@{
#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
///@}
///
/// 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 {
///
/// 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_DEVICE_ID_VALID BIT3
#define EFI_PCIE_ERROR_SERIAL_NO_VALID BIT4
#define EFI_PCIE_ERROR_AER_INFO_VALID BIT7
///@}
///
///@{
#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 {
///
/// bus number information to uniquely identify the root port or
/// bridge. Default values for both the bus numbers is zero.
///
typedef struct {
///
/// PCIe Capability Structure
///
typedef struct {
///
/// PCIe Advanced Error Reporting Extended Capability Structure.
///
typedef struct {
///
/// PCI Express Error Record
///
typedef struct {
///
/// Validation bits Indicates which of the following fields is valid
///@{
///@}
///
///@{
#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
///@}
///
///
typedef struct {
///
/// Validation bits Indicates which of the following fields is valid
///@{
///@}
///
///
typedef struct {
///
/// Identifies the type of firmware error record
///
#define EFI_FIRMWARE_ERROR_TYPE_IPF_SAL 0x00
///
/// Firmware Error Record Section
///
typedef struct {
///
/// 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_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 {
///
/// Intel VT for Directed I/O specific DMAr Errors
///
typedef struct {
///
/// IOMMU specific DMAr Errors
///
typedef struct {
#pragma pack()
extern EFI_GUID gEfiPcieErrorSectionGuid;
extern EFI_GUID gEfiFirmwareErrorSectionGuid;
extern EFI_GUID gEfiPciBusErrorSectionGuid;
extern EFI_GUID gEfiPciDevErrorSectionGuid;
#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
///
/// IA32 and x64 Specific definitions.
///
#endif
#endif