blob: 3c3a1340479ddb01c689e62679dfa7726aae638e [file] [log] [blame]
Lawrence Tangdb1b7ce2022-07-06 15:40:26 +01001#ifndef CPER_SECTION_DMAR_VTD_H
2#define CPER_SECTION_DMAR_VTD_H
3
Karthik Rajagopalan255bd812024-09-06 14:36:34 -07004#ifdef __cplusplus
5extern "C" {
6#endif
7
Lawrence Tang5202bbb2022-08-12 14:54:36 +01008#include <json.h>
Lawrence Tangdb1b7ce2022-07-06 15:40:26 +01009#include "../edk/Cper.h"
10
John Chungf8fc7052024-05-03 20:05:29 +080011#define VTD_FAULT_RECORD_TYPES_KEYS \
12 (int[]) \
13 { \
14 0, 1 \
15 }
16#define VTD_FAULT_RECORD_TYPES_VALUES \
17 (const char *[]) \
18 { \
19 "Write Request", "Read/AtomicOp Request" \
20 }
Lawrence Tangce0f82b2022-07-07 16:14:28 +010021
22typedef struct {
John Chungf8fc7052024-05-03 20:05:29 +080023 UINT64 Resv1 : 12;
24 UINT64 FaultInformation : 52;
25 UINT64 SourceIdentifier : 16;
26 UINT64 Resv2 : 13;
27 UINT64 PrivelegeModeRequested : 1;
28 UINT64 ExecutePermissionRequested : 1;
29 UINT64 PasidPresent : 1;
30 UINT64 FaultReason : 8;
31 UINT64 PasidValue : 20;
32 UINT64 AddressType : 2;
33 UINT64 Type : 1;
34 UINT64 Resv3 : 1;
Lawrence Tangce0f82b2022-07-07 16:14:28 +010035} EFI_VTD_FAULT_RECORD;
36
John Chungf8fc7052024-05-03 20:05:29 +080037json_object *cper_section_dmar_vtd_to_ir(void *section);
38void ir_section_dmar_vtd_to_cper(json_object *section, FILE *out);
Lawrence Tangdb1b7ce2022-07-06 15:40:26 +010039
Karthik Rajagopalan255bd812024-09-06 14:36:34 -070040#ifdef __cplusplus
41}
42#endif
43
John Chungf8fc7052024-05-03 20:05:29 +080044#endif