• Ard Biesheuvel's avatar
    efi: libstub/arm: Account for firmware reserved memory at the base of RAM · 41cd96fa
    Ard Biesheuvel authored
    The EFI stubloader for ARM starts out by allocating a 32 MB window
    at the base of RAM, in order to ensure that the decompressor (which
    blindly copies the uncompressed kernel into that window) does not
    overwrite other allocations that are made while running in the context
    of the EFI firmware.
    
    In some cases, (e.g., U-Boot running on the Raspberry Pi 2), this is
    causing boot failures because this initial allocation conflicts with
    a page of reserved memory at the base of RAM that contains the SMP spin
    tables and other pieces of firmware data and which was put there by
    the bootloader under the assumption that the TEXT_OFFSET window right
    below the kernel is only used partially during early boot, and will be
    left alone once the memory reservations are processed and taken into
    account.
    
    So let's permit reserved memory regions to exist in the region starting
    at the base of RAM, and ending at TEXT_OFFSET - 5 * PAGE_SIZE, which is
    the window below the kernel that is not touched by the early boot code.
    Tested-by: default avatarGuillaume Gardet <Guillaume.Gardet@arm.com>
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: default avatarChester Lin <clin@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: https://lkml.kernel.org/r/20191029173755.27149-5-ardb@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    41cd96fa
Makefile 4.05 KB