
Hi,
On Thu, 1 Aug 2024 at 11:36, Simon Glass sjg@chromium.org wrote:
We have been discussing the state of EFI memory management for some years so I thought it might be best to send a short series showing some of the issues we have talked about.
This one just deals with memory allocation. It updates EFI to use U-Boot memory allocation for the pool where possible. Most functions use that anyway and it is much more efficient. It also avoids allocating things 'in space' in conflict with the loaded images.
For v2 I have dropped patches which are not germane to the main idea.
Note that this series is independent from Sugosh's lmb series[1], although I believe it will point the way to simplifying some of the later patches in that series.
Overall, some issues which should be resolved in future are:
- allocation inconsistency, e.g. efi_add_protocol() uses malloc() but efi_dp_dup() does not (this series makes a start)
- change efi_bl_init() to register events later, when the devices are actually used
- rather than efi_set_bootdev(), provide a bootstd way to take note of the device images came from and allow EFI to query that when needed
- EFI_LOADER_BOUNCE_BUFFER - can use U-Boot bounce buffers?
Minor questions on my mind:
- is unaligned access useful? Is there a performance penalty?
- API confusion about whether something is an address or a pointer
[1] https://patchwork.ozlabs.org/project/uboot/list/?series=416441
Changes in v2:
- Drop patch 'Show more information in efi index'
- Drop patch 'Avoid pool allocation in efi_get_memory_map_alloc()'
- Add the word 'warning', use log_warning() and show the end address
- Reorder patches a little
Simon Glass (3): efi: Allow use of malloc() for the EFI pool efi: Convert device_path allocation to use malloc() efi: Show the location of the bounce buffer
common/dlmalloc.c | 7 ++ include/efi_loader.h | 18 ++++ include/malloc.h | 7 ++ lib/efi_loader/efi_bootbin.c | 11 +++ lib/efi_loader/efi_device_path.c | 43 +++++---- lib/efi_loader/efi_device_path_to_text.c | 2 +- lib/efi_loader/efi_memory.c | 110 +++++++++++++++++------ 7 files changed, 148 insertions(+), 50 deletions(-)
-- 2.34.1
Are there any comments on this series, please?
Regards, Simon