All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Cc: u-boot@lists.denx.de, Alexandre Ghiti <alexghiti@rivosinc.com>
Subject: Re: [PATCH v2 1/1] cmd: bootefi: allocate device-tree copy from high memory
Date: Thu, 23 Feb 2023 22:02:19 +0200	[thread overview]
Message-ID: <Y/fGS8MB5ZRNGTXg@hera> (raw)
In-Reply-To: <20230223192739.6292-2-heinrich.schuchardt@canonical.com>

Hi Heinrich,

On Thu, Feb 23, 2023 at 08:27:39PM +0100, Heinrich Schuchardt wrote:
> The bootefi command creates a copy of the device-tree within the first
> 127 MiB of memory. This may lead to overwriting previously loaded binaries
> (e.g. kernel, initrd).
>
> Linux EFI stub itself copies U-Boot's copy of the device-tree. This means
> there is not restriction for U-Boot to place the device-tree copy to any
> address. (Restrictions existed for 32bit ARM before Linux commit
> 7a1be318f579 ("ARM: 9012/1: move device tree mapping out of linear region")
> for legacy booting.
>
> Reported-by: Alexandre Ghiti <alexghiti@rivosinc.com>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> Tested-by: Alexandre Ghiti <alexghiti@rivosinc.com>
> ---
> v2:
> 	remove superfluous comment
> ---
>  cmd/bootefi.c | 19 +++----------------
>  1 file changed, 3 insertions(+), 16 deletions(-)
>
> diff --git a/cmd/bootefi.c b/cmd/bootefi.c
> index 6618335ddf..8aa15a64c8 100644
> --- a/cmd/bootefi.c
> +++ b/cmd/bootefi.c
> @@ -204,25 +204,12 @@ static efi_status_t copy_fdt(void **fdtp)
>  	fdt_pages = efi_size_in_pages(fdt_totalsize(fdt) + 0x3000);
>  	fdt_size = fdt_pages << EFI_PAGE_SHIFT;
>
> -	/*
> -	 * Safe fdt location is at 127 MiB.
> -	 * On the sandbox convert from the sandbox address space.
> -	 */
> -	new_fdt_addr = (uintptr_t)map_sysmem(fdt_ram_start + 0x7f00000 +
> -					     fdt_size, 0);
> -	ret = efi_allocate_pages(EFI_ALLOCATE_MAX_ADDRESS,
> +	ret = efi_allocate_pages(EFI_ALLOCATE_ANY_PAGES,
>  				 EFI_ACPI_RECLAIM_MEMORY, fdt_pages,

>  				 &new_fdt_addr);
>  	if (ret != EFI_SUCCESS) {
> -		/* If we can't put it there, put it somewhere */
> -		new_fdt_addr = (ulong)memalign(EFI_PAGE_SIZE, fdt_size);
> -		ret = efi_allocate_pages(EFI_ALLOCATE_MAX_ADDRESS,
> -					 EFI_ACPI_RECLAIM_MEMORY, fdt_pages,
> -					 &new_fdt_addr);
> -		if (ret != EFI_SUCCESS) {
> -			log_err("ERROR: Failed to reserve space for FDT\n");
> -			goto done;
> -		}
> +		log_err("ERROR: Failed to reserve space for FDT\n");
> +		goto done;
>  	}
>  	new_fdt = (void *)(uintptr_t)new_fdt_addr;
>  	memcpy(new_fdt, fdt, fdt_totalsize(fdt));
> --
> 2.38.1
>

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>


      reply	other threads:[~2023-02-23 20:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-23 19:27 [PATCH v2 1/1] cmd: bootefi: allocate device-tree copy from high memory Heinrich Schuchardt
2023-02-23 19:27 ` Heinrich Schuchardt
2023-02-23 20:02   ` Ilias Apalodimas [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y/fGS8MB5ZRNGTXg@hera \
    --to=ilias.apalodimas@linaro.org \
    --cc=alexghiti@rivosinc.com \
    --cc=heinrich.schuchardt@canonical.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.