Fix minor errors in spec, add JSON specification.
diff --git a/specification/json/common/cper-json-error-status.json b/specification/json/common/cper-json-error-status.json
new file mode 100644
index 0000000..4db531c
--- /dev/null
+++ b/specification/json/common/cper-json-error-status.json
@@ -0,0 +1,45 @@
+{
+ "$id": "cper-json-error-status",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["errorType", "addressSignal", "controlSignal", "dataSignal", "detectedByResponder", "detectedByRequester", "firstError", "overflowDroppedLogs"],
+ "additionalProperties": false,
+ "properties": {
+ "errorType": {
+ "type": "object",
+ "required": ["name", "value", "description"],
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ }
+ }
+ },
+ "addressSignal": {
+ "type": "boolean"
+ },
+ "controlSignal": {
+ "type": "boolean"
+ },
+ "dataSignal": {
+ "type": "boolean"
+ },
+ "detectedByResponder": {
+ "type": "boolean"
+ },
+ "detectedByRequester": {
+ "type": "boolean"
+ },
+ "firstError": {
+ "type": "boolean"
+ },
+ "overflowDroppedLogs": {
+ "type": "boolean"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/common/cper-json-nvp.json b/specification/json/common/cper-json-nvp.json
new file mode 100644
index 0000000..6e57c90
--- /dev/null
+++ b/specification/json/common/cper-json-nvp.json
@@ -0,0 +1,15 @@
+{
+ "$id": "cper-json-namevaluepair",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["name", "value"],
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "value": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/cper-json-header.json b/specification/json/cper-json-header.json
new file mode 100644
index 0000000..68a9387
--- /dev/null
+++ b/specification/json/cper-json-header.json
@@ -0,0 +1,97 @@
+{
+ "$id": "cper-json-header",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["revision", "sectionCount", "severity", "validationBits", "recordLength", "creatorID", "notificationType", "recordID", "flags", "persistenceInfo"],
+ "additionalProperties": false,
+ "properties": {
+ "revision": {
+ "type": "object",
+ "required": ["major", "minor"],
+ "properties": {
+ "major": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "minor": {
+ "type": "integer",
+ "minimum": 0
+ }
+ }
+ },
+ "sectionCount": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "severity": {
+ "type": "object",
+ "required": ["name", "code"],
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "code": {
+ "type": "integer",
+ "minimum": 0
+ }
+ }
+ },
+ "validationBits": {
+ "type": "object",
+ "required": ["platformIDValid", "timestampValid", "partitionIDValid"],
+ "properties": {
+ "platformIDValid": {
+ "type": "boolean"
+ },
+ "timestampValid": {
+ "type": "boolean"
+ },
+ "partitionIDValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "recordLength": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "timestamp": {
+ "type": "string"
+ },
+ "timestampIsPrecise": {
+ "type": "boolean"
+ },
+ "platformID": {
+ "type": "string"
+ },
+ "partitionID": {
+ "type": "string"
+ },
+ "creatorID": {
+ "type": "string"
+ },
+ "notificationType": {
+ "type": "object",
+ "required": ["guid", "type"],
+ "properties": {
+ "guid": {
+ "type": "string",
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{16}$"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "recordID": {
+ "type": "integer"
+ },
+ "flags": {
+ "type": "object",
+ "$ref": "./common/cper-json-nvp.json"
+ },
+ "persistenceInfo": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/cper-json-section-descriptor.json b/specification/json/cper-json-section-descriptor.json
new file mode 100644
index 0000000..6148a5b
--- /dev/null
+++ b/specification/json/cper-json-section-descriptor.json
@@ -0,0 +1,103 @@
+{
+ "$id": "cper-json-section-descriptor",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["sectionOffset", "sectionLength", "revision", "validationBits", "flags", "sectionType", "severity"],
+ "additionalProperties": false,
+ "properties": {
+ "sectionOffset": {
+ "type": "integer"
+ },
+ "sectionLength": {
+ "type": "integer"
+ },
+ "revision": {
+ "type": "object",
+ "required": ["major", "minor"],
+ "properties": {
+ "major": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "minor": {
+ "type": "integer",
+ "minimum": 0
+ }
+ }
+ },
+ "validationBits": {
+ "type": "object",
+ "required": ["fruIDValid", "fruStringValid"],
+ "properties": {
+ "fruIDValid": {
+ "type": "boolean"
+ },
+ "fruStringValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "flags": {
+ "type": "object",
+ "required": ["primary", "containmentWarning", "reset", "errorThresholdExceeded", "resourceNotAccessible", "latentError", "propagated", "overflow"],
+ "properties": {
+ "primary": {
+ "type": "boolean"
+ },
+ "containmentWarning": {
+ "type": "boolean"
+ },
+ "reset": {
+ "type": "boolean"
+ },
+ "errorThresholdExceeded": {
+ "type": "boolean"
+ },
+ "resourceNotAccessible": {
+ "type": "boolean"
+ },
+ "latentError": {
+ "type": "boolean"
+ },
+ "propagated": {
+ "type": "boolean"
+ },
+ "overflow": {
+ "type": "boolean"
+ }
+ }
+ },
+ "sectionType": {
+ "type": "object",
+ "required": ["data", "name"],
+ "properties": {
+ "data": {
+ "type": "string",
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{16}$"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "fruID": {
+ "type": "string"
+ },
+ "severity": {
+ "type": "object",
+ "required": ["code", "name"],
+ "properties": {
+ "code": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "fruText": {
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/cper-json.json b/specification/json/cper-json.json
new file mode 100644
index 0000000..e0e7133
--- /dev/null
+++ b/specification/json/cper-json.json
@@ -0,0 +1,43 @@
+{
+ "$id": "cper-json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "JSON Schema for the CPER-JSON format, as described in the CPER-JSON specification document.",
+ "type": "object",
+ "required": ["header", "sectionDescriptors", "sections"],
+ "additionalProperties": false,
+ "properties": {
+ "header": {
+ "$ref": "./cper-json-header.json"
+ },
+ "sectionDescriptors": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "$ref": "./cper-json-section-descriptor.json"
+ }
+ },
+ "sections": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "oneOf": [
+ { "$ref": "./sections/cper-generic-processor.json" },
+ { "$ref": "./sections/cper-ia32x64-processor.json" },
+ { "$ref": "./sections/cper-arm-processor.json" },
+ { "$ref": "./sections/cper-memory.json" },
+ { "$ref": "./sections/cper-memory2.json" },
+ { "$ref": "./sections/cper-pcie.json" },
+ { "$ref": "./sections/cper-pci-bus.json" },
+ { "$ref": "./sections/cper-pci-component.json" },
+ { "$ref": "./sections/cper-firmware.json" },
+ { "$ref": "./sections/cper-generic-dmar.json" },
+ { "$ref": "./sections/cper-vtd-dmar.json" },
+ { "$ref": "./sections/cper-iommu-dmar.json" },
+ { "$ref": "./sections/cper-ccix-per.json" },
+ { "$ref": "./sections/cper-cxl-protocol.json" },
+ { "$ref": "./sections/cper-cxl-component.json" }
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-arm-processor.json b/specification/json/sections/cper-arm-processor.json
new file mode 100644
index 0000000..55b1dbc
--- /dev/null
+++ b/specification/json/sections/cper-arm-processor.json
@@ -0,0 +1,523 @@
+{
+ "$id": "cper-json-arm-processor-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "errorInfoNum", "contextInfoNum", "sectionLength", "errorAffinity", "mpidrEl1", "midrEl1", "running", "errorInfo", "contextInfo"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["mpidrValid", "errorAffinityLevelValid", "runningStateValid", "vendorSpecificInfoValid"],
+ "properties": {
+ "mpidrValid": {
+ "type": "boolean"
+ },
+ "errorAffinityLevelValid": {
+ "type": "boolean"
+ },
+ "runningStateValid": {
+ "type": "boolean"
+ },
+ "vendorSpecificInfoValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "errorInfoNum": {
+ "type": "integer"
+ },
+ "contextInfoNum": {
+ "type": "integer"
+ },
+ "sectionLength": {
+ "type": "integer"
+ },
+ "errorAffinity": {
+ "type": "object",
+ "required": ["value", "type"],
+ "properties": {
+ "value": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string"
+ }
+ }
+ },
+ "mpidrEl1": {
+ "type": "integer"
+ },
+ "midrEl1": {
+ "type": "integer"
+ },
+ "running": {
+ "type": "boolean"
+ },
+ "psciState": {
+ "type": "integer"
+ },
+ "errorInfo": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": ["version", "length", "validationBits", "errorType", "multipleError", "flags", "errorInformation", "virtualFaultAddress", "physicalFaultAddress"],
+ "additionalProperties": false,
+ "properties": {
+ "version": {
+ "type": "integer"
+ },
+ "length": {
+ "type": "integer"
+ },
+ "validationBits": {
+ "type": "object",
+ "required": ["multipleErrorValid", "flagsValid", "errorInformationValid", "virtualFaultAddressValid", "physicalFaultAddressValid"],
+ "properties": {
+ "multipleErrorValid": {
+ "type": "boolean"
+ },
+ "flagsValid": {
+ "type": "boolean"
+ },
+ "errorInformationValid": {
+ "type": "boolean"
+ },
+ "virtualFaultAddressValid": {
+ "type": "boolean"
+ },
+ "physicalFaultAddressValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "errorType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "multipleError": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "flags": {
+ "type": "object",
+ "required": ["firstErrorCaptured", "lastErrorCaptured", "propagated", "overflow"],
+ "properties": {
+ "firstErrorCaptured": {
+ "type": "boolean"
+ },
+ "lastErrorCaptured": {
+ "type": "boolean"
+ },
+ "propagated": {
+ "type": "boolean"
+ },
+ "overflow": {
+ "type": "boolean"
+ }
+ }
+ },
+ "errorInformation": {
+ "type": "object",
+ "oneOf": [
+ {
+ "type": "object",
+ "required": ["validationBits", "transactionType", "operation", "level", "processorContextCorrupt", "corrected", "precisePC", "restartablePC"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", "precisePCValid", "restartablePCValid"],
+ "properties": {
+ "transactionTypeValid": {
+ "type": "boolean"
+ },
+ "operationValid": {
+ "type": "boolean"
+ },
+ "levelValid": {
+ "type": "boolean"
+ },
+ "processorContextCorruptValid": {
+ "type": "boolean"
+ },
+ "correctedValid": {
+ "type": "boolean"
+ },
+ "precisePCValid": {
+ "type": "boolean"
+ },
+ "restartablePCValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "transactionType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "operation": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "level": {
+ "type": "integer"
+ },
+ "processorContextCorrupt": {
+ "type": "boolean"
+ },
+ "corrected": {
+ "type": "boolean"
+ },
+ "precisePC": {
+ "type": "boolean"
+ },
+ "restartablePC": {
+ "type": "boolean"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["validationBits", "transactionType", "operation", "level", "processorContextCorrupt", "corrected", "precisePC", "restartablePC", "timedOut", "participationType", "addressSpace", "memoryAttributes", "accessMode"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "correctedValid", "precisePCValid", "restartablePCValid", "participationTypeValid", "timedOutValid", "addressSpaceValid", "memoryAttributesValid", "accessModeValid"],
+ "properties": {
+ "transactionTypeValid": {
+ "type": "boolean"
+ },
+ "operationValid": {
+ "type": "boolean"
+ },
+ "levelValid": {
+ "type": "boolean"
+ },
+ "processorContextCorruptValid": {
+ "type": "boolean"
+ },
+ "correctedValid": {
+ "type": "boolean"
+ },
+ "precisePCValid": {
+ "type": "boolean"
+ },
+ "restartablePCValid": {
+ "type": "boolean"
+ },
+ "participationTypeValid": {
+ "type": "boolean"
+ },
+ "timedOutValid": {
+ "type": "boolean"
+ },
+ "addressSpaceValid": {
+ "type": "boolean"
+ },
+ "memoryAttributesValid": {
+ "type": "boolean"
+ },
+ "accessModeValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "transactionType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "operation": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "level": {
+ "type": "integer"
+ },
+ "processorContextCorrupt": {
+ "type": "boolean"
+ },
+ "corrected": {
+ "type": "boolean"
+ },
+ "precisePC": {
+ "type": "boolean"
+ },
+ "restartablePC": {
+ "type": "boolean"
+ },
+ "timedOut": {
+ "type": "boolean"
+ },
+ "participationType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "addressSpace": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "accessMode": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "memoryAttributes": {
+ "type": "integer"
+ }
+ }
+ }
+ ]
+ },
+ "virtualFaultAddress": {
+ "type": "integer"
+ },
+ "physicalFaultAddress": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "contextInfo": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": ["registerContextType", "registerArraySize", "registerArray"],
+ "additionalProperties": false,
+ "properties": {
+ "registerContextType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "registerArraySize": {
+ "type": "integer"
+ },
+ "registerArray": {
+ "type": "object",
+ "oneOf": [
+ {
+ "type": "object",
+ "required": ["r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13_sp", "r14_lr", "r15_pc"],
+ "properties": {
+ "r0": { "type": "integer" },
+ "r1": { "type": "integer" },
+ "r2": { "type": "integer" },
+ "r3": { "type": "integer" },
+ "r4": { "type": "integer" },
+ "r5": { "type": "integer" },
+ "r6": { "type": "integer" },
+ "r7": { "type": "integer" },
+ "r8": { "type": "integer" },
+ "r9": { "type": "integer" },
+ "r10": { "type": "integer" },
+ "r11": { "type": "integer" },
+ "r12": { "type": "integer" },
+ "r13_sp": { "type": "integer" },
+ "r14_lr": { "type": "integer" },
+ "r15_pc": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "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"],
+ "properties": {
+ "dfar": { "type": "integer" },
+ "dfsr": { "type": "integer" },
+ "ifar": { "type": "integer" },
+ "isr": { "type": "integer" },
+ "mair0": { "type": "integer" },
+ "mair1": { "type": "integer" },
+ "midr": { "type": "integer" },
+ "mpidr": { "type": "integer" },
+ "nmrr": { "type": "integer" },
+ "prrr": { "type": "integer" },
+ "sctlr_ns": { "type": "integer" },
+ "spsr": { "type": "integer" },
+ "spsr_abt": { "type": "integer" },
+ "spsr_fiq": { "type": "integer" },
+ "spsr_irq": { "type": "integer" },
+ "spsr_svc": { "type": "integer" },
+ "spsr_und": { "type": "integer" },
+ "tpidrprw": { "type": "integer" },
+ "tpidruro": { "type": "integer" },
+ "tpidrurw": { "type": "integer" },
+ "ttbcr": { "type": "integer" },
+ "ttbr0": { "type": "integer" },
+ "ttbr1": { "type": "integer" },
+ "dacr": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["elr_hyp", "hamair0", "hamair1", "hcr", "hcr2", "hdfar", "hifar", "hpfar", "hsr", "htcr", "htpidr", "httbr", "spsr_hyp", "vtcr", "vttbr", "dacr32_el2"],
+ "properties": {
+ "elr_hyp": { "type": "integer" },
+ "hamair0": { "type": "integer" },
+ "hamair1": { "type": "integer" },
+ "hcr": { "type": "integer" },
+ "hcr2": { "type": "integer" },
+ "hdfar": { "type": "integer" },
+ "hifar": { "type": "integer" },
+ "hpfar": { "type": "integer" },
+ "hsr": { "type": "integer" },
+ "htcr": { "type": "integer" },
+ "htpidr": { "type": "integer" },
+ "httbr": { "type": "integer" },
+ "spsr_hyp": { "type": "integer" },
+ "vtcr": { "type": "integer" },
+ "vttbr": { "type": "integer" },
+ "dacr32_el2": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["sctlr_s", "spsr_mon"],
+ "properties": {
+ "sctlr_s": { "type": "integer" },
+ "spsr_mon": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "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"],
+ "properties": {
+ "x0": { "type": "integer" },
+ "x1": { "type": "integer" },
+ "x2": { "type": "integer" },
+ "x3": { "type": "integer" },
+ "x4": { "type": "integer" },
+ "x5": { "type": "integer" },
+ "x6": { "type": "integer" },
+ "x7": { "type": "integer" },
+ "x8": { "type": "integer" },
+ "x9": { "type": "integer" },
+ "x10": { "type": "integer" },
+ "x11": { "type": "integer" },
+ "x12": { "type": "integer" },
+ "x13": { "type": "integer" },
+ "x14": { "type": "integer" },
+ "x15": { "type": "integer" },
+ "x16": { "type": "integer" },
+ "x17": { "type": "integer" },
+ "x18": { "type": "integer" },
+ "x19": { "type": "integer" },
+ "x20": { "type": "integer" },
+ "x21": { "type": "integer" },
+ "x22": { "type": "integer" },
+ "x23": { "type": "integer" },
+ "x24": { "type": "integer" },
+ "x25": { "type": "integer" },
+ "x26": { "type": "integer" },
+ "x27": { "type": "integer" },
+ "x28": { "type": "integer" },
+ "x29": { "type": "integer" },
+ "x30": { "type": "integer" },
+ "sp": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "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"],
+ "properties": {
+ "elr_el1": { "type": "integer" },
+ "esr_el1": { "type": "integer" },
+ "far_el1": { "type": "integer" },
+ "isr_el1": { "type": "integer" },
+ "mair_el1": { "type": "integer" },
+ "midr_el1": { "type": "integer" },
+ "mpidr_el1": { "type": "integer" },
+ "sctlr_el1": { "type": "integer" },
+ "sp_el0": { "type": "integer" },
+ "sp_el1": { "type": "integer" },
+ "spsr_el1": { "type": "integer" },
+ "tcr_el1": { "type": "integer" },
+ "tpidr_el0": { "type": "integer" },
+ "tpidr_el1": { "type": "integer" },
+ "tpidrro_el0": { "type": "integer" },
+ "ttbr0_el1": { "type": "integer" },
+ "ttbr1_el1": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "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"],
+ "properties": {
+ "elr_el2": { "type": "integer" },
+ "esr_el2": { "type": "integer" },
+ "far_el2": { "type": "integer" },
+ "hacr_el2": { "type": "integer" },
+ "hcr_el2": { "type": "integer" },
+ "hpfar_el2": { "type": "integer" },
+ "mair_el2": { "type": "integer" },
+ "sctlr_el2": { "type": "integer" },
+ "sp_el2": { "type": "integer" },
+ "spsr_el2": { "type": "integer" },
+ "tcr_el2": { "type": "integer" },
+ "tpidr_el2": { "type": "integer" },
+ "ttbr0_el2": { "type": "integer" },
+ "vtcr_el2": { "type": "integer" },
+ "vttbr_el2": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["elr_el3", "esr_el3", "far_el3", "mair_el3", "sctlr_el3", "sp_el3", "spsr_el3", "tcr_el3", "tpidr_el3", "ttbr0_el3"],
+ "properties": {
+ "elr_el3": { "type": "integer" },
+ "esr_el3": { "type": "integer" },
+ "far_el3": { "type": "integer" },
+ "mair_el3": { "type": "integer" },
+ "sctlr_el3": { "type": "integer" },
+ "sp_el3": { "type": "integer" },
+ "spsr_el3": { "type": "integer" },
+ "tcr_el3": { "type": "integer" },
+ "tpidr_el3": { "type": "integer" },
+ "ttbr0_el3": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["mrsEncoding", "value"],
+ "additionalProperties": false,
+ "properties": {
+ "mrsEncoding": {
+ "type": "object",
+ "required": ["op2", "crm", "crn", "op1", "o0"],
+ "properties": {
+ "op2": { "type": "integer" },
+ "crm": { "type": "integer" },
+ "crn": { "type": "integer" },
+ "op1": { "type": "integer" },
+ "o0": { "type": "integer" }
+ }
+ },
+ "value": {
+ "type": "integer"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["data"],
+ "properties": {
+ "data": {
+ "type": "string"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "vendorSpecificInfo": {
+ "type": "object",
+ "required": ["data"],
+ "additionalProperties": false,
+ "properties": {
+ "data": {
+ "type": "string"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-ccix-per.json b/specification/json/sections/cper-ccix-per.json
new file mode 100644
index 0000000..f6e95a9
--- /dev/null
+++ b/specification/json/sections/cper-ccix-per.json
@@ -0,0 +1,36 @@
+{
+ "$id": "cper-json-ccix-per-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["length", "validationBits", "ccixSourceID", "ccixPortID", "ccixPERLog"],
+ "additionalProperties": false,
+ "properties": {
+ "length": {
+ "type": "integer"
+ },
+ "validationBits": {
+ "type": "object",
+ "required": ["ccixSourceIDValid", "ccixPortIDValid", "ccixPERLogValid"],
+ "properties": {
+ "ccixSourceIDValid": {
+ "type": "boolean"
+ },
+ "ccixPortIDValid": {
+ "type": "boolean"
+ },
+ "ccixPERLogValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "ccixSourceID": {
+ "type": "integer"
+ },
+ "ccixPortID": {
+ "type": "integer"
+ },
+ "ccixPERLog": {
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-cxl-component.json b/specification/json/sections/cper-cxl-component.json
new file mode 100644
index 0000000..9cbd2e9
--- /dev/null
+++ b/specification/json/sections/cper-cxl-component.json
@@ -0,0 +1,63 @@
+{
+ "$id": "cper-json-cxl-component-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "deviceID", "deviceSerial"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["deviceIDValid", "deviceSerialValid", "cxlComponentEventLogValid"],
+ "properties": {
+ "deviceIDValid": {
+ "type": "boolean"
+ },
+ "deviceSerialValid": {
+ "type": "boolean"
+ },
+ "cxlComponentEventLogValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "deviceID": {
+ "type": "object",
+ "required": ["vendorID", "deviceID", "functionNumber", "deviceNumber", "busNumber", "segmentNumber", "slotNumber"],
+ "properties": {
+ "vendorID": {
+ "type": "integer"
+ },
+ "deviceID": {
+ "type": "integer"
+ },
+ "functionNumber": {
+ "type": "integer"
+ },
+ "deviceNumber": {
+ "type": "integer"
+ },
+ "busNumber": {
+ "type": "integer"
+ },
+ "segmentNumber": {
+ "type": "integer"
+ },
+ "slotNumber": {
+ "type": "integer"
+ }
+ }
+ },
+ "deviceSerial": {
+ "type": "integer"
+ },
+ "cxlComponentEventLog": {
+ "type": "object",
+ "required": ["data"],
+ "properties": {
+ "data": {
+ "type": "string"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-cxl-protocol.json b/specification/json/sections/cper-cxl-protocol.json
new file mode 100644
index 0000000..43ca251
--- /dev/null
+++ b/specification/json/sections/cper-cxl-protocol.json
@@ -0,0 +1,90 @@
+{
+ "$id": "cper-json-cxl-protocol-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "agentType", "agentAddress", "deviceID", "deviceSerial", "capabilityStructure", "dvsecLength", "errorLogLength", "cxlDVSEC", "cxlErrorLog"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["cxlAgentTypeValid", "cxlAgentAddressValid", "deviceIDValid", "deviceSerialValid", "capabilityStructureValid", "cxlDVSECValid", "cxlErrorLogValid"],
+ "properties": {
+ "cxlAgentTypeValid": {
+ "type": "boolean"
+ },
+ "cxlAgentAddressValid": {
+ "type": "boolean"
+ },
+ "deviceIDValid": {
+ "type": "boolean"
+ },
+ "deviceSerialValid": {
+ "type": "boolean"
+ },
+ "capabilityStructureValid": {
+ "type": "boolean"
+ },
+ "cxlDVSECValid": {
+ "type": "boolean"
+ },
+ "cxlErrorLogValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "agentType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "agentAddress": {
+ "type": "object",
+ "oneOf": [
+ {
+ "type": "object",
+ "required": ["functionNumber", "deviceNumber", "busNumber", "segmentNumber"],
+ "properties": {
+ "functionNumber": {
+ "type": "integer"
+ },
+ "deviceNumber": {
+ "type": "integer"
+ },
+ "busNumber": {
+ "type": "integer"
+ },
+ "segmentNumber": {
+ "type": "integer"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["value"],
+ "properties": {
+ "value": {
+ "type": "integer"
+ }
+ }
+ }
+ ]
+ },
+ "deviceSerial": {
+ "type": "integer"
+ },
+ "capabilityStructure": {
+ "type": "string"
+ },
+ "dvsecLength": {
+ "type": "integer"
+ },
+ "errorLogLength": {
+ "type": "integer"
+ },
+ "cxlDVSEC": {
+ "type": "string"
+ },
+ "cxlErrorLog": {
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-firmware.json b/specification/json/sections/cper-firmware.json
new file mode 100644
index 0000000..5c7126a
--- /dev/null
+++ b/specification/json/sections/cper-firmware.json
@@ -0,0 +1,22 @@
+{
+ "$id": "cper-json-firmware-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["errorRecordType", "revision", "recordID", "recordIDGUID"],
+ "additionalProperties": false,
+ "properties": {
+ "errorRecordType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "revision": {
+ "type": "integer"
+ },
+ "recordID": {
+ "type": "integer"
+ },
+ "recordIDGUID": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-generic-dmar.json b/specification/json/sections/cper-generic-dmar.json
new file mode 100644
index 0000000..e8f9d0e
--- /dev/null
+++ b/specification/json/sections/cper-generic-dmar.json
@@ -0,0 +1,45 @@
+{
+ "$id": "cper-json-generic-dmar-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["requesterID", "segmentNumber", "faultReason", "accessType", "addressType", "architectureType", "deviceAddress"],
+ "additionalProperties": false,
+ "properties": {
+ "requesterID": {
+ "type": "integer"
+ },
+ "segmentNumber": {
+ "type": "integer"
+ },
+ "faultReason": {
+ "type": "object",
+ "required": ["value", "name", "description"],
+ "properties": {
+ "value": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ }
+ },
+ "accessType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "addressType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "architectureType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "deviceAddress": {
+ "type" : "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-generic-processor.json b/specification/json/sections/cper-generic-processor.json
new file mode 100644
index 0000000..568046f
--- /dev/null
+++ b/specification/json/sections/cper-generic-processor.json
@@ -0,0 +1,112 @@
+{
+ "$id": "cper-json-generic-processor-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "processorType", "processorISA", "errorType", "operation", "flags", "level", "cpuVersionInfo", "cpuBrandString", "processorID", "targetAddress", "requestorID", "responderID", "instructionIP"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["processorTypeValid", "processorISAValid", "errorTypeValid", "operationValid", "flagsValid", "levelValid", "cpuVersionValid", "cpuBrandInfoValid", "cpuIDValid", "targetAddressValid", "requestorIDValid", "responderIDValid", "instructionIPValid"],
+ "properties": {
+ "processorTypeValid": {
+ "type": "boolean"
+ },
+ "processorISAValid": {
+ "type": "boolean"
+ },
+ "errorTypeValid": {
+ "type": "boolean"
+ },
+ "operationValid": {
+ "type": "boolean"
+ },
+ "flagsValid": {
+ "type": "boolean"
+ },
+ "levelValid": {
+ "type": "boolean"
+ },
+ "cpuVersionValid": {
+ "type": "boolean"
+ },
+ "cpuBrandInfoValid": {
+ "type": "boolean"
+ },
+ "cpuIDValid": {
+ "type": "boolean"
+ },
+ "targetAddressValid": {
+ "type": "boolean"
+ },
+ "requestorIDValid": {
+ "type": "boolean"
+ },
+ "responderIDValid": {
+ "type": "boolean"
+ },
+ "instructionIPValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "processorType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "processorISA": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "errorType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "operation": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "flags": {
+ "type": "object",
+ "required": ["restartableIP", "preciseIP", "overflow", "corrected"],
+ "properties": {
+ "restartableIP": {
+ "type": "boolean"
+ },
+ "preciseIP": {
+ "type": "boolean"
+ },
+ "overflow": {
+ "type": "boolean"
+ },
+ "corrected": {
+ "type": "boolean"
+ }
+ }
+ },
+ "level": {
+ "type": "integer"
+ },
+ "cpuVersionInfo": {
+ "type": "integer"
+ },
+ "cpuBrandString": {
+ "type": "string"
+ },
+ "processorID": {
+ "type": "integer"
+ },
+ "targetAddress": {
+ "type": "integer"
+ },
+ "requestorID": {
+ "type": "integer"
+ },
+ "responderID": {
+ "type": "integer"
+ },
+ "instructionIP": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-ia32x64-processor.json b/specification/json/sections/cper-ia32x64-processor.json
new file mode 100644
index 0000000..ff482e5
--- /dev/null
+++ b/specification/json/sections/cper-ia32x64-processor.json
@@ -0,0 +1,410 @@
+{
+ "$id": "cper-json-ia32x54-processor-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "localAPICID", "cpuidInfo", "processorErrorInfo", "processorContextInfo"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["localAPICIDValid", "cpuIDInfoValid", "processorErrorInfoNum", "processorContextInfoNum"],
+ "properties": {
+ "localAPICIDValid": {
+ "type": "boolean"
+ },
+ "cpuIDInfoValid": {
+ "type": "boolean"
+ },
+ "processorErrorInfoNum": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "processorContextInfoNum": {
+ "type": "integer",
+ "minimum": 0
+ }
+ }
+ },
+ "localAPICID": {
+ "type": "integer"
+ },
+ "cpuidInfo": {
+ "type": "object",
+ "required": ["eax", "ebx", "ecx", "edx"],
+ "properties": {
+ "eax": {
+ "type": "integer"
+ },
+ "ebx": {
+ "type": "integer"
+ },
+ "ecx": {
+ "type": "integer"
+ },
+ "edx": {
+ "type": "integer"
+ }
+ }
+ },
+ "processorErrorInfo": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": ["type", "validationBits", "checkInfo", "targetAddressID", "requestorID", "responderID", "instructionPointer"],
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "validationBits": {
+ "type": "object",
+ "required": ["checkInfoValid", "targetAddressIDValid", "requestorIDValid", "responderIDValid", "instructionPointerValid"],
+ "additionalProperties": false,
+ "properties": {
+ "checkInfoValid": {
+ "type": "boolean"
+ },
+ "targetAddressIDValid": {
+ "type": "boolean"
+ },
+ "requestorIDValid": {
+ "type": "boolean"
+ },
+ "responderIDValid": {
+ "type": "boolean"
+ },
+ "instructionPointerValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "checkInfo": {
+ "type" : "object",
+ "oneOf": [
+ {
+ "type": "object",
+ "required": ["validationBits", "transactionType", "operation", "level", "processorContextCorrupt", "uncorrected", "preciseIP", "restartableIP", "overflow"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "uncorrectedValid", "preciseIPValid", "restartableIPValid", "overflowValid"],
+ "properties": {
+ "transactionTypeValid": {
+ "type": "boolean"
+ },
+ "operationValid": {
+ "type": "boolean"
+ },
+ "levelValid": {
+ "type": "boolean"
+ },
+ "processorContextCorruptValid": {
+ "type": "boolean"
+ },
+ "uncorrectedValid": {
+ "type": "boolean"
+ },
+ "preciseIPValid": {
+ "type": "boolean"
+ },
+ "restartableIPValid": {
+ "type": "boolean"
+ },
+ "overflowValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "transactionType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "operation": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "level": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "processorContextCorrupt": {
+ "type": "boolean"
+ },
+ "uncorrected": {
+ "type": "boolean"
+ },
+ "preciseIP": {
+ "type": "boolean"
+ },
+ "restartableIP": {
+ "type": "boolean"
+ },
+ "overflow": {
+ "type": "boolean"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["validationBits", "transactionType", "operation", "level", "processorContextCorrupt", "uncorrected", "preciseIP", "restartableIP", "overflow", "participationType", "timedOut", "addressSpace"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["transactionTypeValid", "operationValid", "levelValid", "processorContextCorruptValid", "uncorrectedValid", "preciseIPValid", "restartableIPValid", "overflowValid", "participationTypeValid", "timedOutValid"],
+ "properties": {
+ "transactionTypeValid": {
+ "type": "boolean"
+ },
+ "operationValid": {
+ "type": "boolean"
+ },
+ "levelValid": {
+ "type": "boolean"
+ },
+ "processorContextCorruptValid": {
+ "type": "boolean"
+ },
+ "uncorrectedValid": {
+ "type": "boolean"
+ },
+ "preciseIPValid": {
+ "type": "boolean"
+ },
+ "restartableIPValid": {
+ "type": "boolean"
+ },
+ "overflowValid": {
+ "type": "boolean"
+ },
+ "participationTypeValid": {
+ "type": "boolean"
+ },
+ "timedOutValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "transactionType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "operation": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "level": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "processorContextCorrupt": {
+ "type": "boolean"
+ },
+ "uncorrected": {
+ "type": "boolean"
+ },
+ "preciseIP": {
+ "type": "boolean"
+ },
+ "restartableIP": {
+ "type": "boolean"
+ },
+ "overflow": {
+ "type": "boolean"
+ },
+ "participationType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "addressSpace": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "timedOut": {
+ "type": "boolean"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "required": [],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["errorTypeValid", "processorContextCorruptValid", "uncorrectedValid", "preciseIPValid", "restartableIPValid", "overflowValid"],
+ "properties": {
+ "errorTypeValid": {
+ "type": "boolean"
+ },
+ "processorContextCorruptValid": {
+ "type": "boolean"
+ },
+ "uncorrectedValid": {
+ "type": "boolean"
+ },
+ "preciseIPValid": {
+ "type": "boolean"
+ },
+ "restartableIPValid": {
+ "type": "boolean"
+ },
+ "overflowValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "errorType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "processorContextCorrupt": {
+ "type": "boolean"
+ },
+ "uncorrected": {
+ "type": "boolean"
+ },
+ "preciseIP": {
+ "type": "boolean"
+ },
+ "restartableIP": {
+ "type": "boolean"
+ },
+ "overflow": {
+ "type": "boolean"
+ }
+ }
+ }
+ ]
+ },
+ "targetAddressID": {
+ "type": "integer"
+ },
+ "requestorID": {
+ "type": "integer"
+ },
+ "responderID": {
+ "type": "integer"
+ },
+ "instructionPointer": {
+ "type": "integer"
+ }
+ }
+ }
+ },
+ "processorContextInfo": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": ["registerContextType", "registerArraySize", "msrAddress", "mmRegisterAddress"],
+ "additionalProperties": false,
+ "properties": {
+ "registerContextType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "registerArraySize": {
+ "type": "integer"
+ },
+ "msrAddress": {
+ "type": "integer"
+ },
+ "mmRegisterAddress": {
+ "type": "integer"
+ },
+ "registerArray": {
+ "type": "object",
+ "oneOf": [
+ {
+ "type": "object",
+ "required": ["eax", "ebx", "ecx", "edx", "esi", "edi", "ebp", "esp", "cs", "ds", "ss", "es", "fs", "gs", "eflags", "eip", "cr0", "cr1", "cr2", "cr3", "cr4", "gdtr", "idtr", "ldtr", "tr"],
+ "additionalProperties": false,
+ "properties": {
+ "eax": { "type": "integer" },
+ "ebx": { "type": "integer" },
+ "ecx": { "type": "integer" },
+ "edx": { "type": "integer" },
+ "esi": { "type": "integer" },
+ "edi": { "type": "integer" },
+ "ebp": { "type": "integer" },
+ "esp": { "type": "integer" },
+ "cs": { "type": "integer" },
+ "ds": { "type": "integer" },
+ "ss": { "type": "integer" },
+ "es": { "type": "integer" },
+ "fs": { "type": "integer" },
+ "gs": { "type": "integer" },
+ "eflags": { "type": "integer" },
+ "eip": { "type": "integer" },
+ "cr0": { "type": "integer" },
+ "cr1": { "type": "integer" },
+ "cr2": { "type": "integer" },
+ "cr3": { "type": "integer" },
+ "cr4": { "type": "integer" },
+ "gdtr": { "type": "integer" },
+ "idtr": { "type": "integer" },
+ "ldtr": { "type": "integer" },
+ "tr": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["rax", "rbx", "rcx", "rdx", "rsi", "rdi", "rbp", "rsp", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "cs", "ds", "es", "fs", "gs", "rflags", "eip", "cr0", "cr1", "cr2", "cr3", "cr4", "cr8", "gdtr_0", "gdtr_1", "idtr_0", "idtr_1", "ldtr", "tr"],
+ "additionalProperties": false,
+ "properties": {
+ "rax": { "type": "integer" },
+ "rbx": { "type": "integer" },
+ "rcx": { "type": "integer" },
+ "rdx": { "type": "integer" },
+ "rsi": { "type": "integer" },
+ "rdi": { "type": "integer" },
+ "rbp": { "type": "integer" },
+ "rsp": { "type": "integer" },
+ "r8": { "type": "integer" },
+ "r9": { "type": "integer" },
+ "r10": { "type": "integer" },
+ "r11": { "type": "integer" },
+ "r12": { "type": "integer" },
+ "r13": { "type": "integer" },
+ "r14": { "type": "integer" },
+ "r15": { "type": "integer" },
+ "cs": { "type": "integer" },
+ "ds": { "type": "integer" },
+ "ss": { "type": "integer" },
+ "es": { "type": "integer" },
+ "fs": { "type": "integer" },
+ "gs": { "type": "integer" },
+ "rflags": { "type": "integer" },
+ "eip": { "type": "integer" },
+ "cr0": { "type": "integer" },
+ "cr1": { "type": "integer" },
+ "cr2": { "type": "integer" },
+ "cr3": { "type": "integer" },
+ "cr4": { "type": "integer" },
+ "cr8": { "type": "integer" },
+ "gdtr_0": { "type": "integer" },
+ "gdtr_1": { "type": "integer" },
+ "idtr_0": { "type": "integer" },
+ "idtr_1": { "type": "integer" },
+ "ldtr": { "type": "integer" },
+ "tr": { "type": "integer" }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["data"],
+ "additionalProperties": false,
+ "properties": {
+ "data": {
+ "type": "string"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-iommu-dmar.json b/specification/json/sections/cper-iommu-dmar.json
new file mode 100644
index 0000000..2db53cc
--- /dev/null
+++ b/specification/json/sections/cper-iommu-dmar.json
@@ -0,0 +1,42 @@
+{
+ "$id": "cper-json-iommu-dmar-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["revision", "controlRegister", "statusRegister", "eventLogEntry", "deviceTableEntry", "pageTableEntry_Level6", "pageTableEntry_Level5", "pageTableEntry_Level4", "pageTableEntry_Level3", "pageTableEntry_Level2", "pageTableEntry_Level1"],
+ "additionalProperties": false,
+ "properties": {
+ "revision": {
+ "type": "integer"
+ },
+ "controlRegister": {
+ "type": "integer"
+ },
+ "statusRegister": {
+ "type": "integer"
+ },
+ "eventLogEntry": {
+ "type": "string"
+ },
+ "deviceTableEntry": {
+ "type": "string"
+ },
+ "pageTableEntry_Level6": {
+ "type": "integer"
+ },
+ "pageTableEntry_Level5": {
+ "type": "integer"
+ },
+ "pageTableEntry_Level4": {
+ "type": "integer"
+ },
+ "pageTableEntry_Level3": {
+ "type": "integer"
+ },
+ "pageTableEntry_Level2": {
+ "type": "integer"
+ },
+ "pageTableEntry_Level1": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-memory.json b/specification/json/sections/cper-memory.json
new file mode 100644
index 0000000..d4686b1
--- /dev/null
+++ b/specification/json/sections/cper-memory.json
@@ -0,0 +1,163 @@
+{
+ "$id": "cper-json-memory-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "errorStatus", "bank", "memoryErrorType", "extended", "physicalAddress", "physicalAddressMask", "node", "card", "moduleRank", "device", "row", "column", "bitPosition", "requestorID", "responderID", "targetID", "rankNumber", "cardSmbiosHandle", "moduleSmbiosHandle"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["errorStatusValid", "physicalAddressValid", "physicalAddressMaskValid", "nodeValid", "cardValid", "moduleValid", "bankValid", "deviceValid", "rowValid", "memoryPlatformTargetValid", "memoryErrorTypeValid", "rankNumberValid", "cardHandleValid", "moduleHandleValid", "extendedRowBitsValid", "bankGroupValid", "bankAddressValid", "chipIdentificationValid"],
+ "properties": {
+ "errorStatusValid": {
+ "type": "boolean"
+ },
+ "physicalAddressValid": {
+ "type": "boolean"
+ },
+ "physicalAddressMaskValid": {
+ "type": "boolean"
+ },
+ "nodeValid": {
+ "type": "boolean"
+ },
+ "cardValid": {
+ "type": "boolean"
+ },
+ "moduleValid": {
+ "type": "boolean"
+ },
+ "bankValid": {
+ "type": "boolean"
+ },
+ "deviceValid": {
+ "type": "boolean"
+ },
+ "rowValid": {
+ "type": "boolean"
+ },
+ "memoryPlatformTargetValid": {
+ "type": "boolean"
+ },
+ "memoryErrorTypeValid": {
+ "type": "boolean"
+ },
+ "rankNumberValid": {
+ "type": "boolean"
+ },
+ "cardHandleValid": {
+ "type": "boolean"
+ },
+ "moduleHandleValid": {
+ "type": "boolean"
+ },
+ "extendedRowBitsValid": {
+ "type": "boolean"
+ },
+ "bankGroupValid": {
+ "type": "boolean"
+ },
+ "bankAddressValid": {
+ "type": "boolean"
+ },
+ "chipIdentificationValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "errorStatus": {
+ "type": "object",
+ "$ref": "../common/cper-json-error-status.json"
+ },
+ "bank": {
+ "type": "object",
+ "oneOf": [
+ {
+ "type": "object",
+ "required": ["value"],
+ "properties": {
+ "value": {
+ "type": "integer"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["address", "group"],
+ "properties": {
+ "address": {
+ "type": "integer"
+ },
+ "group": {
+ "type": "integer"
+ }
+ }
+ }
+ ]
+ },
+ "memoryErrorType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "extended": {
+ "type": "object",
+ "required": ["rowBit16", "rowBit17", "chipIdentification"],
+ "properties": {
+ "rowBit16": {
+ "type": "boolean"
+ },
+ "rowBit17": {
+ "type": "boolean"
+ },
+ "chipIdentification": {
+ "type": "integer"
+ }
+ }
+ },
+ "physicalAddress": {
+ "type": "integer"
+ },
+ "physicalAddressMask": {
+ "type": "integer"
+ },
+ "node": {
+ "type": "integer"
+ },
+ "card": {
+ "type": "integer"
+ },
+ "moduleRank": {
+ "type": "integer"
+ },
+ "device": {
+ "type": "integer"
+ },
+ "row": {
+ "type": "integer"
+ },
+ "column": {
+ "type": "integer"
+ },
+ "bitPosition": {
+ "type": "integer"
+ },
+ "requestorID": {
+ "type": "integer"
+ },
+ "responderID": {
+ "type": "integer"
+ },
+ "targetID": {
+ "type": "integer"
+ },
+ "rankNumber": {
+ "type": "integer"
+ },
+ "cardSmbiosHandle": {
+ "type": "integer"
+ },
+ "moduleSmbiosHandle": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-memory2.json b/specification/json/sections/cper-memory2.json
new file mode 100644
index 0000000..6f615c3
--- /dev/null
+++ b/specification/json/sections/cper-memory2.json
@@ -0,0 +1,175 @@
+{
+ "$id": "cper-json-memory2-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "errorStatus", "bank", "memoryErrorType", "status", "physicalAddress", "physicalAddressMask", "node", "card", "module", "device", "row", "column", "bitPosition", "rank", "chipID", "requestorID", "responderID", "targetID", "cardSmbiosHandle", "moduleSmbiosHandle"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["errorStatusValid", "physicalAddressValid", "physicalAddressMaskValid", "nodeValid", "cardValid", "moduleValid", "bankValid", "deviceValid", "rowValid", "columnValid", "rankValid", "bitPositionValid", "chipIDValid", "memoryErrorTypeValid", "statusValid", "requestorIDValid", "responderIDValid", "targetIDValid", "cardHandleValid", "moduleHandleValid", "bankGroupValid", "bankAddressValid"],
+ "properties": {
+ "errorStatusValid": {
+ "type": "boolean"
+ },
+ "physicalAddressValid": {
+ "type": "boolean"
+ },
+ "physicalAddressMaskValid": {
+ "type": "boolean"
+ },
+ "nodeValid": {
+ "type": "boolean"
+ },
+ "cardValid": {
+ "type": "boolean"
+ },
+ "moduleValid": {
+ "type": "boolean"
+ },
+ "bankValid": {
+ "type": "boolean"
+ },
+ "deviceValid": {
+ "type": "boolean"
+ },
+ "rowValid": {
+ "type": "boolean"
+ },
+ "columnValid": {
+ "type": "boolean"
+ },
+ "rankValid": {
+ "type": "boolean"
+ },
+ "bitPositionValid": {
+ "type": "boolean"
+ },
+ "chipIDValid": {
+ "type": "boolean"
+ },
+ "memoryErrorTypeValid": {
+ "type": "boolean"
+ },
+ "statusValid": {
+ "type": "boolean"
+ },
+ "requestorIDValid": {
+ "type": "boolean"
+ },
+ "responderIDValid": {
+ "type": "boolean"
+ },
+ "targetIDValid": {
+ "type": "boolean"
+ },
+ "cardHandleValid": {
+ "type": "boolean"
+ },
+ "moduleHandleValid": {
+ "type": "boolean"
+ },
+ "bankGroupValid": {
+ "type": "boolean"
+ },
+ "bankAddressValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "errorStatus": {
+ "type": "object",
+ "$ref": "../common/cper-json-error-status.json"
+ },
+ "bank": {
+ "type": "object",
+ "oneOf": [
+ {
+ "type": "object",
+ "required": ["value"],
+ "properties": {
+ "value": {
+ "type": "integer"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "required": ["address", "group"],
+ "properties": {
+ "address": {
+ "type": "integer"
+ },
+ "group": {
+ "type": "integer"
+ }
+ }
+ }
+ ]
+ },
+ "memoryErrorType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "status": {
+ "type": "object",
+ "required": ["value", "state"],
+ "properties": {
+ "value": {
+ "type": "integer"
+ },
+ "state": {
+ "type": "string"
+ }
+ }
+ },
+ "physicalAddress": {
+ "type": "integer"
+ },
+ "physicalAddressMask": {
+ "type": "integer"
+ },
+ "node": {
+ "type": "integer"
+ },
+ "card": {
+ "type": "integer"
+ },
+ "module": {
+ "type": "integer"
+ },
+ "device": {
+ "type": "integer"
+ },
+ "row": {
+ "type": "integer"
+ },
+ "column": {
+ "type": "integer"
+ },
+ "bitPosition": {
+ "type": "integer"
+ },
+ "rank": {
+ "type": "integer"
+ },
+ "chipID": {
+ "type": "integer"
+ },
+ "requestorID": {
+ "type": "integer"
+ },
+ "responderID": {
+ "type": "integer"
+ },
+ "targetID": {
+ "type": "integer"
+ },
+ "cardSmbiosHandle": {
+ "type": "integer"
+ },
+ "moduleSmbiosHandle": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-pci-bus.json b/specification/json/sections/cper-pci-bus.json
new file mode 100644
index 0000000..2666610
--- /dev/null
+++ b/specification/json/sections/cper-pci-bus.json
@@ -0,0 +1,77 @@
+{
+ "$id": "cper-json-pci-bus-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "errorStatus", "errorType", "busID", "busAddress", "busData", "busCommandType", "busRequestorID", "busCompleterID", "targetID"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["errorStatusValid", "errorTypeValid", "busIDValid", "busAddressValid", "busDataValid", "commandValid", "requestorIDValid", "completerIDValid", "targetIDValid"],
+ "properties": {
+ "errorStatusValid": {
+ "type": "boolean"
+ },
+ "errorTypeValid": {
+ "type": "boolean"
+ },
+ "busIDValid": {
+ "type": "boolean"
+ },
+ "busAddressValid": {
+ "type": "boolean"
+ },
+ "busDataValid": {
+ "type": "boolean"
+ },
+ "commandValid": {
+ "type": "boolean"
+ },
+ "requestorIDValid": {
+ "type": "boolean"
+ },
+ "completerIDValid": {
+ "type": "boolean"
+ },
+ "targetIDValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "errorStatus": {
+ "type": "object",
+ "$ref": "../common/cper-json-error-status.json"
+ },
+ "errorType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "busID": {
+ "type": "object",
+ "required": ["busNumber", "segmentNumber"],
+ "properties": {
+ "busNumber": {
+ "type": "integer"
+ },
+ "segmentNumber": {
+ "type": "integer"
+ }
+ }
+ },
+ "busAddress": {
+ "type": "integer"
+ },
+ "busCommandType": {
+ "type": "string"
+ },
+ "busRequestorID": {
+ "type": "integer"
+ },
+ "busCompleterID": {
+ "type": "integer"
+ },
+ "targetID": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-pci-component.json b/specification/json/sections/cper-pci-component.json
new file mode 100644
index 0000000..4e46485
--- /dev/null
+++ b/specification/json/sections/cper-pci-component.json
@@ -0,0 +1,82 @@
+{
+ "$id": "cper-json-pci-component-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "errorStatus", "idInfo", "memoryNumber", "ioNumber", "registerDataPairs"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["errorStatusValid", "idInfoValid", "memoryNumberValid", "ioNumberValid", "registerDataPairsValid"],
+ "properties": {
+ "errorStatusValid": {
+ "type": "boolean"
+ },
+ "idInfoValid": {
+ "type": "boolean"
+ },
+ "memoryNumberValid": {
+ "type": "boolean"
+ },
+ "ioNumberValid": {
+ "type": "boolean"
+ },
+ "registerDataPairsValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "errorStatus": {
+ "type": "object",
+ "$ref": "../common/cper-json-error-status.json"
+ },
+ "idInfo": {
+ "type": "object",
+ "required": ["vendorID", "deviceID", "classCode", "functionNumber", "deviceNumber", "busNumber", "segmentNumber"],
+ "properties": {
+ "vendorID": {
+ "type": "integer"
+ },
+ "deviceID": {
+ "type": "integer"
+ },
+ "classCode": {
+ "type": "integer"
+ },
+ "functionNumber": {
+ "type": "integer"
+ },
+ "deviceNumber": {
+ "type": "integer"
+ },
+ "busNumber": {
+ "type": "integer"
+ },
+ "segmentNumber": {
+ "type": "integer"
+ }
+ }
+ },
+ "memoryNumber": {
+ "type": "integer"
+ },
+ "ioNumber": {
+ "type": "integer"
+ },
+ "registerDataPairs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": ["firstHalf", "secondHalf"],
+ "properties": {
+ "firstHalf": {
+ "type": "integer"
+ },
+ "secondHalf": {
+ "type": "integer"
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-pcie.json b/specification/json/sections/cper-pcie.json
new file mode 100644
index 0000000..5521e2b
--- /dev/null
+++ b/specification/json/sections/cper-pcie.json
@@ -0,0 +1,169 @@
+{
+ "$id": "cper-json-pcie-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "portType", "version", "commandStatus", "deviceID", "deviceSerialNumber", "bridgeControlStatus", "capabilityStructure", "aerInfo"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["portTypeValid", "versionValid", "commandStatusValid", "deviceIDValid", "deviceSerialNumberValid", "bridgeControlStatusValid", "capabilityStructureStatusValid", "aerInfoValid"],
+ "properties": {
+ "portTypeValid": {
+ "type": "boolean"
+ },
+ "versionValid": {
+ "type": "boolean"
+ },
+ "commandStatusValid": {
+ "type": "boolean"
+ },
+ "deviceIDValid": {
+ "type": "boolean"
+ },
+ "deviceSerialNumberValid": {
+ "type": "boolean"
+ },
+ "bridgeControlStatusValid": {
+ "type": "boolean"
+ },
+ "capabilityStructureStatusValid": {
+ "type": "boolean"
+ },
+ "aerInfoValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "portType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "version": {
+ "type": "object",
+ "required": ["major", "minor"],
+ "properties": {
+ "major": {
+ "type": "integer"
+ },
+ "minor": {
+ "type": "integer"
+ }
+ }
+ },
+ "commandStatus": {
+ "type": "object",
+ "required": ["commandRegister", "statusRegister"],
+ "properties": {
+ "commandRegister": {
+ "type" : "integer"
+ },
+ "statusRegister": {
+ "type": "integer"
+ }
+ }
+ },
+ "deviceID": {
+ "type": "object",
+ "required": ["vendorID", "deviceID", "classCode", "functionNumber", "deviceNumber", "segmentNumber", "primaryOrDeviceBusNumber", "secondaryBusNumber", "slotNumber"],
+ "properties": {
+ "vendorID": {
+ "type": "integer"
+ },
+ "deviceID": {
+ "type": "integer"
+ },
+ "classCode": {
+ "type": "integer"
+ },
+ "functionNumber": {
+ "type": "integer"
+ },
+ "deviceNumber": {
+ "type": "integer"
+ },
+ "segmentNumber": {
+ "type": "integer"
+ },
+ "primaryOrDeviceBusNumber": {
+ "type": "integer"
+ },
+ "secondaryBusNumber": {
+ "type": "integer"
+ },
+ "slotNumber": {
+ "type": "integer"
+ }
+ }
+ },
+ "deviceSerialNumber": {
+ "type": "integer"
+ },
+ "bridgeControlStatus": {
+ "type": "object",
+ "required": ["secondaryStatusRegister", "controlRegister"],
+ "properties": {
+ "secondaryStatusRegister": {
+ "type": "integer"
+ },
+ "controlRegister": {
+ "type": "integer"
+ }
+ }
+ },
+ "capabilityStructure": {
+ "type": "object",
+ "required": ["data"],
+ "properties": {
+ "data": {
+ "type": "string"
+ }
+ }
+ },
+ "aerInfo": {
+ "type": "object",
+ "required": ["capabilityID", "capabilityVersion", "uncorrectableErrorStatusRegister", "uncorrectableErrorMaskRegister", "uncorrectableErrorSeverityRegister", "correctableErrorStatusRegister", "correctableErrorMaskRegister", "aeccReg", "headerLogRegister", "rootErrorCommand", "rootErrorStatus", "errorSourceIDRegister", "correctableErrorSourceIDRegister"],
+ "properties": {
+ "capabilityID": {
+ "type": "integer"
+ },
+ "capabilityVersion": {
+ "type": "integer"
+ },
+ "uncorrectableErrorStatusRegister": {
+ "type": "integer"
+ },
+ "uncorrectableErrorMaskRegister": {
+ "type": "integer"
+ },
+ "uncorrectableErrorSeverityRegister": {
+ "type": "integer"
+ },
+ "correctableErrorStatusRegister": {
+ "type": "integer"
+ },
+ "correctableErrorMaskRegister": {
+ "type": "integer"
+ },
+ "aeccReg": {
+ "type": "integer"
+ },
+ "headerLogRegister": {
+ "type": "string"
+ },
+ "rootErrorCommand": {
+ "type": "integer"
+ },
+ "rootErrorStatus": {
+ "type": "integer"
+ },
+ "errorSourceIDRegister": {
+ "type": "integer"
+ },
+ "correctableErrorSourceIDRegister": {
+ "type": "integer"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/specification/json/sections/cper-vtd-dmar.json b/specification/json/sections/cper-vtd-dmar.json
new file mode 100644
index 0000000..aa6716d
--- /dev/null
+++ b/specification/json/sections/cper-vtd-dmar.json
@@ -0,0 +1,88 @@
+{
+ "$id": "cper-json-vtd-dmar-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["version", "revision", "oemID", "capabilityRegister", "extendedCapabilityRegister", "globalCommandRegister", "globalStatusRegister", "faultStatusRegister", "faultRecord", "rootEntry", "contextEntry", "pageTableEntry_Level6", "pageTableEntry_Level5", "pageTableEntry_Level4", "pageTableEntry_Level3", "pageTableEntry_Level2", "pageTableEntry_Level1"],
+ "additionalProperties": false,
+ "properties": {
+ "version": {
+ "type": "integer"
+ },
+ "revision": {
+ "type": "integer"
+ },
+ "oemID": {
+ "type": "integer"
+ },
+ "capabilityRegister": {
+ "type": "integer"
+ },
+ "extendedCapabilityRegister": {
+ "type": "integer"
+ },
+ "globalCommandRegister": {
+ "type": "integer"
+ },
+ "globalStatusRegister": {
+ "type": "integer"
+ },
+ "faultStatusRegister": {
+ "type": "object",
+ "required": ["faultInformation", "sourceIdentifier", "privelegeModeRequested", "executePermissionRequested", "pasidPresent", "faultReason", "pasidValue", "addressType", "type"],
+ "properties": {
+ "faultInformation": {
+ "type": "integer"
+ },
+ "sourceIdentifier": {
+ "type": "integer"
+ },
+ "privelegeModeRequested": {
+ "type": "boolean"
+ },
+ "executePermissionRequested": {
+ "type": "boolean"
+ },
+ "pasidPresent": {
+ "type": "boolean"
+ },
+ "faultReason": {
+ "type": "integer"
+ },
+ "pasidValue": {
+ "type": "integer"
+ },
+ "addressType": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ }
+ }
+ },
+ "rootEntry": {
+ "type": "string"
+ },
+ "contextEntry": {
+ "type": "string"
+ },
+ "pageEntry_Level6": {
+ "type": "integer"
+ },
+ "pageEntry_Level5": {
+ "type": "integer"
+ },
+ "pageEntry_Level4": {
+ "type": "integer"
+ },
+ "pageEntry_Level3": {
+ "type": "integer"
+ },
+ "pageEntry_Level2": {
+ "type": "integer"
+ },
+ "pageEntry_Level1": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file