1 /*++ 2 3 Copyright (c) 2004 - 2007, Intel Corporation. All rights reserved.<BR> 4 This program and the accompanying materials 5 are licensed and made available under the terms and conditions of the BSD License 6 which accompanies this distribution. The full text of the license may be found at 7 http://opensource.org/licenses/bsd-license.php 8 9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12 Module Name: 13 14 StatusCodeDataTypeId.h 15 16 Abstract: 17 18 GUID used to identify id for the caller who is initiating the Status Code. 19 20 --*/ 21 22 #ifndef _STATUS_CODE_DATA_TYPE_ID_H__ 23 #define _STATUS_CODE_DATA_TYPE_ID_H__ 24 25 26 #include "EfiStatusCode.h" 27 #include EFI_PROTOCOL_DEFINITION (DebugSupport) 28 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A) 29 #include EFI_PROTOCOL_DEFINITION (HiiDatabase) 30 #else 31 #include EFI_PROTOCOL_DEFINITION (Hii) 32 #endif 33 // 34 // The size of string 35 // 36 #define EFI_STATUS_CODE_DATA_MAX_STRING_SIZE 150 37 38 // 39 // This is the max data size including all the headers which can be passed 40 // as Status Code data. This data should be multiple of 8 byte 41 // to avoid any kind of boundary issue. Also, sum of this data size (inclusive 42 // of size of EFI_STATUS_CODE_DATA should not exceed the max record size of 43 // data hub 44 // 45 #define EFI_STATUS_CODE_DATA_MAX_SIZE 200 46 47 // 48 // String Data Type defintion. This is part of Status Code Specification 49 // 50 #define EFI_STATUS_CODE_DATA_TYPE_STRING_GUID \ 51 { \ 52 0x92D11080, 0x496F, 0x4D95, {0xBE, 0x7E, 0x03, 0x74, 0x88, 0x38, 0x2B, 0x0A} \ 53 } 54 55 extern EFI_GUID gEfiStatusCodeDataTypeStringGuid; 56 57 // 58 // This GUID indicates that the format of the accompanying data depends 59 // upon the Status Code Value, but follows this Specification 60 // 61 #define EFI_STATUS_CODE_SPECIFIC_DATA_GUID \ 62 { \ 63 0x335984bd, 0xe805, 0x409a, {0xb8, 0xf8, 0xd2, 0x7e, 0xce, 0x5f, 0xf7, 0xa6} \ 64 } 65 66 extern EFI_GUID gEfiStatusCodeSpecificDataGuid; 67 68 #pragma pack(1) 69 70 typedef enum { 71 EfiStringAscii, 72 EfiStringUnicode, 73 EfiStringToken 74 } EFI_STRING_TYPE; 75 76 // 77 // HII string token 78 // 79 typedef struct { 80 EFI_HII_HANDLE Handle; 81 STRING_REF Token; 82 } EFI_STATUS_CODE_STRING_TOKEN; 83 84 typedef union { 85 CHAR8 *Ascii; 86 CHAR16 *Unicode; 87 EFI_STATUS_CODE_STRING_TOKEN Hii; 88 } EFI_STATUS_CODE_STRING; 89 90 typedef struct { 91 EFI_STATUS_CODE_DATA DataHeader; 92 EFI_STRING_TYPE StringType; 93 EFI_STATUS_CODE_STRING String; 94 } EFI_STATUS_CODE_STRING_DATA; 95 96 #pragma pack() 97 // 98 // Debug Assert Data. This is part of Status Code Specification 99 // 100 #define EFI_STATUS_CODE_DATA_TYPE_ASSERT_GUID \ 101 { \ 102 0xDA571595, 0x4D99, 0x487C, {0x82, 0x7C, 0x26, 0x22, 0x67, 0x7D, 0x33, 0x07} \ 103 } 104 105 extern EFI_GUID gEfiStatusCodeDataTypeAssertGuid; 106 107 // 108 // Exception Data type (CPU REGS) 109 // 110 #define EFI_STATUS_CODE_DATA_TYPE_EXCEPTION_HANDLER_GUID \ 111 { \ 112 0x3BC2BD12, 0xAD2E, 0x11D5, {0x87, 0xDD, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9} \ 113 } 114 115 extern EFI_GUID gEfiStatusCodeDataTypeExceptionHandlerGuid; 116 117 // 118 // Debug DataType defintions. User Defined Data Types. 119 // 120 #define EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID \ 121 { \ 122 0x9A4E9246, 0xD553, 0x11D5, {0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xb9} \ 123 } 124 125 #pragma pack(1) 126 127 typedef struct { 128 UINT32 ErrorLevel; 129 // 130 // 12 * sizeof (UINT64) Var Arg stack 131 // 132 // ascii DEBUG () Format string 133 // 134 } EFI_DEBUG_INFO; 135 136 #pragma pack() 137 138 extern EFI_GUID gEfiStatusCodeDataTypeDebugGuid; 139 140 // 141 // Progress Code. User Defined Data Type Guid. 142 // 143 #define EFI_STATUS_CODE_DATA_TYPE_ERROR_GUID \ 144 { \ 145 0xAB359CE3, 0x99B3, 0xAE18, {0xC8, 0x9D, 0x95, 0xD3, 0xB0, 0x72, 0xE1, 0x9B} \ 146 } 147 148 extern EFI_GUID gEfiStatusCodeDataTypeErrorGuid; 149 150 // 151 // declaration for EFI_EXP_DATA. This may change 152 // 153 typedef UINTN EFI_EXP_DATA; 154 155 // 156 // Voltage Extended Error Data 157 // 158 typedef struct { 159 EFI_STATUS_CODE_DATA DataHeader; 160 EFI_EXP_DATA Voltage; 161 EFI_EXP_DATA Threshold; 162 } EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA; 163 164 // 165 // Microcode Update Extended Error Data 166 // 167 typedef struct { 168 EFI_STATUS_CODE_DATA DataHeader; 169 UINT32 Version; 170 } EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA; 171 172 // 173 // Asynchronous Timer Extended Error Data 174 // 175 typedef struct { 176 EFI_STATUS_CODE_DATA DataHeader; 177 EFI_EXP_DATA TimerLimit; 178 } EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA; 179 180 // 181 // Host Processor Mismatch Extended Error Data 182 // 183 typedef struct { 184 EFI_STATUS_CODE_DATA DataHeader; 185 UINT32 Instance; 186 UINT16 Attributes; 187 } EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA; 188 189 // 190 // EFI_COMPUTING_UNIT_MISMATCH_ATTRIBUTES 191 // All other attributes are reserved for future use and 192 // must be initialized to 0. 193 // 194 #define EFI_COMPUTING_UNIT_MISMATCH_SPEED 0x0001 195 #define EFI_COMPUTING_UNIT_MISMATCH_FSB_SPEED 0x0002 196 #define EFI_COMPUTING_UNIT_MISMATCH_FAMILY 0x0004 197 #define EFI_COMPUTING_UNIT_MISMATCH_MODEL 0x0008 198 #define EFI_COMPUTING_UNIT_MISMATCH_STEPPING 0x0010 199 #define EFI_COMPUTING_UNIT_MISMATCH_CACHE_SIZE 0x0020 200 #define EFI_COMPUTING_UNIT_MISMATCH_OEM1 0x1000 201 #define EFI_COMPUTING_UNIT_MISMATCH_OEM2 0x2000 202 #define EFI_COMPUTING_UNIT_MISMATCH_OEM3 0x4000 203 #define EFI_COMPUTING_UNIT_MISMATCH_OEM4 0x8000 204 205 // 206 // Thermal Extended Error Data 207 // 208 typedef struct { 209 EFI_STATUS_CODE_DATA DataHeader; 210 EFI_EXP_DATA Temperature; 211 EFI_EXP_DATA Threshold; 212 } EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA; 213 214 // 215 // Processor Disabled Extended Error Data 216 // 217 typedef struct { 218 EFI_STATUS_CODE_DATA DataHeader; 219 UINT32 Cause; 220 BOOLEAN SoftwareDisabled; 221 } EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA; 222 223 typedef enum { 224 EfiInitCacheDataOnly, 225 EfiInitCacheInstrOnly, 226 EfiInitCacheBoth, 227 EfiInitCacheUnspecified 228 } EFI_INIT_CACHE_TYPE; 229 230 // 231 // Embedded cache init extended data 232 // 233 typedef struct { 234 EFI_STATUS_CODE_DATA DataHeader; 235 UINT32 Level; 236 EFI_INIT_CACHE_TYPE Type; 237 } EFI_CACHE_INIT_DATA; 238 239 // 240 // Memory Extended Error Data 241 // 242 // 243 // Memory Error Granularity Definition 244 // 245 typedef UINT8 EFI_MEMORY_ERROR_GRANULARITY; 246 247 // 248 // Memory Error Operation Definition 249 // 250 typedef UINT8 EFI_MEMORY_ERROR_OPERATION; 251 252 typedef struct { 253 EFI_STATUS_CODE_DATA DataHeader; 254 EFI_MEMORY_ERROR_GRANULARITY Granularity; 255 EFI_MEMORY_ERROR_OPERATION Operation; 256 UINTN Syndrome; 257 EFI_PHYSICAL_ADDRESS Address; 258 UINTN Resolution; 259 } EFI_MEMORY_EXTENDED_ERROR_DATA; 260 261 // 262 // Memory Error Granularities 263 // 264 #define EFI_MEMORY_ERROR_OTHER 0x01 265 #define EFI_MEMORY_ERROR_UNKNOWN 0x02 266 #define EFI_MEMORY_ERROR_DEVICE 0x03 267 #define EFI_MEMORY_ERROR_PARTITION 0x04 268 269 // 270 // Memory Error Operations 271 // 272 #define EFI_MEMORY_OPERATION_OTHER 0x01 273 #define EFI_MEMORY_OPERATION_UNKNOWN 0x02 274 #define EFI_MEMORY_OPERATION_READ 0x03 275 #define EFI_MEMORY_OPERATION_WRITE 0x04 276 #define EFI_MEMORY_OPERATION_PARTIAL_WRITE 0x05 277 278 // 279 // Define shorthands to describe Group Operations 280 // Many memory init operations are essentially group 281 // operations. 282 // A shorthand to describe that the operation is performed 283 // on multiple devices within the array 284 // 285 #define EFI_MULTIPLE_MEMORY_DEVICE_OPERATION 0xfffe 286 // 287 // A shorthand to describe that the operation is performed // on all devices within the array 288 // 289 #define EFI_ALL_MEMORY_DEVICE_OPERATION 0xffff 290 // 291 // A shorthand to describe that the operation is performed // on multiple arrays 292 // 293 #define EFI_MULTIPLE_MEMORY_ARRAY_OPERATION 0xfffe 294 // 295 // A shorthand to describe that the operation is performed // on all the arrays 296 // 297 #define EFI_ALL_MEMORY_ARRAY_OPERATION 0xffff 298 299 // 300 // DIMM number 301 // 302 #pragma pack(1) 303 typedef struct { 304 EFI_STATUS_CODE_DATA DataHeader; 305 UINT16 Array; 306 UINT16 Device; 307 } EFI_STATUS_CODE_DIMM_NUMBER; 308 #pragma pack() 309 // 310 // Memory Module Mismatch Extended Error Data 311 // 312 typedef struct { 313 EFI_STATUS_CODE_DATA DataHeader; 314 EFI_STATUS_CODE_DIMM_NUMBER Instance; 315 } EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA; 316 317 // 318 // Memory Range Extended Data 319 // 320 typedef struct { 321 EFI_STATUS_CODE_DATA DataHeader; 322 EFI_PHYSICAL_ADDRESS Start; 323 EFI_PHYSICAL_ADDRESS Length; 324 } EFI_MEMORY_RANGE_EXTENDED_DATA; 325 326 // 327 // Device handle Extended Data. Used for many 328 // errors and progress codes to point to the device. 329 // 330 typedef struct { 331 EFI_STATUS_CODE_DATA DataHeader; 332 EFI_HANDLE Handle; 333 } EFI_DEVICE_HANDLE_EXTENDED_DATA; 334 335 // 336 // Resource Allocation Failure Extended Error Data 337 // 338 typedef struct { 339 EFI_STATUS_CODE_DATA DataHeader; 340 EFI_DEVICE_PATH_PROTOCOL *DevicePath; 341 UINT32 Bar; 342 VOID *ReqRes; 343 VOID *AllocRes; 344 } EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA; 345 346 // 347 // Extended Error Data for Assert 348 // 349 typedef struct { 350 EFI_STATUS_CODE_DATA DataHeader; 351 UINT32 LineNumber; 352 UINT32 FileNameSize; 353 EFI_STATUS_CODE_STRING_DATA *FileName; 354 } EFI_DEBUG_ASSERT_DATA; 355 356 // 357 // System Context Data EBC/IA32/IPF 358 // 359 typedef union { 360 EFI_SYSTEM_CONTEXT_EBC SystemContextEbc; 361 EFI_SYSTEM_CONTEXT_IA32 SystemContextIa32; 362 EFI_SYSTEM_CONTEXT_IPF SystemContextIpf; 363 } EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT; 364 365 typedef struct { 366 EFI_STATUS_CODE_DATA DataHeader; 367 EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT Context; 368 } EFI_STATUS_CODE_EXCEP_EXTENDED_DATA; 369 370 // 371 // Legacy Oprom extended data 372 // 373 typedef struct { 374 EFI_STATUS_CODE_DATA DataHeader; 375 EFI_HANDLE DeviceHandle; 376 EFI_PHYSICAL_ADDRESS RomImageBase; 377 } EFI_LEGACY_OPROM_EXTENDED_DATA; 378 379 // 380 // Progress Code. User Defined Data Type Guid. 381 // 382 #define EFI_STATUS_CODE_DATA_TYPE_PROGRESS_CODE_GUID \ 383 { \ 384 0xA356AB39, 0x35C4, 0x35DA, {0xB3, 0x7A, 0xF8, 0xEA, 0x9E, 0x8B, 0x36, 0xA3} \ 385 } 386 387 extern EFI_GUID gEfiStatusCodeDataTypeProgressCodeGuid; 388 389 #endif 390