[PATCH] efi_loader: optional persistence of variables

Tom Saeger tom.saeger at oracle.com
Wed Mar 23 17:22:19 CET 2022


On Tue, Mar 22, 2022 at 06:03:28PM -0500, Tom Saeger wrote:
> On Tue, Mar 22, 2022 at 11:33:20PM +0100, Heinrich Schuchardt wrote:
> > On 3/22/22 23:16, Tom Saeger wrote:
> > > On Tue, Mar 22, 2022 at 10:41:40PM +0100, Heinrich Schuchardt wrote:
> > > > On 3/22/22 22:21, Tom Saeger wrote:
> > > > > Since be66b89da306 ("efi_loader: configuration of variables store")
> > > > > the choice of EFI_VARIABLE_FILE_STORE or EFI_MM_COMM_TEE
> > > > > is mutually-exclusive, however efi_var_to_file also allows
> > > > > for "neither".  Set Kconfig choice optional.
> > > > > 
> > > > > Signed-off-by: Tom Saeger <tom.saeger at oracle.com>
> > > > > ---
> > > > >    lib/efi_loader/Kconfig | 1 +
> > > > >    1 file changed, 1 insertion(+)
> > > > > 
> > > > > diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> > > > > index e5e35fe51f65..9add2a286ff4 100644
> > > > > --- a/lib/efi_loader/Kconfig
> > > > > +++ b/lib/efi_loader/Kconfig
> > > > > @@ -44,6 +44,7 @@ config EFI_SETUP_EARLY
> > > > > 
> > > > >    choice
> > > > >    	prompt "Store for non-volatile UEFI variables"
> > > > > +	optional
> > > > 
> > > > Storing non-volatile variables is required by the UEFI specification.
> > > > 
> > > > How should a user understand that a boot option he just created vanishes
> > > > upon reboot?
> > > > 
> > > > Please, explain your use case.
> > > 
> > > bootefi ${kernel_addr}
> > > 
> > > in this case linux kernel for an Armv8 platform.
> > > This platform does not want or need any variables to persist.
> > > 
> > > bootefi eventually calls efi_var_from_file(), where *NOT* defining
> > > CONFIG_EFI_VARIABLE_FILE_STORE would allow this use case to work,
> > > otherwise it fails.  This was possible before
> > > be66b89da306 ("efi_loader: configuration of variables store").
> > 
> > Please, describe exactly what does not work. Is it building or is it
> > running the bootefi command?
> 
> after be66b89da306 CONFIG_EFI_VARIABLE_FILE_STORE is now selected due to
> Kconfig choice.  This is the difference.
> 
> It fails while running, but the difference is the build.
> I'd rather configure for the old behavior - that being return
> EFI_SUCCESS from efi_var_from_file() when CONFIG_EFI_VARIABLE_FILE_STORE
> isn't defined.
> 
> The call-stack is something like:
> 
> do_bootefi->efi_init_obj_list->efi_init_variables->efi_var_from_file

I think perhaps I stumbled upon an unsupported mode, which the prior
Kconfig unintentionally allowed.

If so - this patch doesn't make sense.

It was however convenient for our application.
(NO ESP, NO persistence)

> 
> > 
> > Does your system have an ESP?

I'll look into this - perhaps it should, despite strong desire to
disallow changes to it.


> > Where does bootefi fail?

When CONFIG_EFI_VARIABLE_FILE_STORE is defined, runtime complains (as it
should)

"Failed to persist EFI variables"

> > Best regards
> > 
> > Heinrich
> > 

Appreciate all your feedback,

--Tom

> > > 
> > > Thoughts?
> > > 
> > > --Tom
> > > 
> > > > 
> > > > Best regards
> > > > 
> > > > Heinrich
> > > > 
> > > > >    	default EFI_VARIABLE_FILE_STORE
> > > > >    	help
> > > > >    	  Select where non-volatile UEFI variables shall be stored.
> > > > > 
> > > > > base-commit: 5f68470d69f853b1652ebe93525b60064717fe2e
> > > > 
> > 


More information about the U-Boot mailing list