Fix various errata found from testing.
diff --git a/specification/document/cper-json-specification.tex b/specification/document/cper-json-specification.tex
index eb71d45..59ac7f6 100644
--- a/specification/document/cper-json-specification.tex
+++ b/specification/document/cper-json-specification.tex
@@ -1743,7 +1743,7 @@
 \hline
 faultReason.value & uint64 & The raw value of the reason for the fault.\\
 faultReason.name & string & The human readable name, if available, of the reason for the fault.\\
-faultReason.description & string & A human readable description, if available, of the reason for the fault.\\
+faultReason.description & string (\textbf{optional}) & A human readable description, if available, of the reason for the fault.\\
 \hline
 accessType.value & uint64 & The raw value of the access type that caused the fault.\\
 accessType.name & string & The human readable name, if available, of the access type that caused the fault.\\
@@ -1888,13 +1888,13 @@
 agentType.value & uint64 & The raw value of the detecting CXL agent type.\\
 agentType.name & string & The human readable name, if available, of the CXL agent type.\\
 \hline
-agentAddress & object & One of the structures described in Subsection \ref{subsection:cxlprotocoldeviceagentaddressstructure} or Subsection \ref{subsection:cxlprotocolrcrbaddressstructure}. Included structure is dependent on the \texttt{agentType.value} field.\\
+cxlAgentAddress & object & One of the structures described in Subsection \ref{subsection:cxlprotocoldeviceagentaddressstructure} or Subsection \ref{subsection:cxlprotocolrcrbaddressstructure}. Included structure is dependent on the \texttt{agentType.value} field.\\
 \hline
 deviceID & object & A CXL Device ID structure, as defined in Subsection \ref{subsection:cxlprotocoldeviceidstructure}.\\
 \hline
 deviceSerial & uint64 (\textbf{optional}) & The CXL device serial number. Only included if the detecting device is a CXL device (field \texttt{agentType.value} has value 0).\\
 \hline
-capabilityStructure & string & A base64-encoded binary dump of the CXL device's PCIe capability structure. This could either be a PCIe 1.1 Capability Structure (36-byte, padded to 60 bytes), or a PCIe 2.0 Capability Structure (60-byte). Only included if the detecting device is a CXL device (field \texttt{agentType.value} has value 0).\\
+capabilityStructure & string (\textbf{optional}) & A base64-encoded binary dump of the CXL device's PCIe capability structure. This could either be a PCIe 1.1 Capability Structure (36-byte, padded to 60 bytes), or a PCIe 2.0 Capability Structure (60-byte). Only included if the detecting device is a CXL device (field \texttt{agentType.value} has value 0).\\
 \hline
 dvsecLength & int & Length (in bytes) of the CXL DVSEC structure.\\
 \hline
@@ -1978,6 +1978,8 @@
     \item CXL MLD Port Error (\texttt{\{ 0x8dc44363, 0x0c96, 0x4710, \{ 0xb7, 0xbf, 0x04, 0xbb, 0x99, 0x53, 0x4c, 0x3f \}\}})\\
 \end{itemize}
 \jsontable{table:cxlcomponenterrorsection}
+length & uint64 & The length in bytes for the entire structure.\\
+\hline
 validationBits & object & A CXL Component Validation structure as described in Subsection \ref{subsection:cxlcomponentvalidationstructure}.\\
 \hline
 deviceID & object & A CXL Component Device ID structure as described in Subsection \ref{subsection:cxlcomponentdeviceidstructure}.\\
diff --git a/specification/json/sections/cper-cxl-component.json b/specification/json/sections/cper-cxl-component.json
index 9cbd2e9..ef1b9c6 100644
--- a/specification/json/sections/cper-cxl-component.json
+++ b/specification/json/sections/cper-cxl-component.json
@@ -2,9 +2,12 @@
     "$id": "cper-json-cxl-component-section",
     "$schema": "https://json-schema.org/draft/2020-12/schema",
     "type": "object",
-    "required": ["validationBits", "deviceID", "deviceSerial"],
+    "required": ["length", "validationBits", "deviceID", "deviceSerial"],
     "additionalProperties": false,
     "properties": {
+        "length": {
+            "type": "integer"
+        },
         "validationBits": {
             "type": "object",
             "required": ["deviceIDValid", "deviceSerialValid", "cxlComponentEventLogValid"],
diff --git a/specification/json/sections/cper-cxl-protocol.json b/specification/json/sections/cper-cxl-protocol.json
index fa25e81..bc22453 100644
--- a/specification/json/sections/cper-cxl-protocol.json
+++ b/specification/json/sections/cper-cxl-protocol.json
@@ -2,7 +2,7 @@
     "$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"],
+    "required": ["validationBits", "agentType", "cxlAgentAddress", "deviceID", "dvsecLength", "errorLogLength", "cxlDVSEC", "cxlErrorLog"],
     "additionalProperties": false,
     "properties": {
         "validationBits": {
@@ -36,7 +36,7 @@
             "type": "object",
             "$ref": "./common/cper-json-nvp.json"
         },
-        "agentAddress": {
+        "cxlAgentAddress": {
             "type": "object",
             "oneOf": [
                 {
@@ -68,6 +68,30 @@
                 }
             ]
         },
+        "deviceID": {
+            "type": "object",
+            "required": ["vendorID", "deviceID", "subsystemVendorID", "subsystemDeviceID", "classCode", "slotNumber"],
+            "properties": {
+                "vendorID": { 
+                    "type": "integer"
+                },
+                "deviceID": { 
+                    "type": "integer"
+                },
+                "subsystemVendorID": { 
+                    "type": "integer"
+                },
+                "subsystemDeviceID": { 
+                    "type": "integer"
+                },
+                "classCode": { 
+                    "type": "integer"
+                },
+                "slotNumber": { 
+                    "type": "integer"
+                }
+            }
+        },
         "deviceSerial": { 
             "type": "integer"
         },
diff --git a/specification/json/sections/cper-firmware.json b/specification/json/sections/cper-firmware.json
index 2003f6e..1e9ea67 100644
--- a/specification/json/sections/cper-firmware.json
+++ b/specification/json/sections/cper-firmware.json
@@ -16,7 +16,7 @@
             "type": "integer"
         },
         "recordIDGUID": {
-            "type": "integer"
+            "type": "string"
         }
     }
 }
