mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-23 13:56:20 +00:00
bootstd: Allow display of the x86 setup information
Provide an option to dump this information if available. Move the funciion prototype to the common x86 header. Allow the command line to be left out since 'bootflow info' show this itself and it is not in the correct place in memory until the kernel is actually booted. Fix a badly aligned heading while we are here. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
598dea978d
commit
cbb607d2d9
6 changed files with 86 additions and 18 deletions
|
@ -62,14 +62,4 @@ struct boot_params *load_zimage(char *image, unsigned long kernel_size,
|
||||||
int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,
|
int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,
|
||||||
ulong initrd_addr, ulong initrd_size, ulong cmdline_force);
|
ulong initrd_addr, ulong initrd_size, ulong cmdline_force);
|
||||||
|
|
||||||
/**
|
|
||||||
* zimage_dump() - Dump the metadata of a zimage
|
|
||||||
*
|
|
||||||
* This shows all available information in a zimage that has been loaded.
|
|
||||||
*
|
|
||||||
* @base_ptr: Pointer to the boot parameters, typically at address
|
|
||||||
* DEFAULT_SETUP_BASE
|
|
||||||
*/
|
|
||||||
void zimage_dump(struct boot_params *base_ptr);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -692,7 +692,7 @@ static void show_loader(struct setup_header *hdr)
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void zimage_dump(struct boot_params *base_ptr)
|
void zimage_dump(struct boot_params *base_ptr, bool show_cmdline)
|
||||||
{
|
{
|
||||||
struct setup_header *hdr;
|
struct setup_header *hdr;
|
||||||
const char *version;
|
const char *version;
|
||||||
|
@ -703,7 +703,7 @@ void zimage_dump(struct boot_params *base_ptr)
|
||||||
|
|
||||||
printf("E820: %d entries\n", base_ptr->e820_entries);
|
printf("E820: %d entries\n", base_ptr->e820_entries);
|
||||||
if (base_ptr->e820_entries) {
|
if (base_ptr->e820_entries) {
|
||||||
printf("%18s %16s %s\n", "Addr", "Size", "Type");
|
printf("%12s %10s %s\n", "Addr", "Size", "Type");
|
||||||
for (i = 0; i < base_ptr->e820_entries; i++) {
|
for (i = 0; i < base_ptr->e820_entries; i++) {
|
||||||
struct e820_entry *entry = &base_ptr->e820_map[i];
|
struct e820_entry *entry = &base_ptr->e820_map[i];
|
||||||
|
|
||||||
|
@ -749,7 +749,7 @@ void zimage_dump(struct boot_params *base_ptr)
|
||||||
print_num("Ext loader ver", hdr->ext_loader_ver);
|
print_num("Ext loader ver", hdr->ext_loader_ver);
|
||||||
print_num("Ext loader type", hdr->ext_loader_type);
|
print_num("Ext loader type", hdr->ext_loader_type);
|
||||||
print_num("Command line ptr", hdr->cmd_line_ptr);
|
print_num("Command line ptr", hdr->cmd_line_ptr);
|
||||||
if (hdr->cmd_line_ptr) {
|
if (show_cmdline && hdr->cmd_line_ptr) {
|
||||||
printf(" ");
|
printf(" ");
|
||||||
/* Use puts() to avoid limits from CONFIG_SYS_PBSIZE */
|
/* Use puts() to avoid limits from CONFIG_SYS_PBSIZE */
|
||||||
puts((char *)(ulong)hdr->cmd_line_ptr);
|
puts((char *)(ulong)hdr->cmd_line_ptr);
|
||||||
|
@ -787,7 +787,7 @@ static int do_zboot_dump(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
printf("No zboot setup_base\n");
|
printf("No zboot setup_base\n");
|
||||||
return CMD_RET_FAILURE;
|
return CMD_RET_FAILURE;
|
||||||
}
|
}
|
||||||
zimage_dump(base_ptr);
|
zimage_dump(base_ptr, true);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <bootdev.h>
|
#include <bootdev.h>
|
||||||
#include <bootflow.h>
|
#include <bootflow.h>
|
||||||
|
#include <bootm.h>
|
||||||
#include <bootstd.h>
|
#include <bootstd.h>
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
#include <console.h>
|
#include <console.h>
|
||||||
|
@ -303,11 +304,14 @@ static int do_bootflow_info(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
{
|
{
|
||||||
struct bootstd_priv *std;
|
struct bootstd_priv *std;
|
||||||
struct bootflow *bflow;
|
struct bootflow *bflow;
|
||||||
|
bool x86_setup = false;
|
||||||
bool dump = false;
|
bool dump = false;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (argc > 1 && *argv[1] == '-')
|
if (argc > 1 && *argv[1] == '-') {
|
||||||
dump = strchr(argv[1], 'd');
|
dump = strchr(argv[1], 'd');
|
||||||
|
x86_setup = strchr(argv[1], 's');
|
||||||
|
}
|
||||||
|
|
||||||
ret = bootstd_get_priv(&std);
|
ret = bootstd_get_priv(&std);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -319,6 +323,12 @@ static int do_bootflow_info(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
}
|
}
|
||||||
bflow = std->cur_bootflow;
|
bflow = std->cur_bootflow;
|
||||||
|
|
||||||
|
if (IS_ENABLED(CONFIG_X86) && x86_setup) {
|
||||||
|
zimage_dump(bflow->x86_setup, false);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
printf("Name: %s\n", bflow->name);
|
printf("Name: %s\n", bflow->name);
|
||||||
printf("Device: %s\n", bflow->dev->name);
|
printf("Device: %s\n", bflow->dev->name);
|
||||||
printf("Block dev: %s\n", bflow->blk ? bflow->blk->name : "(none)");
|
printf("Block dev: %s\n", bflow->blk ? bflow->blk->name : "(none)");
|
||||||
|
@ -508,7 +518,7 @@ static char bootflow_help_text[] =
|
||||||
"scan [-abeGl] [bdev] - scan for valid bootflows (-l list, -a all, -e errors, -b boot, -G no global)\n"
|
"scan [-abeGl] [bdev] - scan for valid bootflows (-l list, -a all, -e errors, -b boot, -G no global)\n"
|
||||||
"bootflow list [-e] - list scanned bootflows (-e errors)\n"
|
"bootflow list [-e] - list scanned bootflows (-e errors)\n"
|
||||||
"bootflow select [<num>|<name>] - select a bootflow\n"
|
"bootflow select [<num>|<name>] - select a bootflow\n"
|
||||||
"bootflow info [-d] - show info on current bootflow (-d dump bootflow)\n"
|
"bootflow info [-ds] - show info on current bootflow (-d dump bootflow)\n"
|
||||||
"bootflow boot - boot current bootflow (or first available if none selected)\n"
|
"bootflow boot - boot current bootflow (or first available if none selected)\n"
|
||||||
"bootflow menu [-t] - show a menu of available bootflows\n"
|
"bootflow menu [-t] - show a menu of available bootflows\n"
|
||||||
"bootflow cmdline [set|get|clear|delete|auto] <param> [<value>] - update cmdline";
|
"bootflow cmdline [set|get|clear|delete|auto] <param> [<value>] - update cmdline";
|
||||||
|
|
|
@ -11,7 +11,7 @@ Synopis
|
||||||
bootflow scan [-abelGH] [bootdev]
|
bootflow scan [-abelGH] [bootdev]
|
||||||
bootflow list [-e]
|
bootflow list [-e]
|
||||||
bootflow select [<num|name>]
|
bootflow select [<num|name>]
|
||||||
bootflow info [-d]
|
bootflow info [-ds]
|
||||||
bootflow boot
|
bootflow boot
|
||||||
bootflow cmdline [set|get|clear|delete|auto] <param> [<value>]
|
bootflow cmdline [set|get|clear|delete|auto] <param> [<value>]
|
||||||
|
|
||||||
|
@ -191,6 +191,8 @@ Error
|
||||||
|
|
||||||
Use the `-d` flag to dump out the contents of the bootfile file.
|
Use the `-d` flag to dump out the contents of the bootfile file.
|
||||||
|
|
||||||
|
The `-s` flag shows any x86 setup block, instead of the above.
|
||||||
|
|
||||||
|
|
||||||
bootflow boot
|
bootflow boot
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
|
@ -522,6 +524,61 @@ the cmdline is word-wrapped here and some parts of the command line are elided::
|
||||||
[ 0.000000] Command line: loglevel=7 ... usb-storage.quirks=13fe:6500:u earlycon=uart8250,mmio32,0xfe03e000,115200n8
|
[ 0.000000] Command line: loglevel=7 ... usb-storage.quirks=13fe:6500:u earlycon=uart8250,mmio32,0xfe03e000,115200n8
|
||||||
[ 0.000000] x86/split lock detection: warning about user-space split_locks
|
[ 0.000000] x86/split lock detection: warning about user-space split_locks
|
||||||
|
|
||||||
|
This shows looking at x86 setup information::
|
||||||
|
|
||||||
|
=> bootfl sel 0
|
||||||
|
=> bootfl i -s
|
||||||
|
Setup located at 77b56010:
|
||||||
|
|
||||||
|
ACPI RSDP addr : 0
|
||||||
|
E820: 2 entries
|
||||||
|
Addr Size Type
|
||||||
|
0 1000 RAM
|
||||||
|
fffff000 1000 Reserved
|
||||||
|
Setup sectors : 1e
|
||||||
|
Root flags : 1
|
||||||
|
Sys size : 63420
|
||||||
|
RAM size : 0
|
||||||
|
Video mode : ffff
|
||||||
|
Root dev : 0
|
||||||
|
Boot flag : 0
|
||||||
|
Jump : 66eb
|
||||||
|
Header : 53726448
|
||||||
|
Kernel V2
|
||||||
|
Version : 20d
|
||||||
|
Real mode switch : 0
|
||||||
|
Start sys seg : 1000
|
||||||
|
Kernel version : 38cc
|
||||||
|
@00003acc:
|
||||||
|
Type of loader : ff
|
||||||
|
unknown
|
||||||
|
Load flags : 1
|
||||||
|
: loaded-high
|
||||||
|
Setup move size : 8000
|
||||||
|
Code32 start : 100000
|
||||||
|
Ramdisk image : 0
|
||||||
|
Ramdisk size : 0
|
||||||
|
Bootsect kludge : 0
|
||||||
|
Heap end ptr : 5160
|
||||||
|
Ext loader ver : 0
|
||||||
|
Ext loader type : 0
|
||||||
|
Command line ptr : 735000
|
||||||
|
Initrd addr max : 7fffffff
|
||||||
|
Kernel alignment : 200000
|
||||||
|
Relocatable kernel : 1
|
||||||
|
Min alignment : 15
|
||||||
|
: 200000
|
||||||
|
Xload flags : 3
|
||||||
|
: 64-bit-entry can-load-above-4gb
|
||||||
|
Cmdline size : 7ff
|
||||||
|
Hardware subarch : 0
|
||||||
|
HW subarch data : 0
|
||||||
|
Payload offset : 26e
|
||||||
|
Payload length : 612045
|
||||||
|
Setup data : 0
|
||||||
|
Pref address : 1000000
|
||||||
|
Init size : 1383000
|
||||||
|
Handover offset : 0
|
||||||
|
|
||||||
|
|
||||||
Return value
|
Return value
|
||||||
|
|
|
@ -108,7 +108,7 @@ struct bootflow {
|
||||||
ulong fdt_addr;
|
ulong fdt_addr;
|
||||||
int flags;
|
int flags;
|
||||||
char *cmdline;
|
char *cmdline;
|
||||||
char *x86_setup;
|
void *x86_setup;
|
||||||
void *bootmeth_priv;
|
void *bootmeth_priv;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -152,4 +152,15 @@ int zboot_start(ulong addr, ulong size, ulong initrd, ulong initrd_size,
|
||||||
const char *zimage_get_kernel_version(struct boot_params *params,
|
const char *zimage_get_kernel_version(struct boot_params *params,
|
||||||
void *kernel_base);
|
void *kernel_base);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* zimage_dump() - Dump the metadata of a zimage
|
||||||
|
*
|
||||||
|
* This shows all available information in a zimage that has been loaded.
|
||||||
|
*
|
||||||
|
* @base_ptr: Pointer to the boot parameters, typically at address
|
||||||
|
* DEFAULT_SETUP_BASE
|
||||||
|
* @show_cmdline: true to show the full command line
|
||||||
|
*/
|
||||||
|
void zimage_dump(struct boot_params *base_ptr, bool show_cmdline);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue