CPER JSON Schema Descriptions

Descriptions populated based on UEFI Appendix N in JSON Schemas

Change-Id: I765ec81913567ba7f32c39fdbd901483d9d78e21
Signed-off-by: Andrew Adriance <aadriance@nvidia.com>
diff --git a/specification/json/common/cper-json-error-status.json b/specification/json/common/cper-json-error-status.json
index 6ff2f07..f86884a 100644
--- a/specification/json/common/cper-json-error-status.json
+++ b/specification/json/common/cper-json-error-status.json
@@ -16,6 +16,7 @@
     "properties": {
         "errorType": {
             "type": "object",
+            "description": "Encoded value for the Error_Type",
             "required": ["name", "value", "description"],
             "properties": {
                 "name": {
@@ -30,25 +31,32 @@
             }
         },
         "addressSignal": {
-            "type": "boolean"
+            "type": "boolean",
+            "description": "Address: Error was detected on the address signals or on the address portion of the transaction."
         },
         "controlSignal": {
-            "type": "boolean"
+            "type": "boolean",
+            "description": "Control: Error was detected on the control signals or in the control portion of the transaction."
         },
         "dataSignal": {
-            "type": "boolean"
+            "type": "boolean",
+            "description": "Data: Error was detected on the data signals or in the data portion of the transaction."
         },
         "detectedByResponder": {
-            "type": "boolean"
+            "type": "boolean",
+            "description": "Responder: Error was detected by the responder of the transaction."
         },
         "detectedByRequester": {
-            "type": "boolean"
+            "type": "boolean",
+            "description": "Requester: Error was detected by the requester of the transaction."
         },
         "firstError": {
-            "type": "boolean"
+            "type": "boolean",
+            "description": "First Error: If multiple errors are logged for a section type, this is the first error in the chronological sequence. Setting of this bit is optional."
         },
         "overflowDroppedLogs": {
-            "type": "boolean"
+            "type": "boolean",
+            "description": "Overflow: Additional errors occurred and were not logged due to lack of logging resources."
         }
     }
 }
