Hi Heinrich, I dropped the ECPT print in efidebug in PATCH v2. Additionally I've introduced an efi selftet.
Regards, Jose > -----Original Message----- > From: Heinrich Schuchardt <xypron.g...@gmx.de> > Sent: 17 December 2021 18:07 > To: Jose Marinho <jose.mari...@arm.com>; u-boot@lists.denx.de > Cc: ilias.apalodi...@linaro.org; sughosh.g...@linaro.org; > takahiro.aka...@linaro.org; ag...@csgraf.de; nd <n...@arm.com> > Subject: Re: [PATCH 3/3] cmd: efi: efidebug print ECPT table > > On 12/17/21 13:55, Jose Marinho wrote: > > Signed-off-by: Jose Marinho <jose.mari...@arm.com> > > --- > > cmd/efidebug.c | 41 > +++++++++++++++++++++++++++++++++++++++++ > > include/efi_loader.h | 2 ++ > > 2 files changed, 43 insertions(+) > > > > diff --git a/cmd/efidebug.c b/cmd/efidebug.c index > > a53a5029fa..c3246e1820 100644 > > --- a/cmd/efidebug.c > > +++ b/cmd/efidebug.c > > @@ -889,6 +889,38 @@ static int do_efi_show_tables(struct cmd_tbl > *cmdtp, int flag, > > return CMD_RET_SUCCESS; > > } > > > > +#ifdef CONFIG_EFI_ECPT > > +static int do_efi_ecpt(struct cmd_tbl *cmdtp, int flag, > > + int argc, char * const argv[]) { > > + struct efi_conformance_profiles_table *ecpt; > > + > > + if (argc != 1) > > + return CMD_RET_USAGE; > > + > > + for (int idx = 0; idx < systab.nr_tables; idx++) > > + if (!guidcmp(&efi_ecpt_guid, &systab.tables[idx].guid)) > > + ecpt = (struct efi_system_resource_table > > +*)systab.tables[idx].table; > > + > > + if (!ecpt) { > > + log_info("ECPT: table not present\n"); > > + return CMD_RET_SUCCESS; > > + } > > + > > + const int num_profiles = ecpt->number_of_profiles; > > + > > + printf("========================================\n"); > > + printf("ECPT: version:%d\n", ecpt->version); > > + printf("ECPT: num profiles:%d\n", num_profiles); > > + > > + for (int i = 0; i < num_profiles; i++) > > + printf("ECPT: profile %d = %pUL\n", i, &ecpt- > >conformance_profiles[i]); > > + printf("========================================\n"); > > + > > + return CMD_RET_SUCCESS; > > +} > > +#endif /* CONFIG_EFI_ECPT */ > > + > > /** > > * create_initrd_dp() - Create a special device for our Boot### option > > * > > @@ -1681,6 +1713,11 @@ static struct cmd_tbl cmd_efidebug_sub[] = { > > "", ""), > > U_BOOT_CMD_MKENT(query, CONFIG_SYS_MAXARGS, 1, > do_efi_query_info, > > "", ""), > > +#ifdef CONFIG_EFI_ECPT > > + U_BOOT_CMD_MKENT(ecpt, CONFIG_SYS_MAXARGS, 1, > do_efi_ecpt, > > + "", ""), > > +#endif > > + > > }; > > > > /** > > @@ -1769,6 +1806,10 @@ static char efidebug_help_text[] = > > " - show UEFI memory map\n" > > "efidebug tables\n" > > " - show UEFI configuration tables\n" > > +#ifdef CONFIG_EFI_ECPT > > + "efidebug ecpt\n" > > + " - show UEFI conformance profiles table\n" > > +#endif > > #ifdef CONFIG_CMD_BOOTEFI_BOOTMGR > > "efidebug test bootmgr\n" > > " - run simple bootmgr for test\n" > > diff --git a/include/efi_loader.h b/include/efi_loader.h index > > d20ff396d0..d60a340136 100644 > > --- a/include/efi_loader.h > > +++ b/include/efi_loader.h > > @@ -310,6 +310,8 @@ extern const efi_guid_t > efi_guid_firmware_management_protocol; > > extern const efi_guid_t efi_esrt_guid; > > /* GUID of the SMBIOS table */ > > extern const efi_guid_t smbios_guid; > > +/* GUID for the ECPT */ > > +extern const efi_guid_t efi_ecpt_guid; > > > > extern char __efi_runtime_start[], __efi_runtime_stop[]; > > extern char __efi_runtime_rel_start[], __efi_runtime_rel_stop[]; > > Our interest is to keep the U-Boot binary size small. I see no need to print > the > ECPT table. > > What make more sense is a unit test that checks the consistency of the table. > > Best regards > > Heinrich