diff mbox series

[1/5] efi_loader: adjust EBBR 2.1 ECPT entry

Message ID 20260904-conform-v1-1-475b2947631a@arm.com
State Superseded
Delegated to: Heinrich Schuchardt
Headers show
Series efi: ECPT EBBR conformance profiles | expand

Commit Message

Vincent Stehlé Sept. 4, 2026, 3:01 p.m. UTC
Adjust the EBBR 2.1 conformance profile ECPT entry configuration, and
prepare to add more:
- Introduce the HAVE_EFI_EBBR_2_1 non-visible configuration symbol to
  compute the actual system conformance status with the dependencies.
  This will make it easier to add more versions with a chain of
  dependencies, while avoiding a chain of nested submenus.
- Adjust version 2.1 dependencies to better match the specification.
  Relax the dependency on the boot manager, which was introduced in
  version 2.3, and make the list of required UEFI protocols and services
  more complete.
- Reword the EFI_EBBR_2_1_CONFORMANCE configuration entry title and help
  text, mostly to separate "EBBR" from "v2.1" and to attenuate the
  redundant "table" mention.

We do the following additional configurations dependencies
approximations:

      Configuration symbol  Used to approximate
  ------------------------  ------------------------------------
  EFI_HAVE_CAPSULE_SUPPORT  Firmware update is performed in-band
                    DM_RTC  An RTC is present

While at it, refine the ECPT help text to attenuate the redundant
"table" mention there as well.

Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Tom Rini <trini@konsulko.com>
---
 lib/efi_loader/Kconfig | 36 +++++++++++++++++++++++++++---------
 1 file changed, 27 insertions(+), 9 deletions(-)

Comments

Ilias Apalodimas Sept. 17, 2026, 4:04 p.m. UTC | #1
Hi Vincent,

On Fri, 4 Sept 2026 at 17:01, Vincent Stehlé <vincent.stehle@arm.com> wrote:
>
> Adjust the EBBR 2.1 conformance profile ECPT entry configuration, and
> prepare to add more:
> - Introduce the HAVE_EFI_EBBR_2_1 non-visible configuration symbol to
>   compute the actual system conformance status with the dependencies.
>   This will make it easier to add more versions with a chain of
>   dependencies, while avoiding a chain of nested submenus.
> - Adjust version 2.1 dependencies to better match the specification.
>   Relax the dependency on the boot manager, which was introduced in
>   version 2.3, and make the list of required UEFI protocols and services
>   more complete.
> - Reword the EFI_EBBR_2_1_CONFORMANCE configuration entry title and help
>   text, mostly to separate "EBBR" from "v2.1" and to attenuate the
>   redundant "table" mention.
>
> We do the following additional configurations dependencies
> approximations:
>
>       Configuration symbol  Used to approximate
>   ------------------------  ------------------------------------
>   EFI_HAVE_CAPSULE_SUPPORT  Firmware update is performed in-band
>                     DM_RTC  An RTC is present
>
> While at it, refine the ECPT help text to attenuate the redundant
> "table" mention there as well.
>
> Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> Cc: Tom Rini <trini@konsulko.com>
> ---
>  lib/efi_loader/Kconfig | 36 +++++++++++++++++++++++++++---------
>  1 file changed, 27 insertions(+), 9 deletions(-)
>
> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> index 4cb13ae7c8a..40380876959 100644
> --- a/lib/efi_loader/Kconfig
> +++ b/lib/efi_loader/Kconfig
> @@ -557,23 +557,41 @@ config EFI_ESRT
>         help
>           Enabling this option creates the ESRT UEFI system table.
>
> +config HAVE_EFI_EBBR_2_1
> +       bool
> +       depends on EFI_LOADER_HII
> +       depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
> +       depends on EFI_RNG_PROTOCOL || !DM_RNG
> +       depends on EFI_UNICODE_COLLATION_PROTOCOL2
> +       depends on BOOTMETH_EFILOADER

Similar comments here. The BOOTMETH_* shouldn't be a requirement

