summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2023-11-21 09:10:15 -0500
committerTom Rini <trini@konsulko.com>2023-11-21 09:10:15 -0500
commit9e53e45292ee2f1d9d2ccc59914b161bef9b10d7 (patch)
tree7da5c6ed1f5986e20073ec4183480110d36933c6 /lib
parent24ca49b33af98d54d6cd2e845f071f6565345ffd (diff)
parent64658007f3c61e32bf241f3048a23b1728774d57 (diff)
Merge tag 'efi-2024-01-rc4' of https://source.denx.de/u-boot/custodians/u-boot-efi
Pull request efi-2024-01-rc4 Documentation * Add HiSilicon board documentation to HTML docs * Fix building with Sphinx 6.0 UEFI * Increase default variable store size to 128K * Check return value of efi_append_scrtm version * Create shortened boot options in eficonfig command Other * Avoid incorrect error message in mkimage
Diffstat (limited to 'lib')
-rw-r--r--lib/efi_loader/Kconfig14
-rw-r--r--lib/efi_loader/efi_tcg2.c5
-rw-r--r--lib/efi_loader/efi_var_file.c7
3 files changed, 17 insertions, 9 deletions
diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
index 4ccd26f94a9..2e3935467c1 100644
--- a/lib/efi_loader/Kconfig
+++ b/lib/efi_loader/Kconfig
@@ -133,18 +133,20 @@ endif
config EFI_VAR_BUF_SIZE
int "Memory size of the UEFI variable store"
- default 16384 if EFI_MM_COMM_TEE
- default 65536
+ default 131072
range 4096 2147483647
help
This defines the size in bytes of the memory area reserved for keeping
UEFI variables.
- When using StandAloneMM (CONFIG_EFI_MM_COMM_TEE=y) this value should
- match the value of PcdFlashNvStorageVariableSize used to compile the
- StandAloneMM module.
+ When using StandAloneMM (CONFIG_EFI_MM_COMM_TEE=y) is used the
+ available size for storing variables is defined in
+ PcdFlashNvStorageVariableSize.
+ That value is probed at runtime from U-Boot. In that case,
+ EFI_VAR_BUF_SIZE represents the memory U-Boot reserves to present
+ runtime variables to the OS.
- Minimum 4096, default 65536, or 16384 when using StandAloneMM.
+ Minimum 4096, default 131072
config EFI_GET_TIME
bool "GetTime() runtime service"
diff --git a/lib/efi_loader/efi_tcg2.c b/lib/efi_loader/efi_tcg2.c
index 2eaa12b83b1..463ea4c1541 100644
--- a/lib/efi_loader/efi_tcg2.c
+++ b/lib/efi_loader/efi_tcg2.c
@@ -944,8 +944,11 @@ static efi_status_t efi_init_event_log(void)
* Add SCRTM version to the log if previous firmmware
* doesn't pass an eventlog.
*/
- if (!elog.found)
+ if (!elog.found) {
ret = efi_append_scrtm_version(dev);
+ if (ret != EFI_SUCCESS)
+ goto free_pool;
+ }
ret = create_final_event();
if (ret != EFI_SUCCESS)
diff --git a/lib/efi_loader/efi_var_file.c b/lib/efi_loader/efi_var_file.c
index 62e071bd834..d7dba050710 100644
--- a/lib/efi_loader/efi_var_file.c
+++ b/lib/efi_loader/efi_var_file.c
@@ -204,8 +204,11 @@ efi_status_t efi_var_restore(struct efi_var_file *buf, bool safe)
* File ubootefi.var is read from the EFI system partitions and the variables
* stored in the file are created.
*
- * In case the file does not exist yet or a variable cannot be set EFI_SUCCESS
- * is returned.
+ * On first boot the file ubootefi.var does not exist yet. This is why we must
+ * return EFI_SUCCESS in this case.
+ *
+ * If the variable file is corrupted, e.g. incorrect CRC32, we do not want to
+ * stop the boot process. We deliberately return EFI_SUCCESS in this case, too.
*
* Return: status code
*/