]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Pi/PiHob.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Pi / PiHob.h
CommitLineData
c311f86b 1/** @file\r
00edb218 2 HOB related definitions in PI.\r
959ccb23 3\r
4e6fed27 4Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
9344f092 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
959ccb23 6\r
00edb218 7 @par Revision Reference:\r
4e6fed27 8 PI Version 1.6\r
959ccb23 9\r
10**/\r
11\r
12#ifndef __PI_HOB_H__\r
13#define __PI_HOB_H__\r
14\r
15//\r
16// HobType of EFI_HOB_GENERIC_HEADER.\r
fbb393ab 17//\r
00edb218
A
18#define EFI_HOB_TYPE_HANDOFF 0x0001\r
19#define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002\r
20#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003\r
21#define EFI_HOB_TYPE_GUID_EXTENSION 0x0004\r
22#define EFI_HOB_TYPE_FV 0x0005\r
23#define EFI_HOB_TYPE_CPU 0x0006\r
24#define EFI_HOB_TYPE_MEMORY_POOL 0x0007\r
25#define EFI_HOB_TYPE_FV2 0x0009\r
e8ade0ef 26#define EFI_HOB_TYPE_LOAD_PEIM_UNUSED 0x000A\r
2f54e77d 27#define EFI_HOB_TYPE_UEFI_CAPSULE 0x000B\r
4e6fed27 28#define EFI_HOB_TYPE_FV3 0x000C\r
00edb218
A
29#define EFI_HOB_TYPE_UNUSED 0xFFFE\r
30#define EFI_HOB_TYPE_END_OF_HOB_LIST 0xFFFF\r
959ccb23 31\r
dc53faa3 32///\r
fbb393ab 33/// Describes the format and size of the data inside the HOB.\r
dc53faa3 34/// All HOBs must contain this generic HOB header.\r
fbb393ab 35///\r
00edb218 36typedef struct {\r
1bf79370
LG
37 ///\r
38 /// Identifies the HOB data structure type.\r
39 ///\r
00edb218 40 UINT16 HobType;\r
1bf79370
LG
41 ///\r
42 /// The length in bytes of the HOB.\r
43 ///\r
00edb218 44 UINT16 HobLength;\r
1bf79370
LG
45 ///\r
46 /// This field must always be set to zero.\r
47 ///\r
00edb218 48 UINT32 Reserved;\r
959ccb23 49} EFI_HOB_GENERIC_HEADER;\r
50\r
51\r
dc53faa3 52///\r
af2dc6a7 53/// Value of version in EFI_HOB_HANDOFF_INFO_TABLE.\r
fbb393ab 54///\r
959ccb23 55#define EFI_HOB_HANDOFF_TABLE_VERSION 0x0009\r
dc53faa3 56\r
57///\r
fbb393ab 58/// Contains general state information used by the HOB producer phase.\r
dc53faa3 59/// This HOB must be the first one in the HOB list.\r
fbb393ab 60///\r
00edb218 61typedef struct {\r
1bf79370
LG
62 ///\r
63 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_HANDOFF.\r
64 ///\r
00edb218 65 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
66 ///\r
67 /// The version number pertaining to the PHIT HOB definition.\r
fbb393ab 68 /// This value is four bytes in length to provide an 8-byte aligned entry\r
1bf79370
LG
69 /// when it is combined with the 4-byte BootMode.\r
70 ///\r
00edb218 71 UINT32 Version;\r
1bf79370
LG
72 ///\r
73 /// The system boot mode as determined during the HOB producer phase.\r
74 ///\r
00edb218 75 EFI_BOOT_MODE BootMode;\r
1bf79370
LG
76 ///\r
77 /// The highest address location of memory that is allocated for use by the HOB producer\r
78 /// phase. This address must be 4-KB aligned to meet page restrictions of UEFI.\r
79 ///\r
00edb218 80 EFI_PHYSICAL_ADDRESS EfiMemoryTop;\r
1bf79370
LG
81 ///\r
82 /// The lowest address location of memory that is allocated for use by the HOB producer phase.\r
83 ///\r
00edb218 84 EFI_PHYSICAL_ADDRESS EfiMemoryBottom;\r
1bf79370 85 ///\r
fbb393ab 86 /// The highest address location of free memory that is currently available\r
1bf79370
LG
87 /// for use by the HOB producer phase.\r
88 ///\r
00edb218 89 EFI_PHYSICAL_ADDRESS EfiFreeMemoryTop;\r
1bf79370
LG
90 ///\r
91 /// The lowest address location of free memory that is available for use by the HOB producer phase.\r
92 ///\r
00edb218 93 EFI_PHYSICAL_ADDRESS EfiFreeMemoryBottom;\r
1bf79370
LG
94 ///\r
95 /// The end of the HOB list.\r
96 ///\r
00edb218 97 EFI_PHYSICAL_ADDRESS EfiEndOfHobList;\r
959ccb23 98} EFI_HOB_HANDOFF_INFO_TABLE;\r
99\r
fbb393ab 100///\r
dc53faa3 101/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the\r
102/// various attributes of the logical memory allocation. The type field will be used for\r
103/// subsequent inclusion in the UEFI memory map.\r
fbb393ab 104///\r
00edb218 105typedef struct {\r
dc53faa3 106 ///\r
242942b2 107 /// A GUID that defines the memory allocation region's type and purpose, as well as\r
dc53faa3 108 /// other fields within the memory allocation HOB. This GUID is used to define the\r
109 /// additional data within the HOB that may be present for the memory allocation HOB.\r
110 /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0\r
fbb393ab
LL
111 /// specification.\r
112 ///\r
00edb218 113 EFI_GUID Name;\r
dc53faa3 114\r
e31c47b9 115 ///\r
dc53faa3 116 /// The base address of memory allocated by this HOB. Type\r
117 /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0\r
118 /// specification.\r
e31c47b9 119 ///\r
00edb218 120 EFI_PHYSICAL_ADDRESS MemoryBaseAddress;\r
dc53faa3 121\r
fbb393ab 122 ///\r
dc53faa3 123 /// The length in bytes of memory allocated by this HOB.\r
fbb393ab 124 ///\r
00edb218 125 UINT64 MemoryLength;\r
dc53faa3 126\r
127 ///\r
128 /// Defines the type of memory allocated by this HOB. The memory type definition\r
129 /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined\r
130 /// in AllocatePages() in the UEFI 2.0 specification.\r
fbb393ab 131 ///\r
00edb218
A
132 EFI_MEMORY_TYPE MemoryType;\r
133\r
dc53faa3 134 ///\r
135 /// Padding for Itanium processor family\r
136 ///\r
00edb218 137 UINT8 Reserved[4];\r
959ccb23 138} EFI_HOB_MEMORY_ALLOCATION_HEADER;\r
139\r
dc53faa3 140///\r
fbb393ab
LL
141/// Describes all memory ranges used during the HOB producer\r
142/// phase that exist outside the HOB list. This HOB type\r
1bf79370
LG
143/// describes how memory is used, not the physical attributes of memory.\r
144///\r
00edb218 145typedef struct {\r
1bf79370
LG
146 ///\r
147 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.\r
148 ///\r
00edb218 149 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
150 ///\r
151 /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the\r
152 /// various attributes of the logical memory allocation.\r
153 ///\r
00edb218
A
154 EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;\r
155 //\r
ac644614 156 // Additional data pertaining to the "Name" Guid memory\r
00edb218
A
157 // may go here.\r
158 //\r
959ccb23 159} EFI_HOB_MEMORY_ALLOCATION;\r
160\r
161\r
dc53faa3 162///\r
fbb393ab 163/// Describes the memory stack that is produced by the HOB producer\r
af2dc6a7 164/// phase and upon which all post-memory-installed executable\r
dc53faa3 165/// content in the HOB producer phase is executing.\r
fbb393ab 166///\r
00edb218 167typedef struct {\r
1bf79370
LG
168 ///\r
169 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.\r
170 ///\r
00edb218 171 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
172 ///\r
173 /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the\r
174 /// various attributes of the logical memory allocation.\r
175 ///\r
00edb218 176 EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;\r
959ccb23 177} EFI_HOB_MEMORY_ALLOCATION_STACK;\r
178\r
dc53faa3 179///\r
fbb393ab 180/// Defines the location of the boot-strap\r
dc53faa3 181/// processor (BSP) BSPStore ("Backing Store Pointer Store").\r
fbb393ab 182/// This HOB is valid for the Itanium processor family only\r
dc53faa3 183/// register overflow store.\r
fbb393ab 184///\r
00edb218 185typedef struct {\r
1bf79370
LG
186 ///\r
187 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.\r
188 ///\r
00edb218 189 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
190 ///\r
191 /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the\r
192 /// various attributes of the logical memory allocation.\r
193 ///\r
00edb218 194 EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor;\r
959ccb23 195} EFI_HOB_MEMORY_ALLOCATION_BSP_STORE;\r
196\r
dc53faa3 197///\r
198/// Defines the location and entry point of the HOB consumer phase.\r
199///\r
959ccb23 200typedef struct {\r
1bf79370
LG
201 ///\r
202 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.\r
203 ///\r
00edb218 204 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
205 ///\r
206 /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the\r
207 /// various attributes of the logical memory allocation.\r
208 ///\r
00edb218 209 EFI_HOB_MEMORY_ALLOCATION_HEADER MemoryAllocationHeader;\r
1bf79370 210 ///\r
fbb393ab 211 /// The GUID specifying the values of the firmware file system name\r
1bf79370
LG
212 /// that contains the HOB consumer phase component.\r
213 ///\r
7b1bf9f6 214 EFI_GUID ModuleName;\r
1bf79370 215 ///\r
fbb393ab 216 /// The address of the memory-mapped firmware volume\r
1bf79370
LG
217 /// that contains the HOB consumer phase firmware file.\r
218 ///\r
7b1bf9f6 219 EFI_PHYSICAL_ADDRESS EntryPoint;\r
959ccb23 220} EFI_HOB_MEMORY_ALLOCATION_MODULE;\r
221\r
dc53faa3 222///\r
af2dc6a7 223/// The resource type.\r
fbb393ab 224///\r
959ccb23 225typedef UINT32 EFI_RESOURCE_TYPE;\r
226\r
227//\r
228// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.\r
fbb393ab 229//\r
00edb218
A
230#define EFI_RESOURCE_SYSTEM_MEMORY 0x00000000\r
231#define EFI_RESOURCE_MEMORY_MAPPED_IO 0x00000001\r
232#define EFI_RESOURCE_IO 0x00000002\r
233#define EFI_RESOURCE_FIRMWARE_DEVICE 0x00000003\r
234#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 0x00000004\r
235#define EFI_RESOURCE_MEMORY_RESERVED 0x00000005\r
236#define EFI_RESOURCE_IO_RESERVED 0x00000006\r
237#define EFI_RESOURCE_MAX_MEMORY_TYPE 0x00000007\r
959ccb23 238\r
dc53faa3 239///\r
af2dc6a7 240/// A type of recount attribute type.\r
fbb393ab 241///\r
959ccb23 242typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;\r
243\r
244//\r
245// These types can be ORed together as needed.\r
246//\r
b6ed1075 247// The following attributes are used to describe settings\r
959ccb23 248//\r
b6ed1075 249#define EFI_RESOURCE_ATTRIBUTE_PRESENT 0x00000001\r
250#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED 0x00000002\r
251#define EFI_RESOURCE_ATTRIBUTE_TESTED 0x00000004\r
252#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED 0x00000080\r
ecde59b2
SZ
253//\r
254// This is typically used as memory cacheability attribute today.\r
255// NOTE: Since PI spec 1.4, please use EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED\r
256// as Physical write protected attribute, and EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED\r
257// means Memory cacheability attribute: The memory supports being programmed with\r
258// a writeprotected cacheable attribute.\r
259//\r
b6ed1075 260#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED 0x00000100\r
261#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED 0x00000200\r
6c98edac 262#define EFI_RESOURCE_ATTRIBUTE_PERSISTENT 0x00800000\r
959ccb23 263//\r
b6ed1075 264// The rest of the attributes are used to describe capabilities\r
959ccb23 265//\r
7b1bf9f6 266#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC 0x00000008\r
267#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC 0x00000010\r
268#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1 0x00000020\r
269#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2 0x00000040\r
7b1bf9f6 270#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE 0x00000400\r
271#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE 0x00000800\r
00edb218 272#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE 0x00001000\r
7b1bf9f6 273#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE 0x00002000\r
274#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO 0x00004000\r
275#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO 0x00008000\r
276#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO 0x00010000\r
277#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED 0x00020000\r
b6ed1075 278#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTABLE 0x00100000\r
ecde59b2
SZ
279//\r
280// This is typically used as memory cacheability attribute today.\r
281// NOTE: Since PI spec 1.4, please use EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE\r
282// as Memory capability attribute: The memory supports being protected from processor\r
283// writes, and EFI_RESOURCE_ATTRIBUTE_WRITE_PROTEC TABLE means Memory cacheability attribute:\r
284// The memory supports being programmed with a writeprotected cacheable attribute.\r
285//\r
b6ed1075 286#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE 0x00200000\r
287#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE 0x00400000\r
6c98edac 288#define EFI_RESOURCE_ATTRIBUTE_PERSISTABLE 0x01000000\r
959ccb23 289\r
ecde59b2 290#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED 0x00040000\r
06f7f845 291#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE 0x00080000\r
ecde59b2 292\r
e919c766
SZ
293//\r
294// Physical memory relative reliability attribute. This\r
295// memory provides higher reliability relative to other\r
296// memory in the system. If all memory has the same\r
297// reliability, then this bit is not used.\r
298//\r
299#define EFI_RESOURCE_ATTRIBUTE_MORE_RELIABLE 0x02000000\r
300\r
dc53faa3 301///\r
fbb393ab 302/// Describes the resource properties of all fixed,\r
dc53faa3 303/// nonrelocatable resource ranges found on the processor\r
304/// host bus during the HOB producer phase.\r
fbb393ab 305///\r
00edb218 306typedef struct {\r
1bf79370
LG
307 ///\r
308 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.\r
309 ///\r
00edb218 310 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
311 ///\r
312 /// A GUID representing the owner of the resource. This GUID is used by HOB\r
313 /// consumer phase components to correlate device ownership of a resource.\r
314 ///\r
00edb218 315 EFI_GUID Owner;\r
1bf79370 316 ///\r
af2dc6a7 317 /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.\r
1bf79370 318 ///\r
00edb218 319 EFI_RESOURCE_TYPE ResourceType;\r
1bf79370
LG
320 ///\r
321 /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.\r
322 ///\r
00edb218 323 EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;\r
1bf79370 324 ///\r
fbb393ab 325 /// The physical start address of the resource region.\r
1bf79370 326 ///\r
00edb218 327 EFI_PHYSICAL_ADDRESS PhysicalStart;\r
1bf79370 328 ///\r
af2dc6a7 329 /// The number of bytes of the resource region.\r
1bf79370 330 ///\r
00edb218 331 UINT64 ResourceLength;\r
959ccb23 332} EFI_HOB_RESOURCE_DESCRIPTOR;\r
333\r
dc53faa3 334///\r
fbb393ab 335/// Allows writers of executable content in the HOB producer phase to\r
dc53faa3 336/// maintain and manage HOBs with specific GUID.\r
fbb393ab 337///\r
00edb218 338typedef struct {\r
1bf79370
LG
339 ///\r
340 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.\r
341 ///\r
00edb218 342 EFI_HOB_GENERIC_HEADER Header;\r
dc53faa3 343 ///\r
1bf79370 344 /// A GUID that defines the contents of this HOB.\r
dc53faa3 345 ///\r
1bf79370
LG
346 EFI_GUID Name;\r
347 //\r
348 // Guid specific data goes here\r
349 //\r
959ccb23 350} EFI_HOB_GUID_TYPE;\r
351\r
dc53faa3 352///\r
353/// Details the location of firmware volumes that contain firmware files.\r
fbb393ab 354///\r
959ccb23 355typedef struct {\r
1bf79370
LG
356 ///\r
357 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV.\r
358 ///\r
00edb218 359 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
360 ///\r
361 /// The physical memory-mapped base address of the firmware volume.\r
362 ///\r
7b1bf9f6 363 EFI_PHYSICAL_ADDRESS BaseAddress;\r
1bf79370
LG
364 ///\r
365 /// The length in bytes of the firmware volume.\r
366 ///\r
7b1bf9f6 367 UINT64 Length;\r
959ccb23 368} EFI_HOB_FIRMWARE_VOLUME;\r
369\r
dc53faa3 370///\r
fbb393ab 371/// Details the location of a firmware volume that was extracted\r
dc53faa3 372/// from a file within another firmware volume.\r
fbb393ab 373///\r
959ccb23 374typedef struct {\r
1bf79370
LG
375 ///\r
376 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV2.\r
377 ///\r
00edb218 378 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
379 ///\r
380 /// The physical memory-mapped base address of the firmware volume.\r
381 ///\r
00edb218 382 EFI_PHYSICAL_ADDRESS BaseAddress;\r
1bf79370
LG
383 ///\r
384 /// The length in bytes of the firmware volume.\r
385 ///\r
00edb218 386 UINT64 Length;\r
1bf79370
LG
387 ///\r
388 /// The name of the firmware volume.\r
389 ///\r
00edb218 390 EFI_GUID FvName;\r
1bf79370 391 ///\r
af2dc6a7 392 /// The name of the firmware file that contained this firmware volume.\r
1bf79370 393 ///\r
00edb218 394 EFI_GUID FileName;\r
959ccb23 395} EFI_HOB_FIRMWARE_VOLUME2;\r
396\r
4e6fed27
SZ
397///\r
398/// Details the location of a firmware volume that was extracted\r
399/// from a file within another firmware volume.\r
400///\r
401typedef struct {\r
402 ///\r
403 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV3.\r
404 ///\r
405 EFI_HOB_GENERIC_HEADER Header;\r
406 ///\r
407 /// The physical memory-mapped base address of the firmware volume.\r
408 ///\r
409 EFI_PHYSICAL_ADDRESS BaseAddress;\r
410 ///\r
411 /// The length in bytes of the firmware volume.\r
412 ///\r
413 UINT64 Length;\r
414 ///\r
415 /// The authentication status.\r
416 ///\r
417 UINT32 AuthenticationStatus;\r
418 ///\r
419 /// TRUE if the FV was extracted as a file within another firmware volume.\r
420 /// FALSE otherwise.\r
421 ///\r
422 BOOLEAN ExtractedFv;\r
423 ///\r
424 /// The name of the firmware volume.\r
425 /// Valid only if IsExtractedFv is TRUE.\r
426 ///\r
427 EFI_GUID FvName;\r
428 ///\r
429 /// The name of the firmware file that contained this firmware volume.\r
430 /// Valid only if IsExtractedFv is TRUE.\r
431 ///\r
432 EFI_GUID FileName;\r
433} EFI_HOB_FIRMWARE_VOLUME3;\r
959ccb23 434\r
dc53faa3 435///\r
436/// Describes processor information, such as address space and I/O space capabilities.\r
437///\r
00edb218 438typedef struct {\r
1bf79370
LG
439 ///\r
440 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_CPU.\r
441 ///\r
00edb218 442 EFI_HOB_GENERIC_HEADER Header;\r
1bf79370
LG
443 ///\r
444 /// Identifies the maximum physical memory addressability of the processor.\r
445 ///\r
00edb218 446 UINT8 SizeOfMemorySpace;\r
1bf79370
LG
447 ///\r
448 /// Identifies the maximum physical I/O addressability of the processor.\r
449 ///\r
00edb218 450 UINT8 SizeOfIoSpace;\r
1bf79370
LG
451 ///\r
452 /// This field will always be set to zero.\r
453 ///\r
00edb218 454 UINT8 Reserved[6];\r
959ccb23 455} EFI_HOB_CPU;\r
456\r
457\r
dc53faa3 458///\r
459/// Describes pool memory allocations.\r
fbb393ab 460///\r
00edb218 461typedef struct {\r
1bf79370
LG
462 ///\r
463 /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_POOL.\r
464 ///\r
00edb218 465 EFI_HOB_GENERIC_HEADER Header;\r
959ccb23 466} EFI_HOB_MEMORY_POOL;\r
467\r
9e8485c5 468///\r
469/// Each UEFI capsule HOB details the location of a UEFI capsule. It includes a base address and length\r
470/// which is based upon memory blocks with a EFI_CAPSULE_HEADER and the associated\r
17664848 471/// CapsuleImageSize-based payloads. These HOB's shall be created by the PEI PI firmware\r
9e8485c5 472/// sometime after the UEFI UpdateCapsule service invocation with the\r
473/// CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE flag set in the EFI_CAPSULE_HEADER.\r
474///\r
475typedef struct {\r
476 ///\r
477 /// The HOB generic header where Header.HobType = EFI_HOB_TYPE_UEFI_CAPSULE.\r
478 ///\r
479 EFI_HOB_GENERIC_HEADER Header;\r
fbb393ab 480\r
9e8485c5 481 ///\r
482 /// The physical memory-mapped base address of an UEFI capsule. This value is set to\r
483 /// point to the base of the contiguous memory of the UEFI capsule.\r
af2dc6a7 484 /// The length of the contiguous memory in bytes.\r
9e8485c5 485 ///\r
486 EFI_PHYSICAL_ADDRESS BaseAddress;\r
487 UINT64 Length;\r
488} EFI_HOB_UEFI_CAPSULE;\r
489\r
dc53faa3 490///\r
af2dc6a7 491/// Union of all the possible HOB Types.\r
dc53faa3 492///\r
959ccb23 493typedef union {\r
00edb218
A
494 EFI_HOB_GENERIC_HEADER *Header;\r
495 EFI_HOB_HANDOFF_INFO_TABLE *HandoffInformationTable;\r
496 EFI_HOB_MEMORY_ALLOCATION *MemoryAllocation;\r
497 EFI_HOB_MEMORY_ALLOCATION_BSP_STORE *MemoryAllocationBspStore;\r
498 EFI_HOB_MEMORY_ALLOCATION_STACK *MemoryAllocationStack;\r
499 EFI_HOB_MEMORY_ALLOCATION_MODULE *MemoryAllocationModule;\r
500 EFI_HOB_RESOURCE_DESCRIPTOR *ResourceDescriptor;\r
501 EFI_HOB_GUID_TYPE *Guid;\r
502 EFI_HOB_FIRMWARE_VOLUME *FirmwareVolume;\r
07ad9b81 503 EFI_HOB_FIRMWARE_VOLUME2 *FirmwareVolume2;\r
4e6fed27 504 EFI_HOB_FIRMWARE_VOLUME3 *FirmwareVolume3;\r
00edb218
A
505 EFI_HOB_CPU *Cpu;\r
506 EFI_HOB_MEMORY_POOL *Pool;\r
9e8485c5 507 EFI_HOB_UEFI_CAPSULE *Capsule;\r
00edb218 508 UINT8 *Raw;\r
959ccb23 509} EFI_PEI_HOB_POINTERS;\r
510\r
511\r
fbb393ab 512#endif\r