diff --git a/specification/json/cper-json-full-log.json b/specification/json/cper-json-full-log.json
index 071f5b1..3a8021f 100644
--- a/specification/json/cper-json-full-log.json
+++ b/specification/json/cper-json-full-log.json
@@ -2,6 +2,7 @@
     "$id": "cper-json-full-log",
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "A Common Platform Error Record as defined in UEFI Specification Appendix N represented as JSON.",
     "required": ["header", "sectionDescriptors", "sections"],
     "additionalProperties": false,
     "properties": {
diff --git a/specification/json/cper-json-header.json b/specification/json/cper-json-header.json
index 641a74d..2980dc0 100644
--- a/specification/json/cper-json-header.json
+++ b/specification/json/cper-json-header.json
@@ -1,6 +1,7 @@
 {
     "$id": "cper-json-header",
     "$schema": "https://json-schema.org/draft/2020-12/schema",
+    "description": "Common Platform Record Header as defined in UEFI Appendix N section 2.1",
     "type": "object",
     "required": [
         "revision",
@@ -18,6 +19,7 @@
     "properties": {
         "revision": {
             "type": "object",
+            "description": "This is a 2-byte field representing a major and minor version number for the error record definition in BCD format. ",
             "required": ["major", "minor"],
             "properties": {
                 "major": {
@@ -32,10 +34,12 @@
         },
         "sectionCount": {
             "type": "integer",
+            "description": "his field indicates the number of valid sections associated with the record, corresponding to each of the following section descriptors.",
             "minimum": 0
         },
         "severity": {
             "type": "object",
+            "description": "Indicates the severity of the error condition. The severity of the error record corresponds to the most severe error section.",
             "required": ["name", "code"],
             "properties": {
                 "name": {
@@ -49,6 +53,7 @@
         },
         "validationBits": {
             "type": "object",
+            "description": "This field indicates the validity of other header feilds.",
             "required": [
                 "platformIDValid",
                 "timestampValid",
@@ -68,25 +73,32 @@
         },
         "recordLength": {
             "type": "integer",
+            "description": "Indicates the size of the actual error record, including the size of the record header, all section descriptors, and section bodies.",
             "minimum": 0
         },
         "timestamp": {
-            "type": "string"
+            "type": "string",
+            "description": "The timestamp correlates to the time when the error information was collected by the system software and may not necessarily represent the time of the error event."
         },
         "timestampIsPrecise": {
-            "type": "boolean"
+            "type": "boolean",
+            "description": "Timestamp is precise if this bit is set and correlates to the time of the error event."
         },
         "platformID": {
-            "type": "string"
+            "type": "string",
+            "description": "This field uniquely identifies the platform with a GUID. The platform’s SMBIOS UUID should be used to populate this field."
         },
         "partitionID": {
-            "type": "string"
+            "type": "string",
+            "description": "If the platform has multiple software partitions, system software may associate a GUID with the partition on which the error occurred."
         },
         "creatorID": {
-            "type": "string"
+            "type": "string",
+            "description": "This field contains a GUID indicating the creator of the error record. This value may be overwritten by subsequent owners of the record."
         },
         "notificationType": {
             "type": "object",
+            "description": "This field holds a pre-assigned GUID value indicating the record association with an error event notification type.",
             "required": ["guid", "type"],
             "properties": {
                 "guid": {
@@ -99,14 +111,17 @@
             }
         },
         "recordID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This value, when combined with the Creator ID, uniquely identifies the error record across other error records on a given system."
         },
         "flags": {
             "type": "object",
+            "description": "Flags field contains information that describes the error record.",
             "$ref": "./common/cper-json-nvp.json"
         },
         "persistenceInfo": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This field is produced and consumed by the creator of the error record identified in the Creator ID field. The format of this field is defined by the creator"
         }
     }
 }
diff --git a/specification/json/cper-json-section-descriptor.json b/specification/json/cper-json-section-descriptor.json
index 2b4b080..f408522 100644
--- a/specification/json/cper-json-section-descriptor.json
+++ b/specification/json/cper-json-section-descriptor.json
@@ -2,6 +2,7 @@
     "$id": "cper-json-section-descriptor",
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "Common Platform Record Section Descriptor as defined in UEFI Appendix N section 2.2",
     "required": [
         "sectionOffset",
         "sectionLength",
@@ -14,13 +15,16 @@
     "additionalProperties": false,
     "properties": {
         "sectionOffset": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Offset in bytes of the section body from the base of the record header."
         },
         "sectionLength": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The length in bytes of the section body."
         },
         "revision": {
             "type": "object",
+            "description": "This is a 2-byte field representing a major and minor version number for the error record definition in BCD format.",
             "required": ["major", "minor"],
             "properties": {
                 "major": {
@@ -35,6 +39,7 @@
         },
         "validationBits": {
             "type": "object",
+            "description": "This field indicates the validity of other feilds in this descriptor.",
             "required": ["fruIDValid", "fruStringValid"],
             "properties": {
                 "fruIDValid": {
@@ -59,33 +64,42 @@
             ],
             "properties": {
                 "primary": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "If set, identifies the section as the section to be associated with the error condition."
                 },
                 "containmentWarning": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "If set, the error was not contained within the processor or memory hierarchy and the error may have propagated to persistent storage or network."
                 },
                 "reset": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "If set, the component has been reset and must be re-initialized or re-enabled by the operating system prior to use."
                 },
                 "errorThresholdExceeded": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "If set, OS may choose to discontinue use of this resource."
                 },
                 "resourceNotAccessible": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "If set, the resource could not be queried for error information due to conflicts with other system software or resources."
                 },
                 "latentError": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "If set this flag indicates that action has been taken to ensure error containment"
                 },
                 "propagated": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "If set this flag indicates the section is to be associated with an error that has been propagated due to hardware poisoning."
                 },
                 "overflow": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "If set this flag indicates the firmware has detected an overflow of buffers/queues that are used to accumulate, collect, or report errors"
                 }
             }
         },
         "sectionType": {
             "type": "object",
+            "description": "This field holds a pre-assigned GUID value indicating that it is a section of a particular error.",
             "required": ["data", "type"],
             "properties": {
                 "data": {
@@ -98,10 +112,12 @@
             }
         },
         "fruID": {
-            "type": "string"
+            "type": "string",
+            "description": "GUID representing the FRU ID, if it exists, for the section reporting the error. The default value is zero indicating an invalid FRU ID."
         },
         "severity": {
             "type": "object",
+            "description": "This field indicates the severity associated with the error section.",
             "required": ["code", "name"],
             "properties": {
                 "code": {
@@ -114,7 +130,8 @@
             }
         },
         "fruText": {
-            "type": "string"
+            "type": "string",
+            "description": "ASCII string identifying the FRU hardware."
         }
     }
 }
diff --git a/specification/json/sections/cper-arm-processor.json b/specification/json/sections/cper-arm-processor.json
index ec70748..bcfaee3 100644
--- a/specification/json/sections/cper-arm-processor.json
+++ b/specification/json/sections/cper-arm-processor.json
@@ -1,6 +1,7 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "ARM Processor Error Section",
     "required": [
         "validationBits",
         "errorInfoNum",
@@ -18,6 +19,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Indiciates what fields in the section are valid",
             "required": [
                 "mpidrValid",
                 "errorAffinityLevelValid",
@@ -40,16 +42,20 @@
             }
         },
         "errorInfoNum": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The number of Processor Error Information Structures"
         },
         "contextInfoNum": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The number of Context Information Structures"
         },
         "sectionLength": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This describes the total size of the ARM processor error section"
         },
         "errorAffinity": {
             "type": "object",
+            "description": "For errors that can be attributed to a specific affinity level, this field defines the affinity level at which the error was produced, detected, and/or consumed",
             "required": ["value", "type"],
             "properties": {
                 "value": {
@@ -61,7 +67,8 @@
             }
         },
         "mpidrEl1": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This field is valid for “attributable errors” that can be attributed to a specific CPU, cache, or cluster. This is the processor’s unique ID in the system"
         },
         "affinity3": {
             "type": "integer"
diff --git a/specification/json/sections/cper-cxl-component.json b/specification/json/sections/cper-cxl-component.json
index 5518031..f86252a 100644
--- a/specification/json/sections/cper-cxl-component.json
+++ b/specification/json/sections/cper-cxl-component.json
@@ -1,6 +1,7 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "CXL Component Events Section",
     "required": ["length", "validationBits", "deviceID", "deviceSerial"],
     "additionalProperties": false,
     "properties": {
@@ -9,6 +10,7 @@
         },
         "validationBits": {
             "type": "object",
+            "description": "Indiciates what fields in the section are valid",
             "required": [
                 "deviceIDValid",
                 "deviceSerialValid",
@@ -28,6 +30,7 @@
         },
         "deviceID": {
             "type": "object",
+            "description": "Provides devices specific identifies.",
             "required": [
                 "vendorID",
                 "deviceID",
diff --git a/specification/json/sections/cper-cxl-protocol.json b/specification/json/sections/cper-cxl-protocol.json
index bc46245..8d70e83 100644
--- a/specification/json/sections/cper-cxl-protocol.json
+++ b/specification/json/sections/cper-cxl-protocol.json
@@ -1,6 +1,7 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "Compute Express Link (CXL) Protocol Error Section",
     "required": [
         "validationBits",
         "agentType",
@@ -15,6 +16,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Indiciates what fields in the section are valid",
             "required": [
                 "cxlAgentTypeValid",
                 "cxlAgentAddressValid",
@@ -50,10 +52,12 @@
         },
         "agentType": {
             "type": "object",
+            "description": "CXL Agent Type",
             "$ref": "./common/cper-json-nvp.json"
         },
         "cxlAgentAddress": {
             "type": "object",
+            "description": "CXL Agent depedent address to uniquely identify the component",
             "oneOf": [
                 {
                     "$id": "cper-json-cxlagentaddress0",
@@ -93,6 +97,7 @@
         },
         "deviceID": {
             "type": "object",
+            "description": "Provides devices specific identifies.",
             "required": [
                 "vendorID",
                 "deviceID",
@@ -123,22 +128,28 @@
             }
         },
         "deviceSerial": {
-            "type": "integer"
+            "type": "integer",
+            "description": "CXL Agent device serial number"
         },
         "capabilityStructure": {
-            "type": "string"
+            "type": "string",
+            "description": "The PCIe Capability Structure of the agent"
         },
         "dvsecLength": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The length in bytes of the CXL DVSEC field"
         },
         "errorLogLength": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The length in bytes of the CXL Error Log field"
         },
         "cxlDVSEC": {
-            "type": "string"
+            "type": "string",
+            "description": "Contains the DVSEC structure as defined in the CXL specification"
         },
         "cxlErrorLog": {
-            "type": "string"
+            "type": "string",
+            "description": "This field contains a copy of the “CXL RAS Capability Structure”, as defined in the CXL Specification."
         }
     }
 }
diff --git a/specification/json/sections/cper-firmware.json b/specification/json/sections/cper-firmware.json
index 7fc7955..7169d45 100644
--- a/specification/json/sections/cper-firmware.json
+++ b/specification/json/sections/cper-firmware.json
@@ -1,21 +1,26 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "Firmware Error Record Reference",
     "required": ["errorRecordType", "revision", "recordID", "recordIDGUID"],
     "additionalProperties": false,
     "properties": {
         "errorRecordType": {
             "type": "object",
+            "description": "Identifies the type of firmware error record that is referenced by this section",
             "$ref": "./common/cper-json-nvp.json"
         },
         "revision": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Indicates the Header Revision"
         },
         "recordID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This value uniquely identifies the firmware error record referenced by this section."
         },
         "recordIDGUID": {
-            "type": "string"
+            "type": "string",
+            "description": "This value uniquely identifies the firmware error record referenced by this section."
         }
     }
 }
