1db1b7ce2SLawrence Tang #ifndef CPER_SECTION_DMAR_VTD_H 2db1b7ce2SLawrence Tang #define CPER_SECTION_DMAR_VTD_H 3db1b7ce2SLawrence Tang 4db1b7ce2SLawrence Tang #include "json.h" 5db1b7ce2SLawrence Tang #include "../edk/Cper.h" 6db1b7ce2SLawrence Tang 7*ce0f82bfSLawrence Tang #define VTD_FAULT_RECORD_TYPES_KEYS (int []){0, 1} 8*ce0f82bfSLawrence Tang #define VTD_FAULT_RECORD_TYPES_VALUES (const char*[]){"Write Request", "Read/AtomicOp Request"} 9*ce0f82bfSLawrence Tang 10*ce0f82bfSLawrence Tang typedef struct { 11*ce0f82bfSLawrence Tang UINT64 Resv1 : 12; 12*ce0f82bfSLawrence Tang UINT64 FaultInformation : 52; 13*ce0f82bfSLawrence Tang UINT64 SourceIdentifier : 16; 14*ce0f82bfSLawrence Tang UINT64 Resv2 : 13; 15*ce0f82bfSLawrence Tang UINT64 PrivelegeModeRequested : 1; 16*ce0f82bfSLawrence Tang UINT64 ExecutePermissionRequested : 1; 17*ce0f82bfSLawrence Tang UINT64 PasidPresent : 1; 18*ce0f82bfSLawrence Tang UINT64 FaultReason : 8; 19*ce0f82bfSLawrence Tang UINT64 PasidValue : 20; 20*ce0f82bfSLawrence Tang UINT64 AddressType : 2; 21*ce0f82bfSLawrence Tang UINT64 Type : 1; 22*ce0f82bfSLawrence Tang UINT64 Resv3 : 1; 23*ce0f82bfSLawrence Tang } EFI_VTD_FAULT_RECORD; 24*ce0f82bfSLawrence Tang 25db1b7ce2SLawrence Tang json_object* cper_section_dmar_vtd_to_ir(void* section, EFI_ERROR_SECTION_DESCRIPTOR* descriptor); 26db1b7ce2SLawrence Tang 27db1b7ce2SLawrence Tang #endif