From: "huangjie.albert" <huangjie.albert@xxxxxxxxxxxxx> In many time-sensitive scenarios, we need a shorter time to restart the kernel. However, in the current kexec fast restart code, there are many places in the memory copy operation, verification operation and decompression operation, which take more time than 500ms. Through the following patch series. machine_kexec-->start_kernel only takes 15ms How to measure time: c code: uint64_t current_cycles(void) { uint32_t low, high; asm volatile("rdtsc" : "=a"(low), "=d"(high)); return ((uint64_t)low) | ((uint64_t)high << 32); } assembly code: pushq %rax pushq %rdx rdtsc mov %eax,%eax shl $0x20,%rdx or %rax,%rdx movq %rdx,0x840(%r14) popq %rdx popq %rax the timestamp may store in boot_params or kexec control page, so we can get the all timestamp after kernel boot up. huangjie.albert (4): kexec: reuse crash kernel reserved memory for normal kexec kexec: add CONFING_KEXEC_PURGATORY_SKIP_SIG x86: Support the uncompressed kernel to speed up booting x86: boot: avoid memory copy if kernel is uncompressed arch/x86/Kconfig | 10 +++++++++ arch/x86/boot/compressed/Makefile | 5 ++++- arch/x86/boot/compressed/head_64.S | 8 +++++-- arch/x86/boot/compressed/misc.c | 35 +++++++++++++++++++++++++----- arch/x86/purgatory/purgatory.c | 7 ++++++ include/linux/kexec.h | 9 ++++---- include/uapi/linux/kexec.h | 2 ++ kernel/kexec.c | 19 +++++++++++++++- kernel/kexec_core.c | 16 ++++++++------ kernel/kexec_file.c | 20 +++++++++++++++-- scripts/Makefile.lib | 5 +++++ 11 files changed, 114 insertions(+), 22 deletions(-) -- 2.31.1