• Vivek Goyal's avatar
    [PATCH] x86-64: Relocatable Kernel Support · 1ab60e0f
    Vivek Goyal authored
    This patch modifies the x86_64 kernel so that it can be loaded and run
    at any 2M aligned address, below 512G.  The technique used is to
    compile the decompressor with -fPIC and modify it so the decompressor
    is fully relocatable.  For the main kernel the page tables are
    modified so the kernel remains at the same virtual address.  In
    addition a variable phys_base is kept that holds the physical address
    the kernel is loaded at.  __pa_symbol is modified to add that when
    we take the address of a kernel symbol.
    
    When loaded with a normal bootloader the decompressor will decompress
    the kernel to 2M and it will run there.  This both ensures the
    relocation code is always working, and makes it easier to use 2M
    pages for the kernel and the cpu.
    
    AK: changed to not make RELOCATABLE default in Kconfig
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: default avatarVivek Goyal <vgoyal@in.ibm.com>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    1ab60e0f
head.S 10.4 KB