• Mark Salter's avatar
    mm: add utility for early copy from unmapped ram · 6b0f68e3
    Mark Salter authored
    When booting an arm64 kernel w/initrd using UEFI/grub, use of mem= will
    likely cut off part or all of the initrd.  This leaves it outside the
    kernel linear map which leads to failure when unpacking.  The x86 code
    has a similar need to relocate an initrd outside of mapped memory in
    some cases.
    
    The current x86 code uses early_memremap() to copy the original initrd
    from unmapped to mapped RAM.  This patchset creates a generic
    copy_from_early_mem() utility based on that x86 code and has arm64 and
    x86 share it in their respective initrd relocation code.
    
    This patch (of 3):
    
    In some early boot circumstances, it may be necessary to copy from RAM
    outside the kernel linear mapping to mapped RAM.  The need to relocate
    an initrd is one example in the x86 code.  This patch creates a helper
    function based on current x86 code.
    Signed-off-by: default avatarMark Salter <msalter@redhat.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Russell King <rmk@arm.linux.org.uk>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6b0f68e3
early_ioremap.c 5.87 KB