[PATCH v2 2/2] efi_loader: provide tool to dump SMBIOS table

Simon Glass sjg at chromium.org
Mon Jan 1 23:41:29 CET 2024


Hi Heinrich,

On Mon, Jan 1, 2024 at 11:50 AM Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> An EFI binary dmidump.efi is provided that can be used to check the SMBIOS
> table for consistency and to dump it as a file.
>
> The tool provides the following commands:
>
> check
>     Check the SMBIOS table for consistency.
>
> exit
>     Leave the tool.
>
> help
>     Show available commands.
>
> save
>     Save the SMBIOS table to a file on the EFI system partition. The file
>     can be further analyzed with the dmidecode command line tool::
>
>         dmidecode --from-dump <filename>
>
> Specifying 'nocolor' as load option data suppresses colored output and
> clearing of the screen.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> v2:
>         fix an incorrect variable usage when checking the result of memcmp
> ---
>  lib/efi_loader/Makefile  |   7 +
>  lib/efi_loader/dmidump.c | 595 +++++++++++++++++++++++++++++++++++++++
>  2 files changed, 602 insertions(+)
>  create mode 100644 lib/efi_loader/dmidump.c

Does this tool need tests?

Can you please split up do_save() a bit and also move the command loop
into its own function? Otherwise it looks good to me.

>
> diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile
> index 24d33d5409..71880d330e 100644
> --- a/lib/efi_loader/Makefile
> +++ b/lib/efi_loader/Makefile
> @@ -16,6 +16,8 @@ CFLAGS_boothart.o := $(CFLAGS_EFI) -Os -ffreestanding
>  CFLAGS_REMOVE_boothart.o := $(CFLAGS_NON_EFI)
>  CFLAGS_helloworld.o := $(CFLAGS_EFI) -Os -ffreestanding
>  CFLAGS_REMOVE_helloworld.o := $(CFLAGS_NON_EFI)
> +CFLAGS_dmidump.o := $(CFLAGS_EFI) -Os -ffreestanding
> +CFLAGS_REMOVE_dmidump.o := $(CFLAGS_NON_EFI)
>  CFLAGS_dtbdump.o := $(CFLAGS_EFI) -Os -ffreestanding
>  CFLAGS_REMOVE_dtbdump.o := $(CFLAGS_NON_EFI)
>  CFLAGS_initrddump.o := $(CFLAGS_EFI) -Os -ffreestanding

Is there a way to have a list of these tools such that the flags stuff
is done automatically and doesn't need to be repeated each time?

> @@ -31,6 +33,11 @@ always += helloworld.efi
>  targets += helloworld.o
>  endif
>
> +ifneq ($(CONFIG_GENERATE_SMBIOS_TABLE),)
> +always += dmidump.efi
> +targets += dmidump.o

How about smbios_tool ? I think 'dmi' is a bit of an obfuscation.

> +endif
> +
>  ifeq ($(CONFIG_GENERATE_ACPI_TABLE),)
>  always += dtbdump.efi
>  targets += dtbdump.o

[..]

Regards,
SImon


More information about the U-Boot mailing list