diff --git a/specification/json/sections/cper-generic-dmar.json b/specification/json/sections/cper-generic-dmar.json
index 810bc85..2075b3b 100644
--- a/specification/json/sections/cper-generic-dmar.json
+++ b/specification/json/sections/cper-generic-dmar.json
@@ -1,6 +1,7 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "DMAr Generic Error Section",
     "required": [
         "requesterID",
         "segmentNumber",
@@ -13,10 +14,12 @@
     "additionalProperties": false,
     "properties": {
         "requesterID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Device ID associated with a fault condition"
         },
         "segmentNumber": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PCI segment associated with a device"
         },
         "faultReason": {
             "type": "object",
@@ -35,18 +38,22 @@
         },
         "accessType": {
             "type": "object",
+            "description": "Either read or write.",
             "$ref": "./common/cper-json-nvp.json"
         },
         "addressType": {
             "type": "object",
+            "description": "Either Translated or untranslated address",
             "$ref": "./common/cper-json-nvp.json"
         },
         "architectureType": {
             "type": "object",
+            "description": "Either VT-d or IOMMU",
             "$ref": "./common/cper-json-nvp.json"
         },
         "deviceAddress": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The 64-bit device virtual address in the faulted DMA request"
         }
     }
 }
diff --git a/specification/json/sections/cper-generic-processor.json b/specification/json/sections/cper-generic-processor.json
index 595be99..65bb997 100644
--- a/specification/json/sections/cper-generic-processor.json
+++ b/specification/json/sections/cper-generic-processor.json
@@ -1,6 +1,7 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "Generic Processor Error Section",
     "required": [
         "validationBits",
         "processorType",
@@ -21,6 +22,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Indiciates what fields in the section are valid",
             "required": [
                 "processorTypeValid",
                 "processorISAValid",
@@ -80,61 +82,78 @@
         },
         "processorType": {
             "type": "object",
+            "description": "Identifies the type of the processor architecture.",
             "$ref": "./common/cper-json-nvp.json"
         },
         "processorISA": {
             "type": "object",
+            "description": "Identifies the type of the instruction set executing when the error occurred",
             "$ref": "./common/cper-json-nvp.json"
         },
         "errorType": {
             "type": "object",
+            "description": "Indicates the type of error that occurred",
             "$ref": "./common/cper-json-nvp.json"
         },
         "operation": {
             "type": "object",
+            "description": "Indicates the type of operation",
             "$ref": "./common/cper-json-nvp.json"
         },
         "flags": {
             "type": "object",
+            "description": "Indicates additional information about the error",
             "required": ["restartable", "preciseIP", "overflow", "corrected"],
             "properties": {
                 "restartable": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "program execution can be restarted reliably after the error"
                 },
                 "preciseIP": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "the instruction IP captured is directly associated with the error"
                 },
                 "overflow": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "a machine check overflow occurred (a second error occurred while the results of a previous error were still in the error reporting resources)"
                 },
                 "corrected": {
-                    "type": "boolean"
+                    "type": "boolean",
+                    "description": "the error was corrected by hardware and/or firmware"
                 }
             }
         },
         "level": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Level of the structure where the error occurred, with 0 being the lowest level of cache."
         },
         "cpuVersionInfo": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This field represents the CPU Version Information and returns Family, Model, and stepping information"
         },
         "cpuBrandString": {
-            "type": "string"
+            "type": "string",
+            "description": "This field represents the null-terminated ASCII Processor Brand String"
         },
         "processorID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This value uniquely identifies the logical processor"
         },
         "targetAddress": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Identifies the target address associated with the error"
         },
         "requestorID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Identifies the requestor associated with the error"
         },
         "responderID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Identifies the responder associated with the error"
         },
         "instructionIP": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Identifies the instruction pointer when the error occurred"
         }
     }
 }
