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

Heinrich Schuchardt xypron.glpk at gmx.de
Sun Jul 14 22:58:09 UTC 2019


On 7/14/19 10:30 AM, Bin Meng wrote:
> 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?

make htmldocs

Regards

Heinrich


More information about the U-Boot mailing list