[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