/** @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.

**/

/**
 * Extern definitions for EFI GUIDs relating to notification types and error section types.
 **/
#include <libcper/Cper.h>

//Event notification type GUIDs.
EFI_GUID gEfiEventNotificationTypeCmcGuid = { 0x2DCE8BB1,
					      0xBDD7,
					      0x450e,
					      { 0xB9, 0xAD, 0x9C, 0xF4, 0xEB,
						0xD4, 0xF8, 0x90 } };
EFI_GUID gEfiEventNotificationTypeCpeGuid = { 0x4E292F96,
					      0xD843,
					      0x4a55,
					      { 0xA8, 0xC2, 0xD4, 0x81, 0xF2,
						0x7E, 0xBE, 0xEE } };
EFI_GUID gEfiEventNotificationTypeMceGuid = { 0xE8F56FFE,
					      0x919C,
					      0x4cc5,
					      { 0xBA, 0x88, 0x65, 0xAB, 0xE1,
						0x49, 0x13, 0xBB } };
EFI_GUID gEfiEventNotificationTypePcieGuid = { 0xCF93C01F,
					       0x1A16,
					       0x4dfc,
					       { 0xB8, 0xBC, 0x9C, 0x4D, 0xAF,
						 0x67, 0xC1, 0x04 } };
EFI_GUID gEfiEventNotificationTypeInitGuid = { 0xCC5263E8,
					       0x9308,
					       0x454a,
					       { 0x89, 0xD0, 0x34, 0x0B, 0xD3,
						 0x9B, 0xC9, 0x8E } };
EFI_GUID gEfiEventNotificationTypeNmiGuid = { 0x5BAD89FF,
					      0xB7E6,
					      0x42c9,
					      { 0x81, 0x4A, 0xCF, 0x24, 0x85,
						0xD6, 0xE9, 0x8A } };
EFI_GUID gEfiEventNotificationTypeBootGuid = { 0x3D61A466,
					       0xAB40,
					       0x409a,
					       { 0xA6, 0x98, 0xF3, 0x62, 0xD4,
						 0x64, 0xB3, 0x8F } };
EFI_GUID gEfiEventNotificationTypeDmarGuid = { 0x667DD791,
					       0xC6B3,
					       0x4c27,
					       { 0x8A, 0x6B, 0x0F, 0x8E, 0x72,
						 0x2D, 0xEB, 0x41 } };
EFI_GUID gEfiEventNotificationTypeSeaGuid = { 0x9A78788A,
					      0xBBE8,
					      0x11E4,
					      { 0x80, 0x9E, 0x67, 0x61, 0x1E,
						0x5D, 0x46, 0xB0 } };
EFI_GUID gEfiEventNotificationTypeSeiGuid = { 0x5C284C81,
					      0xB0AE,
					      0x4E87,
					      { 0xA3, 0x22, 0xB0, 0x4C, 0x85,
						0x62, 0x43, 0x23 } };
EFI_GUID gEfiEventNotificationTypePeiGuid = { 0x09A9D5AC,
					      0x5204,
					      0x4214,
					      { 0x96, 0xE5, 0x94, 0x99, 0x2E,
						0x75, 0x2B, 0xCD } };
EFI_GUID gEfiEventNotificationTypeCxlGuid = { 0x69293BC9,
					      0x41DF,
					      0x49A3,
					      { 0xB4, 0xBD, 0x4F, 0xB0, 0xDB,
						0x30, 0x41, 0xF6 } };

//Error section GUIDs.
EFI_GUID gEfiProcessorGenericErrorSectionGuid = { 0x9876ccad,
						  0x47b4,
						  0x4bdb,
						  { 0xb6, 0x5e, 0x16, 0xf1,
						    0x93, 0xc4, 0xf3, 0xdb } };
EFI_GUID gEfiProcessorSpecificErrorSectionGuid = { 0xdc3ea0b0,
						   0xa144,
						   0x4797,
						   { 0xb9, 0x5b, 0x53, 0xfa,
						     0x24, 0x2b, 0x6e, 0x1d } };
EFI_GUID gEfiIa32X64ProcessorErrorSectionGuid = { 0xdc3ea0b0,
						  0xa144,
						  0x4797,
						  { 0xb9, 0x5b, 0x53, 0xfa,
						    0x24, 0x2b, 0x6e, 0x1d } };
EFI_GUID gEfiIpfProcessorErrorSectionGuid = { 0xe429faf1,
					      0x3cb7,
					      0x11d4,
					      { 0xbc, 0xa7, 0x00, 0x80, 0xc7,
						0x3c, 0x88, 0x81 } };
EFI_GUID gEfiArmProcessorErrorSectionGuid = { 0xe19e3d16,
					      0xbc11,
					      0x11e4,
					      { 0x9c, 0xaa, 0xc2, 0x05, 0x1d,
						0x5d, 0x46, 0xb0 } };
EFI_GUID gEfiPlatformMemoryErrorSectionGuid = { 0xa5bc1114,
						0x6f64,
						0x4ede,
						{ 0xb8, 0x63, 0x3e, 0x83, 0xed,
						  0x7c, 0x83, 0xb1 } };
EFI_GUID gEfiPlatformMemoryError2SectionGuid = { 0x61EC04FC,
						 0x48E6,
						 0xD813,
						 { 0x25, 0xC9, 0x8D, 0xAA, 0x44,
						   0x75, 0x0B, 0x12 } };
EFI_GUID gEfiPcieErrorSectionGuid = { 0xd995e954,
				      0xbbc1,
				      0x430f,
				      { 0xad, 0x91, 0xb4, 0x4d, 0xcb, 0x3c,
					0x6f, 0x35 } };
