]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkPkg/Include/Framework/StatusCodeDataTypeId.h
1) Move EFI_DEBUG_INFO structure to IntelFrameworkModule/Include/DebugInfo.h header...
[mirror_edk2.git] / IntelFrameworkPkg / Include / Framework / StatusCodeDataTypeId.h
1 /** @file
2 This file defines the data structures to support Status Code Data.
3
4 Copyright (c) 2007, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 Module Name: FrameworkStatusCodeDataTypeId.h
14
15 @par Revision Reference:
16 These definitions are from Framework of EFI Status Code Spec
17 Version 0.92.
18
19 **/
20
21 #ifndef __FRAMEWORK_STATUS_CODE_DATA_TYPE_ID_H__
22 #define __FRAMEWORK_STATUS_CODE_DATA_TYPE_ID_H__
23
24 #include <Framework/DataHubRecords.h>
25 #include <Protocol/DebugSupport.h>
26
27 ///
28 /// This is the max data size including all the headers which can be passed
29 /// as Status Code data. This data should be multiple of 8 byte
30 /// to avoid any kind of boundary issue. Also, sum of this data size (inclusive
31 /// of size of EFI_STATUS_CODE_DATA should not exceed the max record size of
32 /// data hub
33 ///
34 #define EFI_STATUS_CODE_DATA_MAX_SIZE 200
35
36 #pragma pack(1)
37 typedef enum {
38 EfiStringAscii,
39 EfiStringUnicode,
40 EfiStringToken
41 } EFI_STRING_TYPE;
42
43 typedef struct {
44 EFI_HII_HANDLE Handle;
45 STRING_REF Token;
46 } EFI_STATUS_CODE_STRING_TOKEN;
47
48 typedef union {
49 CHAR8 *Ascii;
50 CHAR16 *Unicode;
51 EFI_STATUS_CODE_STRING_TOKEN Hii;
52 } EFI_STATUS_CODE_STRING;
53
54 typedef struct {
55 EFI_STATUS_CODE_DATA DataHeader;
56 EFI_STRING_TYPE StringType;
57 EFI_STATUS_CODE_STRING String;
58 } EFI_STATUS_CODE_STRING_DATA;
59
60 #pragma pack()
61
62 //
63 // declaration for EFI_EXP_DATA. This may change
64 //
65 // typedef UINTN EFI_EXP_DATA;
66
67 ///
68 /// Voltage Extended Error Data
69 ///
70 typedef struct {
71 EFI_STATUS_CODE_DATA DataHeader;
72 EFI_EXP_BASE10_DATA Voltage;
73 EFI_EXP_BASE10_DATA Threshold;
74 } EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA;
75
76 ///
77 /// Microcode Update Extended Error Data
78 ///
79 typedef struct {
80 EFI_STATUS_CODE_DATA DataHeader;
81 UINT32 Version;
82 } EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA;
83
84
85 ///
86 /// Asynchronous Timer Extended Error Data
87 ///
88 typedef struct {
89 EFI_STATUS_CODE_DATA DataHeader;
90 EFI_EXP_BASE10_DATA TimerLimit;
91 } EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA;
92
93 ///
94 /// Host Processor Mismatch Extended Error Data
95 ///
96 typedef struct {
97 EFI_STATUS_CODE_DATA DataHeader;
98 UINT32 Instance;
99 UINT16 Attributes;
100 } EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA;
101
102 //
103 // EFI_COMPUTING_UNIT_MISMATCH_ATTRIBUTES
104 // All other attributes are reserved for future use and
105 // must be initialized to 0.
106 //
107 #define EFI_COMPUTING_UNIT_MISMATCH_SPEED 0x0001
108 #define EFI_COMPUTING_UNIT_MISMATCH_FSB_SPEED 0x0002
109 #define EFI_COMPUTING_UNIT_MISMATCH_FAMILY 0x0004
110 #define EFI_COMPUTING_UNIT_MISMATCH_MODEL 0x0008
111 #define EFI_COMPUTING_UNIT_MISMATCH_STEPPING 0x0010
112 #define EFI_COMPUTING_UNIT_MISMATCH_CACHE_SIZE 0x0020
113 #define EFI_COMPUTING_UNIT_MISMATCH_OEM1 0x1000
114 #define EFI_COMPUTING_UNIT_MISMATCH_OEM2 0x2000
115 #define EFI_COMPUTING_UNIT_MISMATCH_OEM3 0x4000
116 #define EFI_COMPUTING_UNIT_MISMATCH_OEM4 0x8000
117
118 ///
119 /// Thermal Extended Error Data
120 ///
121 typedef struct {
122 EFI_STATUS_CODE_DATA DataHeader;
123 EFI_EXP_BASE10_DATA Temperature;
124 EFI_EXP_BASE10_DATA Threshold;
125 } EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA;
126
127 ///
128 /// Processor Disabled Extended Error Data
129 ///
130 typedef struct {
131 EFI_STATUS_CODE_DATA DataHeader;
132 UINT32 Cause;
133 BOOLEAN SoftwareDisabled;
134 } EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA;
135
136
137 typedef enum {
138 EfiInitCacheDataOnly,
139 EfiInitCacheInstrOnly,
140 EfiInitCacheBoth,
141 EfiInitCacheUnspecified
142 } EFI_INIT_CACHE_TYPE;
143
144 ///
145 /// Embedded cache init extended data
146 ///
147 typedef struct {
148 EFI_STATUS_CODE_DATA DataHeader;
149 UINT32 Level;
150 EFI_INIT_CACHE_TYPE Type;
151 } EFI_CACHE_INIT_DATA;
152
153 //
154 // Memory Extended Error Data
155 //
156
157 ///
158 /// Memory Error Granularity Definition
159 ///
160 typedef UINT8 EFI_MEMORY_ERROR_GRANULARITY;
161
162 ///
163 /// Memory Error Operation Definition
164 ///
165 typedef UINT8 EFI_MEMORY_ERROR_OPERATION;
166
167 typedef struct {
168 EFI_STATUS_CODE_DATA DataHeader;
169 EFI_MEMORY_ERROR_GRANULARITY Granularity;
170 EFI_MEMORY_ERROR_OPERATION Operation;
171 UINTN Syndrome;
172 EFI_PHYSICAL_ADDRESS Address;
173 UINTN Resolution;
174 } EFI_MEMORY_EXTENDED_ERROR_DATA;
175
176 typedef struct {
177 EFI_MEMORY_ERROR_GRANULARITY Granularity;
178 EFI_MEMORY_ERROR_OPERATION Operation;
179 UINTN Syndrome;
180 EFI_PHYSICAL_ADDRESS Address;
181 UINTN Resolution;
182 } EFI_MEMORY_EXTENDED_ERROR_DATA_PAYLOAD;
183
184 //
185 // Memory Error Granularities
186 //
187 #define EFI_MEMORY_ERROR_OTHER 0x01
188 #define EFI_MEMORY_ERROR_UNKNOWN 0x02
189 #define EFI_MEMORY_ERROR_DEVICE 0x03
190 #define EFI_MEMORY_ERROR_PARTITION 0x04
191
192 //
193 // Memory Error Operations
194 //
195 #define EFI_MEMORY_OPERATION_OTHER 0x01
196 #define EFI_MEMORY_OPERATION_UNKNOWN 0x02
197 #define EFI_MEMORY_OPERATION_READ 0x03
198 #define EFI_MEMORY_OPERATION_WRITE 0x04
199 #define EFI_MEMORY_OPERATION_PARTIAL_WRITE 0x05
200
201 //
202 // Define shorthands to describe Group Operations
203 // Many memory init operations are essentially group
204 // operations.
205
206 /// A shorthand to describe that the operation is performed
207 /// on multiple devices within the array
208 ///
209 #define EFI_MULTIPLE_MEMORY_DEVICE_OPERATION 0xfffe
210 ///
211 /// A shorthand to describe that the operation is performed on all devices within the array
212 ///
213 #define EFI_ALL_MEMORY_DEVICE_OPERATION 0xffff
214 ///
215 /// A shorthand to describe that the operation is performed on multiple arrays
216 ///
217 #define EFI_MULTIPLE_MEMORY_ARRAY_OPERATION 0xfffe
218 ///
219 /// A shorthand to describe that the operation is performed on all the arrays
220 ///
221 #define EFI_ALL_MEMORY_ARRAY_OPERATION 0xffff
222
223 //
224 // DIMM number
225 //
226 #pragma pack(1)
227 typedef struct {
228 EFI_STATUS_CODE_DATA DataHeader;
229 UINT16 Array;
230 UINT16 Device;
231 } EFI_STATUS_CODE_DIMM_NUMBER;
232
233 #pragma pack()
234
235 ///
236 /// Memory Module Mismatch Extended Error Data
237 ///
238 typedef struct {
239 EFI_STATUS_CODE_DATA DataHeader;
240 EFI_STATUS_CODE_DIMM_NUMBER Instance;
241 } EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA;
242
243
244 ///
245 /// Memory Range Extended Data
246 ///
247 typedef struct {
248 EFI_STATUS_CODE_DATA DataHeader;
249 EFI_PHYSICAL_ADDRESS Start;
250 EFI_PHYSICAL_ADDRESS Length;
251 } EFI_MEMORY_RANGE_EXTENDED_DATA;
252
253 ///
254 /// Device handle Extended Data. Used for many
255 /// errors and progress codes to point to the device.
256 ///
257 typedef struct {
258 EFI_STATUS_CODE_DATA DataHeader;
259 EFI_HANDLE Handle;
260 } EFI_DEVICE_HANDLE_EXTENDED_DATA;
261
262 typedef struct {
263 EFI_STATUS_CODE_DATA DataHeader;
264 UINT8 *DevicePath;
265 } EFI_DEVICE_PATH_EXTENDED_DATA;
266
267 typedef struct {
268 EFI_STATUS_CODE_DATA DataHeader;
269 EFI_HANDLE ControllerHandle;
270 EFI_HANDLE DriverBindingHandle;
271 UINT16 DevicePathSize;
272 UINT8 *RemainingDevicePath;
273 } EFI_STATUS_CODE_START_EXTENDED_DATA;
274
275 typedef struct {
276 UINT8 *DevicePath;
277 } EFI_DEVICE_PATH_EXTENDED_DATA_PAYLOAD;
278
279
280 typedef struct {
281 EFI_STATUS_CODE_DATA DataHeader;
282 UINT32 Bar;
283 UINT16 DevicePathSize;
284 UINT16 ReqResSize;
285 UINT16 AllocResSize;
286 UINT8 *DevicePath;
287 UINT8 *ReqRes;
288 UINT8 *AllocRes;
289 } EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;
290
291 ///
292 /// Extended Error Data for Assert
293 ///
294 typedef struct {
295 EFI_STATUS_CODE_DATA DataHeader;
296 UINT32 LineNumber;
297 UINT32 FileNameSize;
298 EFI_STATUS_CODE_STRING_DATA *FileName;
299 } EFI_DEBUG_ASSERT_DATA;
300
301 ///
302 /// System Context Data EBC/IA32/IPF
303 ///
304 typedef union {
305 EFI_SYSTEM_CONTEXT_EBC SystemContextEbc;
306 EFI_SYSTEM_CONTEXT_IA32 SystemContextIa32;
307 EFI_SYSTEM_CONTEXT_IPF SystemContextIpf;
308 } EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT;
309
310 typedef struct {
311 EFI_STATUS_CODE_DATA DataHeader;
312 EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT Context;
313 } EFI_STATUS_CODE_EXCEP_EXTENDED_DATA;
314
315 ///
316 /// Legacy Oprom extended data
317 ///
318 typedef struct {
319 EFI_STATUS_CODE_DATA DataHeader;
320 EFI_HANDLE DeviceHandle;
321 EFI_PHYSICAL_ADDRESS RomImageBase;
322 } EFI_LEGACY_OPROM_EXTENDED_DATA;
323
324 #endif