1*cc0f5f38SLawrence Tang #ifndef CPER_SECTION_IPF_H 2*cc0f5f38SLawrence Tang #define CPER_SECTION_IPF_H 3*cc0f5f38SLawrence Tang 4*cc0f5f38SLawrence Tang #include "json.h" 5*cc0f5f38SLawrence Tang #include "../edk/Cper.h" 6*cc0f5f38SLawrence Tang 7*cc0f5f38SLawrence Tang /// 8*cc0f5f38SLawrence Tang /// IPF Error Record Section 9*cc0f5f38SLawrence Tang /// Defined as according to B.2.3 of the ItaniumTM Processor Family System Abstraction Layer (SAL) Specification. 10*cc0f5f38SLawrence Tang /// 11*cc0f5f38SLawrence Tang typedef struct { 12*cc0f5f38SLawrence Tang UINT64 ProcErrorMapValid : 1; 13*cc0f5f38SLawrence Tang UINT64 ProcStateParameterValid : 1; 14*cc0f5f38SLawrence Tang UINT64 ProcCrLidValid : 1; 15*cc0f5f38SLawrence Tang UINT64 PsiStaticStructValid : 1; 16*cc0f5f38SLawrence Tang UINT64 CacheCheckNum : 4; 17*cc0f5f38SLawrence Tang UINT64 TlbCheckNum : 4; 18*cc0f5f38SLawrence Tang UINT64 BusCheckNum : 4; 19*cc0f5f38SLawrence Tang UINT64 RegFileCheckNum : 4; 20*cc0f5f38SLawrence Tang UINT64 MsCheckNum : 4; 21*cc0f5f38SLawrence Tang UINT64 CpuIdInfoValid : 1; 22*cc0f5f38SLawrence Tang UINT64 Reserved : 39; 23*cc0f5f38SLawrence Tang } EPI_IPF_ERROR_VALID_BITS; 24*cc0f5f38SLawrence Tang 25*cc0f5f38SLawrence Tang typedef struct { 26*cc0f5f38SLawrence Tang EPI_IPF_ERROR_VALID_BITS ValidBits; 27*cc0f5f38SLawrence Tang UINT64 ProcErrorMap; 28*cc0f5f38SLawrence Tang UINT64 ProcStateParameter; 29*cc0f5f38SLawrence Tang UINT64 ProcCrLid; 30*cc0f5f38SLawrence Tang } EFI_IPF_ERROR_INFO_HEADER; 31*cc0f5f38SLawrence Tang 32*cc0f5f38SLawrence Tang typedef struct { 33*cc0f5f38SLawrence Tang UINT64 ValidBits; 34*cc0f5f38SLawrence Tang UINT64 ModCheckInfo; 35*cc0f5f38SLawrence Tang UINT64 ModTargetId; 36*cc0f5f38SLawrence Tang UINT64 ModRequestorId; 37*cc0f5f38SLawrence Tang UINT64 ModResponderId; 38*cc0f5f38SLawrence Tang UINT64 ModPreciseIp; 39*cc0f5f38SLawrence Tang } EFI_IPF_MOD_ERROR_INFO; 40*cc0f5f38SLawrence Tang 41*cc0f5f38SLawrence Tang typedef struct { 42*cc0f5f38SLawrence Tang UINT8 CpuIdInfo[40]; 43*cc0f5f38SLawrence Tang UINT8 Reserved1[8]; 44*cc0f5f38SLawrence Tang UINT64 ValidBits; 45*cc0f5f38SLawrence Tang UINT8 MinimalSaveStateInfo[1024]; 46*cc0f5f38SLawrence Tang UINT8 Brs[64]; 47*cc0f5f38SLawrence Tang UINT8 Crs[1024]; 48*cc0f5f38SLawrence Tang UINT8 Rrs[64]; 49*cc0f5f38SLawrence Tang UINT8 Frs[2048]; 50*cc0f5f38SLawrence Tang } EFI_IPF_ERROR_INFO_FOOTER; 51*cc0f5f38SLawrence Tang 52*cc0f5f38SLawrence Tang json_object* cper_section_ipf_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor); 53*cc0f5f38SLawrence Tang 54*cc0f5f38SLawrence Tang #endif