[U-Boot] [PATCH 1/1] efi_loader: allow adding mapped memory at 0x00000000
Bin Meng
bmeng.cn at gmail.com
Sun Jul 14 02:13:17 UTC 2019
On Sun, Jul 14, 2019 at 4:02 AM Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> As efi_add_memory_map() signals an error by returning NULL and correct
> function by returning the requested address we cannot discern an error from
> correct functioning for address 0x00000000. This leads to unexpected
> warnings on the Raspberry 3.
>
> Use EFI_SUCCESS to signal success and return an error code otherwise.
>
> Reported-by: Bryan O'Donoghue <pure.logic at nexus-software.ie>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
> cmd/bootefi.c | 4 ++--
> include/efi_loader.h | 4 ++--
> lib/efi_loader/efi_memory.c | 28 ++++++++++++++++++----------
> 3 files changed, 22 insertions(+), 14 deletions(-)
>
> diff --git a/cmd/bootefi.c b/cmd/bootefi.c
> index c19256e00d..04d3e3e4a7 100644
> --- a/cmd/bootefi.c
> +++ b/cmd/bootefi.c
> @@ -169,8 +169,8 @@ static void efi_carve_out_dt_rsv(void *fdt)
>
> pages = efi_size_in_pages(size + (addr & EFI_PAGE_MASK));
> addr &= ~EFI_PAGE_MASK;
> - if (!efi_add_memory_map(addr, pages, EFI_RESERVED_MEMORY_TYPE,
> - false))
> + if (efi_add_memory_map(addr, pages, EFI_RESERVED_MEMORY_TYPE,
> + false) != EFI_SUCCESS)
> printf("FDT memrsv map %d: Failed to add to map\n", i);
> }
> }
> diff --git a/include/efi_loader.h b/include/efi_loader.h
> index db4763fc9b..6cc6a3835c 100644
> --- a/include/efi_loader.h
> +++ b/include/efi_loader.h
> @@ -476,8 +476,8 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size,
> efi_uintn_t *descriptor_size,
> uint32_t *descriptor_version);
> /* Adds a range into the EFI memory map */
> -uint64_t efi_add_memory_map(uint64_t start, uint64_t pages, int memory_type,
> - bool overlap_only_ram);
> +efi_status_t efi_add_memory_map(uint64_t start, uint64_t pages, int memory_type,
> + bool overlap_only_ram);
> /* Called by board init to initialize the EFI drivers */
> efi_status_t efi_driver_init(void);
> /* Called by board init to initialize the EFI memory map */
> diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c
> index 27379381e8..da253fa285 100644
> --- a/lib/efi_loader/efi_memory.c
> +++ b/lib/efi_loader/efi_memory.c
> @@ -223,8 +223,17 @@ static s64 efi_mem_carve_out(struct efi_mem_list *map,
> return EFI_CARVE_LOOP_AGAIN;
> }
>
> -uint64_t efi_add_memory_map(uint64_t start, uint64_t pages, int memory_type,
> - bool overlap_only_ram)
> +/**
> + * efi_add_memory_map() - add memory area to the memory map
> + *
> + * @start: start address, must be a multiple of EFI_PAGE_SIZE
> + * @pages: number of pages to add
> + * @memory_type: type of memory added
> + * @overlap_only_ram: the memory area must overlap existing
> + * Return: status code
nits: @return
[snip]
Other than that,
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
More information about the U-Boot
mailing list