[U-Boot] [PATCH 1/1] efi_loader: allow adding mapped memory at 0x00000000

Bin Meng bmeng.cn at gmail.com
Sun Jul 14 08:30:22 UTC 2019


On Sun, Jul 14, 2019 at 4:08 PM Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> On 7/14/19 4:13 AM, Bin Meng wrote:
> > 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
>
> Thanks for reviewing. The current version of Sphinx wants "Return:".
> Cf.
> https://www.kernel.org/doc/html/v5.2/doc-guide/kernel-doc.html#return-values
>

Good point. I thought we were using Doxygen format. Not ware of new
Sphinx format. Are we buidling Sphinx docs for U-Boot?

Regards,
Bin


More information about the U-Boot mailing list