[PATCH 00/16] efi_loader: non-volatile and runtime variables

Simon Glass
2020-03-27T19:44:24Z

Hi Heinrich,

On Thu, 26 Mar 2020 at 23:28, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> Up to UEFI variable where stored in U-Boot environment variables. Saving

That doesn't read right to me.

> UEFI variables was not possible without saving the U-Boot environment
> variables.
>
> With this patch series file ubootefi.var in the EFI system partition is
> used for saving UEFI variables.
>
> Furthermore the UEFI variables are exposed at runtime and are writable at
> runtime.
>
> The missing piece is transferring the variable changed at runtime back to
> the firmware. I will evaluate the following options:
>
> * using a fixed memory address: we could read the memory area after a
> reboot
> * using a systemd service which is called before the system goes down
>
> Many of the CCs are due to the changes in disk/part_efi.c. Here the logic
> to detect the EFI system partition is introduced (patch 04/16).
>
> Heinrich Schuchardt (16):
> cmd: efidebug: fix int to pointer cast
> efi_loader: only reserve memory if fdt node enabled
> efi_loader: eliminate EFI_CALL() for variable access
> part: detect EFI system partition
> efi_loader: identify EFI system partition
> efi_loader: keep attributes in efi_set_variable_int()
> efi_loader: export initialization state
> efi_loader: change setup sequence
> efi_loader: imply FAT, FAT_WRITE
> efi_loader: UEFI variable persistence
> efi_loader: export efi_convert_pointer()
> efi_loader: optional pointer for ConvertPointer
> efi_loader: memory buffer for variables
> efi_loader: use memory based variable storage
> efi_loader: enable UEFI variables at runtime
> efi_selftest: adjust runtime test for variables
>
> cmd/bootefi.c | 3 +-
> cmd/efidebug.c | 71 +-
> cmd/nvedit_efi.c | 18 +-
> disk/part_dos.c | 10 +-
> disk/part_efi.c | 12 +-
> include/efi_api.h | 2 +
> include/efi_loader.h | 22 +
> include/efi_variable.h | 52 ++
> include/part.h | 11 +-
> lib/efi_loader/Kconfig | 10 +
> lib/efi_loader/Makefile | 2 +
> lib/efi_loader/efi_bootmgr.c | 20 +-
> lib/efi_loader/efi_disk.c | 20 +
> lib/efi_loader/efi_runtime.c | 20 +-
> lib/efi_loader/efi_setup.c | 54 +-
> lib/efi_loader/efi_variable.c | 635 ++++++------------
> lib/efi_loader/efi_variables_file.c | 235 +++++++
> lib/efi_loader/efi_variables_mem.c | 324 +++++++++
> .../efi_selftest_variables_runtime.c | 47 +-
> 19 files changed, 1037 insertions(+), 531 deletions(-)
> create mode 100644 include/efi_variable.h
> create mode 100644 lib/efi_loader/efi_variables_file.c
> create mode 100644 lib/efi_loader/efi_variables_mem.c

Can you use 'vars' instead of variables as these filenames are too long.

Regards,
Simon