summaryrefslogtreecommitdiffstats
path: root/kernel/kexec_file.c
diff options
context:
space:
mode:
authorPavel Tatashin <pasha.tatashin@soleen.com>2019-12-04 10:59:15 -0500
committerWill Deacon <will@kernel.org>2020-01-08 16:32:55 +0000
commitde68e4daea9084df4c614d31e2061d5d31bf24f4 (patch)
treed703d520c70191a0069260df737fe25f56303181 /kernel/kexec_file.c
parentd42cc530b18db2dd9de621238d33670841aabc36 (diff)
downloadlinux-de68e4daea9084df4c614d31e2061d5d31bf24f4.tar.gz
linux-de68e4daea9084df4c614d31e2061d5d31bf24f4.tar.bz2
linux-de68e4daea9084df4c614d31e2061d5d31bf24f4.zip
kexec: add machine_kexec_post_load()
It is the same as machine_kexec_prepare(), but is called after segments are loaded. This way, can do processing work with already loaded relocation segments. One such example is arm64: it has to have segments loaded in order to create a page table, but it cannot do it during kexec time, because at that time allocations won't be possible anymore. Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com> Acked-by: Dave Young <dyoung@redhat.com> Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'kernel/kexec_file.c')
-rw-r--r--kernel/kexec_file.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c
index a2df93948665..faa74d5f6941 100644
--- a/kernel/kexec_file.c
+++ b/kernel/kexec_file.c
@@ -441,6 +441,10 @@ SYSCALL_DEFINE5(kexec_file_load, int, kernel_fd, int, initrd_fd,
kimage_terminate(image);
+ ret = machine_kexec_post_load(image);
+ if (ret)
+ goto out;
+
/*
* Free up any temporary buffers allocated which are not needed
* after image has been loaded