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