/** @file\r
GUIDs and definitions used for Common Platform Error Record.\r
\r
- Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
@par Revision Reference:\r
- GUIDs introduced from UEFI 2.3.1 Specification.\r
+ GUIDs defined in UEFI 2.7 Specification.\r
\r
**/\r
\r
#define EFI_ERROR_RECORD_SIGNATURE_START SIGNATURE_32('C', 'P', 'E', 'R')\r
#define EFI_ERROR_RECORD_SIGNATURE_END 0xFFFFFFFF\r
\r
+#define EFI_ERROR_RECORD_REVISION 0x0101\r
+\r
///\r
/// Error Severity in Error Record Header and Error Section Descriptor\r
///@{\r
///\r
} EFI_COMMON_ERROR_RECORD_HEADER;\r
\r
+#define EFI_ERROR_SECTION_REVISION 0x0100\r
+\r
///\r
/// Validity Fields in Error Section Descriptor.\r
///\r
{ \\r
0xdc3ea0b0, 0xa144, 0x4797, { 0xb9, 0x5b, 0x53, 0xfa, 0x24, 0x2b, 0x6e, 0x1d } \\r
}\r
+#define EFI_ERROR_SECTION_PROCESSOR_SPECIFIC_IA32X64_GUID \\r
+ { \\r
+ 0xdc3ea0b0, 0xa144, 0x4797, { 0xb9, 0x5b, 0x53, 0xfa, 0x24, 0x2b, 0x6e, 0x1d } \\r
+ }\r
+#define EFI_ERROR_SECTION_PROCESSOR_SPECIFIC_ARM_GUID \\r
+ { \\r
+ 0xe19e3d16, 0xbc11, 0x11e4, { 0x9c, 0xaa, 0xc2, 0x05, 0x1d, 0x5d, 0x46, 0xb0 } \\r
+ }\r
#define EFI_ERROR_SECTION_PLATFORM_MEMORY_GUID \\r
{ \\r
0xa5bc1114, 0x6f64, 0x4ede, { 0xb8, 0x63, 0x3e, 0x83, 0xed, 0x7c, 0x83, 0xb1 } \\r
}\r
+#define EFI_ERROR_SECTION_PLATFORM_MEMORY2_GUID \\r
+ { \\r
+ 0x61EC04FC, 0x48E6, 0xD813, { 0x25, 0xC9, 0x8D, 0xAA, 0x44, 0x75, 0x0B, 0x12 } \\r
+ }\r
#define EFI_ERROR_SECTION_PCIE_GUID \\r
{ \\r
0xd995e954, 0xbbc1, 0x430f, { 0xad, 0x91, 0xb4, 0x4d, 0xcb, 0x3c, 0x6f, 0x35 } \\r
///@{\r
#define EFI_GENERIC_ERROR_PROC_TYPE_IA32_X64 0x00\r
#define EFI_GENERIC_ERROR_PROC_TYPE_IA64 0x01\r
+#define EFI_GENERIC_ERROR_PROC_TYPE_ARM 0x02\r
///@}\r
\r
///\r
#define EFI_GENERIC_ERROR_PROC_ISA_IA32 0x00\r
#define EFI_GENERIC_ERROR_PROC_ISA_IA64 0x01\r
#define EFI_GENERIC_ERROR_PROC_ISA_X64 0x02\r
+#define EFI_GENERIC_ERROR_PROC_ISA_ARM_A32_T32 0x03\r
+#define EFI_GENERIC_ERROR_PROC_ISA_ARM_A64 0x04\r
///@}\r
\r
///\r
}\r
///@}\r
\r
+///\r
+/// The validation bit mask indicates which fields in the IA32/X64 Processor\r
+/// Error Record structure are valid.\r
+///@{\r
+#define EFI_IA32_X64_PROCESSOR_ERROR_APIC_ID_VALID BIT0\r
+#define EFI_IA32_X64_PROCESSOR_ERROR_CPU_ID_INFO_VALID BIT1\r
+///@}\r
+\r
+///\r
+/// IA32/X64 Processor Error Record\r
+///\r
+typedef struct {\r
+ UINT64 ValidFields;\r
+ UINT64 ApicId;\r
+ UINT8 CpuIdInfo[48];\r
+} EFI_IA32_X64_PROCESSOR_ERROR_RECORD;\r
+\r
///\r
/// The validation bit mask indicates which fields in the Cache Check structure\r
/// are valid.\r
#define EFI_PLATFORM_MEMORY_ERROR_RANK_NUM_VALID BIT15\r
#define EFI_PLATFORM_MEMORY_ERROR_CARD_HANDLE_VALID BIT16\r
#define EFI_PLATFORM_MEMORY_ERROR_MODULE_HANDLE_VALID BIT17\r
+#define EFI_PLATFORM_MEMORY_ERROR_EXTENDED_ROW_BIT_16_17_VALID BIT18\r
+#define EFI_PLATFORM_MEMORY_ERROR_BANK_GROUP_VALID BIT19\r
+#define EFI_PLATFORM_MEMORY_ERROR_BANK_ADDRESS_VALID BIT20\r
+#define EFI_PLATFORM_MEMORY_ERROR_CHIP_IDENTIFICATION_VALID BIT21\r
///@}\r
\r
///\r
UINT64 ResponderId;\r
UINT64 TargetId;\r
UINT8 ErrorType;\r
- UINT8 Resv1;\r
+ UINT8 Extended;\r
UINT16 RankNum;\r
UINT16 CardHandle;\r
UINT16 ModuleHandle;\r
} EFI_PLATFORM_MEMORY_ERROR_DATA;\r
\r
+///\r
+/// Validation bit mask indicates which fields in the memory error record 2 are valid\r
+/// in Memory Error section 2\r
+///@{\r
+#define EFI_PLATFORM_MEMORY2_ERROR_STATUS_VALID BIT0\r
+#define EFI_PLATFORM_MEMORY2_PHY_ADDRESS_VALID BIT1\r
+#define EFI_PLATFORM_MEMORY2_PHY_ADDRESS_MASK_VALID BIT2\r
+#define EFI_PLATFORM_MEMORY2_NODE_VALID BIT3\r
+#define EFI_PLATFORM_MEMORY2_CARD_VALID BIT4\r
+#define EFI_PLATFORM_MEMORY2_MODULE_VALID BIT5\r
+#define EFI_PLATFORM_MEMORY2_BANK_VALID BIT6\r
+#define EFI_PLATFORM_MEMORY2_DEVICE_VALID BIT7\r
+#define EFI_PLATFORM_MEMORY2_ROW_VALID BIT8\r
+#define EFI_PLATFORM_MEMORY2_COLUMN_VALID BIT9\r
+#define EFI_PLATFORM_MEMORY2_RANK_VALID BIT10\r
+#define EFI_PLATFORM_MEMORY2_BIT_POS_VALID BIT11\r
+#define EFI_PLATFORM_MEMORY2_CHIP_ID_VALID BIT12\r
+#define EFI_PLATFORM_MEMORY2_MEMORY_ERROR_TYPE_VALID BIT13\r
+#define EFI_PLATFORM_MEMORY2_STATUS_VALID BIT14\r
+#define EFI_PLATFORM_MEMORY2_REQUESTOR_ID_VALID BIT15\r
+#define EFI_PLATFORM_MEMORY2_RESPONDER_ID_VALID BIT16\r
+#define EFI_PLATFORM_MEMORY2_TARGET_ID_VALID BIT17\r
+#define EFI_PLATFORM_MEMORY2_CARD_HANDLE_VALID BIT18\r
+#define EFI_PLATFORM_MEMORY2_MODULE_HANDLE_VALID BIT19\r
+#define EFI_PLATFORM_MEMORY2_BANK_GROUP_VALID BIT20\r
+#define EFI_PLATFORM_MEMORY2_BANK_ADDRESS_VALID BIT21\r
+///@}\r
+\r
+///\r
+/// Memory Error Type identifies the type of error that occurred in Memory\r
+/// Error section 2\r
+///@{\r
+#define EFI_PLATFORM_MEMORY2_ERROR_UNKNOWN 0x00\r
+#define EFI_PLATFORM_MEMORY2_ERROR_NONE 0x01\r
+#define EFI_PLATFORM_MEMORY2_ERROR_SINGLEBIT_ECC 0x02\r
+#define EFI_PLATFORM_MEMORY2_ERROR_MLTIBIT_ECC 0x03\r
+#define EFI_PLATFORM_MEMORY2_ERROR_SINGLESYMBOL_CHIPKILL 0x04\r
+#define EFI_PLATFORM_MEMORY2_ERROR_MULTISYMBOL_CHIPKILL 0x05\r
+#define EFI_PLATFORM_MEMORY2_ERROR_MASTER_ABORT 0x06\r
+#define EFI_PLATFORM_MEMORY2_ERROR_TARGET_ABORT 0x07\r
+#define EFI_PLATFORM_MEMORY2_ERROR_PARITY 0x08\r
+#define EFI_PLATFORM_MEMORY2_ERROR_WDT 0x09\r
+#define EFI_PLATFORM_MEMORY2_ERROR_INVALID_ADDRESS 0x0A\r
+#define EFI_PLATFORM_MEMORY2_ERROR_MIRROR_BROKEN 0x0B\r
+#define EFI_PLATFORM_MEMORY2_ERROR_MEMORY_SPARING 0x0C\r
+#define EFI_PLATFORM_MEMORY2_ERROR_SCRUB_CORRECTED 0x0D\r
+#define EFI_PLATFORM_MEMORY2_ERROR_SCRUB_UNCORRECTED 0x0E\r
+#define EFI_PLATFORM_MEMORY2_ERROR_MEMORY_MAP_EVENT 0x0F\r
+///@}\r
+\r
+///\r
+/// Memory Error Section 2\r
+///\r
+typedef struct {\r
+ UINT64 ValidFields;\r
+ EFI_GENERIC_ERROR_STATUS ErrorStatus;\r
+ UINT64 PhysicalAddress; // Error physical address\r
+ UINT64 PhysicalAddressMask; // Grnaularity\r
+ UINT16 Node; // Node #\r
+ UINT16 Card;\r
+ UINT16 Module; // Module or Rank#\r
+ UINT16 Bank;\r
+ UINT32 Device;\r
+ UINT32 Row;\r
+ UINT32 Column;\r
+ UINT32 Rank;\r
+ UINT32 BitPosition;\r
+ UINT8 ChipId;\r
+ UINT8 MemErrorType;\r
+ UINT8 Status;\r
+ UINT8 Reserved;\r
+ UINT64 RequestorId;\r
+ UINT64 ResponderId;\r
+ UINT64 TargetId;\r
+ UINT32 CardHandle;\r
+ UINT32 ModuleHandle;\r
+} EFI_PLATFORM_MEMORY2_ERROR_DATA;\r
+\r
///\r
/// Validation bits mask indicates which of the following fields is valid\r
/// in PCI Express Error Record.\r
\r
///\r
/// Identifies the type of firmware error record\r
-///\r
+///@{\r
#define EFI_FIRMWARE_ERROR_TYPE_IPF_SAL 0x00\r
+#define EFI_FIRMWARE_ERROR_TYPE_SOC_TYPE1 0x01\r
+#define EFI_FIRMWARE_ERROR_TYPE_SOC_TYPE2 0x02\r
+///@}\r
\r
///\r
/// Firmware Error Record Section\r
///\r
typedef struct {\r
UINT8 ErrorType;\r
- UINT8 Resv1[7];\r
+ UINT8 Revision;\r
+ UINT8 Resv1[6];\r
UINT64 RecordId;\r
+ EFI_GUID RecordIdGuid;\r
} EFI_FIRMWARE_ERROR_DATA;\r
\r
///\r
\r
extern EFI_GUID gEfiProcessorGenericErrorSectionGuid;\r
extern EFI_GUID gEfiProcessorSpecificErrorSectionGuid;\r
+extern EFI_GUID gEfiIa32X64ProcessorErrorSectionGuid;\r
+extern EFI_GUID gEfiArmProcessorErrorSectionGuid ;\r
extern EFI_GUID gEfiPlatformMemoryErrorSectionGuid;\r
+extern EFI_GUID gEfiPlatformMemory2ErrorSectionGuid;\r
extern EFI_GUID gEfiPcieErrorSectionGuid;\r
extern EFI_GUID gEfiFirmwareErrorSectionGuid;\r
extern EFI_GUID gEfiPciBusErrorSectionGuid;\r