diff options
author | Pavel Tatashin <pasha.tatashin@soleen.com> | 2019-12-04 16:59:15 +0100 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2020-01-08 17:32:55 +0100 |
commit | de68e4daea9084df4c614d31e2061d5d31bf24f4 (patch) | |
tree | d703d520c70191a0069260df737fe25f56303181 /kernel/kexec_file.c | |
parent | kexec: quiet down kexec reboot (diff) | |
download | linux-de68e4daea9084df4c614d31e2061d5d31bf24f4.tar.xz 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.c | 4 |
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 |