[U-Boot] [PATCH v4 4/7] efi_loader: Track size of pool allocations to allow freeing

Alexander Graf agraf at suse.de
Mon Oct 10 13:39:54 CEST 2016


On 10/09/2016 10:17 PM, Stefan Brüns wrote:
> 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.bruens at rwth-aachen.de>

Reviewed-by: Alexander Graf <agraf at suse.de>


Alex



More information about the U-Boot mailing list