/** @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)
///
/// Error Severity in Error Record Header and Error Section Descriptor
///@{
///@}
///
/// 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.
///
///
/// 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
///@{
///@}
///
/// 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.
///
///
/// Flag field contains information that describes the error section
/// in Error Section Descriptor.
///
///
/// 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.
///@{
///@}
///
/// The type of the processor architecture in Proessor Generic Error section.
///@{
///@}
///
/// The type of the instruction set executing when the error occurred in Proessor
/// Generic Error section.
///@{
///@}
///
/// The type of error that occurred in Proessor Generic Error section.
///@{
///@}
///
/// The type of operation in Proessor Generic Error section.
///@{
///@}
///
/// 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.
///@{
///@}
///
/// Type of cache error in the Cache Check structure
///@{
#define EFI_CACHE_CHECK_ERROR_TYPE_INSTRUCTION 0
///@}
///
/// Type of cache operation that caused the error in the Cache
/// Check structure
///@{
#define EFI_CACHE_CHECK_OPERATION_TYPE_GENERIC 0
///@}
///
///
typedef struct {
///
/// The validation bit mask indicates which fields in the TLB Check structure
/// are valid.
///@{
///@}
///
/// Type of cache error in the TLB Check structure
///@{
#define EFI_TLB_CHECK_ERROR_TYPE_INSTRUCTION 0
///@}
///
/// Type of cache operation that caused the error in the TLB
/// Check structure
///@{
#define EFI_TLB_CHECK_OPERATION_TYPE_GENERIC 0
///@}
///
///
typedef struct {
///
/// The validation bit mask indicates which fields in the MS Check structure
/// are valid.
///@{
///@}
///
/// Type of cache error in the Bus Check structure
///@{
#define EFI_BUS_CHECK_ERROR_TYPE_INSTRUCTION 0
///@}
///
/// Type of cache operation that caused the error in the Bus
/// Check structure
///@{
#define EFI_BUS_CHECK_OPERATION_TYPE_GENERIC 0
///@}
///
/// Type of Participation
///@{
#define EFI_BUS_CHECK_PARTICIPATION_TYPE_REQUEST 0
///@}
///
/// Type of Address Space
///@{
#define EFI_BUS_CHECK_ADDRESS_SPACE_TYPE_MEMORY 0
///@}
///
///
typedef struct {
///
/// The validation bit mask indicates which fields in the MS Check structure
/// are valid.
///@{
///@}
///
/// Error type identifies the operation that caused the error.
///@{
#define EFI_MS_CHECK_ERROR_TYPE_NO 0
///@}
///
///
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
///@{
///@}
///
/// 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
///
///
/// Component Internal errors
///
///
/// Bus internal errors
///
///
/// Validation bit mask indicates which fields in the memory error record are valid
/// in Memory Error section
///@{
///@}
///
/// Memory Error Type identifies the type of error that occurred in Memory
/// Error section
///@{
///@}
///
/// Memory Error Section
///
typedef struct {
///
/// Validation bits mask indicates which of the following fields is valid
/// in PCI Express Error Record.
///@{
///@}
///
///@{
///@}
///
/// 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
///@{
///@}
///
///@{
///@}
///
///
typedef struct {
///
/// Validation bits Indicates which of the following fields is valid
///@{
///@}
///
///
typedef struct {
///
/// Identifies the type of firmware error record
///
///
/// Firmware Error Record Section
///
typedef struct {
///
/// Fault Reason in DMAr Generic Error Section
///@{
///@}
///
/// DMA access type in DMAr Generic Error Section
///@{
///@}
///
/// DMA address type in DMAr Generic Error Section
///@{
///@}
///
/// Architecture type in DMAr Generic Error Section
///@{
///@}
///
/// 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