Cheers
/Ilias
> +       depends on !EFI_VARIABLE_NO_STORE
> +       depends on BOOTM_EFI
> +       depends on EFI_BINARY_EXEC
> +       depends on EFI_DEVICE_PATH_TO_TEXT
> +       depends on EFI_DEVICE_PATH_UTIL
> +       depends on EFI_GET_TIME || !DM_RTC
> +       depends on EFI_PARTITION
> +       depends on EFI_SET_TIME || !DM_RTC
> +       depends on EFI_UNICODE_CAPITALIZATION
> +       depends on EFI_ESRT || !EFI_HAVE_CAPSULE_SUPPORT
> +       depends on EFI_RUNTIME_UPDATE_CAPSULE || !EFI_HAVE_CAPSULE_SUPPORT
> +       depends on EFI_CAPSULE_FIRMWARE || !EFI_HAVE_CAPSULE_SUPPORT
> +       default y
> +
>  config EFI_ECPT
>         bool "Enable the UEFI ECPT generation"
>         default y
>         help
> -         Enabling this option created the ECPT UEFI table.
> +         Enabling this option creates the EFI Conformance Profiles Table
> +         (ECPT).
>
>  config EFI_EBBR_2_1_CONFORMANCE
> -       bool "Add the EBBRv2.1 conformance entry to the ECPT table"
> -       depends on BOOTMETH_EFI_BOOTMGR
> -       depends on EFI_ECPT
> -       depends on EFI_LOADER_HII
> -       depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
> -       depends on EFI_RNG_PROTOCOL || !DM_RNG
> -       depends on EFI_UNICODE_COLLATION_PROTOCOL2
> +       bool "Add the EBBR v2.1 conformance entry to the ECPT"
> +       depends on EFI_ECPT && HAVE_EFI_EBBR_2_1
>         default y
>         help
> -         Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table.
> +         Enabling this option adds the Embedded Base Boot Requirements (EBBR)
> +         v2.1 conformance entry to the ECPT.
>
>  config EFI_CONSOLE_DISABLE_ANSI
>         bool "Disable ANSI escape sequence queries for console size"
>
> --
> 2.53.0
>
Vincent Stehlé Sept. 18, 2026, 12:35 p.m. UTC | #2
On Thu, Sep 17, 2026 at 06:04:07PM +0200, Ilias Apalodimas wrote:
> Hi Vincent,

Hi Ilias,

Thank you for reviewing; my comments below.

Best regards,
Vincent.

> 
> On Fri, 4 Sept 2026 at 17:01, Vincent Stehlé <vincent.stehle@arm.com> wrote:
> >
> > Adjust the EBBR 2.1 conformance profile ECPT entry configuration, and
> > prepare to add more:
> > - Introduce the HAVE_EFI_EBBR_2_1 non-visible configuration symbol to
> >   compute the actual system conformance status with the dependencies.
> >   This will make it easier to add more versions with a chain of
> >   dependencies, while avoiding a chain of nested submenus.
> > - Adjust version 2.1 dependencies to better match the specification.
> >   Relax the dependency on the boot manager, which was introduced in
> >   version 2.3, and make the list of required UEFI protocols and services
> >   more complete.
> > - Reword the EFI_EBBR_2_1_CONFORMANCE configuration entry title and help
> >   text, mostly to separate "EBBR" from "v2.1" and to attenuate the
> >   redundant "table" mention.
> >
> > We do the following additional configurations dependencies
> > approximations:
> >
> >       Configuration symbol  Used to approximate
> >   ------------------------  ------------------------------------
> >   EFI_HAVE_CAPSULE_SUPPORT  Firmware update is performed in-band
> >                     DM_RTC  An RTC is present
> >
> > While at it, refine the ECPT help text to attenuate the redundant
> > "table" mention there as well.
> >
> > Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
> > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > Cc: Tom Rini <trini@konsulko.com>
> > ---
> >  lib/efi_loader/Kconfig | 36 +++++++++++++++++++++++++++---------
> >  1 file changed, 27 insertions(+), 9 deletions(-)
> >
> > diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> > index 4cb13ae7c8a..40380876959 100644
> > --- a/lib/efi_loader/Kconfig
> > +++ b/lib/efi_loader/Kconfig
> > @@ -557,23 +557,41 @@ config EFI_ESRT
> >         help
> >           Enabling this option creates the ESRT UEFI system table.
> >
> > +config HAVE_EFI_EBBR_2_1
> > +       bool
> > +       depends on EFI_LOADER_HII
> > +       depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
> > +       depends on EFI_RNG_PROTOCOL || !DM_RNG
> > +       depends on EFI_UNICODE_COLLATION_PROTOCOL2
> > +       depends on BOOTMETH_EFILOADER
> 
> Similar comments here. The BOOTMETH_* shouldn't be a requirement

