1, To get the address the kernel is linked to, use PC-region(static) + offset(dynamic) way. See detail at [PATCH v2 3/5] 2, To deal with smp cpu in kernel entry, e.g. cavium-octeon platform, move smp cpu handle later than jump to the address kernel linked to. See detail at [PATCH v2 4/5] Jinyang He (5): MIPS: relocate: Only compile relocs when CONFIG_RELOCATABLE is enabled MIPS: relocate: Use CONFIG_RANDOMIZE_BASE to enable kaslr MIPS: Jump to kernel linked address by PC relative way MIPS: cavium-octeon: Execute the smp handle after jumping to kernel linked address MIPS: relocate: Add support to auto relocate kernel arch/mips/Makefile | 2 + arch/mips/cavium-octeon/smp.c | 9 +- arch/mips/generic/init.c | 4 +- arch/mips/include/asm/bootinfo.h | 4 +- .../asm/mach-cavium-octeon/kernel-entry-init.h | 24 ++- arch/mips/kernel/Makefile | 2 +- arch/mips/kernel/head.S | 185 ++++++++++++++++++++- arch/mips/kernel/{relocate.c => kaslr.c} | 15 -- 8 files changed, 214 insertions(+), 31 deletions(-) rename arch/mips/kernel/{relocate.c => kaslr.c} (97%) -- 2.1.0