diff --git a/specification/json/sections/cper-ia32x64-processor.json b/specification/json/sections/cper-ia32x64-processor.json
index fbdd971..3f41564 100644
--- a/specification/json/sections/cper-ia32x64-processor.json
+++ b/specification/json/sections/cper-ia32x64-processor.json
@@ -12,6 +12,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Indicates which fields are valid in the section.",
             "required": [
                 "localAPICIDValid",
                 "cpuIDInfoValid",
@@ -36,10 +37,12 @@
             }
         },
         "localAPICID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This is the processor APIC ID programmed into the APIC ID registers."
         },
         "cpuidInfo": {
             "type": "object",
+            "description": "This field represents the CPU ID structure of 48 bytes and returns Model, Family, and stepping information as provided by the CPUID instruction with EAX=1 input and output values from EAX, EBX, ECX, and EDX null extended to 64-bits.",
             "required": ["eax", "ebx", "ecx", "edx"],
             "properties": {
                 "eax": {
@@ -58,6 +61,7 @@
         },
         "processorErrorInfo": {
             "type": "array",
+            "description": "Array of processor error information structure.",
             "items": {
                 "type": "object",
                 "required": [
@@ -385,6 +389,7 @@
         },
         "processorContextInfo": {
             "type": "array",
+            "description": "This is a variable size field providing the information for the processor context state such as MC Bank MSRs and general registers.",
             "items": {
                 "type": "object",
                 "required": [
diff --git a/specification/json/sections/cper-iommu-dmar.json b/specification/json/sections/cper-iommu-dmar.json
index 2d9e511..47a4aaa 100644
--- a/specification/json/sections/cper-iommu-dmar.json
+++ b/specification/json/sections/cper-iommu-dmar.json
@@ -17,37 +17,48 @@
     "additionalProperties": false,
     "properties": {
         "revision": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Specifies the IOMMU specification revision"
         },
         "controlRegister": {
-            "type": "integer"
+            "type": "integer",
+            "description": "IOMMU control register"
         },
         "statusRegister": {
-            "type": "integer"
+            "type": "integer",
+            "description": "IOMMU status register"
         },
         "eventLogEntry": {
-            "type": "string"
+            "type": "string",
+            "description": "IOMMU fault related event log entry as defined in the IOMMU specification"
         },
         "deviceTableEntry": {
-            "type": "string"
+            "type": "string",
+            "description": "Value from the device table for a given Requester ID"
         },
         "pageTableEntry_Level6": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 6."
         },
         "pageTableEntry_Level5": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 5."
         },
         "pageTableEntry_Level4": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 4."
         },
         "pageTableEntry_Level3": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 3."
         },
         "pageTableEntry_Level2": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 2."
         },
         "pageTableEntry_Level1": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 1."
         }
     }
 }