I think you are right: depending on the boot method is a bit too
specific.

The original intention was to advertise a system as compliant only if we
could guarantee that it would boot automatically with UEFI (in this
patch with the default filename, and in previous patch with the boot
manager).
There did not seem to be an easy way to guarantee that with the
configurations dependencies.

What you see here is a second attempt, trying to -at least- avoid
advertising as compliant a system, which we know cannot boot
automatically with UEFI.
Even for that depending on the BOOTMETH_* configurations is probably not
good enough after all.

I think you mentioned that you or Heinrich could amend the patches
before merging; do not hesitate to let me know if you prefer that I send
a v2 series with the dependency here and in the previous patch removed.

> 
> Cheers
> /Ilias
> > +       depends on !EFI_VARIABLE_NO_STORE
> > +       depends on BOOTM_EFI
> > +       depends on EFI_BINARY_EXEC
> > +       depends on EFI_DEVICE_PATH_TO_TEXT
> > +       depends on EFI_DEVICE_PATH_UTIL
> > +       depends on EFI_GET_TIME || !DM_RTC
> > +       depends on EFI_PARTITION
> > +       depends on EFI_SET_TIME || !DM_RTC
> > +       depends on EFI_UNICODE_CAPITALIZATION
> > +       depends on EFI_ESRT || !EFI_HAVE_CAPSULE_SUPPORT
> > +       depends on EFI_RUNTIME_UPDATE_CAPSULE || !EFI_HAVE_CAPSULE_SUPPORT
> > +       depends on EFI_CAPSULE_FIRMWARE || !EFI_HAVE_CAPSULE_SUPPORT
> > +       default y
> > +
> >  config EFI_ECPT
> >         bool "Enable the UEFI ECPT generation"
> >         default y
> >         help
> > -         Enabling this option created the ECPT UEFI table.
> > +         Enabling this option creates the EFI Conformance Profiles Table
> > +         (ECPT).
> >
> >  config EFI_EBBR_2_1_CONFORMANCE
> > -       bool "Add the EBBRv2.1 conformance entry to the ECPT table"
> > -       depends on BOOTMETH_EFI_BOOTMGR
> > -       depends on EFI_ECPT
> > -       depends on EFI_LOADER_HII
> > -       depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
> > -       depends on EFI_RNG_PROTOCOL || !DM_RNG
> > -       depends on EFI_UNICODE_COLLATION_PROTOCOL2
> > +       bool "Add the EBBR v2.1 conformance entry to the ECPT"
> > +       depends on EFI_ECPT && HAVE_EFI_EBBR_2_1
> >         default y
> >         help
> > -         Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table.
> > +         Enabling this option adds the Embedded Base Boot Requirements (EBBR)
> > +         v2.1 conformance entry to the ECPT.
> >
> >  config EFI_CONSOLE_DISABLE_ANSI
> >         bool "Disable ANSI escape sequence queries for console size"
> >
> > --
> > 2.53.0
> >
Ilias Apalodimas Sept. 18, 2026, 12:58 p.m. UTC | #3
Hi Vincent,

