On 09/23/2022 03:44 PM, Youling Tang wrote:
This patch series to support kexec/kdump (only 64bit). Kexec is a system call that enables you to load and boot into another kernel from the currently running kernel. This is useful for kernel developers or other people who need to reboot very quickly without waiting for the whole BIOS boot process to finish. Kdump uses kexec to quickly boot to a dump-capture kernel whenever a dump of the system kernel's memory needs to be taken (for example, when the system panics). The system kernel's memory image is preserved across the reboot and is accessible to the dump-capture kernel. For details, see Documentation/admin-guide/kdump/kdump.rst. User tools kexec-tools see link [1]. TODO: Currently kdump does not support the same binary image, the production kernel and the capture kernel will be generated with different configurations. I will support kernel relocation support in the near future. Then will go to implement the same binary support based on kernel relocation support. [1] Link: https://github.com/tangyouling/kexec-tools Changes in v4: After applying the following series of patches [1], the following modifications need to be made: - Adjust the number of parameters and the content of the parameters passed. - Removed build and processing of fdt. - Add handling of command line segments. - Use the command line argument "elfcorehdr=" instead of the "linux,elfcorehdr" member in fdt. - Use the command line argument "mem=" instead of the "linux, usable-memory-range" member in fdt. - Use the command line argument "initrd=" instead of the "linux,initrd-start" and "linux,initrd-end" members of fdt.
For the command line "initrd=start,size" method: We need to move the reserve_initrd_mem call after parse_early_param to make sure we can get the correct start and size. Youling.
- Removed handling of "linux,elfcorehdr" and "linux, usable-memory-range". - Add handling of "elfcorehdr=". - Modify the handling of "mem=". - Add implementation of reserve_oldmem_region. - Reimplemented kexec-tools (note that kexec-tools needs to be updated). Link [1]: https://lore.kernel.org/loongarch/20220920183554.3870247-1-ardb@xxxxxxxxxx/T/#md02ad4a1510586b2df177cbce4422434eff2d457 [PATCH v2 0/8] efi: disentangle the generic EFI stub from FDT Changes in v3: - Adjust the PE header (note that kexec-tools needs to be updated). - Add ibar in kexec_reboot(). - boot_flag is replaced by efi_boot. - Adjust do_kexec parameter passing order. - Adjust the order of static variables to be consistent with do_kexec. - Remove a-series register save. - Some comments and register usage modification. - Add the opening and closing of the cpu core state. - Add a call to cpu_device_up to turn it on when the cpu core state is offline. Changes in v2: - Add ibar. - Access via IOCSR. - Remove the settings of the tp, sp registers. - Remove the crash.c file and merge the relevant code into machine_kexec.c. - Adjust the use of CONFIG_SMP macro to avoid build errors under !SMP configuration. - Change the default value of PHYSICAL_START of the capture kernel to 0x90000000a0000000. Youling Tang (3): LoongArch: Add kexec support LoongArch: Add kdump support LoongArch: Enable CONFIG_KEXEC arch/loongarch/Kconfig | 33 +++ arch/loongarch/Makefile | 4 + arch/loongarch/configs/loongson3_defconfig | 1 + arch/loongarch/include/asm/kexec.h | 60 ++++ arch/loongarch/kernel/Makefile | 3 + arch/loongarch/kernel/crash_dump.c | 19 ++ arch/loongarch/kernel/head.S | 6 +- arch/loongarch/kernel/machine_kexec.c | 309 +++++++++++++++++++++ arch/loongarch/kernel/mem.c | 1 + arch/loongarch/kernel/relocate_kernel.S | 112 ++++++++ arch/loongarch/kernel/setup.c | 123 +++++++- arch/loongarch/kernel/traps.c | 4 + 12 files changed, 664 insertions(+), 11 deletions(-) create mode 100644 arch/loongarch/include/asm/kexec.h create mode 100644 arch/loongarch/kernel/crash_dump.c create mode 100644 arch/loongarch/kernel/machine_kexec.c create mode 100644 arch/loongarch/kernel/relocate_kernel.S
_______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec