blob: f40852230e51c0d71699d527e800091baa800e4c [file] [log] [blame]
Lawrence Tang079d5812022-07-12 14:15:32 +01001{
2 "$id": "cper-json-section-descriptor",
3 "$schema": "https://json-schema.org/draft/2020-12/schema",
4 "type": "object",
Andrew Adrianced9835a12024-12-05 14:41:42 -08005 "description": "Common Platform Record Section Descriptor as defined in UEFI Appendix N section 2.2",
John Chung044afd02024-05-03 19:58:02 +08006 "required": [
7 "sectionOffset",
8 "sectionLength",
9 "revision",
10 "validationBits",
11 "flags",
12 "sectionType",
13 "severity"
14 ],
Lawrence Tang079d5812022-07-12 14:15:32 +010015 "additionalProperties": false,
16 "properties": {
17 "sectionOffset": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080018 "type": "integer",
19 "description": "Offset in bytes of the section body from the base of the record header."
Lawrence Tang079d5812022-07-12 14:15:32 +010020 },
21 "sectionLength": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080022 "type": "integer",
23 "description": "The length in bytes of the section body."
Lawrence Tang079d5812022-07-12 14:15:32 +010024 },
25 "revision": {
26 "type": "object",
Andrew Adrianced9835a12024-12-05 14:41:42 -080027 "description": "This is a 2-byte field representing a major and minor version number for the error record definition in BCD format.",
Lawrence Tang079d5812022-07-12 14:15:32 +010028 "required": ["major", "minor"],
29 "properties": {
30 "major": {
31 "type": "integer",
32 "minimum": 0
33 },
34 "minor": {
35 "type": "integer",
36 "minimum": 0
37 }
38 }
39 },
40 "validationBits": {
41 "type": "object",
Andrew Adrianced9835a12024-12-05 14:41:42 -080042 "description": "This field indicates the validity of other feilds in this descriptor.",
Lawrence Tang079d5812022-07-12 14:15:32 +010043 "required": ["fruIDValid", "fruStringValid"],
44 "properties": {
45 "fruIDValid": {
46 "type": "boolean"
47 },
48 "fruStringValid": {
49 "type": "boolean"
50 }
51 }
52 },
53 "flags": {
54 "type": "object",
John Chung044afd02024-05-03 19:58:02 +080055 "required": [
56 "primary",
57 "containmentWarning",
58 "reset",
59 "errorThresholdExceeded",
60 "resourceNotAccessible",
61 "latentError",
62 "propagated",
63 "overflow"
64 ],
Lawrence Tang079d5812022-07-12 14:15:32 +010065 "properties": {
66 "primary": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080067 "type": "boolean",
68 "description": "If set, identifies the section as the section to be associated with the error condition."
Lawrence Tang079d5812022-07-12 14:15:32 +010069 },
70 "containmentWarning": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080071 "type": "boolean",
72 "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."
Lawrence Tang079d5812022-07-12 14:15:32 +010073 },
74 "reset": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080075 "type": "boolean",
76 "description": "If set, the component has been reset and must be re-initialized or re-enabled by the operating system prior to use."
Lawrence Tang079d5812022-07-12 14:15:32 +010077 },
78 "errorThresholdExceeded": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080079 "type": "boolean",
80 "description": "If set, OS may choose to discontinue use of this resource."
Lawrence Tang079d5812022-07-12 14:15:32 +010081 },
82 "resourceNotAccessible": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080083 "type": "boolean",
84 "description": "If set, the resource could not be queried for error information due to conflicts with other system software or resources."
Lawrence Tang079d5812022-07-12 14:15:32 +010085 },
86 "latentError": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080087 "type": "boolean",
88 "description": "If set this flag indicates that action has been taken to ensure error containment"
Lawrence Tang079d5812022-07-12 14:15:32 +010089 },
90 "propagated": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080091 "type": "boolean",
92 "description": "If set this flag indicates the section is to be associated with an error that has been propagated due to hardware poisoning."
Lawrence Tang079d5812022-07-12 14:15:32 +010093 },
94 "overflow": {
Andrew Adrianced9835a12024-12-05 14:41:42 -080095 "type": "boolean",
96 "description": "If set this flag indicates the firmware has detected an overflow of buffers/queues that are used to accumulate, collect, or report errors"
Lawrence Tang079d5812022-07-12 14:15:32 +010097 }
98 }
99 },
100 "sectionType": {
101 "type": "object",
Andrew Adrianced9835a12024-12-05 14:41:42 -0800102 "description": "This field holds a pre-assigned GUID value indicating that it is a section of a particular error.",
Lawrence Tang8f793ac2022-07-13 10:17:09 +0100103 "required": ["data", "type"],
Lawrence Tang079d5812022-07-12 14:15:32 +0100104 "properties": {
105 "data": {
106 "type": "string",
107 "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{16}$"
108 },
Lawrence Tang8f793ac2022-07-13 10:17:09 +0100109 "type": {
Lawrence Tang079d5812022-07-12 14:15:32 +0100110 "type": "string"
111 }
112 }
113 },
114 "fruID": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800115 "type": "string",
116 "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."
Lawrence Tang079d5812022-07-12 14:15:32 +0100117 },
118 "severity": {
119 "type": "object",
Andrew Adrianced9835a12024-12-05 14:41:42 -0800120 "description": "This field indicates the severity associated with the error section.",
Lawrence Tang079d5812022-07-12 14:15:32 +0100121 "required": ["code", "name"],
122 "properties": {
123 "code": {
124 "type": "integer",
125 "minimum": 0
126 },
127 "name": {
128 "type": "string"
129 }
130 }
131 },
132 "fruText": {
Andrew Adrianced9835a12024-12-05 14:41:42 -0800133 "type": "string",
134 "description": "ASCII string identifying the FRU hardware."
Lawrence Tang079d5812022-07-12 14:15:32 +0100135 }
136 }
John Chung044afd02024-05-03 19:58:02 +0800137}