Currently, it is only allowed to reserve memory for crash kernel, because it is a requirement in order to be able to boot into crash kernel without touching memory of crashed kernel is to have memory reserved. The second benefit for having memory reserved for kexec kernel is that it does not require a relocation after segments are loaded into memory. If kexec functionality is used for a fast system update, with a minimal downtime, the relocation of kernel + initramfs might take a significant portion of reboot. In fact, on the machine that we are using, that has ARM64 processor it takes 0.35s to relocate during kexec, thus taking 52% of kernel reboot time: kernel shutdown 0.03s relocation 0.35s kernel startup 0.29s Image: 13M and initramfs is 24M. If initramfs increases, the relocation time increases proportionally. While, it is possible to add 'kexeckernel=' parameters support to other architectures by modifying reserve_crashkernel(), in this series this is done for arm64 only. Pavel Tatashin (5): kexec: quiet down kexec reboot kexec: add resource for normal kexec region kexec: export common crashkernel/kexeckernel parser kexec: use reserved memory for normal kexec reboot arm64, kexec: reserve kexeckernel region .../admin-guide/kernel-parameters.txt | 7 ++ arch/arm64/kernel/setup.c | 5 ++ arch/arm64/mm/init.c | 83 ++++++++++++------- include/linux/crash_core.h | 6 ++ include/linux/ioport.h | 1 + include/linux/kexec.h | 6 +- kernel/crash_core.c | 27 +++--- kernel/kexec_core.c | 50 +++++++---- 8 files changed, 127 insertions(+), 58 deletions(-) -- 2.22.0