diff options
author | Pavel Tatashin <pasha.tatashin@soleen.com> | 2021-01-25 14:19:14 -0500 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2021-01-27 15:41:12 +0000 |
commit | 4c3c31230c912d8f2e49c775555aadf79a43d418 (patch) | |
tree | 8c2d5f344d14794a969014ed16e9e808dd5c0d92 /arch/arm64/include/asm | |
parent | 7018d467ff2d6a6d3c820a7ad4e897fe2430b040 (diff) | |
download | lwn-4c3c31230c912d8f2e49c775555aadf79a43d418.tar.gz lwn-4c3c31230c912d8f2e49c775555aadf79a43d418.zip |
arm64: kexec: move relocation function setup
Currently, kernel relocation function is configured in machine_kexec()
at the time of kexec reboot by using control_code_page.
This operation, however, is more logical to be done during kexec_load,
and thus remove from reboot time. Move, setup of this function to
newly added machine_kexec_post_load().
Because once MMU is enabled, kexec control page will contain more than
relocation kernel, but also vector table, add pointer to the actual
function within this page arch.kern_reloc. Currently, it equals to the
beginning of page, we will add offsets later, when vector table is
added.
Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
Reviewed-by: James Morse <james.morse@arm.com>
Link: https://lore.kernel.org/r/20210125191923.1060122-10-pasha.tatashin@soleen.com
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'arch/arm64/include/asm')
-rw-r--r-- | arch/arm64/include/asm/kexec.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/kexec.h b/arch/arm64/include/asm/kexec.h index 61530ec3a9b1..9befcd87e9a8 100644 --- a/arch/arm64/include/asm/kexec.h +++ b/arch/arm64/include/asm/kexec.h @@ -95,6 +95,7 @@ static inline void crash_post_resume(void) {} struct kimage_arch { void *dtb; phys_addr_t dtb_mem; + phys_addr_t kern_reloc; /* Core ELF header buffer */ void *elf_headers; unsigned long elf_headers_mem; |