[PATCH v3 0/3] efi: Start tidying up memory management
Simon Glass
sjg at chromium.org
Fri Sep 6 02:28:16 CEST 2024
Hi Vincent,
On Thu, 5 Sept 2024 at 01:47, Vincent Stehlé <vincent.stehle at arm.com> wrote:
>
> On Sun, Sep 01, 2024 at 04:22:56PM -0600, Simon Glass 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 provides a way to detect
> > EFI 'page allocations' when U-Boot' malloc() should be used. It should
> > help us to clean up this area of U-Boot.
> >
> > It also updates EFI to use U-Boot memory allocation for the pool. Most
> > functions use that anyway and it is much more efficient. It also avoids
> > allocating things 'in space' in conflict with the loaded images.
>
> Hi Simon,
>
> Thank you for this series.
>
> I did test it on top of v2024.10-rc4 with AArch64 simulators (FVP & Qemu), with
> OS boots and ACS-IR, and I see no regression. Same with sandbox on x86 and the
> python tests.
>
Thank you for testing.
Ilias, Heinrich, can this series (and the EFI-test one) be applied?
Sughosh has already sent a follow up where we start to diverge on how
to fix the memory-allocation problems, so I would like to make sure
these are in there first.
Regards,
Simon
> Best regards,
> Vincent.
>
> >
> > This series also includes a little patch to show more information in
> > the index for the EFI pages.
> >
> > 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 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 v3:
> > - Add new patch to drop the memset() from efi_alloc()
> > - Drop patch to convert device_path allocation to use malloc()
> >
> > 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
> >
> > Simon Glass (3):
> > efi: Drop the memset() from efi_alloc()
> > efi: Allow use of malloc() for the EFI pool
> > efi: Show the location of the bounce buffer
> >
> > common/dlmalloc.c | 7 +++
> > include/efi_loader.h | 29 ++++++++-
> > include/malloc.h | 7 +++
> > lib/efi_loader/efi_bootbin.c | 11 ++++
> > lib/efi_loader/efi_memory.c | 119 ++++++++++++++++++++++++-----------
> > 5 files changed, 136 insertions(+), 37 deletions(-)
> >
> > --
> > 2.34.1
> >
More information about the U-Boot
mailing list