]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkPkg/Include/Framework/FrameworkStatusCodeDataTypeId.h
Renaming files/directories
[mirror_edk2.git] / IntelFrameworkPkg / Include / Framework / FrameworkStatusCodeDataTypeId.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 <Common/DataHubRecords.h>
25 #include <Protocol/DebugSupport.h>
26
27 ///
28 /// The size of string
29 ///
30 #define EFI_STATUS_CODE_DATA_MAX_STRING_SIZE 150
31
32 ///
33 /// This is the max data size including all the headers which can be passed
34 /// as Status Code data. This data should be multiple of 8 byte
35 /// to avoid any kind of boundary issue. Also, sum of this data size (inclusive
36 /// of size of EFI_STATUS_CODE_DATA should not exceed the max record size of
37 /// data hub
38 ///
39 #define EFI_STATUS_CODE_DATA_MAX_SIZE 200
40
41 #pragma pack(1)
42 typedef enum {
43 EfiStringAscii,
44 EfiStringUnicode,
45 EfiStringToken
46 } EFI_STRING_TYPE;
47
48 typedef struct {
49 EFI_HII_HANDLE Handle;
50 STRING_REF Token;
51 } EFI_STATUS_CODE_STRING_TOKEN;
52
53 typedef union {
54 CHAR8 *Ascii;
55 CHAR16 *Unicode;
56 EFI_STATUS_CODE_STRING_TOKEN Hii;
57 } EFI_STATUS_CODE_STRING;
58
59 typedef struct {
60 EFI_STATUS_CODE_DATA DataHeader;
61 EFI_STRING_TYPE StringType;
62 EFI_STATUS_CODE_STRING String;
63 } EFI_STATUS_CODE_STRING_DATA;
64
65 #pragma pack()
66
67 #pragma pack(1)
68
69 typedef struct {
70 UINT32 ErrorLevel;
71 //
72 // 12 * sizeof (UINT64) Var Arg stack
73 //
74 // ascii DEBUG () Format string
75 //
76 } EFI_DEBUG_INFO;
77
78 #pragma pack()
79
80 //
81 // declaration for EFI_EXP_DATA. This may change
82 //
83 // typedef UINTN EFI_EXP_DATA;
84
85 ///
86 /// Voltage Extended Error Data
87 ///
88 typedef struct {
89 EFI_STATUS_CODE_DATA DataHeader;
90 EFI_EXP_BASE10_DATA Voltage;
91 EFI_EXP_BASE10_DATA Threshold;
92 } EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA;
93
94 typedef struct {
95 EFI_EXP_BASE10_DATA Voltage;
96 EFI_EXP_BASE10_DATA Threshold;
97 } EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA_PAYLOAD;
98
99 ///
100 /// Microcode Update Extended Error Data
101 ///
102 typedef struct {
103 EFI_STATUS_CODE_DATA DataHeader;
104 UINT32 Version;
105 } EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA;
106
107 typedef struct {
108 UINT32 Version;
109 } EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA_PAYLOAD;
110
111 ///
112 /// Asynchronous Timer Extended Error Data
113 ///
114 typedef struct {
115 EFI_STATUS_CODE_DATA DataHeader;
116 EFI_EXP_BASE10_DATA TimerLimit;
117 } EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA;
118
119 typedef struct {
120 EFI_EXP_BASE10_DATA TimerLimit;
121 } EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA_PAYLOAD;
122
123 ///
124 /// Host Processor Mismatch Extended Error Data
125 ///
126 typedef struct {
127 EFI_STATUS_CODE_DATA DataHeader;
128 UINT32 Instance;
129 UINT16 Attributes;
130 } EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA;
131
132 typedef struct {
133 UINT32 Instance;
134 UINT16 Attributes;
135 } EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA_PAYLOAD;
136
137 //
138 // EFI_COMPUTING_UNIT_MISMATCH_ATTRIBUTES
139 // All other attributes are reserved for future use and
140 // must be initialized to 0.
141 //
142 #define EFI_COMPUTING_UNIT_MISMATCH_SPEED 0x0001
143 #define EFI_COMPUTING_UNIT_MISMATCH_FSB_SPEED 0x0002
144 #define EFI_COMPUTING_UNIT_MISMATCH_FAMILY 0x0004
145 #define EFI_COMPUTING_UNIT_MISMATCH_MODEL 0x0008
146 #define EFI_COMPUTING_UNIT_MISMATCH_STEPPING 0x0010
147 #define EFI_COMPUTING_UNIT_MISMATCH_CACHE_SIZE 0x0020
148 #define EFI_COMPUTING_UNIT_MISMATCH_OEM1 0x1000
149 #define EFI_COMPUTING_UNIT_MISMATCH_OEM2 0x2000
150 #define EFI_COMPUTING_UNIT_MISMATCH_OEM3 0x4000
151 #define EFI_COMPUTING_UNIT_MISMATCH_OEM4 0x8000
152
153 ///
154 /// Thermal Extended Error Data
155 ///
156 typedef struct {
157 EFI_STATUS_CODE_DATA DataHeader;
158 EFI_EXP_BASE10_DATA Temperature;
159 EFI_EXP_BASE10_DATA Threshold;
160 } EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA;
161
162 typedef struct {
163 EFI_EXP_BASE10_DATA Temperature;
164 EFI_EXP_BASE10_DATA Threshold;
165 } EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA_PAYLOAD;
166
167 ///
168 /// Processor Disabled Extended Error Data
169 ///
170 typedef struct {
171 EFI_STATUS_CODE_DATA DataHeader;
172 UINT32 Cause;
173 BOOLEAN SoftwareDisabled;
174 } EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA;
175
176 typedef struct {
177 UINT32 Cause;
178 BOOLEAN SoftwareDisabled;
179 } EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA_PAYLOAD;
180
181 typedef enum {
182 EfiInitCacheDataOnly,
183 EfiInitCacheInstrOnly,
184 EfiInitCacheBoth,
185 EfiInitCacheUnspecified
186 } EFI_INIT_CACHE_TYPE;
187
188 ///
189 /// Embedded cache init extended data
190 ///
191 typedef struct {
192 EFI_STATUS_CODE_DATA DataHeader;
193 UINT32 Level;
194 EFI_INIT_CACHE_TYPE Type;
195 } EFI_CACHE_INIT_DATA;
196
197 typedef struct {
198 UINT32 Level;
199 EFI_INIT_CACHE_TYPE Type;
200 } EFI_CACHE_INIT_DATA_PAYLOAD;
201
202 //
203 // Memory Extended Error Data
204 //
205
206 ///
207 /// Memory Error Granularity Definition
208 ///
209 typedef UINT8 EFI_MEMORY_ERROR_GRANULARITY;
210
211 ///
212 /// Memory Error Operation Definition
213 ///
214 typedef UINT8 EFI_MEMORY_ERROR_OPERATION;
215
216 typedef struct {
217 EFI_STATUS_CODE_DATA DataHeader;
218 EFI_MEMORY_ERROR_GRANULARITY Granularity;
219 EFI_MEMORY_ERROR_OPERATION Operation;
220 UINTN Syndrome;
221 EFI_PHYSICAL_ADDRESS Address;
222 UINTN Resolution;
223 } EFI_MEMORY_EXTENDED_ERROR_DATA;
224
225 typedef struct {
226 EFI_MEMORY_ERROR_GRANULARITY Granularity;
227 EFI_MEMORY_ERROR_OPERATION Operation;
228 UINTN Syndrome;
229 EFI_PHYSICAL_ADDRESS Address;
230 UINTN Resolution;
231 } EFI_MEMORY_EXTENDED_ERROR_DATA_PAYLOAD;
232
233 //
234 // Memory Error Granularities
235 //
236 #define EFI_MEMORY_ERROR_OTHER 0x01
237 #define EFI_MEMORY_ERROR_UNKNOWN 0x02
238 #define EFI_MEMORY_ERROR_DEVICE 0x03
239 #define EFI_MEMORY_ERROR_PARTITION 0x04
240
241 //
242 // Memory Error Operations
243 //
244 #define EFI_MEMORY_OPERATION_OTHER 0x01
245 #define EFI_MEMORY_OPERATION_UNKNOWN 0x02
246 #define EFI_MEMORY_OPERATION_READ 0x03
247 #define EFI_MEMORY_OPERATION_WRITE 0x04
248 #define EFI_MEMORY_OPERATION_PARTIAL_WRITE 0x05
249
250 //
251 // Define shorthands to describe Group Operations
252 // Many memory init operations are essentially group
253 // operations.
254
255 /// A shorthand to describe that the operation is performed
256 /// on multiple devices within the array
257 ///
258 #define EFI_MULTIPLE_MEMORY_DEVICE_OPERATION 0xfffe
259 ///
260 /// A shorthand to describe that the operation is performed on all devices within the array
261 ///
262 #define EFI_ALL_MEMORY_DEVICE_OPERATION 0xffff
263 ///
264 /// A shorthand to describe that the operation is performed on multiple arrays
265 ///
266 #define EFI_MULTIPLE_MEMORY_ARRAY_OPERATION 0xfffe
267 ///
268 /// A shorthand to describe that the operation is performed on all the arrays
269 ///
270 #define EFI_ALL_MEMORY_ARRAY_OPERATION 0xffff
271
272 //
273 // DIMM number
274 //
275 #pragma pack(1)
276 typedef struct {
277 EFI_STATUS_CODE_DATA DataHeader;
278 UINT16 Array;
279 UINT16 Device;
280 } EFI_STATUS_CODE_DIMM_NUMBER;
281
282 typedef struct {
283 UINT16 Array;
284 UINT16 Device;
285 } EFI_STATUS_CODE_DIMM_NUMBER_PAYLOAD;
286 #pragma pack()
287
288 ///
289 /// Memory Module Mismatch Extended Error Data
290 ///
291 typedef struct {
292 EFI_STATUS_CODE_DATA DataHeader;
293 EFI_STATUS_CODE_DIMM_NUMBER Instance;
294 } EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA;
295
296 typedef struct {
297 EFI_STATUS_CODE_DIMM_NUMBER Instance;
298 } EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA_PAYLOAD;
299
300 ///
301 /// Memory Range Extended Data
302 ///
303 typedef struct {
304 EFI_STATUS_CODE_DATA DataHeader;
305 EFI_PHYSICAL_ADDRESS Start;
306 EFI_PHYSICAL_ADDRESS Length;
307 } EFI_MEMORY_RANGE_EXTENDED_DATA;
308
309 typedef struct {
310 EFI_PHYSICAL_ADDRESS Start;
311 EFI_PHYSICAL_ADDRESS Length;
312 } EFI_MEMORY_RANGE_EXTENDED_DATA_PAYLOAD;
313
314 ///
315 /// Device handle Extended Data. Used for many
316 /// errors and progress codes to point to the device.
317 ///
318 typedef struct {
319 EFI_STATUS_CODE_DATA DataHeader;
320 EFI_HANDLE Handle;
321 } EFI_DEVICE_HANDLE_EXTENDED_DATA;
322
323 typedef struct {
324 EFI_STATUS_CODE_DATA DataHeader;
325 UINT8 *DevicePath;
326 } EFI_DEVICE_PATH_EXTENDED_DATA;
327
328 typedef struct {
329 EFI_STATUS_CODE_DATA DataHeader;
330 EFI_HANDLE ControllerHandle;
331 EFI_HANDLE DriverBindingHandle;
332 UINT16 DevicePathSize;
333 UINT8 *RemainingDevicePath;
334 } EFI_STATUS_CODE_START_EXTENDED_DATA;
335
336 typedef struct {
337 EFI_HANDLE Handle;
338 } EFI_DEVICE_HANDLE_EXTENDED_DATA_PAYLOAD;
339
340 typedef struct {
341 UINT8 *DevicePath;
342 } EFI_DEVICE_PATH_EXTENDED_DATA_PAYLOAD;
343
344 typedef struct {
345 EFI_HANDLE ControllerHandle;
346 EFI_HANDLE DriverBindingHandle;
347 UINT16 DevicePathSize;
348 UINT8 *RemainingDevicePath;
349 } EFI_STATUS_CODE_START_EXTENDED_DATA_PAYLOAD;
350
351 ///
352 /// Resource Allocation Failure Extended Error Data
353 ///
354
355 /*
356 typedef struct {
357 EFI_STATUS_CODE_DATA DataHeader;
358 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
359 UINT32 Bar;
360 VOID *ReqRes;
361 VOID *AllocRes;
362 } EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;
363 */
364 typedef struct {
365 EFI_STATUS_CODE_DATA DataHeader;
366 UINT32 Bar;
367 UINT16 DevicePathSize;
368 UINT16 ReqResSize;
369 UINT16 AllocResSize;
370 UINT8 *DevicePath;
371 UINT8 *ReqRes;
372 UINT8 *AllocRes;
373 } EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;
374
375 typedef struct {
376 UINT32 Bar;
377 UINT16 DevicePathSize;
378 UINT16 ReqResSize;
379 UINT16 AllocResSize;
380 UINT8 *DevicePath;
381 UINT8 *ReqRes;
382 UINT8 *AllocRes;
383 } EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA_PAYLOAD;
384
385 ///
386 /// Extended Error Data for Assert
387 ///
388 typedef struct {
389 EFI_STATUS_CODE_DATA DataHeader;
390 UINT32 LineNumber;
391 UINT32 FileNameSize;
392 EFI_STATUS_CODE_STRING_DATA *FileName;
393 } EFI_DEBUG_ASSERT_DATA;
394
395 typedef struct {
396 UINT32 LineNumber;
397 UINT32 FileNameSize;
398 EFI_STATUS_CODE_STRING_DATA *FileName;
399 } EFI_DEBUG_ASSERT_DATA_PAYLOAD;
400
401 ///
402 /// System Context Data EBC/IA32/IPF
403 ///
404 typedef union {
405 EFI_SYSTEM_CONTEXT_EBC SystemContextEbc;
406 EFI_SYSTEM_CONTEXT_IA32 SystemContextIa32;
407 EFI_SYSTEM_CONTEXT_IPF SystemContextIpf;
408 } EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT;
409
410 typedef struct {
411 EFI_STATUS_CODE_DATA DataHeader;
412 EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT Context;
413 } EFI_STATUS_CODE_EXCEP_EXTENDED_DATA;
414
415 typedef struct {
416 EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT Context;
417 } EFI_STATUS_CODE_EXCEP_EXTENDED_DATA_PAYLOAD;
418
419 ///
420 /// Legacy Oprom extended data
421 ///
422 typedef struct {
423 EFI_STATUS_CODE_DATA DataHeader;
424 EFI_HANDLE DeviceHandle;
425 EFI_PHYSICAL_ADDRESS RomImageBase;
426 } EFI_LEGACY_OPROM_EXTENDED_DATA;
427
428 typedef struct {
429 EFI_HANDLE DeviceHandle;
430 EFI_PHYSICAL_ADDRESS RomImageBase;
431 } EFI_LEGACY_OPROM_EXTENDED_DATA_PAYLOAD;
432
433 #endif