[PATCH v2 10/12] efi: Split out table-listing code into a new file
Heinrich Schuchardt
xypron.glpk at gmx.de
Sun Mar 19 17:40:37 CET 2023
On 3/10/23 21:49, Simon Glass wrote:
> This code is used with EFI_LOADER but is also useful (with some
> modifications) for the EFI app and payload. Move it into a shared
> file.
>
> Show the address of the table so it can be examined if needed. Also show
> the table name as unknown if necessary. Our list of GUIDs is fairly
> small.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> Changes in v2:
> - Add new patch to split out table-listing code into a new file
>
> cmd/Makefile | 2 +-
> cmd/efi_common.c | 26 ++++++++++++++++++++++++++
> cmd/efidebug.c | 6 +-----
> include/efi.h | 9 +++++++++
> 4 files changed, 37 insertions(+), 6 deletions(-)
> create mode 100644 cmd/efi_common.c
>
> diff --git a/cmd/Makefile b/cmd/Makefile
> index 2d8bb4fc052..1c5c6f3c00c 100644
> --- a/cmd/Makefile
> +++ b/cmd/Makefile
> @@ -63,7 +63,7 @@ obj-$(CONFIG_CMD_ECHO) += echo.o
> obj-$(CONFIG_ENV_IS_IN_EEPROM) += eeprom.o
> obj-$(CONFIG_CMD_EEPROM) += eeprom.o
> obj-$(CONFIG_EFI) += efi.o
> -obj-$(CONFIG_CMD_EFIDEBUG) += efidebug.o
> +obj-$(CONFIG_CMD_EFIDEBUG) += efidebug.o efi_common.o
> obj-$(CONFIG_CMD_EFICONFIG) += eficonfig.o
> ifdef CONFIG_CMD_EFICONFIG
> ifdef CONFIG_EFI_MM_COMM_TEE
> diff --git a/cmd/efi_common.c b/cmd/efi_common.c
> new file mode 100644
> index 00000000000..7eedf0726a7
> --- /dev/null
> +++ b/cmd/efi_common.c
> @@ -0,0 +1,26 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Common code for EFI commands
> + *
> + * Copyright 2023 Google LLC
> + * Written by Simon Glass <sjg at chromium.org>
> + */
> +
> +#include <common.h>
> +#include <efi.h>
> +#include <efi_api.h>
> +#include <uuid.h>
> +
> +void efi_show_tables(struct efi_system_table *systab)
> +{
> + int i;
> +
> + for (i = 0; i < systab->nr_tables; i++) {
> + struct efi_configuration_table *tab = &systab->tables[i];
> + char guid_str[37];
> +
> + uuid_bin_to_str(tab->guid.b, guid_str, 1);
> + printf("%p %s %s\n", tab->table, guid_str,
> + uuid_guid_get_str(tab->guid.b) ?: "(unknown)");
Please, use %pUl to print the UUID string.
Best regards
Heinrich
> + }
> +}
> diff --git a/cmd/efidebug.c b/cmd/efidebug.c
> index e6959ede930..9622430c475 100644
> --- a/cmd/efidebug.c
> +++ b/cmd/efidebug.c
> @@ -649,11 +649,7 @@ static int do_efi_show_memmap(struct cmd_tbl *cmdtp, int flag,
> static int do_efi_show_tables(struct cmd_tbl *cmdtp, int flag,
> int argc, char *const argv[])
> {
> - efi_uintn_t i;
> -
> - for (i = 0; i < systab.nr_tables; ++i)
> - printf("%pUl (%pUs)\n",
> - &systab.tables[i].guid, &systab.tables[i].guid);
> + efi_show_tables(&systab);
>
> return CMD_RET_SUCCESS;
> }
> diff --git a/include/efi.h b/include/efi.h
> index c3087d3da28..342dd52fed9 100644
> --- a/include/efi.h
> +++ b/include/efi.h
> @@ -637,4 +637,13 @@ int efi_call_exit_boot_services(void);
> int efi_get_mmap(struct efi_mem_desc **descp, int *sizep, uint *keyp,
> int *desc_sizep, uint *versionp);
>
> +/**
> + * efi_show_tables() - Show a list of available tables
> + *
> + * Shows the address, GUID (and name where known) for each table
> + *
> + * @systab: System table containing the list of tables
> + */
> +void efi_show_tables(struct efi_system_table *systab);
> +
> #endif /* _LINUX_EFI_H */
More information about the U-Boot
mailing list