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