diff --git a/specification/json/sections/cper-memory.json b/specification/json/sections/cper-memory.json
index 4b1defc..bdb01da 100644
--- a/specification/json/sections/cper-memory.json
+++ b/specification/json/sections/cper-memory.json
@@ -27,6 +27,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Indicates which fields in the section are valid.",
             "required": [
                 "errorStatusValid",
                 "physicalAddressValid",
@@ -122,10 +123,12 @@
         },
         "errorStatus": {
             "type": "object",
+            "description": "Memory error status information.",
             "$ref": "./common/cper-json-error-status.json"
         },
         "bank": {
             "type": "object",
+            "description": "The bank number of the memory associated with the error.",
             "oneOf": [
                 {
                     "$id": "cper-json-bank0",
@@ -154,6 +157,7 @@
         },
         "memoryErrorType": {
             "type": "object",
+            "description": "Identifies the type of error that occurred",
             "$ref": "./common/cper-json-nvp.json"
         },
         "extended": {
@@ -172,49 +176,64 @@
             }
         },
         "physicalAddress": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The physical address at which the memory error occurred."
         },
         "physicalAddressMask": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Defines the valid address bits in the Physical Address field. The mask specifies the granularity of the physical address."
         },
         "node": {
-            "type": "integer"
+            "type": "integer",
+            "description": "In a multi-node system, this value identifies the node containing the memory in error."
         },
         "card": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The card number of the memory error location."
         },
         "moduleRank": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The module or rank number of the memory error location."
         },
         "device": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The device number of the memory associated with the error."
         },
         "row": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The row number of the memory error location."
         },
         "column": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The column number of the memory error location."
         },
         "bitPosition": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The bit position at which the memory error occurred."
         },
         "requestorID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Hardware address of the device that initiated the transaction that took the error."
         },
         "responderID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Hardware address of the device that responded to the transaction."
         },
         "targetID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Hardware address of the intended target of the transaction."
         },
         "rankNumber": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The Rank number of the memory error location."
         },
         "cardSmbiosHandle": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This field contains the SMBIOS handle for the Type 16 Memory Array Structure that represents the memory card."
         },
         "moduleSmbiosHandle": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This field contains the SMBIOS handle for the Type 17 Memory Device Structure that represents the Memory Module."
         }
     }
 }
