1{
2    "$id": "cper-json-arm-processor-section",
3    "$schema": "https://json-schema.org/draft/2020-12/schema",
4    "type": "object",
5    "required": ["validationBits", "errorInfoNum", "contextInfoNum", "sectionLength", "errorAffinity", "mpidrEl1", "midrEl1", "running", "errorInfo", "contextInfo"],
6    "additionalProperties": false,
7    "properties": {
8        "validationBits": {
9            "type": "object",
10            "required": ["mpidrValid", "errorAffinityLevelValid", "runningStateValid", "vendorSpecificInfoValid"],
11            "properties": {
12                "mpidrValid": {
13                    "type": "boolean"
14                },
15                "errorAffinityLevelValid": {
16                    "type": "boolean"
17                },
18                "runningStateValid": {
19                    "type": "boolean"
20                },
21                "vendorSpecificInfoValid": {
22                    "type": "boolean"
23                }
24            }
25        },
26        "errorInfoNum": {
27            "type": "integer"
28        },
29        "contextInfoNum": {
30            "type": "integer"
31        },
32        "sectionLength": {
33            "type": "integer"
34        },
35        "errorAffinity": {
36            "type": "object",
37            "required": ["value", "type"],
38            "properties": {
39                "value": {
40                    "type": "integer"
41                },
42                "type": {
43                    "type": "string"
44                }
45            }
46        },
47        "mpidrEl1": {
48            "type": "integer"
49        },
50        "midrEl1": {
51            "type": "integer"
52        },
53        "running": {
54            "type": "boolean"
55        },
56        "psciState": {
57            "type": "integer"
58        },
59        "errorInfo": {
60            "type": "array",
61            "items": {
62                "type": "object",
63                "required": ["version", "length", "validationBits", "errorType", "multipleError", "flags", "errorInformation", "virtualFaultAddress", "physicalFaultAddress"],
64                "additionalProperties": false,
65                "properties": {
66                    "version": {
67                        "type": "integer"
68                    },
69                    "length": {
70                        "type": "integer"
71                    },
72                    "validationBits": {
73                        "type": "object",
74                        "required": ["multipleErrorValid", "flagsValid", "errorInformationValid", "virtualFaultAddressValid", "physicalFaultAddressValid"],
75                        "properties": {
76                            "multipleErrorValid": {
77                                "type": "boolean"
78                            },
79                            "flagsValid": {
80                                "type": "boolean"
81                            },
82                            "errorInformationValid": {
83                                "type": "boolean"
84                            },
85                            "virtualFaultAddressValid": {
86                                "type": "boolean"
87                            },
88                            "physicalFaultAddressValid": {
89                                "type": "boolean"
90                            }
91                        }
92                    },
93                    "errorType": {
94                        "type": "object",
95                        "$ref": "./common/cper-json-nvp.json"
96                    },
97                    "multipleError": {
98                        "type": "object",
99                        "$ref": "./common/cper-json-nvp.json"
100                    },
101                    "flags": {
102                        "type": "object",
103                        "required": ["firstErrorCaptured", "lastErrorCaptured", "propagated", "overflow"],
104                        "properties": {
105                            "firstErrorCaptured": {
106                                "type": "boolean"
107                            },
108                            "lastErrorCaptured": {
109                                "type": "boolean"
110                            },
111                            "propagated": {
112                                "type": "boolean"
113                            },
114                            "overflow": {
115                                "type": "boolean"
116                            }
117                        }
118                    },
119                    "errorInformation": {
120                        "type": "object",
121                        "oneOf": [
122                            {
123                                "type": "object",
124                                "required": ["validationBits", "transactionType", "operation", "level", "processorContextCorrupt", "corrected", "precisePC", "restartablePC"],
125                                "additionalProperties": false,
126                                "properties": {
127                                    "validationBits": {
128                                        "type": "object",
129                                        "required": ["transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", "precisePCValid", "restartablePCValid"],
130                                        "properties": {
131                                            "transactionTypeValid": {
132                                                "type": "boolean"
133                                            },
134                                            "operationValid": {
135                                                "type": "boolean"
136                                            },
137                                            "levelValid": {
138                                                "type": "boolean"
139                                            },
140                                            "processorContextCorruptValid": {
141                                                "type": "boolean"
142                                            },
143                                            "correctedValid": {
144                                                "type": "boolean"
145                                            },
146                                            "precisePCValid": {
147                                                "type": "boolean"
148                                            },
149                                            "restartablePCValid": {
150                                                "type": "boolean"
151                                            }
152                                        }
153                                    },
154                                    "transactionType": {
155                                        "type": "object",
156                                        "$ref": "./common/cper-json-nvp.json"
157                                    },
158                                    "operation": {
159                                        "type": "object",
160                                        "$ref": "./common/cper-json-nvp.json"
161                                    },
162                                    "level": {
163                                        "type": "integer"
164                                    },
165                                    "processorContextCorrupt": {
166                                        "type": "boolean"
167                                    },
168                                    "corrected": {
169                                        "type": "boolean"
170                                    },
171                                    "precisePC": {
172                                        "type": "boolean"
173                                    },
174                                    "restartablePC": {
175                                        "type": "boolean"
176                                    }
177                                }
178                            },
179                            {
180                                "type": "object",
181                                "required": ["validationBits", "transactionType", "operation", "level", "processorContextCorrupt", "corrected", "precisePC", "restartablePC", "timedOut", "participationType", "addressSpace", "memoryAttributes", "accessMode"],
182                                "additionalProperties": false,
183                                "properties": {
184                                    "validationBits": {
185                                        "type": "object",
186                                        "required": ["transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", "precisePCValid", "restartablePCValid", "participationTypeValid", "timedOutValid", "addressSpaceValid", "memoryAttributesValid", "accessModeValid"],
187                                        "properties": {
188                                            "transactionTypeValid": {
189                                                "type": "boolean"
190                                            },
191                                            "operationValid": {
192                                                "type": "boolean"
193                                            },
194                                            "levelValid": {
195                                                "type": "boolean"
196                                            },
197                                            "processorContextCorruptValid": {
198                                                "type": "boolean"
199                                            },
200                                            "correctedValid": {
201                                                "type": "boolean"
202                                            },
203                                            "precisePCValid": {
204                                                "type": "boolean"
205                                            },
206                                            "restartablePCValid": {
207                                                "type": "boolean"
208                                            },
209                                            "participationTypeValid": {
210                                                "type": "boolean"
211                                            },
212                                            "timedOutValid": {
213                                                "type": "boolean"
214                                            },
215                                            "addressSpaceValid": {
216                                                "type": "boolean"
217                                            },
218                                            "memoryAttributesValid": {
219                                                "type": "boolean"
220                                            },
221                                            "accessModeValid": {
222                                                "type": "boolean"
223                                            }
224                                        }
225                                    },
226                                    "transactionType": {
227                                        "type": "object",
228                                        "$ref": "./common/cper-json-nvp.json"
229                                    },
230                                    "operation": {
231                                        "type": "object",
232                                        "$ref": "./common/cper-json-nvp.json"
233                                    },
234                                    "level": {
235                                        "type": "integer"
236                                    },
237                                    "processorContextCorrupt": {
238                                        "type": "boolean"
239                                    },
240                                    "corrected": {
241                                        "type": "boolean"
242                                    },
243                                    "precisePC": {
244                                        "type": "boolean"
245                                    },
246                                    "restartablePC": {
247                                        "type": "boolean"
248                                    },
249                                    "timedOut": {
250                                        "type": "boolean"
251                                    },
252                                    "participationType": {
253                                        "type": "object",
254                                        "$ref": "./common/cper-json-nvp.json"
255                                    },
256                                    "addressSpace": {
257                                        "type": "object",
258                                        "$ref": "./common/cper-json-nvp.json"
259                                    },
260                                    "accessMode": {
261                                        "type": "object",
262                                        "$ref": "./common/cper-json-nvp.json"
263                                    },
264                                    "memoryAttributes": {
265                                        "type": "integer"
266                                    }
267                                }
268                            }
269                        ]
270                    },
271                    "virtualFaultAddress": {
272                        "type": "integer"
273                    },
274                    "physicalFaultAddress": {
275                        "type": "integer"
276                    }
277                }
278            }
279        },
280        "contextInfo": {
281            "type": "array",
282            "items": {
283                "type": "object",
284                "required": ["registerContextType", "registerArraySize", "registerArray"],
285                "additionalProperties": false,
286                "properties": {
287                    "registerContextType": {
288                        "type": "object",
289                        "$ref": "./common/cper-json-nvp.json"
290                    },
291                    "registerArraySize": {
292                        "type": "integer"
293                    },
294                    "registerArray": {
295                        "type": "object",
296                        "oneOf": [
297                            {
298                                "type": "object",
299                                "required": ["r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13_sp", "r14_lr", "r15_pc"],
300                                "properties": {
301                                    "r0": { "type": "integer" },
302                                    "r1": { "type": "integer" },
303                                    "r2": { "type": "integer" },
304                                    "r3": { "type": "integer" },
305                                    "r4": { "type": "integer" },
306                                    "r5": { "type": "integer" },
307                                    "r6": { "type": "integer" },
308                                    "r7": { "type": "integer" },
309                                    "r8": { "type": "integer" },
310                                    "r9": { "type": "integer" },
311                                    "r10": { "type": "integer" },
312                                    "r11": { "type": "integer" },
313                                    "r12": { "type": "integer" },
314                                    "r13_sp": { "type": "integer" },
315                                    "r14_lr": { "type": "integer" },
316                                    "r15_pc": { "type": "integer" }
317                                }
318                            },
319                            {
320                                "type": "object",
321                                "required": ["dfar", "dfsr", "ifar", "isr", "mair0", "mair1", "midr", "mpidr", "nmrr", "prrr", "sctlr_ns", "spsr", "spsr_abt", "spsr_fiq", "spsr_irq", "spsr_svc", "spsr_und", "tpidrprw", "tpidruro", "tpidrurw", "ttbcr", "ttbr0", "ttbr1", "dacr"],
322                                "properties": {
323                                    "dfar": { "type": "integer" },
324                                    "dfsr": { "type": "integer" },
325                                    "ifar": { "type": "integer" },
326                                    "isr": { "type": "integer" },
327                                    "mair0": { "type": "integer" },
328                                    "mair1": { "type": "integer" },
329                                    "midr": { "type": "integer" },
330                                    "mpidr": { "type": "integer" },
331                                    "nmrr": { "type": "integer" },
332                                    "prrr": { "type": "integer" },
333                                    "sctlr_ns": { "type": "integer" },
334                                    "spsr": { "type": "integer" },
335                                    "spsr_abt": { "type": "integer" },
336                                    "spsr_fiq": { "type": "integer" },
337                                    "spsr_irq": { "type": "integer" },
338                                    "spsr_svc": { "type": "integer" },
339                                    "spsr_und": { "type": "integer" },
340                                    "tpidrprw": { "type": "integer" },
341                                    "tpidruro": { "type": "integer" },
342                                    "tpidrurw": { "type": "integer" },
343                                    "ttbcr": { "type": "integer" },
344                                    "ttbr0": { "type": "integer" },
345                                    "ttbr1": { "type": "integer" },
346                                    "dacr": { "type": "integer" }
347                                }
348                            },
349                            {
350                                "type": "object",
351                                "required": ["elr_hyp", "hamair0", "hamair1", "hcr", "hcr2", "hdfar", "hifar", "hpfar", "hsr", "htcr", "htpidr", "httbr", "spsr_hyp", "vtcr", "vttbr", "dacr32_el2"],
352                                "properties": {
353                                    "elr_hyp": { "type": "integer" },
354                                    "hamair0": { "type": "integer" },
355                                    "hamair1": { "type": "integer" },
356                                    "hcr": { "type": "integer" },
357                                    "hcr2": { "type": "integer" },
358                                    "hdfar": { "type": "integer" },
359                                    "hifar": { "type": "integer" },
360                                    "hpfar": { "type": "integer" },
361                                    "hsr": { "type": "integer" },
362                                    "htcr": { "type": "integer" },
363                                    "htpidr": { "type": "integer" },
364                                    "httbr": { "type": "integer" },
365                                    "spsr_hyp": { "type": "integer" },
366                                    "vtcr": { "type": "integer" },
367                                    "vttbr": { "type": "integer" },
368                                    "dacr32_el2": { "type": "integer" }
369                                }
370                            },
371                            {
372                                "type": "object",
373                                "required": ["sctlr_s", "spsr_mon"],
374                                "properties": {
375                                    "sctlr_s": { "type": "integer" },
376                                    "spsr_mon": { "type": "integer" }
377                                }
378                            },
379                            {
380                                "type": "object",
381                                "required": ["x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28", "x29", "x30", "sp"],
382                                "properties": {
383                                    "x0": { "type": "integer" },
384                                    "x1": { "type": "integer" },
385                                    "x2": { "type": "integer" },
386                                    "x3": { "type": "integer" },
387                                    "x4": { "type": "integer" },
388                                    "x5": { "type": "integer" },
389                                    "x6": { "type": "integer" },
390                                    "x7": { "type": "integer" },
391                                    "x8": { "type": "integer" },
392                                    "x9": { "type": "integer" },
393                                    "x10": { "type": "integer" },
394                                    "x11": { "type": "integer" },
395                                    "x12": { "type": "integer" },
396                                    "x13": { "type": "integer" },
397                                    "x14": { "type": "integer" },
398                                    "x15": { "type": "integer" },
399                                    "x16": { "type": "integer" },
400                                    "x17": { "type": "integer" },
401                                    "x18": { "type": "integer" },
402                                    "x19": { "type": "integer" },
403                                    "x20": { "type": "integer" },
404                                    "x21": { "type": "integer" },
405                                    "x22": { "type": "integer" },
406                                    "x23": { "type": "integer" },
407                                    "x24": { "type": "integer" },
408                                    "x25": { "type": "integer" },
409                                    "x26": { "type": "integer" },
410                                    "x27": { "type": "integer" },
411                                    "x28": { "type": "integer" },
412                                    "x29": { "type": "integer" },
413                                    "x30": { "type": "integer" },
414                                    "sp": { "type": "integer" }
415                                }
416                            },
417                            {
418                                "type": "object",
419                                "required": ["elr_el1", "esr_el1", "far_el1", "isr_el1", "mair_el1", "midr_el1", "mpidr_el1", "sctlr_el1", "sp_el0", "sp_el1", "spsr_el1", "tcr_el1", "tpidr_el0", "tpidr_el1", "tpidrro_el0", "ttbr0_el1", "ttbr1_el1"],
420                                "properties": {
421                                    "elr_el1": { "type": "integer" },
422                                    "esr_el1": { "type": "integer" },
423                                    "far_el1": { "type": "integer" },
424                                    "isr_el1": { "type": "integer" },
425                                    "mair_el1": { "type": "integer" },
426                                    "midr_el1": { "type": "integer" },
427                                    "mpidr_el1": { "type": "integer" },
428                                    "sctlr_el1": { "type": "integer" },
429                                    "sp_el0": { "type": "integer" },
430                                    "sp_el1": { "type": "integer" },
431                                    "spsr_el1": { "type": "integer" },
432                                    "tcr_el1": { "type": "integer" },
433                                    "tpidr_el0": { "type": "integer" },
434                                    "tpidr_el1": { "type": "integer" },
435                                    "tpidrro_el0": { "type": "integer" },
436                                    "ttbr0_el1": { "type": "integer" },
437                                    "ttbr1_el1": { "type": "integer" }
438                                }
439                            },
440                            {
441                                "type": "object",
442                                "required": ["elr_el2", "esr_el2", "far_el2", "hacr_el2", "hcr_el2", "hpfar_el2", "mair_el2", "sctlr_el2", "sp_el2", "spsr_el2", "tcr_el2", "tpidr_el2", "ttbr0_el2", "vtcr_el2", "vttbr_el2"],
443                                "properties": {
444                                    "elr_el2": { "type": "integer" },
445                                    "esr_el2": { "type": "integer" },
446                                    "far_el2": { "type": "integer" },
447                                    "hacr_el2": { "type": "integer" },
448                                    "hcr_el2": { "type": "integer" },
449                                    "hpfar_el2": { "type": "integer" },
450                                    "mair_el2": { "type": "integer" },
451                                    "sctlr_el2": { "type": "integer" },
452                                    "sp_el2": { "type": "integer" },
453                                    "spsr_el2": { "type": "integer" },
454                                    "tcr_el2": { "type": "integer" },
455                                    "tpidr_el2": { "type": "integer" },
456                                    "ttbr0_el2": { "type": "integer" },
457                                    "vtcr_el2": { "type": "integer" },
458                                    "vttbr_el2": { "type": "integer" }
459                                }
460                            },
461                            {
462                                "type": "object",
463                                "required": ["elr_el3", "esr_el3", "far_el3", "mair_el3", "sctlr_el3", "sp_el3", "spsr_el3", "tcr_el3", "tpidr_el3", "ttbr0_el3"],
464                                "properties": {
465                                    "elr_el3": { "type": "integer" },
466                                    "esr_el3": { "type": "integer" },
467                                    "far_el3": { "type": "integer" },
468                                    "mair_el3": { "type": "integer" },
469                                    "sctlr_el3": { "type": "integer" },
470                                    "sp_el3": { "type": "integer" },
471                                    "spsr_el3": { "type": "integer" },
472                                    "tcr_el3": { "type": "integer" },
473                                    "tpidr_el3": { "type": "integer" },
474                                    "ttbr0_el3": { "type": "integer" }
475                                }
476                            },
477                            {
478                                "type": "object",
479                                "required": ["mrsEncoding", "value"],
480                                "additionalProperties": false,
481                                "properties": {
482                                    "mrsEncoding": {
483                                        "type": "object",
484                                        "required": ["op2", "crm", "crn", "op1", "o0"],
485                                        "properties": {
486                                            "op2": { "type": "integer" },
487                                            "crm": { "type": "integer" },
488                                            "crn": { "type": "integer" },
489                                            "op1": { "type": "integer" },
490                                            "o0": { "type": "integer" }
491                                        }
492                                    },
493                                    "value": {
494                                        "type": "integer"
495                                    }
496                                }
497                            },
498                            {
499                                "type": "object",
500                                "required": ["data"],
501                                "properties": {
502                                    "data": {
503                                        "type": "string"
504                                    }
505                                }
506                            }
507                        ]
508                    }
509                }
510            }
511        },
512        "vendorSpecificInfo": {
513            "type": "object",
514            "required": ["data"],
515            "additionalProperties": false,
516            "properties": {
517                "data": {
518                    "type": "string"
519                }
520            }
521        }
522    }
523}