[PATCH 2/3] efi: ECPT add EBBRv2.0 conformance profile

Jose Marinho Jose.Marinho at arm.com
Thu Dec 23 15:57:48 CET 2021


Hi Heinrich,

Thank you for your reviews.

> -----Original Message-----
> From: Heinrich Schuchardt <xypron.glpk at gmx.de>
> Sent: 17 December 2021 17:27
> To: Jose Marinho <Jose.Marinho at arm.com>; u-boot at lists.denx.de
> Cc: ilias.apalodimas at linaro.org; sughosh.ganu at linaro.org;
> takahiro.akashi at linaro.org; agraf at csgraf.de; nd <nd at arm.com>
> Subject: Re: [PATCH 2/3] efi: ECPT add EBBRv2.0 conformance profile
> 
> On 12/17/21 13:55, Jose Marinho wrote:
> > Display the EBBRv2.0 conformance in the ECPT table.
> >
> > The EBBRv2.0 conformance profile is set in the ECPT if
> > CONFIG_EFI_EBBR_2_0_CONFORMANCE=y.
> > The config defaults to 'n'.
> >
> >
> > Signed-off-by: Jose Marinho <jose.marinho at arm.com>
> > ---
> >   include/efi_api.h                | 4 ++++
> >   lib/efi_loader/Kconfig           | 6 ++++++
> >   lib/efi_loader/efi_conformance.c | 9 +++++++++
> >   3 files changed, 19 insertions(+)
> >
> > diff --git a/include/efi_api.h b/include/efi_api.h index
> > 6fd4f04de3..49919caa35 100644
> > --- a/include/efi_api.h
> > +++ b/include/efi_api.h
> > @@ -230,6 +230,10 @@ enum efi_reset_type {
> >   	EFI_GUID(0x36122546, 0xf7ef, 0x4c8f, 0xbd, 0x9b, \
> >   		 0xeb, 0x85, 0x25, 0xb5, 0x0c, 0x0b)
> >
> > +#define EFI_CONFORMANCE_PROFILE_EBBR_2_0_GUID \
> > +	EFI_GUID(0xcce33c35, 0x74ac, 0x4087, 0xbc, 0xe7, \
> > +		 0x8b, 0x29, 0xb0, 0x2e, 0xeb, 0x27)
> > +
> >   struct efi_conformance_profiles_table {
> >   	u16 version;
> >   	u16 number_of_profiles;
> > diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig index
> > b2398976f4..ab7476f68b 100644
> > --- a/lib/efi_loader/Kconfig
> > +++ b/lib/efi_loader/Kconfig
> > @@ -373,4 +373,10 @@ config EFI_ECPT
> >   	help
> >   	  Enabling this option created the ECPT UEFI table.
> >
> > +config EFI_EBBR_2_0_CONFORMANCE
> > +	bool "Add the EBBRv2.0 conformance entry to the ECPT table"
> > +	depends on EFI_ECPT
> 
> With this dependency the symbol EFI_EBBR_2_0_CONFORMANCE is
> superfluous.
> 
> Can we add EFI_EBBR_2_0_CONFORMANCE unconditionally or are there
> relevant configuration flags in U-Boot that must be enabled to claim EBBR 2.0
> compliance? E.g.
> 
> * CONFIG_CMD_BOOTEFI_BOOTMGR
> * CONFIG_EFI_GET_TIME
> * CONFIG_EFI_CAPSULE_FIRMWARE_MANAGEMENT
> 
I've removed the "depends on" in PATCH v2.
Ideally the EFI_EBBR_2_0_CONFORMANCE should depend on all the CONFIGS required by EBBR 2.0.
I'm not sure whether this is feasible, i.e. whether there is a set of CONFIGS_* which when enabled make the implementation EBBRv2.0 compliant.
Also, as the u-boot code evolves, these dependencies would need to be carefully maintained perhaps.

Perhaps the best choice is to let the FW provider to set EBBR_2_0_CONFORMANCE in the platform config file once the FW has been deemed EBBRv2.0 compliant.
> 
> > +	default n
> > +	help
> > +	  Enabling this option adds the EBBRv2.0 conformance entry to the
> ECPT UEFI table.
> >   endif
> > diff --git a/lib/efi_loader/efi_conformance.c
> > b/lib/efi_loader/efi_conformance.c
> > index 86c26d6b79..b490ff3326 100644
> > --- a/lib/efi_loader/efi_conformance.c
> > +++ b/lib/efi_loader/efi_conformance.c
> > @@ -12,6 +12,7 @@
> >   #include <malloc.h>
> >
> >   const efi_guid_t efi_ecpt_guid =
> > EFI_CONFORMANCE_PROFILES_TABLE_GUID;
> > +const efi_guid_t efi_ebbr_2_0_guid =
> > +EFI_CONFORMANCE_PROFILE_EBBR_2_0_GUID;
> >
> >   #define EFI_CONFORMANCE_PROFILES_TABLE_VERSION 1
> >
> > @@ -29,6 +30,9 @@ efi_status_t efi_ecpt_register(void)
> >
> >   	EFI_PRINT("ECPT table creation start\n");
> >
> > +	if (IS_ENABLED(CONFIG_EFI_EBBR_2_0_CONFORMANCE))
> > +		num_entries++;
> > +
> >   	ecpt_size = num_entries * sizeof(efi_guid_t)
> >   		+ sizeof(struct efi_conformance_profiles_table);
> >   	ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA, ecpt_size, @@ -
> 44,6
> > +48,11 @@ efi_status_t efi_ecpt_register(void)
> >   	ecpt->version = EFI_CONFORMANCE_PROFILES_TABLE_VERSION;
> >   	ecpt->number_of_profiles = num_entries;
> >
> > +	if (IS_ENABLED(CONFIG_EFI_EBBR_2_0_CONFORMANCE)) {
> > +		num_entries--;
> > +		guidcpy(&ecpt->conformance_profiles[num_entries],
> &efi_ecpt_guid);
> > +	}
> > +
> >   	if (num_entries)
> >   		EFI_PRINT("ECPT check conformance profiles, not all entries
> > populated in table\n");
> >



More information about the U-Boot mailing list