[U-Boot] [PATCH 4/6] efi_loader: Readd freed pages to memory pool

Alexander Graf agraf at suse.de
Fri Sep 30 14:34:35 CEST 2016



On 30.09.16 02:03, Stefan Brüns wrote:
> Currently each allocation creates a new mapping. Readding the mapping
> as free memory (EFI_CONVENTIONAL_MEMORY) potentially allows to hand out
> an existing mapping, thus limiting the number of mapping descriptors in
> the memory map.
> 
> Mitigates a problem with current (4.8rc7) linux kernels when doing an
> efi_get_memory map, resulting in an infinite loop. Space for the memory
> map is reserved with allocate_pool (implicitly creating a new mapping) and
> filled. If there is insufficient slack space (8 entries) in the map, the
> space is freed and a new round is started, with space for one more entry.
> As each round increases requirement and allocation by exactly one, there
> is never enough slack space. (At least 32 entries are allocated, so as
> long as there are less than 24 entries, there is enough slack).
> Earlier kernels reserved no slack, and did less allocations, so this
> problem was not visible.
> 
> 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