mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 21:21:37 +00:00
x86: Add a simple command to show FSP HOB information
FSP builds a series of data structures called the Hand-Off-Blocks (HOBs) as it progresses through initializing the silicon. These data structures conform to the HOB format as described in the Platform Initialization (PI) specification Volume 3 Shared Architectual Elements specification, which is part of the UEFI specification. Create a simple command to parse the HOB list to display the HOB address, type and length in bytes. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
bceb9f0fc8
commit
ba7b38a529
2 changed files with 68 additions and 0 deletions
|
@ -10,6 +10,7 @@ obj-y += bios_asm.o
|
|||
obj-y += bios_interrupts.o
|
||||
obj-$(CONFIG_CMD_BOOTM) += bootm.o
|
||||
obj-y += cmd_boot.o
|
||||
obj-$(CONFIG_HAVE_FSP) += cmd_hob.o
|
||||
obj-y += gcc.o
|
||||
obj-y += init_helpers.o
|
||||
obj-y += interrupts.o
|
||||
|
|
67
arch/x86/lib/cmd_hob.c
Normal file
67
arch/x86/lib/cmd_hob.c
Normal file
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <asm/arch/fsp/fsp_support.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
static char *hob_type[] = {
|
||||
"reserved",
|
||||
"Hand-off",
|
||||
"Memory Allocation",
|
||||
"Resource Descriptor",
|
||||
"GUID Extension",
|
||||
"Firmware Volumn",
|
||||
"CPU",
|
||||
"Memory Pool",
|
||||
"reserved",
|
||||
"Firmware Volumn 2",
|
||||
"Load PEIM Unused",
|
||||
"UEFI Capsule",
|
||||
};
|
||||
|
||||
int do_hob(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
union hob_pointers_t hob;
|
||||
u16 type;
|
||||
char *desc;
|
||||
int i = 0;
|
||||
|
||||
hob.raw = (u8 *)gd->arch.hob_list;
|
||||
|
||||
printf("HOB list address: 0x%08x\n\n", (unsigned int)hob.raw);
|
||||
|
||||
printf("No. | Address | Type | Length in Bytes\n");
|
||||
printf("----|----------|---------------------|----------------\n");
|
||||
while (!END_OF_HOB(hob)) {
|
||||
printf("%-3d | %08x | ", i, (unsigned int)hob.raw);
|
||||
type = hob.hdr->type;
|
||||
if (type == HOB_TYPE_UNUSED)
|
||||
desc = "*Unused*";
|
||||
else if (type == HOB_TYPE_EOH)
|
||||
desc = "**END OF HOB**";
|
||||
else if (type >= 0 && type <= ARRAY_SIZE(hob_type))
|
||||
desc = hob_type[type];
|
||||
else
|
||||
desc = "!!!Invalid Type!!!";
|
||||
printf("%-19s | %-15d\n", desc, hob.hdr->len);
|
||||
hob.raw = GET_NEXT_HOB(hob);
|
||||
i++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
U_BOOT_CMD(
|
||||
hob, 1, 1, do_hob,
|
||||
"print FSP Hand-Off Block information",
|
||||
""
|
||||
);
|
Loading…
Add table
Reference in a new issue