diff --git a/specification/json/sections/cper-memory2.json b/specification/json/sections/cper-memory2.json
index 51d972f..0f57f63 100644
--- a/specification/json/sections/cper-memory2.json
+++ b/specification/json/sections/cper-memory2.json
@@ -28,6 +28,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Indicates which fields in this section are valid.",
             "required": [
                 "errorStatusValid",
                 "physicalAddressValid",
@@ -123,10 +124,12 @@
         },
         "errorStatus": {
             "type": "object",
+            "description": "Memory error status information.",
             "$ref": "./common/cper-json-error-status.json"
         },
         "bank": {
             "type": "object",
+            "description": "The bank number of the memory associated with the error.",
             "oneOf": [
                 {
                     "$id": "cper-json-bank0",
@@ -155,10 +158,12 @@
         },
         "memoryErrorType": {
             "type": "object",
+            "description": "Identifies the type of error that occurred",
             "$ref": "./common/cper-json-nvp.json"
         },
         "status": {
             "type": "object",
+            "description": "Memory error status information.",
             "required": ["value", "state"],
             "properties": {
                 "value": {
@@ -170,52 +175,68 @@
             }
         },
         "physicalAddress": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The physical address at which the memory error occurred."
         },
         "physicalAddressMask": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Defines the valid address bits in the Physical Address field. The mask specifies the granularity of the physical address which is dependent on the hardware implementation factors such as interleaving."
         },
         "node": {
-            "type": "integer"
+            "type": "integer",
+            "description": "In a multi-node system, this value identifies the node containing the memory in error."
         },
         "card": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The card number of the memory error location."
         },
         "module": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The module number of the memory error location."
         },
         "device": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The device number of the memory associated with the error."
         },
         "row": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The row number of the memory error location."
         },
         "column": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The column number of the memory error location."
         },
         "bitPosition": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The bit position at which the memory error occurred."
         },
         "rank": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The rank number of the memory error location."
         },
         "chipID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The Chip Identification. This is an encoded field used to address the die in 3DS packages."
         },
         "requestorID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Hardware address of the device that initiated the transaction that took the error."
         },
         "responderID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Hardware address of the device that responded to the transaction."
         },
         "targetID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Hardware address of the intended target of the transaction."
         },
         "cardSmbiosHandle": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This field contains the SMBIOS handle for the Type 16 Memory Array Structure that represents the memory card."
         },
         "moduleSmbiosHandle": {
-            "type": "integer"
+            "type": "integer",
+            "description": "This field contains the SMBIOS handle for the Type 17 Memory Device Structure that represents the Memory Module."
         }
     }
 }
