blob: caa9d2535b0b3537afed5ac39259a055254bb7a2 [file] [log] [blame]
Lawrence Tang079d5812022-07-12 14:15:32 +01001{
Lawrence Tang079d5812022-07-12 14:15:32 +01002 "$schema": "https://json-schema.org/draft/2020-12/schema",
3 "type": "object",
Andrew Adrianced9835a12024-12-05 14:41:42 -08004 "description": "VT for Directed I/O specific DMAr Error Section",
John Chung044afd02024-05-03 19:58:02 +08005 "required": [
6 "version",
7 "revision",
8 "oemID",
9 "capabilityRegister",
10 "extendedCapabilityRegister",
11 "globalCommandRegister",
12 "globalStatusRegister",
13 "faultStatusRegister",
14 "faultRecord",
15 "rootEntry",
16 "contextEntry",
17 "pageTableEntry_Level6",
18 "pageTableEntry_Level5",
19 "pageTableEntry_Level4",
20 "pageTableEntry_Level3",
21 "pageTableEntry_Level2",
22 "pageTableEntry_Level1"
23 ],
Lawrence Tang079d5812022-07-12 14:15:32 +010024 "additionalProperties": false,
25 "properties": {
26 "version": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080027 "type": "integer",
28 "description": "Value of version register as defined in VT-d architecture"
Lawrence Tang079d5812022-07-12 14:15:32 +010029 },
30 "revision": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080031 "type": "integer",
32 "description": "Value of revision field in VT-d specific DMA remapping reporting structure"
Lawrence Tang079d5812022-07-12 14:15:32 +010033 },
34 "oemID": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080035 "type": "integer",
36 "description": "Value of OEM ID field in VT-d specific DMA remapping reporting structure"
Lawrence Tang079d5812022-07-12 14:15:32 +010037 },
38 "capabilityRegister": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080039 "type": "integer",
40 "description": "Value of capability register in VT-d architecture"
Lawrence Tang079d5812022-07-12 14:15:32 +010041 },
42 "extendedCapabilityRegister": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080043 "type": "integer",
44 "description": "Value of extended capability register in VT-d architecture"
Lawrence Tang079d5812022-07-12 14:15:32 +010045 },
46 "globalCommandRegister": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080047 "type": "integer",
48 "description": "Value of Global Command register in VT-d architecture programmed by the operating system"
Lawrence Tang079d5812022-07-12 14:15:32 +010049 },
50 "globalStatusRegister": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080051 "type": "integer",
52 "description": "Value of Global Status register in VT-d architecture"
Lawrence Tang079d5812022-07-12 14:15:32 +010053 },
54 "faultStatusRegister": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080055 "type": "integer",
56 "description": "Value of Fault Status register in VT-d architecture"
Lawrence Tang42375842022-07-19 16:25:47 +010057 },
58 "faultRecord": {
Lawrence Tang079d5812022-07-12 14:15:32 +010059 "type": "object",
Andrew Adrianced9835a12024-12-05 14:41:42 -080060 "description": "Fault record as defined in the VT-d specification",
John Chung044afd02024-05-03 19:58:02 +080061 "required": [
62 "faultInformation",
63 "sourceIdentifier",
64 "privelegeModeRequested",
65 "executePermissionRequested",
66 "pasidPresent",
67 "faultReason",
68 "pasidValue",
69 "addressType",
70 "type"
71 ],
Lawrence Tang079d5812022-07-12 14:15:32 +010072 "properties": {
73 "faultInformation": {
74 "type": "integer"
75 },
76 "sourceIdentifier": {
77 "type": "integer"
78 },
79 "privelegeModeRequested": {
80 "type": "boolean"
81 },
82 "executePermissionRequested": {
83 "type": "boolean"
84 },
85 "pasidPresent": {
86 "type": "boolean"
87 },
88 "faultReason": {
89 "type": "integer"
90 },
91 "pasidValue": {
92 "type": "integer"
93 },
94 "addressType": {
95 "type": "integer"
96 },
97 "type": {
98 "type": "object",
Lawrence Tang8a2d7372022-07-12 16:44:49 +010099 "$ref": "./common/cper-json-nvp.json"
Lawrence Tang079d5812022-07-12 14:15:32 +0100100 }
101 }
102 },
103 "rootEntry": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800104 "type": "string",
105 "description": "Value from the root entry table for the given requester-ID."
Lawrence Tang079d5812022-07-12 14:15:32 +0100106 },
107 "contextEntry": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800108 "type": "string",
109 "description": "Value from the context entry table for the given requester-ID."
Lawrence Tang079d5812022-07-12 14:15:32 +0100110 },
Lawrence Tang42375842022-07-19 16:25:47 +0100111 "pageTableEntry_Level6": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800112 "type": "integer",
113 "description": "PTE entry for device virtual address in page level 6."
Lawrence Tang079d5812022-07-12 14:15:32 +0100114 },
Lawrence Tang42375842022-07-19 16:25:47 +0100115 "pageTableEntry_Level5": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800116 "type": "integer",
117 "description": "PTE entry for device virtual address in page level 5."
Lawrence Tang079d5812022-07-12 14:15:32 +0100118 },
Lawrence Tang42375842022-07-19 16:25:47 +0100119 "pageTableEntry_Level4": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800120 "type": "integer",
121 "description": "PTE entry for device virtual address in page level 4."
Lawrence Tang079d5812022-07-12 14:15:32 +0100122 },
Lawrence Tang42375842022-07-19 16:25:47 +0100123 "pageTableEntry_Level3": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800124 "type": "integer",
125 "description": "PTE entry for device virtual address in page level 3."
Lawrence Tang079d5812022-07-12 14:15:32 +0100126 },
Lawrence Tang42375842022-07-19 16:25:47 +0100127 "pageTableEntry_Level2": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800128 "type": "integer",
129 "description": "PTE entry for device virtual address in page level 2."
Lawrence Tang079d5812022-07-12 14:15:32 +0100130 },
Lawrence Tang42375842022-07-19 16:25:47 +0100131 "pageTableEntry_Level1": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800132 "type": "integer",
133 "description": "PTE entry for device virtual address in page level 1."
Lawrence Tang079d5812022-07-12 14:15:32 +0100134 }
135 }
John Chung044afd02024-05-03 19:58:02 +0800136}