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-...@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(-)