[PATCH v2 1/2] efi_loader: reduce noisiness if ESP is missing
Ilias Apalodimas
ilias.apalodimas at linaro.org
Fri Oct 18 15:42:54 CEST 2024
On Fri, 18 Oct 2024 at 04:18, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> EFI variables can be stored in a file on the EFI system partition. If that
> partition is missing we are writing two error messages per variable. This
> is too noisy.
>
> Just warn once about the missing ESP.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> v2:
> new patch
> ---
> lib/efi_loader/efi_var_file.c | 22 ++++++++++++++--------
> 1 file changed, 14 insertions(+), 8 deletions(-)
>
> diff --git a/lib/efi_loader/efi_var_file.c b/lib/efi_loader/efi_var_file.c
> index 413e1794e88..ba0bf33ffbd 100644
> --- a/lib/efi_loader/efi_var_file.c
> +++ b/lib/efi_loader/efi_var_file.c
> @@ -37,18 +37,16 @@ static efi_status_t __maybe_unused efi_set_blk_dev_to_system_partition(void)
> char part_str[PART_STR_LEN];
> int r;
>
> - if (efi_system_partition.uclass_id == UCLASS_INVALID) {
> - log_err("No EFI system partition\n");
> + if (efi_system_partition.uclass_id == UCLASS_INVALID)
> return EFI_DEVICE_ERROR;
> - }
> +
> snprintf(part_str, PART_STR_LEN, "%x:%x",
> efi_system_partition.devnum, efi_system_partition.part);
> r = fs_set_blk_dev(blk_get_uclass_name(efi_system_partition.uclass_id),
> part_str, FS_TYPE_ANY);
> - if (r) {
> - log_err("Cannot read EFI system partition\n");
> + if (r)
> return EFI_DEVICE_ERROR;
> - }
> +
> return EFI_SUCCESS;
> }
>
> @@ -67,14 +65,21 @@ efi_status_t efi_var_to_file(void)
> loff_t len;
> loff_t actlen;
> int r;
> + static bool once;
>
> ret = efi_var_collect(&buf, &len, EFI_VARIABLE_NON_VOLATILE);
> if (ret != EFI_SUCCESS)
> goto error;
>
> ret = efi_set_blk_dev_to_system_partition();
> - if (ret != EFI_SUCCESS)
> - goto error;
> + if (ret != EFI_SUCCESS) {
> + if (!once) {
> + log_warning("Cannot persist EFI variables without system partition\n");
> + once = true;
> + }
> + goto out;
> + }
> + once = false;
>
> r = fs_write(EFI_VAR_FILE_NAME, map_to_sysmem(buf), 0, len, &actlen);
> if (r || len != actlen)
> @@ -83,6 +88,7 @@ efi_status_t efi_var_to_file(void)
> error:
> if (ret != EFI_SUCCESS)
> log_err("Failed to persist EFI variables\n");
> +out:
> free(buf);
> return ret;
> #else
> --
> 2.45.2
>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
More information about the U-Boot
mailing list