mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
efi_loader: efi_var_sf: Do not fail on blank SPI Flash
When SPI Flash is blank (first boot or erased), efi_var_from_storage() returns EFI_DEVICE_ERROR because efi_var_restore() fails on invalid magic/CRC. This prevents the EFI subsystem from initializing. Check the magic value before attempting to restore variables. If the magic does not match EFI_VAR_FILE_MAGIC, treat it as an empty store and return EFI_SUCCESS, matching the behavior of the file-based efi_var_file.c which deliberately returns EFI_SUCCESS on missing or corrupted variable files to avoid blocking the boot process. Similarly, if the magic matches but efi_var_restore() fails (e.g. corrupted CRC), log the error but still return EFI_SUCCESS. Suggested-by: John Toomey <john.toomey@amd.com> Signed-off-by: Michal Simek <michal.simek@amd.com> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
committed by
Heinrich Schuchardt
parent
090a7eb9cf
commit
57eae396ec
@@ -98,11 +98,8 @@ efi_status_t efi_var_from_storage(void)
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (efi_var_restore(buf, false) != EFI_SUCCESS) {
|
||||
if (efi_var_restore(buf, false) != EFI_SUCCESS)
|
||||
log_err("No valid EFI variables in SPI Flash\n");
|
||||
ret = EFI_DEVICE_ERROR;
|
||||
goto error;
|
||||
}
|
||||
|
||||
ret = EFI_SUCCESS;
|
||||
error:
|
||||
|
||||
Reference in New Issue
Block a user