powerpc/prom_init: Undo relocation before entering secure mode
authorThiago Jung Bauermann <bauerman@linux.ibm.com>
Wed, 11 Sep 2019 16:34:33 +0000 (13:34 -0300)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 29 Oct 2019 04:12:17 +0000 (15:12 +1100)
commit05d9a952832cb206a32e3705eff6edebdb2207e7
tree5eee04a29358d33c8c5667db4fc31a0496a94f33
parenta8a30219ba78b1abb92091102b632f8e9bbdbf03
powerpc/prom_init: Undo relocation before entering secure mode

The ultravisor will do an integrity check of the kernel image but we
relocated it so the check will fail. Restore the original image by
relocating it back to the kernel virtual base address.

This works because during build vmlinux is linked with an expected
virtual runtime address of KERNELBASE.

Fixes: 6a9c930bd775 ("powerpc/prom_init: Add the ESM call to prom_init")
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
Tested-by: Michael Anderson <andmike@linux.ibm.com>
[mpe: Add IS_ENABLED() to fix the CONFIG_RELOCATABLE=n build]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190911163433.12822-1-bauerman@linux.ibm.com
arch/powerpc/include/asm/elf.h
arch/powerpc/kernel/prom_init.c
arch/powerpc/kernel/prom_init_check.sh