We make sure that all the other segments, initrd and device-tree blob, also be loaded into the reserved memory of crash dump kernel. Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org> --- kexec/arch/arm64/kexec-arm64.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c index a61f856..22ab098 100644 --- a/kexec/arch/arm64/kexec-arm64.c +++ b/kexec/arch/arm64/kexec-arm64.c @@ -590,9 +590,15 @@ int arm64_load_other_segments(struct kexec_info *info, /* Put the other segments after the image. */ - image_base = arm64_mem.phys_offset + arm64_mem.text_offset; - hole_min = image_base + arm64_mem.image_size; - hole_max = ULONG_MAX; + if (info->kexec_flags & KEXEC_ON_CRASH) { + image_base = crash_reserved_mem.start + arm64_mem.text_offset; + hole_min = image_base + arm64_mem.image_size; + hole_max = crash_reserved_mem.end; + } else { + image_base = arm64_mem.phys_offset + arm64_mem.text_offset; + hole_min = image_base + arm64_mem.image_size; + hole_max = ULONG_MAX; + } if (arm64_opts.initrd) { initrd_buf = slurp_file(arm64_opts.initrd, &initrd_size); -- 2.9.0