diff --git a/specification/json/sections/cper-nvidia.json b/specification/json/sections/cper-nvidia.json
index f15403a..5b04583 100644
--- a/specification/json/sections/cper-nvidia.json
+++ b/specification/json/sections/cper-nvidia.json
@@ -13,16 +13,20 @@
     "additionalProperties": false,
     "properties": {
         "signature": {
-            "type": "string"
+            "type": "string",
+            "description": "IP Signature Name."
         },
         "errorType": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Error type within the IP block."
         },
         "errorInstance": {
-            "type": "integer"
+            "type": "integer",
+            "description": ""
         },
         "severity": {
             "type": "object",
+            "description": "Internal severity for firmware tracking. Use CPER section severity.",
             "required": ["code", "name"],
             "properties": {
                 "code": {
@@ -35,16 +39,20 @@
             }
         },
         "socket": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Socket the error report originated from."
         },
         "registerCount": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Number of registers present in registers array."
         },
         "instanceBase": {
-            "type": "integer"
+            "type": "integer",
+            "description": "The location the error data was read from."
         },
         "registers": {
             "type": "array",
+            "description": "Address, value pairs for registers dumped during the error detection.",
             "items": {
                 "type": "object",
                 "required": ["address", "value"],
diff --git a/specification/json/sections/cper-pci-bus.json b/specification/json/sections/cper-pci-bus.json
index 5c9d779..503c065 100644
--- a/specification/json/sections/cper-pci-bus.json
+++ b/specification/json/sections/cper-pci-bus.json
@@ -17,6 +17,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Inidicates which fields are valid in the section.",
             "required": [
                 "errorStatusValid",
                 "errorTypeValid",
@@ -60,10 +61,12 @@
         },
         "errorStatus": {
             "type": "object",
+            "description": "PCI Bus Error Status.",
             "$ref": "./common/cper-json-error-status.json"
         },
         "errorType": {
             "type": "object",
+            "description": "PCI Bus error Type",
             "$ref": "./common/cper-json-nvp.json"
         },
         "busID": {
@@ -71,30 +74,38 @@
             "required": ["busNumber", "segmentNumber"],
             "properties": {
                 "busNumber": {
-                    "type": "integer"
+                    "type": "integer",
+                    "description": "Bus Number"
                 },
                 "segmentNumber": {
-                    "type": "integer"
+                    "type": "integer",
+                    "description": "Segment Number"
                 }
             }
         },
         "busAddress": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Memory or I/O address on the bus at the time of the error."
         },
         "busData": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Data on the PCI bus at the time of the error."
         },
         "busCommandType": {
-            "type": "string"
+            "type": "string",
+            "description": "Bus command or operation at the time of the error."
         },
         "busRequestorID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PCI Bus Requestor Id."
         },
         "busCompleterID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PCI Bus Responder Id."
         },
         "targetID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PCI Bus intended target identifier."
         }
     }
 }