EFI_GUID gEfiFirmwareErrorSectionGuid = { 0x81212a96,
					  0x09ed,
					  0x4996,
					  { 0x94, 0x71, 0x8d, 0x72, 0x9c, 0x8e,
					    0x69, 0xed } };
EFI_GUID gEfiPciBusErrorSectionGuid = { 0xc5753963,
					0x3b84,
					0x4095,
					{ 0xbf, 0x78, 0xed, 0xda, 0xd3, 0xf9,
					  0xc9, 0xdd } };
EFI_GUID gEfiPciDevErrorSectionGuid = { 0xeb5e4685,
					0xca66,
					0x4769,
					{ 0xb6, 0xa2, 0x26, 0x06, 0x8b, 0x00,
					  0x13, 0x26 } };
EFI_GUID gEfiDMArGenericErrorSectionGuid = { 0x5b51fef7,
					     0xc79d,
					     0x4434,
					     { 0x8f, 0x1b, 0xaa, 0x62, 0xde,
					       0x3e, 0x2c, 0x64 } };
EFI_GUID gEfiDirectedIoDMArErrorSectionGuid = { 0x71761d37,
						0x32b2,
						0x45cd,
						{ 0xa7, 0xd0, 0xb0, 0xfe, 0xdd,
						  0x93, 0xe8, 0xcf } };
EFI_GUID gEfiIommuDMArErrorSectionGuid = { 0x036f84e1,
					   0x7f37,
					   0x428c,
					   { 0xa7, 0x9e, 0x57, 0x5f, 0xdf, 0xaa,
					     0x84, 0xec } };
EFI_GUID gEfiCcixPerLogErrorSectionGuid = { 0x91335EF6,
					    0xEBFB,
					    0x4478,
					    { 0xA6, 0xA6, 0x88, 0xB7, 0x28,
					      0xCF, 0x75, 0xD7 } };
EFI_GUID gEfiCxlProtocolErrorSectionGuid = { 0x80B9EFB4,
					     0x52B5,
					     0x4DE3,
					     { 0xA7, 0x77, 0x68, 0x78, 0x4B,
					       0x77, 0x10, 0x48 } };
EFI_GUID gEfiCxlGeneralMediaErrorSectionGuid = { 0xfbcd0a77,
						 0xc260,
						 0x417f,
						 { 0x85, 0xa9, 0x08, 0x8b, 0x16,
						   0x21, 0xeb, 0xa6 } };
EFI_GUID gEfiCxlDramEventErrorSectionGuid = { 0x601dcbb3,
					      0x9c06,
					      0x4eab,
					      { 0xb8, 0xaf, 0x4e, 0x9b, 0xfb,
						0x5c, 0x96, 0x24 } };
EFI_GUID gEfiCxlMemoryModuleErrorSectionGuid = { 0xfe927475,
						 0xdd59,
						 0x4339,
						 { 0xa5, 0x86, 0x79, 0xba, 0xb1,
						   0x13, 0xb7, 0x74 } };
EFI_GUID gEfiCxlPhysicalSwitchErrorSectionGuid = { 0x77cf9271,
						   0x9c02,
						   0x470b,
						   { 0x9f, 0xe4, 0xbc, 0x7b,
						     0x75, 0xf2, 0xda, 0x97 } };
EFI_GUID gEfiCxlVirtualSwitchErrorSectionGuid = { 0x40d26425,
						  0x3396,
						  0x4c4d,
						  { 0xa5, 0xda, 0x3d, 0x47,
						    0x26, 0x3a, 0xf4, 0x25 } };
EFI_GUID gEfiCxlMldPortErrorSectionGuid = { 0x8dc44363,
					    0x0c96,
					    0x4710,
					    { 0xb7, 0xbf, 0x04, 0xbb, 0x99,
					      0x53, 0x4c, 0x3f } };

//IA32/x64 error segment GUIDs.
EFI_GUID gEfiIa32x64ErrorTypeCacheCheckGuid = { 0xA55701F5,
						0xE3EF,
						0x43de,
						{ 0xAC, 0x72, 0x24, 0x9B, 0x57,
						  0x3F, 0xAD, 0x2C } };
EFI_GUID gEfiIa32x64ErrorTypeTlbCheckGuid = { 0xFC06B535,
					      0x5E1F,
					      0x4562,
					      { 0x9F, 0x25, 0x0A, 0x3B, 0x9A,
						0xDB, 0x63, 0xC3 } };
EFI_GUID gEfiIa32x64ErrorTypeBusCheckGuid = { 0x1CF3F8B3,
					      0xC5B1,
					      0x49a2,
					      { 0xAA, 0x59, 0x5E, 0xEF, 0x92,
						0xFF, 0xA6, 0x3C } };
EFI_GUID gEfiIa32x64ErrorTypeMsCheckGuid = { 0x48AB7F57,
					     0xDC34,
					     0x4f6c,
					     { 0xA7, 0xD3, 0xB0, 0xB5, 0xB0,
					       0xA7, 0x43, 0x14 } };
EFI_GUID gEfiNvidiaErrorSectionGuid = { 0x6d5244f2,
					0x2712,
					0x11ec,
					{ 0xbe, 0xa7, 0xcb, 0x3f, 0xdb, 0x95,
					  0xc7, 0x86 } };

EFI_GUID gEfiAmpereErrorSectionGuid = { 0x2826cc9f,
					0x448c,
					0x4c2b,
					{ 0x86, 0xb6, 0xa9, 0x53, 0x94, 0xb7,
					  0xef, 0x33 } };
