[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