10 static bool compare_guid(
const EFI_GUID *guid1,
const EFI_GUID *guid2)
12 return !
memcmp(guid1, guid2,
sizeof(EFI_GUID));
22 die(
"Call fsp_set_runtime() before this call!\n");
29 EFI_PEI_HOB_POINTERS hob;
34 hob.Raw = (UINT8 *)hob_start;
37 while (!END_OF_HOB_LIST(hob.Raw)) {
38 if (hob.Header->HobType ==
type)
40 if (GET_HOB_LENGTH(hob.Raw) <
sizeof(*hob.Header))
42 hob.Raw = GET_NEXT_HOB(hob.Raw);
50 EFI_PEI_HOB_POINTERS hob;
53 while ((hob.Raw =
get_next_hob(EFI_HOB_TYPE_GUID_EXTENSION, hob.Raw))
57 hob.Raw = GET_NEXT_HOB(hob.Raw);
67 EFI_PEI_HOB_POINTERS hob;
69 hob.Raw = (UINT8 *)hob_start;
70 while ((hob.Raw =
get_next_hob(EFI_HOB_TYPE_RESOURCE_DESCRIPTOR,
74 hob.Raw = GET_NEXT_HOB(hob.Raw);
81 EFI_MEMORY_TYPE hob_mem_type;
82 EFI_HOB_MEMORY_ALLOCATION *hob_memory_ptr = hob_ptr;
83 u64 hob_mem_addr = hob_memory_ptr->AllocDescriptor.MemoryBaseAddress;
84 u64 hob_mem_length = hob_memory_ptr->AllocDescriptor.MemoryLength;
86 hob_mem_type = hob_memory_ptr->AllocDescriptor.MemoryType;
88 static const char *hob_mem_type_names[15] = {
89 [EfiReservedMemoryType] =
"EfiReservedMemoryType",
90 [EfiLoaderCode] =
"EfiLoaderCode",
91 [EfiLoaderData] =
"EfiLoaderData",
92 [EfiBootServicesCode] =
"EfiBootServicesCode",
93 [EfiBootServicesData] =
"EfiBootServicesData",
94 [EfiRuntimeServicesCode] =
"EfiRuntimeServicesCode",
95 [EfiRuntimeServicesData] =
"EfiRuntimeServicesData",
96 [EfiConventionalMemory] =
"EfiConventionalMemory",
97 [EfiUnusableMemory] =
"EfiUnusableMemory",
98 [EfiACPIReclaimMemory] =
"EfiACPIReclaimMemory",
99 [EfiACPIMemoryNVS] =
"EfiACPIMemoryNVS",
100 [EfiMemoryMappedIO] =
"EfiMemoryMappedIO",
101 [EfiMemoryMappedIOPortSpace] =
"EfiMemoryMappedIOPortSpace",
102 [EfiPalCode] =
"EfiPalCode",
103 [EfiMaxMemoryType] =
"EfiMaxMemoryType",
106 if (hob_mem_type >=
ARRAY_SIZE(hob_mem_type_names))
107 hob_mem_type = EfiReservedMemoryType;
110 hob_mem_type_names[hob_mem_type],
113 (
unsigned long)hob_mem_addr,
114 (
unsigned long)hob_mem_length);
119 EFI_HOB_RESOURCE_DESCRIPTOR *hob_resource_ptr =
120 (EFI_HOB_RESOURCE_DESCRIPTOR *)hob_ptr;
121 u32 hob_res_type = hob_resource_ptr->ResourceType;
122 u32 hob_res_attr = hob_resource_ptr->ResourceAttribute;
123 u64 hob_res_addr = hob_resource_ptr->PhysicalStart;
124 u64 hob_res_length = hob_resource_ptr->ResourceLength;
125 const char *hob_res_type_str =
NULL;
128 switch (hob_res_type) {
129 case EFI_RESOURCE_SYSTEM_MEMORY:
130 hob_res_type_str =
"EFI_RESOURCE_SYSTEM_MEMORY";
132 case EFI_RESOURCE_MEMORY_MAPPED_IO:
133 hob_res_type_str =
"EFI_RESOURCE_MEMORY_MAPPED_IO";
135 case EFI_RESOURCE_IO:
136 hob_res_type_str =
"EFI_RESOURCE_IO";
138 case EFI_RESOURCE_FIRMWARE_DEVICE:
139 hob_res_type_str =
"EFI_RESOURCE_FIRMWARE_DEVICE";
141 case EFI_RESOURCE_MEMORY_MAPPED_IO_PORT:
142 hob_res_type_str =
"EFI_RESOURCE_MEMORY_MAPPED_IO_PORT";
144 case EFI_RESOURCE_MEMORY_RESERVED:
145 hob_res_type_str =
"EFI_RESOURCE_MEMORY_RESERVED";
147 case EFI_RESOURCE_IO_RESERVED:
148 hob_res_type_str =
"EFI_RESOURCE_IO_RESERVED";
150 case EFI_RESOURCE_MAX_MEMORY_TYPE:
151 hob_res_type_str =
"EFI_RESOURCE_MAX_MEMORY_TYPE";
154 hob_res_type_str =
"EFI_RESOURCE_UNKNOWN";
159 hob_res_type_str, hob_res_type, hob_res_attr);
161 (
unsigned long)hob_res_addr,
162 (
unsigned long)hob_res_length);
167 EFI_PEI_HOB_POINTERS hob;
168 const char *hob_type_string;
169 const EFI_GUID fsp_reserved_guid =
170 FSP_RESERVED_MEMORY_RESOURCE_HOB_GUID;
171 const EFI_GUID mrc_guid = FSP_NON_VOLATILE_STORAGE_HOB_GUID;
172 const EFI_GUID bootldr_tmp_mem_guid =
173 FSP_BOOTLOADER_TEMP_MEMORY_HOB_GUID;
174 const EFI_GUID bootldr_tolum_guid = FSP_BOOTLOADER_TOLUM_HOB_GUID;
175 const EFI_GUID graphics_info_guid = EFI_PEI_GRAPHICS_INFO_HOB_GUID;
178 hob.Header = (EFI_HOB_GENERIC_HEADER *)hob_ptr;
179 switch (hob.Header->HobType) {
181 hob_type_string =
"EFI_HOB_TYPE_HANDOFF";
183 case EFI_HOB_TYPE_MEMORY_ALLOCATION:
184 hob_type_string =
"EFI_HOB_TYPE_MEMORY_ALLOCATION";
186 case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
188 hob_type_string =
"FSP_RESERVED_MEMORY_RESOURCE_HOB";
189 else if (
compare_guid(&bootldr_tolum_guid, &hob.Guid->Name))
190 hob_type_string =
"FSP_BOOTLOADER_TOLUM_HOB_GUID";
192 hob_type_string =
"EFI_HOB_TYPE_RESOURCE_DESCRIPTOR";
194 case EFI_HOB_TYPE_GUID_EXTENSION:
195 if (
compare_guid(&bootldr_tmp_mem_guid, &hob.Guid->Name))
196 hob_type_string =
"FSP_BOOTLOADER_TEMP_MEMORY_HOB";
198 hob_type_string =
"FSP_NON_VOLATILE_STORAGE_HOB";
199 else if (
compare_guid(&graphics_info_guid, &hob.Guid->Name))
200 hob_type_string =
"EFI_PEI_GRAPHICS_INFO_HOB_GUID";
201 else if (
compare_guid(&memory_info_hob_guid, &hob.Guid->Name))
202 hob_type_string =
"FSP_SMBIOS_MEMORY_INFO_GUID";
204 hob_type_string =
"EFI_HOB_TYPE_GUID_EXTENSION";
207 hob_type_string =
"EFI_HOB_TYPE_MEMORY_POOL";
209 case EFI_HOB_TYPE_UNUSED:
210 hob_type_string =
"EFI_HOB_TYPE_UNUSED";
212 case EFI_HOB_TYPE_END_OF_HOB_LIST:
213 hob_type_string =
"EFI_HOB_TYPE_END_OF_HOB_LIST";
216 hob_type_string =
"EFI_HOB_TYPE_UNRECOGNIZED";
220 return hob_type_string;
239 const char *current_type_str;
247 for (current_hob = hob_list_ptr; !END_OF_HOB_LIST(current_hob);
248 current_hob = GET_NEXT_HOB(current_hob)) {
250 EFI_HOB_GENERIC_HEADER *current_header_ptr =
251 (EFI_HOB_GENERIC_HEADER *)current_hob;
254 current_type = current_header_ptr->HobType;
259 current_hob, current_type_str,
261 switch (current_type) {
262 case EFI_HOB_TYPE_MEMORY_ALLOCATION:
265 case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
#define printk(level,...)
void __noreturn die(const char *fmt,...)
#define EFI_HOB_TYPE_HANDOFF
#define EFI_HOB_TYPE_MEMORY_POOL
void * fsp_get_hob_list(void)
void * get_hob_list(void)
void print_hob_type_structure(u16 hob_type, void *hob_list_ptr)
void * get_resource_hob(const EFI_GUID *guid, const void *hob_start)
static const char * get_hob_type_string(void *hob_ptr)
static void print_hob_mem_attributes(void *hob_ptr)
void * get_guid_hob(const EFI_GUID *guid, const void *hob_start)
static void * get_next_hob(uint16_t type, const void *hob_start)
static void print_hob_resource_attributes(void *hob_ptr)
static bool compare_guid(const EFI_GUID *guid1, const EFI_GUID *guid2)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_SPEW
BIOS_SPEW - Excessively verbose output.
#define FSP_SMBIOS_MEMORY_INFO_GUID
int memcmp(const void *s1, const void *s2, size_t n)