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

Heinrich Schuchardt
2020-03-28T06:42:31Z

On 3/27/20 8:44 PM, Simon Glass wrote:
> 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.

This should be:

Up to now UEFI variable were stored in U-Boot environment variables

>
>> 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.

Sure

Regards

Heinrich