1079d581eSLawrence Tang{
2079d581eSLawrence Tang    "$id": "cper-json-pcie-section",
3079d581eSLawrence Tang    "$schema": "https://json-schema.org/draft/2020-12/schema",
4079d581eSLawrence Tang    "type": "object",
5079d581eSLawrence Tang    "required": ["validationBits", "portType", "version", "commandStatus", "deviceID", "deviceSerialNumber", "bridgeControlStatus", "capabilityStructure", "aerInfo"],
6079d581eSLawrence Tang    "additionalProperties": false,
7079d581eSLawrence Tang    "properties": {
8079d581eSLawrence Tang        "validationBits": {
9079d581eSLawrence Tang            "type": "object",
10079d581eSLawrence Tang            "required": ["portTypeValid", "versionValid", "commandStatusValid", "deviceIDValid", "deviceSerialNumberValid", "bridgeControlStatusValid", "capabilityStructureStatusValid", "aerInfoValid"],
11079d581eSLawrence Tang            "properties": {
12079d581eSLawrence Tang                "portTypeValid": {
13079d581eSLawrence Tang                    "type": "boolean"
14079d581eSLawrence Tang                },
15079d581eSLawrence Tang                "versionValid": {
16079d581eSLawrence Tang                    "type": "boolean"
17079d581eSLawrence Tang                },
18079d581eSLawrence Tang                "commandStatusValid": {
19079d581eSLawrence Tang                    "type": "boolean"
20079d581eSLawrence Tang                },
21079d581eSLawrence Tang                "deviceIDValid": {
22079d581eSLawrence Tang                    "type": "boolean"
23079d581eSLawrence Tang                },
24079d581eSLawrence Tang                "deviceSerialNumberValid": {
25079d581eSLawrence Tang                    "type": "boolean"
26079d581eSLawrence Tang                },
27079d581eSLawrence Tang                "bridgeControlStatusValid": {
28079d581eSLawrence Tang                    "type": "boolean"
29079d581eSLawrence Tang                },
30079d581eSLawrence Tang                "capabilityStructureStatusValid": {
31079d581eSLawrence Tang                    "type": "boolean"
32079d581eSLawrence Tang                },
33079d581eSLawrence Tang                "aerInfoValid": {
34079d581eSLawrence Tang                    "type": "boolean"
35079d581eSLawrence Tang                }
36079d581eSLawrence Tang            }
37079d581eSLawrence Tang        },
38079d581eSLawrence Tang        "portType": {
39079d581eSLawrence Tang            "type": "object",
40*8a2d737cSLawrence Tang            "$ref": "./common/cper-json-nvp.json"
41079d581eSLawrence Tang        },
42079d581eSLawrence Tang        "version": {
43079d581eSLawrence Tang            "type": "object",
44079d581eSLawrence Tang            "required": ["major", "minor"],
45079d581eSLawrence Tang            "properties": {
46079d581eSLawrence Tang                "major": {
47079d581eSLawrence Tang                    "type": "integer"
48079d581eSLawrence Tang                },
49079d581eSLawrence Tang                "minor": {
50079d581eSLawrence Tang                    "type": "integer"
51079d581eSLawrence Tang                }
52079d581eSLawrence Tang            }
53079d581eSLawrence Tang        },
54079d581eSLawrence Tang        "commandStatus": {
55079d581eSLawrence Tang            "type": "object",
56079d581eSLawrence Tang            "required": ["commandRegister", "statusRegister"],
57079d581eSLawrence Tang            "properties": {
58079d581eSLawrence Tang                "commandRegister": {
59079d581eSLawrence Tang                    "type" : "integer"
60079d581eSLawrence Tang                },
61079d581eSLawrence Tang                "statusRegister": {
62079d581eSLawrence Tang                    "type": "integer"
63079d581eSLawrence Tang                }
64079d581eSLawrence Tang            }
65079d581eSLawrence Tang        },
66079d581eSLawrence Tang        "deviceID": {
67079d581eSLawrence Tang            "type": "object",
68079d581eSLawrence Tang            "required": ["vendorID", "deviceID", "classCode", "functionNumber", "deviceNumber", "segmentNumber", "primaryOrDeviceBusNumber", "secondaryBusNumber", "slotNumber"],
69079d581eSLawrence Tang            "properties": {
70079d581eSLawrence Tang                "vendorID": {
71079d581eSLawrence Tang                    "type": "integer"
72079d581eSLawrence Tang                },
73079d581eSLawrence Tang                "deviceID": {
74079d581eSLawrence Tang                    "type": "integer"
75079d581eSLawrence Tang                },
76079d581eSLawrence Tang                "classCode": {
77079d581eSLawrence Tang                    "type": "integer"
78079d581eSLawrence Tang                },
79079d581eSLawrence Tang                "functionNumber": {
80079d581eSLawrence Tang                    "type": "integer"
81079d581eSLawrence Tang                },
82079d581eSLawrence Tang                "deviceNumber": {
83079d581eSLawrence Tang                    "type": "integer"
84079d581eSLawrence Tang                },
85079d581eSLawrence Tang                "segmentNumber": {
86079d581eSLawrence Tang                    "type": "integer"
87079d581eSLawrence Tang                },
88079d581eSLawrence Tang                "primaryOrDeviceBusNumber": {
89079d581eSLawrence Tang                    "type": "integer"
90079d581eSLawrence Tang                },
91079d581eSLawrence Tang                "secondaryBusNumber": {
92079d581eSLawrence Tang                    "type": "integer"
93079d581eSLawrence Tang                },
94079d581eSLawrence Tang                "slotNumber": {
95079d581eSLawrence Tang                    "type": "integer"
96079d581eSLawrence Tang                }
97079d581eSLawrence Tang            }
98079d581eSLawrence Tang        },
99079d581eSLawrence Tang        "deviceSerialNumber": {
100079d581eSLawrence Tang            "type": "integer"
101079d581eSLawrence Tang        },
102079d581eSLawrence Tang        "bridgeControlStatus": {
103079d581eSLawrence Tang            "type": "object",
104079d581eSLawrence Tang            "required": ["secondaryStatusRegister", "controlRegister"],
105079d581eSLawrence Tang            "properties": {
106079d581eSLawrence Tang                "secondaryStatusRegister": {
107079d581eSLawrence Tang                    "type": "integer"
108079d581eSLawrence Tang                },
109079d581eSLawrence Tang                "controlRegister": {
110079d581eSLawrence Tang                    "type": "integer"
111079d581eSLawrence Tang                }
112079d581eSLawrence Tang            }
113079d581eSLawrence Tang        },
114079d581eSLawrence Tang        "capabilityStructure": {
115079d581eSLawrence Tang            "type": "object",
116079d581eSLawrence Tang            "required": ["data"],
117079d581eSLawrence Tang            "properties": {
118079d581eSLawrence Tang                "data": {
119079d581eSLawrence Tang                    "type": "string"
120079d581eSLawrence Tang                }
121079d581eSLawrence Tang            }
122079d581eSLawrence Tang        },
123079d581eSLawrence Tang        "aerInfo": {
124079d581eSLawrence Tang            "type": "object",
125079d581eSLawrence Tang            "required": ["capabilityID", "capabilityVersion", "uncorrectableErrorStatusRegister", "uncorrectableErrorMaskRegister", "uncorrectableErrorSeverityRegister", "correctableErrorStatusRegister", "correctableErrorMaskRegister", "aeccReg", "headerLogRegister", "rootErrorCommand", "rootErrorStatus", "errorSourceIDRegister", "correctableErrorSourceIDRegister"],
126079d581eSLawrence Tang            "properties": {
127079d581eSLawrence Tang                "capabilityID": {
128079d581eSLawrence Tang                    "type": "integer"
129079d581eSLawrence Tang                },
130079d581eSLawrence Tang                "capabilityVersion": {
131079d581eSLawrence Tang                    "type": "integer"
132079d581eSLawrence Tang                },
133079d581eSLawrence Tang                "uncorrectableErrorStatusRegister": {
134079d581eSLawrence Tang                    "type": "integer"
135079d581eSLawrence Tang                },
136079d581eSLawrence Tang                "uncorrectableErrorMaskRegister": {
137079d581eSLawrence Tang                    "type": "integer"
138079d581eSLawrence Tang                },
139079d581eSLawrence Tang                "uncorrectableErrorSeverityRegister": {
140079d581eSLawrence Tang                    "type": "integer"
141079d581eSLawrence Tang                },
142079d581eSLawrence Tang                "correctableErrorStatusRegister": {
143079d581eSLawrence Tang                    "type": "integer"
144079d581eSLawrence Tang                },
145079d581eSLawrence Tang                "correctableErrorMaskRegister": {
146079d581eSLawrence Tang                    "type": "integer"
147079d581eSLawrence Tang                },
148079d581eSLawrence Tang                "aeccReg": {
149079d581eSLawrence Tang                    "type": "integer"
150079d581eSLawrence Tang                },
151079d581eSLawrence Tang                "headerLogRegister": {
152079d581eSLawrence Tang                    "type": "string"
153079d581eSLawrence Tang                },
154079d581eSLawrence Tang                "rootErrorCommand": {
155079d581eSLawrence Tang                    "type": "integer"
156079d581eSLawrence Tang                },
157079d581eSLawrence Tang                "rootErrorStatus": {
158079d581eSLawrence Tang                    "type": "integer"
159079d581eSLawrence Tang                },
160079d581eSLawrence Tang                "errorSourceIDRegister": {
161079d581eSLawrence Tang                    "type": "integer"
162079d581eSLawrence Tang                },
163079d581eSLawrence Tang                "correctableErrorSourceIDRegister": {
164079d581eSLawrence Tang                    "type": "integer"
165079d581eSLawrence Tang                }
166079d581eSLawrence Tang            }
167079d581eSLawrence Tang        }
168079d581eSLawrence Tang    }
169079d581eSLawrence Tang}