• Ard Biesheuvel's avatar
    efi: Reduce the amount of memblock reservations for persistent allocations · 80424b02
    Ard Biesheuvel authored
    The current implementation of efi_mem_reserve_persistent() is rather
    naive, in the sense that for each invocation, it creates a separate
    linked list entry to describe the reservation. Since the linked list
    entries themselves need to persist across subsequent kexec reboots,
    every reservation created this way results in two memblock_reserve()
    calls at the next boot.
    
    On arm64 systems with 100s of CPUs, this may result in a excessive
    number of memblock reservations, and needless fragmentation.
    
    So instead, make use of the newly updated struct linux_efi_memreserve
    layout to put multiple reservations into a single linked list entry.
    This should get rid of the numerous tiny memblock reservations, and
    effectively cut the total number of reservations in half on arm64
    systems with many CPUs.
    
     [ mingo: build warning fix. ]
    Tested-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arend van Spriel <arend.vanspriel@broadcom.com>
    Cc: Bhupesh Sharma <bhsharma@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Eric Snowberg <eric.snowberg@oracle.com>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Jon Hunter <jonathanh@nvidia.com>
    Cc: Julien Thierry <julien.thierry@arm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Nathan Chancellor <natechancellor@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Cc: Sedat Dilek <sedat.dilek@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: YiFei Zhu <zhuyifei1999@gmail.com>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20181129171230.18699-11-ard.biesheuvel@linaro.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    80424b02
efi.c 26.5 KB