diff --git a/specification/json/sections/cper-pci-component.json b/specification/json/sections/cper-pci-component.json
index 5f7450c..ef1f3da 100644
--- a/specification/json/sections/cper-pci-component.json
+++ b/specification/json/sections/cper-pci-component.json
@@ -13,6 +13,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Indicates which other fields are valid in the section.",
             "required": [
                 "errorStatusValid",
                 "idInfoValid",
@@ -40,10 +41,12 @@
         },
         "errorStatus": {
             "type": "object",
+            "description": "PCI Component Error Status.",
             "$ref": "./common/cper-json-error-status.json"
         },
         "idInfo": {
             "type": "object",
+            "description": "Identification Information",
             "required": [
                 "vendorID",
                 "deviceID",
@@ -78,13 +81,16 @@
             }
         },
         "memoryNumber": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Number of PCI Component Memory Mapped register address/data pair values present in this structure."
         },
         "ioNumber": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Number of PCI Component Programmed IO register address/data pair values present in this structure."
         },
         "registerDataPairs": {
             "type": "array",
+            "description": "An array of address/data pair values.",
             "items": {
                 "type": "object",
                 "required": ["firstHalf", "secondHalf"],
diff --git a/specification/json/sections/cper-pcie.json b/specification/json/sections/cper-pcie.json
index 9c3fd1f..79bd600 100644
--- a/specification/json/sections/cper-pcie.json
+++ b/specification/json/sections/cper-pcie.json
@@ -1,6 +1,7 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "PCI Express Error Section",
     "required": [
         "validationBits",
         "portType",
@@ -16,6 +17,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
+            "description": "Indicates validity of other fields in this section.",
             "required": [
                 "portTypeValid",
                 "versionValid",
@@ -55,10 +57,12 @@
         },
         "portType": {
             "type": "object",
+            "description": "PCIe Device/Port Type as defined in the PCI Express capabilities register.",
             "$ref": "./common/cper-json-nvp.json"
         },
         "version": {
             "type": "object",
+            "description": "PCIe Spec. version supported by the platform",
             "required": ["major", "minor"],
             "properties": {
                 "major": {
@@ -74,15 +78,18 @@
             "required": ["commandRegister", "statusRegister"],
             "properties": {
                 "commandRegister": {
-                    "type": "integer"
+                    "type": "integer",
+                    "description": "PCI Command Register"
                 },
                 "statusRegister": {
-                    "type": "integer"
+                    "type": "integer",
+                    "description": "PCI Status Register"
                 }
             }
         },
         "deviceID": {
             "type": "object",
+            "description": "PCIe Root Port PCI/bridge PCI compatible device number and bus number information to uniquely identify the root port or bridge.",
             "required": [
                 "vendorID",
                 "deviceID",
@@ -125,22 +132,26 @@
             }
         },
         "deviceSerialNumber": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PCIe Device Serial Number"
         },
         "bridgeControlStatus": {
             "type": "object",
             "required": ["secondaryStatusRegister", "controlRegister"],
             "properties": {
                 "secondaryStatusRegister": {
-                    "type": "integer"
+                    "type": "integer",
+                    "description": "Bridge Secondary Status Register"
                 },
                 "controlRegister": {
-                    "type": "integer"
+                    "type": "integer",
+                    "description": "Bridge Control Register"
                 }
             }
         },
         "capabilityStructure": {
             "type": "object",
+            "description": "This feild reports either the PCIe 2.0 Capability structure",
             "required": ["data"],
             "properties": {
                 "data": {
@@ -150,6 +161,7 @@
         },
         "aerInfo": {
             "type": "object",
+            "description": "PCIe Advanced Error Reporting Extended Capability Structure.",
             "required": ["data"],
             "properties": {
                 "data": {
diff --git a/specification/json/sections/cper-unknown.json b/specification/json/sections/cper-unknown.json
index abe0399..4cccf7c 100644
--- a/specification/json/sections/cper-unknown.json
+++ b/specification/json/sections/cper-unknown.json
@@ -1,6 +1,7 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "Unkown CPER section type. Work with vendor to determine decoding.",
     "required": ["data"],
     "additionalProperties": false,
     "properties": {
diff --git a/specification/json/sections/cper-vtd-dmar.json b/specification/json/sections/cper-vtd-dmar.json
index aedfbf5..caa9d25 100644
--- a/specification/json/sections/cper-vtd-dmar.json
+++ b/specification/json/sections/cper-vtd-dmar.json
@@ -1,6 +1,7 @@
 {
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
+    "description": "VT for Directed I/O specific DMAr Error Section",
     "required": [
         "version",
         "revision",
@@ -23,31 +24,40 @@
     "additionalProperties": false,
     "properties": {
         "version": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Value of version register as defined in VT-d architecture"
         },
         "revision": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Value of revision field in VT-d specific DMA remapping reporting structure"
         },
         "oemID": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Value of OEM ID field in VT-d specific DMA remapping reporting structure"
         },
         "capabilityRegister": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Value of capability register in VT-d architecture"
         },
         "extendedCapabilityRegister": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Value of extended capability register in VT-d architecture"
         },
         "globalCommandRegister": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Value of Global Command register in VT-d architecture programmed by the operating system"
         },
         "globalStatusRegister": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Value of Global Status register in VT-d architecture"
         },
         "faultStatusRegister": {
-            "type": "integer"
+            "type": "integer",
+            "description": "Value of Fault Status register in VT-d architecture"
         },
         "faultRecord": {
             "type": "object",
+            "description": "Fault record as defined in the VT-d specification",
             "required": [
                 "faultInformation",
                 "sourceIdentifier",
@@ -91,28 +101,36 @@
             }
         },
         "rootEntry": {
-            "type": "string"
+            "type": "string",
+            "description": "Value from the root entry table for the given requester-ID."
         },
         "contextEntry": {
-            "type": "string"
+            "type": "string",
+            "description": "Value from the context entry table for the given requester-ID."
         },
         "pageTableEntry_Level6": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 6."
         },
         "pageTableEntry_Level5": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 5."
         },
         "pageTableEntry_Level4": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 4."
         },
         "pageTableEntry_Level3": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 3."
         },
         "pageTableEntry_Level2": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 2."
         },
         "pageTableEntry_Level1": {
-            "type": "integer"
+            "type": "integer",
+            "description": "PTE entry for device virtual address in page level 1."
         }
     }
 }