On Fri, 18 Sept 2026 at 15:35, Vincent Stehlé <vincent.stehle@arm.com> wrote:
>
> On Thu, Sep 17, 2026 at 06:04:07PM +0200, Ilias Apalodimas wrote:
> > Hi Vincent,
>
> Hi Ilias,
>
> Thank you for reviewing; my comments below.
>
> Best regards,
> Vincent.
>
> >
> > On Fri, 4 Sept 2026 at 17:01, Vincent Stehlé <vincent.stehle@arm.com> wrote:
> > >
> > > Adjust the EBBR 2.1 conformance profile ECPT entry configuration, and
> > > prepare to add more:
> > > - Introduce the HAVE_EFI_EBBR_2_1 non-visible configuration symbol to
> > >   compute the actual system conformance status with the dependencies.
> > >   This will make it easier to add more versions with a chain of
> > >   dependencies, while avoiding a chain of nested submenus.
> > > - Adjust version 2.1 dependencies to better match the specification.
> > >   Relax the dependency on the boot manager, which was introduced in
> > >   version 2.3, and make the list of required UEFI protocols and services
> > >   more complete.
> > > - Reword the EFI_EBBR_2_1_CONFORMANCE configuration entry title and help
> > >   text, mostly to separate "EBBR" from "v2.1" and to attenuate the
> > >   redundant "table" mention.
> > >
> > > We do the following additional configurations dependencies
> > > approximations:
> > >
> > >       Configuration symbol  Used to approximate
> > >   ------------------------  ------------------------------------
> > >   EFI_HAVE_CAPSULE_SUPPORT  Firmware update is performed in-band
> > >                     DM_RTC  An RTC is present
> > >
> > > While at it, refine the ECPT help text to attenuate the redundant
> > > "table" mention there as well.
> > >
> > > Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
> > > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > > Cc: Tom Rini <trini@konsulko.com>
> > > ---
> > >  lib/efi_loader/Kconfig | 36 +++++++++++++++++++++++++++---------
> > >  1 file changed, 27 insertions(+), 9 deletions(-)
> > >
> > > diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> > > index 4cb13ae7c8a..40380876959 100644
> > > --- a/lib/efi_loader/Kconfig
> > > +++ b/lib/efi_loader/Kconfig
> > > @@ -557,23 +557,41 @@ config EFI_ESRT
> > >         help
> > >           Enabling this option creates the ESRT UEFI system table.
> > >
> > > +config HAVE_EFI_EBBR_2_1
> > > +       bool
> > > +       depends on EFI_LOADER_HII
> > > +       depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
> > > +       depends on EFI_RNG_PROTOCOL || !DM_RNG
> > > +       depends on EFI_UNICODE_COLLATION_PROTOCOL2
> > > +       depends on BOOTMETH_EFILOADER
> >
> > Similar comments here. The BOOTMETH_* shouldn't be a requirement
>
> I think you are right: depending on the boot method is a bit too
> specific.
>
> The original intention was to advertise a system as compliant only if we
> could guarantee that it would boot automatically with UEFI (in this
> patch with the default filename, and in previous patch with the boot
> manager).
> There did not seem to be an easy way to guarantee that with the
> configurations dependencies.
>
> What you see here is a second attempt, trying to -at least- avoid
> advertising as compliant a system, which we know cannot boot
> automatically with UEFI.
> Even for that depending on the BOOTMETH_* configurations is probably not
> good enough after all.

Fair enough but that's a bit of a chicken-and-egg situation, tbh...
and it's not straightforward.
For example, you *can* boot directly without bootmeth* if your default
command is 'bootefi bootmgr'. And I think it's better to document that
somewhere, rather than not exposing the ECPT entry for people that opt
out of bootmeth*

>
> I think you mentioned that you or Heinrich could amend the patches
> before merging; do not hesitate to let me know if you prefer that I send
> a v2 series with the dependency here and in the previous patch removed.
>

I found another place with the same dependancy, so please send a v2 if
it's not too much trouble.

