[PATCH 00/13] efi: Tidy up confusion between pointers and addresses
Heinrich Schuchardt
xypron.glpk at gmx.de
Tue Nov 26 10:10:38 CET 2024
On 25.11.24 21:44, Simon Glass wrote:
> The EFI-loader implementation converts things back and forth between
> addresses and pointers, with not much consistency in how this is done.
>
> Within most of U-Boot a pointer is a void * and an address is a ulong
No. It is phys_addr_t that was introduced to handle the sandbox's
virtual addresses.
And we should keep this sandbox stuff out of the EFI code. They are only
needed for the command line interface.
>
> This convention is very helpful, since it is obvious in common code as
> to whether you need to call map_sysmem() and friends, or not.
>
> As part of cleaning up the EFI memory-management, I found it almost
> impossible to know in some cases whether something is an address or a
> pointer. I decided to give up on that and come back to it when this is
> resolved.
>
> This series starts applying the normal ulong/void * convention to the
> EFI_loader code, so making things easier to follow.
According to the C specification size of long may be different to the
size of void *. uintptr_t is the type that is guaranteed to match the
size of void *.
There is no benefit in spreading the ulong abuse any further.
Best regards
Heinrich
>
> Link: https://lore.kernel.org/u-boot/20240725135629.3505072-1-sjg@chromium.org/
>
>
> Simon Glass (13):
> efi: Define fields in struct efi_mem_desc
> efi_loader: Convert efi_get_memory_map() to return pointers
> efi_loader: Show the resulting memory address from an alloc
> efi_loader: Update startimage_exit self-test to check error
> efi_loader: Move some memory-function comments to header
> efi_loader: Use the enum for memory type
> efi_loader: Make more use of ulong
> efi_loader: Tidy up use of addresses
> lmb: Reduce mapmem contortions in lmb_map_update_notify()
> efi_loader: Simplify efi_dp_from_mem()
> efi_loader: Tidy up efi_reserve_memory()
> efi_loader: Drop extra brackets in efi_mem_carve_out()
> efi_loader: Don't try to add sandbox runtime code
>
> include/efi.h | 15 ++
> include/efi_api.h | 6 +-
> include/efi_loader.h | 100 +++++--
> lib/efi_loader/efi_bootbin.c | 3 +-
> lib/efi_loader/efi_bootmgr.c | 11 +-
> lib/efi_loader/efi_boottime.c | 51 ++--
> lib/efi_loader/efi_device_path.c | 18 +-
> lib/efi_loader/efi_dt_fixup.c | 8 +-
> lib/efi_loader/efi_helper.c | 7 +-
> lib/efi_loader/efi_image_loader.c | 2 +-
> lib/efi_loader/efi_memory.c | 246 +++++++-----------
> lib/efi_loader/efi_var_mem.c | 6 +-
> .../efi_selftest_startimage_exit.c | 6 +-
> lib/lmb.c | 10 +-
> 14 files changed, 251 insertions(+), 238 deletions(-)
>
More information about the U-Boot
mailing list