\ No newline at end of file
diff --git a/specification/json/sections/cper-generic-dmar.json b/specification/json/sections/cper-generic-dmar.json
index ddccc14..e5fee69 100644
--- a/specification/json/sections/cper-generic-dmar.json
+++ b/specification/json/sections/cper-generic-dmar.json
@@ -13,7 +13,7 @@
         },
         "faultReason": {
             "type": "object",
-            "required": ["value", "name", "description"],
+            "required": ["value", "name"],
             "properties": {
                 "value": {
                     "type": "integer"
diff --git a/specification/json/sections/cper-memory.json b/specification/json/sections/cper-memory.json
index 38243c1..4c5a356 100644
--- a/specification/json/sections/cper-memory.json
+++ b/specification/json/sections/cper-memory.json
@@ -7,7 +7,7 @@
     "properties": {
         "validationBits": {
             "type": "object",
-            "required": ["errorStatusValid", "physicalAddressValid", "physicalAddressMaskValid", "nodeValid", "cardValid", "moduleValid", "bankValid", "deviceValid", "rowValid", "memoryPlatformTargetValid", "memoryErrorTypeValid", "rankNumberValid", "cardHandleValid", "moduleHandleValid", "extendedRowBitsValid", "bankGroupValid", "bankAddressValid", "chipIdentificationValid"],
+            "required": ["errorStatusValid", "physicalAddressValid", "physicalAddressMaskValid", "nodeValid", "cardValid", "moduleValid", "bankValid", "deviceValid", "rowValid", "columnValid", "bitPositionValid", "platformRequestorIDValid", "platformResponderIDValid", "memoryPlatformTargetValid", "memoryErrorTypeValid", "rankNumberValid", "cardHandleValid", "moduleHandleValid", "extendedRowBitsValid", "bankGroupValid", "bankAddressValid", "chipIdentificationValid"],
             "properties": {
                 "errorStatusValid": {
                     "type": "boolean"
@@ -36,6 +36,18 @@
                 "rowValid": {
                     "type": "boolean"
                 },
+                "columnValid": {
+                    "type": "boolean"
+                },
+                "bitPositionValid": {
+                    "type": "boolean"
+                },
+                "platformRequestorIDValid": {
+                    "type": "boolean"
+                },
+                "platformResponderIDValid": {
+                    "type": "boolean"
+                },
                 "memoryPlatformTargetValid": {
                     "type": "boolean"
                 },
diff --git a/specification/json/sections/cper-pci-bus.json b/specification/json/sections/cper-pci-bus.json
index 0e9c121..a2bc18e 100644
--- a/specification/json/sections/cper-pci-bus.json
+++ b/specification/json/sections/cper-pci-bus.json
@@ -61,6 +61,9 @@
         "busAddress": {
             "type": "integer"
         },
+        "busData": {
+            "type": "integer"
+        },
         "busCommandType": {
             "type": "string"
         },
diff --git a/specification/json/sections/cper-vtd-dmar.json b/specification/json/sections/cper-vtd-dmar.json
index baa5942..e76abb7 100644
--- a/specification/json/sections/cper-vtd-dmar.json
+++ b/specification/json/sections/cper-vtd-dmar.json
@@ -27,6 +27,9 @@
             "type": "integer"
         },
         "faultStatusRegister": {
+            "type": "integer"
+        },
+        "faultRecord": {
             "type": "object",
             "required": ["faultInformation", "sourceIdentifier", "privelegeModeRequested", "executePermissionRequested", "pasidPresent", "faultReason", "pasidValue", "addressType", "type"],
             "properties": {
@@ -66,22 +69,22 @@
         "contextEntry": {
             "type": "string"
         },
-        "pageEntry_Level6": {
+        "pageTableEntry_Level6": {
             "type": "integer"
         },
-        "pageEntry_Level5": {
+        "pageTableEntry_Level5": {
             "type": "integer"
         },
-        "pageEntry_Level4": {
+        "pageTableEntry_Level4": {
             "type": "integer"
         },
-        "pageEntry_Level3": {
+        "pageTableEntry_Level3": {
             "type": "integer"
         },
-        "pageEntry_Level2": {
+        "pageTableEntry_Level2": {
             "type": "integer"
         },
-        "pageEntry_Level1": {
+        "pageTableEntry_Level1": {
             "type": "integer"
         }
     }