grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 6/6] linux: ignore FDT unless we need to modify it


From: Daniel Kiper
Subject: Re: [PATCH v4 6/6] linux: ignore FDT unless we need to modify it
Date: Mon, 17 Oct 2022 17:25:34 +0200
User-agent: NeoMutt/20170113 (1.7.2)

On Thu, Sep 08, 2022 at 03:30:17PM +0200, Ard Biesheuvel wrote:
> Now that we implemented support for the LoadFile2 protocol for initrd
> loading, there is no longer a need to pass the initrd parameters via
> the device tree. This means that when the LoadFile2 protocol is being
> used, there is no reason to update the device tree in the first place,
> and so we can ignore it entirely.
>
> The only remaining reason to deal with the devicetree is if we are
> using the 'devicetree' command to load one from disk, so tweak the
> logic in grub_fdt_install() to take that into account.
>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>

Except three nits below Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>...

> ---
>  grub-core/loader/arm64/linux.c | 22 ++++++++++----------
>  grub-core/loader/efi/fdt.c     |  7 +++++--
>  2 files changed, 16 insertions(+), 13 deletions(-)
>
> diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
> index 8b7fbb35fb72..36396e9f7ff5 100644
> --- a/grub-core/loader/arm64/linux.c
> +++ b/grub-core/loader/arm64/linux.c
> @@ -133,21 +133,21 @@ finalize_params_linux (void)
>
>    void *fdt;
>
> -  fdt = grub_fdt_load (GRUB_EFI_LINUX_FDT_EXTRA_SPACE);
> +  /* Set initrd info */
> +  if (initrd_start && initrd_end > initrd_start)
> +    {
> +      fdt = grub_fdt_load (GRUB_EFI_LINUX_FDT_EXTRA_SPACE);
>
> -  if (!fdt)
> -    goto failure;
> +      if (!fdt)
> +       goto failure;
>
> -  node = grub_fdt_find_subnode (fdt, 0, "chosen");
> -  if (node < 0)
> -    node = grub_fdt_add_subnode (fdt, 0, "chosen");
> +      node = grub_fdt_find_subnode (fdt, 0, "chosen");
> +      if (node < 0)
> +       node = grub_fdt_add_subnode (fdt, 0, "chosen");
>
> -  if (node < 1)
> -    goto failure;
> +      if (node < 1)
> +       goto failure;
>
> -  /* Set initrd info */
> -  if (initrd_start && initrd_end > initrd_start)
> -    {
>        grub_dprintf ("linux", "Initrd @ %p-%p\n",
>                   (void *) initrd_start, (void *) initrd_end);
>
> diff --git a/grub-core/loader/efi/fdt.c b/grub-core/loader/efi/fdt.c
> index 80d70887474a..fd8093ac83c9 100644
> --- a/grub-core/loader/efi/fdt.c
> +++ b/grub-core/loader/efi/fdt.c
> @@ -89,13 +89,16 @@ grub_fdt_install (void)
>    static grub_efi_guid_t fdt_guid = GRUB_EFI_DEVICE_TREE_GUID;
>    grub_efi_status_t status;
>
> +  if (!fdt && !loaded_fdt)

fdt == NULL && loaded_fdt == NULL

> +    return GRUB_ERR_NONE;
> +
>    b = grub_efi_system_table->boot_services;
> -  status = b->install_configuration_table (&fdt_guid, fdt);
> +  status = b->install_configuration_table (&fdt_guid, fdt ?: loaded_fdt);

s/?:/? fdt :/

>    if (status != GRUB_EFI_SUCCESS)
>      return grub_error (GRUB_ERR_IO, "failed to install FDT");
>
>    grub_dprintf ("fdt", "Installed/updated FDT configuration table @ %p\n",
> -             fdt);
> +             fdt ?: loaded_fdt);

Ditto.

Daniel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]