> We need a functional free_pool implementation, as otherwise each
> allocate_pool causes growth of the memory descriptor table.
> Different to free_pages, free_pool does not provide the size for the
> to be freed allocation, thus we have to track the size ourselves.
> As the only EFI requirement for pool allocation is an alignment of
> 8 bytes, we can keep allocating a range using the page allocator,
> reserve the first 8 bytes for our bookkeeping and hand out the
> remainder to the caller. This saves us from having to use any
> independent data structures for tracking.
> To simplify the conversion between pool allocations and the corresponding
> page allocation, we create an auxiliary struct efi_pool_allocation.
> Given the allocation size free_pool size can handoff freeing the page
> range, which was indirectly allocated by a call to allocate_pool,
> to free_pages.
> Signed-off-by: Stefan Brüns <stefan.bru...@rwth-aachen.de>
> Reviewed-by: Alexander Graf <ag...@suse.de>
Thanks, applied to
U-Boot mailing list