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