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