]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkPkg/Include/Guid/StatusCodeDataTypeId.h
Remove "Module Name:" from include file headers.
[mirror_edk2.git] / IntelFrameworkPkg / Include / Guid / StatusCodeDataTypeId.h
CommitLineData
53f93f7e 1/** @file\r
2 GUID used to identify id for the caller who is initiating the Status Code.\r
3\r
4 Copyright (c) 2006, 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
53f93f7e 13 @par Revision Reference:\r
14 GUIDs defined in Status Codes Specification 0.92\r
15\r
16**/\r
17\r
18#ifndef __STATUS_CODE_DATA_TYPE_ID_GUID_H__\r
19#define __STATUS_CODE_DATA_TYPE_ID_GUID_H__\r
20\r
c7458efd 21#include <Framework/StatusCode.h>\r
c7458efd 22#include <Protocol/DebugSupport.h>\r
dc7b4a5c 23#include <Protocol/FrameworkHii.h>\r
b80fbe85 24\r
c7458efd 25//////////////////////////////////////////////////////////////////////////////////////////\r
53f93f7e 26// String Data Type defintion. This is part of Status Code Specification\r
c7458efd 27//////////////////////////////////////////////////////////////////////////////////////////\r
53f93f7e 28#define EFI_STATUS_CODE_DATA_TYPE_STRING_GUID \\r
29 { 0x92D11080, 0x496F, 0x4D95, { 0xBE, 0x7E, 0x03, 0x74, 0x88, 0x38, 0x2B, 0x0A } }\r
30\r
c7458efd 31#pragma pack(1)\r
32\r
33typedef enum {\r
ee09c93f 34 EfiStringAscii, ///< A NULL-terminated ASCII string.\r
35 EfiStringUnicode, ///< A double NULL-terminated Unicode string.\r
36 EfiStringToken ///< An EFI_STATUS_CODE_STRING_TOKEN representing the string. \r
37 ///< The actual string can be obtained by querying the HII Database.\r
c7458efd 38} EFI_STRING_TYPE;\r
39\r
40typedef struct {\r
ee09c93f 41 FRAMEWORK_EFI_HII_HANDLE Handle; ///< The HII handle of the string pack, which can be\r
42 ///< used to retrieve the string. It is a dynamic value\r
43 ///< that may not be the same for different boots.\r
44 STRING_REF Token; ///< When combined with the HII handle, the string \r
45 ///< token can be used to retrieve the string.\r
46\r
c7458efd 47} EFI_STATUS_CODE_STRING_TOKEN;\r
48\r
49typedef union {\r
ee09c93f 50 CHAR8 *Ascii; ///< ASCII formatted string.\r
51 CHAR16 *Unicode; ///< Unicode formatted string.\r
52 EFI_STATUS_CODE_STRING_TOKEN Hii; ///< HII handle/token pair.\r
c7458efd 53} EFI_STATUS_CODE_STRING;\r
54\r
55typedef struct {\r
ee09c93f 56 EFI_STATUS_CODE_DATA DataHeader; ///< The data header identifying the data.\r
57 EFI_STRING_TYPE StringType; ///< Specifies if the string is ASCII or Unicode.\r
58 EFI_STATUS_CODE_STRING String; ///< A pointer to a null-terminated ASCII or Unicode string.\r
c7458efd 59} EFI_STATUS_CODE_STRING_DATA;\r
60#pragma pack()\r
61\r
53f93f7e 62extern EFI_GUID gEfiStatusCodeDataTypeStringGuid;\r
63\r
c7458efd 64\r
65//////////////////////////////////////////////////////////////////////////////////////////\r
66// Special Data Type defintion. This is part of Status Code Specification\r
67//////////////////////////////////////////////////////////////////////////////////////////\r
53f93f7e 68#define EFI_STATUS_CODE_SPECIFIC_DATA_GUID \\r
69 { 0x335984bd, 0xe805, 0x409a, { 0xb8, 0xf8, 0xd2, 0x7e, 0xce, 0x5f, 0xf7, 0xa6 } }\r
70\r
c7458efd 71#pragma pack(1)\r
72\r
73///\r
74/// Device handle Extended Data. Used for many\r
75/// errors and progress codes to point to the device.\r
76///\r
77typedef struct {\r
78 EFI_STATUS_CODE_DATA DataHeader;\r
79 EFI_HANDLE Handle;\r
80} EFI_DEVICE_HANDLE_EXTENDED_DATA;\r
81\r
cb8df8c5 82///\r
83/// Extended data about the device path, which is used for many errors and \r
84/// progress codes to point to the device.\r
85///\r
c7458efd 86typedef struct {\r
87 EFI_STATUS_CODE_DATA DataHeader;\r
88 UINT8 *DevicePath;\r
89} EFI_DEVICE_PATH_EXTENDED_DATA;\r
90\r
cb8df8c5 91///\r
92/// This structure defines extended data describing a PCI resource allocation error.\r
93///\r
c7458efd 94typedef struct {\r
95 EFI_STATUS_CODE_DATA DataHeader;\r
96 UINT32 Bar;\r
97 UINT16 DevicePathSize;\r
98 UINT16 ReqResSize;\r
99 UINT16 AllocResSize;\r
100 UINT8 *DevicePath;\r
101 UINT8 *ReqRes;\r
102 UINT8 *AllocRes;\r
103} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA;\r
104\r
105///\r
470d0b27 106/// This structure provides the voltage at the time of error. It also provides \r
107/// the threshold value indicating the minimum or maximum voltage that is considered \r
108/// an error. If the voltage is less then the threshold, the error indicates that the \r
109/// voltage fell below the minimum acceptable value. If the voltage is greater then the threshold, \r
110/// the error indicates that the voltage rose above the maximum acceptable value.\r
c7458efd 111///\r
112typedef struct {\r
470d0b27 113 ///\r
114 /// The data header identifying the data. \r
115 ///\r
c7458efd 116 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 117 ///\r
118 /// The voltage value at the time of the error.\r
119 ///\r
c7458efd 120 EFI_EXP_BASE10_DATA Voltage;\r
470d0b27 121 ///\r
122 /// The voltage threshold.\r
123 ///\r
c7458efd 124 EFI_EXP_BASE10_DATA Threshold;\r
125} EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA;\r
126\r
127///\r
128/// Microcode Update Extended Error Data\r
129///\r
130typedef struct {\r
470d0b27 131 ///\r
132 /// The data header identifying the data. \r
133 ///\r
c7458efd 134 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 135 ///\r
136 /// The version of the microcode update from the header.\r
137 ///\r
c7458efd 138 UINT32 Version;\r
139} EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA;\r
140\r
141///\r
142/// Asynchronous Timer Extended Error Data\r
470d0b27 143/// The timer limit provides the timeout value of the timer prior to expiration.\r
c7458efd 144///\r
145typedef struct {\r
470d0b27 146 ///\r
147 /// The data header identifying the data. \r
148 ///\r
c7458efd 149 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 150 ///\r
151 /// The number of seconds that the computing unit timer was configured to expire.\r
152 ///\r
c7458efd 153 EFI_EXP_BASE10_DATA TimerLimit;\r
154} EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA;\r
155\r
156///\r
157/// Host Processor Mismatch Extended Error Data\r
470d0b27 158/// This provides information to indicate which processors mismatch, and how they mismatch. The \r
159/// status code contains the instance number of the processor that is in error. This structure's \r
160/// Instance indicates the second processor that does not match. This differentiation allows the \r
161/// consumer to determine which two processors do not match. The Attributes indicate what \r
162/// mismatch is being reported. Because Attributes is a bit field, more than one mismatch can be \r
163/// reported with one error code.\r
c7458efd 164///\r
165typedef struct {\r
470d0b27 166 ///\r
167 /// The data header identifying the data. \r
168 ///\r
c7458efd 169 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 170 ///\r
171 /// The unit number of the computing unit that does not match.\r
172 /// \r
c7458efd 173 UINT32 Instance;\r
470d0b27 174 /// \r
175 /// The attributes describing the failure. \r
176 /// \r
c7458efd 177 UINT16 Attributes;\r
178} EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA;\r
179\r
180///\r
181/// Thermal Extended Error Data\r
470d0b27 182/// This structure provides the temperature at the time of error. It also provides the threshold value \r
183/// indicating the minimum temperature that is considered an error.\r
c7458efd 184///\r
185typedef struct {\r
470d0b27 186 ///\r
187 /// The data header identifying the data. \r
188 ///\r
c7458efd 189 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 190 ///\r
191 /// The thermal value at the time of the error.\r
192 ///\r
c7458efd 193 EFI_EXP_BASE10_DATA Temperature;\r
470d0b27 194 ///\r
195 /// The thermal threshold.\r
196 ///\r
c7458efd 197 EFI_EXP_BASE10_DATA Threshold;\r
198} EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA;\r
199\r
470d0b27 200//\r
201// Valid cache types\r
202//\r
c7458efd 203typedef enum {\r
204 EfiInitCacheDataOnly,\r
205 EfiInitCacheInstrOnly,\r
206 EfiInitCacheBoth,\r
207 EfiInitCacheUnspecified\r
208} EFI_INIT_CACHE_TYPE;\r
209\r
210///\r
211/// Embedded cache init extended data\r
212///\r
213typedef struct {\r
214 EFI_STATUS_CODE_DATA DataHeader;\r
215 UINT32 Level;\r
216 EFI_INIT_CACHE_TYPE Type;\r
217} EFI_CACHE_INIT_DATA;\r
218\r
219///\r
220/// Processor Disabled Extended Error Data\r
470d0b27 221/// This structure provides details as to why and how the computing unit was disabled. The causes \r
222/// should cover the typical reasons a processor would be disabled. How the processor was disabled is \r
223/// important because there are distinct differences between hardware and software disabling.\r
c7458efd 224///\r
225typedef struct {\r
470d0b27 226 ///\r
227 /// The data header identifying the data. \r
228 ///\r
c7458efd 229 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 230 ///\r
231 /// The reason for disabling the processor. \r
232 /// \r
c7458efd 233 UINT32 Cause;\r
470d0b27 234 ///\r
235 /// TRUE if the processor is disabled via software means such as not listing it in the ACPI tables. \r
236 /// Such a processor will respond to Interprocessor Interrupts (IPIs). FALSE if the processor is hardware \r
237 /// disabled, which means it is invisible to software and will not respond to IPIs.\r
238 ///\r
c7458efd 239 BOOLEAN SoftwareDisabled;\r
240} EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA;\r
241\r
242///\r
243/// Memory Error Operation Definition\r
244///\r
245typedef UINT8 EFI_MEMORY_ERROR_OPERATION;\r
246\r
247///\r
248/// Memory Error Granularity Definition\r
249///\r
250typedef UINT8 EFI_MEMORY_ERROR_GRANULARITY;\r
251\r
470d0b27 252///\r
253/// This structure provides specific details about the memory error that was detected. It provides \r
254/// enough information so that consumers can identify the exact failure and provides enough \r
255/// information to enable corrective action if necessary.\r
256///\r
c7458efd 257typedef struct {\r
470d0b27 258 ///\r
259 /// The data header identifying the data. \r
260 ///\r
c7458efd 261 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 262 ///\r
263 /// The error granularity type.\r
264 ///\r
c7458efd 265 EFI_MEMORY_ERROR_GRANULARITY Granularity;\r
470d0b27 266 ///\r
267 /// The operation that resulted in the error being detected. \r
268 ///\r
c7458efd 269 EFI_MEMORY_ERROR_OPERATION Operation;\r
470d0b27 270 ///\r
271 /// The error syndrome, vendor-specific ECC syndrome, or CRC data associated with \r
272 /// the error. If unknown, should be initialized to 0.\r
50076475 273 /// Inconsistent with specification here: \r
274 /// This field in StatusCodes spec0.9 is defined as UINT32, keep code unchanged.\r
470d0b27 275 ///\r
c7458efd 276 UINTN Syndrome;\r
470d0b27 277 ///\r
278 /// The physical address of the error. \r
279 ///\r
c7458efd 280 EFI_PHYSICAL_ADDRESS Address;\r
470d0b27 281 ///\r
282 /// The range, in bytes, within which the error address can be determined.\r
283 ///\r
c7458efd 284 UINTN Resolution;\r
285} EFI_MEMORY_EXTENDED_ERROR_DATA;\r
286\r
470d0b27 287///\r
288/// This extended data provides some context that consumers can use to locate a DIMM within the \r
289/// overall memory scheme. \r
290///\r
c7458efd 291typedef struct {\r
470d0b27 292 ///\r
293 /// The data header identifying the data. \r
294 ///\r
c7458efd 295 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 296 ///\r
297 /// The memory array number.\r
298 ///\r
c7458efd 299 UINT16 Array;\r
470d0b27 300 ///\r
301 /// The device number within that Array.\r
302 ///\r
c7458efd 303 UINT16 Device;\r
304} EFI_STATUS_CODE_DIMM_NUMBER;\r
305\r
306///\r
307/// Memory Module Mismatch Extended Error Data\r
470d0b27 308/// \r
c7458efd 309typedef struct {\r
470d0b27 310 ///\r
311 /// The data header identifying the data.\r
312 ///\r
c7458efd 313 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 314 ///\r
315 /// The instance number of the memory module that does not match. \r
316 ///\r
c7458efd 317 EFI_STATUS_CODE_DIMM_NUMBER Instance;\r
318} EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA;\r
319\r
320///\r
321/// Memory Range Extended Data\r
470d0b27 322/// This extended data may be used to convey the specifics of a memory range. Ranges are specified \r
323/// with a start address and a length.\r
c7458efd 324///\r
325typedef struct {\r
470d0b27 326 ///\r
327 /// The data header identifying the data. \r
328 ///\r
c7458efd 329 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 330 ///\r
331 /// The starting address of the memory range. \r
332 ///\r
c7458efd 333 EFI_PHYSICAL_ADDRESS Start;\r
470d0b27 334 ///\r
335 /// The length in bytes of the memory range.\r
336 ///\r
c7458efd 337 EFI_PHYSICAL_ADDRESS Length;\r
338} EFI_MEMORY_RANGE_EXTENDED_DATA;\r
339\r
340///\r
341/// Extended Error Data for Assert\r
470d0b27 342/// The data indicates the location of the assertion that failed in the source code. This information \r
343/// includes the file name and line number that are necessary to find the failing assertion in source code.\r
c7458efd 344///\r
345typedef struct {\r
470d0b27 346 ///\r
347 /// The data header identifying the data.\r
348 /// \r
c7458efd 349 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 350 ///\r
351 /// The line number of the source file where the fault was generated.\r
352 ///\r
c7458efd 353 UINT32 LineNumber;\r
470d0b27 354 ///\r
355 /// The size in bytes of FileName.\r
356 ///\r
c7458efd 357 UINT32 FileNameSize;\r
470d0b27 358 ///\r
359 /// A pointer to a NULL-terminated ASCII or Unicode string that represents the file \r
360 /// name of the source file where the fault was generated. \r
361 ///\r
c7458efd 362 EFI_STATUS_CODE_STRING_DATA *FileName;\r
363} EFI_DEBUG_ASSERT_DATA;\r
364\r
365///\r
366/// System Context Data EBC/IA32/IPF\r
367///\r
368typedef union {\r
369 EFI_SYSTEM_CONTEXT_EBC SystemContextEbc;\r
370 EFI_SYSTEM_CONTEXT_IA32 SystemContextIa32;\r
371 EFI_SYSTEM_CONTEXT_IPF SystemContextIpf;\r
372} EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT;\r
373\r
470d0b27 374///\r
375/// This extended data allows the processor context that is present at the time of the exception to be \r
376/// reported with the exception. The format and contents of the context data varies depending on the \r
377/// processor architecture. \r
378///\r
c7458efd 379typedef struct {\r
470d0b27 380 ///\r
381 /// The data header identifying the data. \r
382 ///\r
c7458efd 383 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 384 ///\r
385 /// The system context. \r
386 ///\r
c7458efd 387 EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT Context;\r
388} EFI_STATUS_CODE_EXCEP_EXTENDED_DATA;\r
389\r
470d0b27 390///\r
391/// This extended data records information about a Start() function call. Start() is a member of \r
392/// the EFI 1.10 Driver Binding Protocol.\r
393///\r
c7458efd 394typedef struct {\r
470d0b27 395 /// \r
396 /// The data header identifying the data. \r
397 ///\r
c7458efd 398 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 399 ///\r
400 /// The controller handle. \r
401 ///\r
c7458efd 402 EFI_HANDLE ControllerHandle;\r
470d0b27 403 ///\r
404 /// The driver binding handle.\r
405 ///\r
c7458efd 406 EFI_HANDLE DriverBindingHandle;\r
470d0b27 407 /// \r
408 /// The size of the RemainingDevicePath. It is zero if the Start() function is \r
409 /// called with RemainingDevicePath = NULL. \r
410 ///\r
c7458efd 411 UINT16 DevicePathSize;\r
470d0b27 412 ///\r
413 /// Matches the RemainingDevicePath parameter being passed to the Start() \r
414 /// function. Note that this parameter is the variable-length device path and not a pointer \r
415 /// to the device path.\r
416 /// \r
c7458efd 417 UINT8 *RemainingDevicePath;\r
418} EFI_STATUS_CODE_START_EXTENDED_DATA;\r
419\r
420///\r
421/// Legacy Oprom extended data\r
470d0b27 422/// The device handle and ROM image base can be used by consumers to determine which option \r
423/// ROM failed. Due to the black-box nature of legacy option ROMs, the amount of information that \r
424/// can be obtained may be limited.\r
c7458efd 425///\r
426typedef struct {\r
470d0b27 427 ///\r
428 /// The data header identifying the data.\r
429 ///\r
c7458efd 430 EFI_STATUS_CODE_DATA DataHeader;\r
470d0b27 431 ///\r
432 /// The handle corresponding to the device that this legacy option ROM is being invoked.\r
433 ///\r
c7458efd 434 EFI_HANDLE DeviceHandle;\r
470d0b27 435 ///\r
436 /// The base address of the shadowed legacy ROM image. \r
437 /// May or may not point to the shadow RAM area. \r
438 ///\r
c7458efd 439 EFI_PHYSICAL_ADDRESS RomImageBase;\r
440} EFI_LEGACY_OPROM_EXTENDED_DATA;\r
441\r
442#pragma pack()\r
443\r
53f93f7e 444extern EFI_GUID gEfiStatusCodeSpecificDataGuid;\r
445\r
c7458efd 446//\r
447// EFI_COMPUTING_UNIT_MISMATCH_ATTRIBUTES\r
448// All other attributes are reserved for future use and\r
449// must be initialized to 0.\r
450//\r
451#define EFI_COMPUTING_UNIT_MISMATCH_SPEED 0x0001\r
452#define EFI_COMPUTING_UNIT_MISMATCH_FSB_SPEED 0x0002\r
453#define EFI_COMPUTING_UNIT_MISMATCH_FAMILY 0x0004\r
454#define EFI_COMPUTING_UNIT_MISMATCH_MODEL 0x0008\r
455#define EFI_COMPUTING_UNIT_MISMATCH_STEPPING 0x0010\r
456#define EFI_COMPUTING_UNIT_MISMATCH_CACHE_SIZE 0x0020\r
457#define EFI_COMPUTING_UNIT_MISMATCH_OEM1 0x1000\r
458#define EFI_COMPUTING_UNIT_MISMATCH_OEM2 0x2000\r
459#define EFI_COMPUTING_UNIT_MISMATCH_OEM3 0x4000\r
460#define EFI_COMPUTING_UNIT_MISMATCH_OEM4 0x8000\r
461\r
462\r
463\r
464//\r
465// Memory Error Granularities\r
466//\r
467#define EFI_MEMORY_ERROR_OTHER 0x01\r
468#define EFI_MEMORY_ERROR_UNKNOWN 0x02\r
469#define EFI_MEMORY_ERROR_DEVICE 0x03\r
470#define EFI_MEMORY_ERROR_PARTITION 0x04\r
471\r
472//\r
473// Memory Error Operations\r
474//\r
475#define EFI_MEMORY_OPERATION_OTHER 0x01\r
476#define EFI_MEMORY_OPERATION_UNKNOWN 0x02\r
477#define EFI_MEMORY_OPERATION_READ 0x03\r
478#define EFI_MEMORY_OPERATION_WRITE 0x04\r
479#define EFI_MEMORY_OPERATION_PARTIAL_WRITE 0x05\r
480\r
481//\r
482// Define shorthands to describe Group Operations\r
483// Many memory init operations are essentially group\r
484// operations.\r
485\r
486/// A shorthand to describe that the operation is performed\r
487/// on multiple devices within the array\r
488///\r
489#define EFI_MULTIPLE_MEMORY_DEVICE_OPERATION 0xfffe\r
490///\r
491/// A shorthand to describe that the operation is performed on all devices within the array\r
492///\r
493#define EFI_ALL_MEMORY_DEVICE_OPERATION 0xffff\r
494///\r
495/// A shorthand to describe that the operation is performed on multiple arrays\r
496///\r
497#define EFI_MULTIPLE_MEMORY_ARRAY_OPERATION 0xfffe\r
498///\r
499/// A shorthand to describe that the operation is performed on all the arrays\r
500///\r
501#define EFI_ALL_MEMORY_ARRAY_OPERATION 0xffff\r
502\r
53f93f7e 503#endif\r