Fix minor errors in spec, add JSON specification.
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