diff options
author | Thiago Jung Bauermann <bauerman@linux.ibm.com> | 2019-09-11 19:34:33 +0300 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2019-10-29 07:12:17 +0300 |
commit | 05d9a952832cb206a32e3705eff6edebdb2207e7 (patch) | |
tree | 5eee04a29358d33c8c5667db4fc31a0496a94f33 /arch/powerpc/include/asm/elf.h | |
parent | a8a30219ba78b1abb92091102b632f8e9bbdbf03 (diff) | |
download | linux-05d9a952832cb206a32e3705eff6edebdb2207e7.tar.xz |
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
Diffstat (limited to 'arch/powerpc/include/asm/elf.h')
-rw-r--r-- | arch/powerpc/include/asm/elf.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h index 409c9bfb43d9..57c229a86f08 100644 --- a/arch/powerpc/include/asm/elf.h +++ b/arch/powerpc/include/asm/elf.h @@ -175,4 +175,7 @@ do { \ ARCH_DLINFO_CACHE_GEOMETRY; \ } while (0) +/* Relocate the kernel image to @final_address */ +void relocate(unsigned long final_address); + #endif /* _ASM_POWERPC_ELF_H */ |