[PATCH 3/4] cmd: efidebug: add ecpt command
Vincent Stehlé
vincent.stehle at arm.com
Mon Mar 9 16:02:07 CET 2026
On Mon, Mar 09, 2026 at 01:23:53PM +0100, Heinrich Schuchardt wrote:
Hi Heinrich,
Thanks for your review, I will send a v2 adding your first suggestion; more
comments below.
Best regards,
Vincent.
> On 3/5/26 17:13, Vincent Stehlé wrote:
> > Add an "efidebug ecpt" command, to print the conformance profiles in the
> > ECPT:
> >
> > => efidebug ecpt
> > cce33c35-74ac-4087-bce7-8b29b02eeb27 EFI EBBR 2.1 Conformance Profile
> >
> > Signed-off-by: Vincent Stehlé <vincent.stehle at arm.com>
> > Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
> > Cc: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> > Cc: Tom Rini <trini at konsulko.com>
> > ---
> > cmd/efidebug.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 49 insertions(+)
> >
> > diff --git a/cmd/efidebug.c b/cmd/efidebug.c
> > index 109496d9e95..672214a54b7 100644
> > --- a/cmd/efidebug.c
> > +++ b/cmd/efidebug.c
> > @@ -533,6 +533,47 @@ static int do_efi_show_defaults(struct cmd_tbl *cmdtp, int flag,
> > return CMD_RET_SUCCESS;
> > }
> > +#if CONFIG_IS_ENABLED(EFI_ECPT)
> > +/**
> > + * do_efi_show_ecpt() - show UEFI conformance profiles in ECPT
> > + *
> > + * @cmdtp: Command table
> > + * @flag: Command flag
> > + * @argc: Number of arguments
> > + * @argv: Argument array
> > + * Return: CMD_RET_SUCCESS on success,
> > + * CMD_RET_USAGE or CMD_RET_FAILURE on failure
> > + *
> > + * Implement efidebug "ecpt" sub-command.
> > + * Show all the UEFI Conformance Profiles listed in the EFI Conformance Profiles
> > + * Table (ECPT).
> > + */
> > +static int do_efi_show_ecpt(struct cmd_tbl *cmdtp, int flag, int argc,
> > + char *const argv[])
> > +{
> > + const struct efi_conformance_profiles_table *ecpt;
> > + u16 n;
> > +
> > + if (argc != 1)
> > + return CMD_RET_USAGE;
> > +
> > + ecpt = efi_get_configuration_table(&efi_ecpt_guid);
> > + if (!ecpt) {
> > + log_info("ECPT: table not present\n");
>
> This looks like an error situation. Should this be:
>
> log_err("ECPT table missing\n");
Ok, I will change this as you suggest and send a v2, returning CMD_RET_FAILURE,
then.
Note that I did hesitate and finally opted to replicate what
do_efi_capsule_esrt() was doing, but I think reporting an error as you suggest
makes more sense as we know that we should have an ECPT when CONFIG_EFI_ECPT=y.
>
> > + return CMD_RET_SUCCESS;
> > + }
> > +
> > + for (n = 0; n < ecpt->number_of_profiles; n++) {
> > + const efi_guid_t *guid = &ecpt->conformance_profiles[n];
> > +
> > + printf("%pUl %s\n", guid->b,
> > + uuid_guid_get_str(guid->b) ?: "(unknown)");
>
> Isn't the following enough:
>
> printf("%pUs\n");
>
> %pUs: GUID text representation if known or fallback to %pUl
For this printing change I am not so sure; this is inspired from
efi_show_tables()'s behaviour and the intention is to have the following
outputs, depending on whether we know the GUID or not:
cce33c35-74ac-4087-bce7-8b29b02eeb27 EFI EBBR 2.1 Conformance Profile
or cce33c35-74ac-4087-bce7-8b29b02eeb27 (unknown)
With the change you suggest, we would have:
EFI EBBR 2.1 Conformance Profile
or cce33c35-74ac-4087-bce7-8b29b02eeb27
I think I prefer the original solution, as it more in line with `efidebug
tables' and it always shows the GUID in numerical form, but let me know if you
insist, in which case I will send a v3 with this change as well.
>
> Best regards
>
> Heinrich
>
> > + }
> > +
> > + return CMD_RET_SUCCESS;
> > +}
> > +#endif /* CONFIG_IS_ENABLED(EFI_ECPT) */
> > +
> > static const char * const efi_mem_type_string[] = {
> > [EFI_RESERVED_MEMORY_TYPE] = "RESERVED",
> > [EFI_LOADER_CODE] = "LOADER CODE",
> > @@ -1586,6 +1627,10 @@ static struct cmd_tbl cmd_efidebug_sub[] = {
> > "", ""),
> > U_BOOT_CMD_MKENT(defaults, CONFIG_SYS_MAXARGS, 1, do_efi_show_defaults,
> > "", ""),
> > +#if CONFIG_IS_ENABLED(EFI_ECPT)
> > + U_BOOT_CMD_MKENT(ecpt, CONFIG_SYS_MAXARGS, 1, do_efi_show_ecpt,
> > + "", ""),
> > +#endif
> > U_BOOT_CMD_MKENT(images, CONFIG_SYS_MAXARGS, 1, do_efi_show_images,
> > "", ""),
> > U_BOOT_CMD_MKENT(memmap, CONFIG_SYS_MAXARGS, 1, do_efi_show_memmap,
> > @@ -1680,6 +1725,10 @@ U_BOOT_LONGHELP(efidebug,
> > " - show UEFI handles\n"
> > "efidebug defaults\n"
> > " - show default EFI filename and PXE architecture\n"
> > +#if CONFIG_IS_ENABLED(EFI_ECPT)
> > + "efidebug ecpt\n"
> > + " - show conformance profiles in the ECPT\n"
> > +#endif
> > "efidebug images\n"
> > " - show loaded images\n"
> > "efidebug memmap\n"
>
More information about the U-Boot
mailing list