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

Alexander Graf agraf at suse.de
Thu Oct 13 16:34:50 CEST 2016


> 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>

Thanks, applied to 


More information about the U-Boot mailing list