In Thumb2 kernel (CONFIG_THUMB2_KERNEL) kexec's relocate code is assembled in Thumb2 mode, but cpu_v7_reset() jumps to this code in ARM state, because its address is page aligned and has 0 in LSB.
Assemble this code in ARM mode to fix the issue.
Signed-off-by: Taras Kondratiuk taras.kondratiuk@linaro.org --- Based on v3.12-rc4
Cc: Dave Martin dave.martin@linaro.org Cc: Will Deacon will.deacon@arm.com Cc: Russell King linux@arm.linux.org.uk Cc: linaro-kernel@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org --- arch/arm/kernel/relocate_kernel.S | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/arm/kernel/relocate_kernel.S b/arch/arm/kernel/relocate_kernel.S index d0cdedf..a3af323 100644 --- a/arch/arm/kernel/relocate_kernel.S +++ b/arch/arm/kernel/relocate_kernel.S @@ -5,6 +5,7 @@ #include <asm/kexec.h>
.globl relocate_new_kernel + .arm relocate_new_kernel:
ldr r0,kexec_indirection_page