Cheers
/Ilias
> >
> > Cheers
> > /Ilias
> > > +       depends on !EFI_VARIABLE_NO_STORE
> > > +       depends on BOOTM_EFI
> > > +       depends on EFI_BINARY_EXEC
> > > +       depends on EFI_DEVICE_PATH_TO_TEXT
> > > +       depends on EFI_DEVICE_PATH_UTIL
> > > +       depends on EFI_GET_TIME || !DM_RTC
> > > +       depends on EFI_PARTITION
> > > +       depends on EFI_SET_TIME || !DM_RTC
> > > +       depends on EFI_UNICODE_CAPITALIZATION
> > > +       depends on EFI_ESRT || !EFI_HAVE_CAPSULE_SUPPORT
> > > +       depends on EFI_RUNTIME_UPDATE_CAPSULE || !EFI_HAVE_CAPSULE_SUPPORT
> > > +       depends on EFI_CAPSULE_FIRMWARE || !EFI_HAVE_CAPSULE_SUPPORT
> > > +       default y
> > > +
> > >  config EFI_ECPT
> > >         bool "Enable the UEFI ECPT generation"
> > >         default y
> > >         help
> > > -         Enabling this option created the ECPT UEFI table.
> > > +         Enabling this option creates the EFI Conformance Profiles Table
> > > +         (ECPT).
> > >
> > >  config EFI_EBBR_2_1_CONFORMANCE
> > > -       bool "Add the EBBRv2.1 conformance entry to the ECPT table"
> > > -       depends on BOOTMETH_EFI_BOOTMGR
> > > -       depends on EFI_ECPT
> > > -       depends on EFI_LOADER_HII
> > > -       depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
> > > -       depends on EFI_RNG_PROTOCOL || !DM_RNG
> > > -       depends on EFI_UNICODE_COLLATION_PROTOCOL2
> > > +       bool "Add the EBBR v2.1 conformance entry to the ECPT"
> > > +       depends on EFI_ECPT && HAVE_EFI_EBBR_2_1
> > >         default y
> > >         help
> > > -         Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table.
> > > +         Enabling this option adds the Embedded Base Boot Requirements (EBBR)
> > > +         v2.1 conformance entry to the ECPT.
> > >
> > >  config EFI_CONSOLE_DISABLE_ANSI
> > >         bool "Disable ANSI escape sequence queries for console size"
> > >
> > > --
> > > 2.53.0
> > >
diff mbox series

Patch

diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
index 4cb13ae7c8a..40380876959 100644
--- a/lib/efi_loader/Kconfig
+++ b/lib/efi_loader/Kconfig
@@ -557,23 +557,41 @@  config EFI_ESRT
 	help
 	  Enabling this option creates the ESRT UEFI system table.
 
+config HAVE_EFI_EBBR_2_1
+	bool
+	depends on EFI_LOADER_HII
+	depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
+	depends on EFI_RNG_PROTOCOL || !DM_RNG
+	depends on EFI_UNICODE_COLLATION_PROTOCOL2
+	depends on BOOTMETH_EFILOADER
+	depends on !EFI_VARIABLE_NO_STORE
+	depends on BOOTM_EFI
+	depends on EFI_BINARY_EXEC
+	depends on EFI_DEVICE_PATH_TO_TEXT
+	depends on EFI_DEVICE_PATH_UTIL
+	depends on EFI_GET_TIME || !DM_RTC
+	depends on EFI_PARTITION
+	depends on EFI_SET_TIME || !DM_RTC
+	depends on EFI_UNICODE_CAPITALIZATION
+	depends on EFI_ESRT || !EFI_HAVE_CAPSULE_SUPPORT
+	depends on EFI_RUNTIME_UPDATE_CAPSULE || !EFI_HAVE_CAPSULE_SUPPORT
+	depends on EFI_CAPSULE_FIRMWARE || !EFI_HAVE_CAPSULE_SUPPORT
+	default y
+
 config EFI_ECPT
 	bool "Enable the UEFI ECPT generation"
 	default y
 	help
-	  Enabling this option created the ECPT UEFI table.
+	  Enabling this option creates the EFI Conformance Profiles Table
+	  (ECPT).
 
 config EFI_EBBR_2_1_CONFORMANCE
-	bool "Add the EBBRv2.1 conformance entry to the ECPT table"
-	depends on BOOTMETH_EFI_BOOTMGR
-	depends on EFI_ECPT
-	depends on EFI_LOADER_HII
-	depends on EFI_RISCV_BOOT_PROTOCOL || !RISCV
-	depends on EFI_RNG_PROTOCOL || !DM_RNG
-	depends on EFI_UNICODE_COLLATION_PROTOCOL2
+	bool "Add the EBBR v2.1 conformance entry to the ECPT"
+	depends on EFI_ECPT && HAVE_EFI_EBBR_2_1
 	default y
 	help
-	  Enabling this option adds the EBBRv2.1 conformance entry to the ECPT UEFI table.
+	  Enabling this option adds the Embedded Base Boot Requirements (EBBR)
+	  v2.1 conformance entry to the ECPT.
 
 config EFI_CONSOLE_DISABLE_ANSI
 	bool "Disable ANSI escape sequence queries for console size"