[PATCH v3 06/17] efi_loader: add option to initialise EFI subsystem early
AKASHI Takahiro
takahiro.akashi at linaro.org
Wed Jul 15 06:41:31 CEST 2020
Heinrich,
On Fri, Jul 10, 2020 at 06:25:34PM +0200, Heinrich Schuchardt wrote:
> On 10.07.20 03:25, AKASHI Takahiro wrote:
> > If this option, CONFIG_EFI_SETUP_EARLY, is enabled, the initialisation
> > of UEFI subsystem will be done as part of U-Boot initialisation.
> >
> > Please note that this option won't be enabled explicitly by users,
> > instead, should be enabled implicitly by other configuration options.
> >
> > Specifically, this feature will be utilised in implementing capsule-on-disk
> > feature.
>
> This breaks access to block devices in UEFI. You cannot do the
> initialization before the initialization of block devices which
> currently is not done automatically but requires commands like 'scsi
> scan' in a script or entered manually.
I know that, but I'm also sure there are some devices detected before
executing such kind of commands.
The reason that I added this configuration is to give users alternative
choices depending on their systems and 'needs'.
> It might make sense to scan all block devices automatically instead of
> requiring command entry.
I don't object to this idea, but it can break the compatibility
with existing config_distro_bootcmd framework.
-Takahiro Akashi
> Best regards
>
> Heinrich
>
> >
> > Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
> > ---
> > common/board_r.c | 6 ++++++
> > lib/efi_loader/Kconfig | 4 ++++
> > 2 files changed, 10 insertions(+)
> >
> > diff --git a/common/board_r.c b/common/board_r.c
> > index fa57fa9b6993..dcb8c6f79d2f 100644
> > --- a/common/board_r.c
> > +++ b/common/board_r.c
> > @@ -68,6 +68,9 @@
> > #if defined(CONFIG_GPIO_HOG)
> > #include <asm/gpio.h>
> > #endif
> > +#ifdef CONFIG_EFI_SETUP_EARLY
> > +#include <efi_loader.h>
> > +#endif
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > @@ -858,6 +861,9 @@ static init_fnc_t init_sequence_r[] = {
> > #endif
> > #if defined(CONFIG_M68K) && defined(CONFIG_BLOCK_CACHE)
> > blkcache_init,
> > +#endif
> > +#ifdef CONFIG_EFI_SETUP_EARLY
> > + (init_fnc_t)efi_init_obj_list,
> > #endif
> > run_main_loop,
> > };
> > diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> > index 6c9df3a76763..f0a30a43bc48 100644
> > --- a/lib/efi_loader/Kconfig
> > +++ b/lib/efi_loader/Kconfig
> > @@ -27,6 +27,10 @@ config EFI_LOADER
> >
> > if EFI_LOADER
> >
> > +config EFI_SETUP_EARLY
> > + bool
> > + default n
> > +
> > config EFI_GET_TIME
> > bool "GetTime() runtime service"
> > depends on DM_RTC
> >
>
More information about the U-Boot
mailing list