[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH v4 6/6] linux: ignore FDT unless we need to modify it,
Daniel Kiper <=