kexec-tools/kexec-Add-quick-kexec-support.patch

91 lines
3.0 KiB
Diff
Raw Normal View History

2021-12-25 19:53:29 +08:00
From e841cb419d74adbda7116a6b11b5fcaeba0dc274 Mon Sep 17 00:00:00 2001
From: root <root@localhost.localdomain>
Date: Sat, 25 Dec 2021 17:42:47 +0800
Subject: [PATCH] fix
---
kexec/kexec-syscall.h | 1 +
kexec/kexec.c | 10 ++++++++++
kexec/kexec.h | 4 +++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
2021-12-25 19:53:29 +08:00
index bea29d4..6eea272 100644
--- a/kexec/kexec-syscall.h
+++ b/kexec/kexec-syscall.h
2021-12-25 19:53:29 +08:00
@@ -109,6 +109,7 @@ static inline long kexec_file_load(int kernel_fd, int initrd_fd,
#define KEXEC_ON_CRASH 0x00000001
#define KEXEC_PRESERVE_CONTEXT 0x00000002
+#define KEXEC_QUICK 0x00000004
#define KEXEC_ARCH_MASK 0xffff0000
/* Flags for kexec file based system call */
diff --git a/kexec/kexec.c b/kexec/kexec.c
2021-12-25 19:53:29 +08:00
index f63b36b..5b8beca 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
2021-12-25 19:53:29 +08:00
@@ -1009,6 +1009,7 @@ void usage(void)
" -l, --load Load the new kernel into the\n"
" current kernel.\n"
" -p, --load-panic Load the new kernel for use on panic.\n"
+ " -q, --load-quick Load the new kernel to quick kexec\n"
" -u, --unload Unload the current kexec target kernel.\n"
" If capture kernel is being unloaded\n"
" specify -p with -u.\n"
2021-12-25 19:53:29 +08:00
@@ -1340,6 +1341,7 @@ int main(int argc, char *argv[])
int has_opt_load = 0;
int do_load = 1;
int do_exec = 0;
+ int do_quick = 0;
int do_load_jump_back_helper = 0;
int do_shutdown = 1;
int do_sync = 1, skip_sync = 0;
2021-12-25 19:53:29 +08:00
@@ -1460,6 +1462,14 @@ int main(int argc, char *argv[])
kexec_file_flags |= KEXEC_FILE_ON_CRASH;
kexec_flags = KEXEC_ON_CRASH;
break;
+ case OPT_QUICK:
+ do_load = 1;
+ do_exec = 0;
+ do_shutdown = 0;
+ do_quick = 1;
+ kexec_flags = KEXEC_QUICK;
+ skip_checks = 1;
+ break;
case OPT_MEM_MIN:
mem_min = strtoul(optarg, &endptr, 0);
if (*endptr) {
diff --git a/kexec/kexec.h b/kexec/kexec.h
2021-12-25 19:53:29 +08:00
index 595dd68..9cbc77f 100644
--- a/kexec/kexec.h
+++ b/kexec/kexec.h
2021-12-25 19:53:29 +08:00
@@ -218,6 +218,7 @@ extern int file_types;
#define OPT_UNLOAD 'u'
#define OPT_TYPE 't'
#define OPT_PANIC 'p'
+#define OPT_QUICK 'q'
#define OPT_KEXEC_FILE_SYSCALL 's'
#define OPT_KEXEC_SYSCALL 'c'
#define OPT_KEXEC_SYSCALL_AUTO 'a'
2021-12-25 19:53:29 +08:00
@@ -249,6 +250,7 @@ extern int file_types;
{ "entry", 1, 0, OPT_ENTRY }, \
{ "type", 1, 0, OPT_TYPE }, \
{ "load-panic", 0, 0, OPT_PANIC }, \
+ { "load-quick", 0, 0, OPT_QUICK }, \
{ "mem-min", 1, 0, OPT_MEM_MIN }, \
{ "mem-max", 1, 0, OPT_MEM_MAX }, \
{ "reuseinitrd", 0, 0, OPT_REUSE_INITRD }, \
2021-12-25 19:53:29 +08:00
@@ -259,7 +261,7 @@ extern int file_types;
{ "status", 0, 0, OPT_STATUS }, \
{ "print-ckr-size", 0, 0, OPT_PRINT_CKR_SIZE }, \
-#define KEXEC_OPT_STR "h?vdfixyluet:pscaS"
+#define KEXEC_OPT_STR "h?vdfixyluet:pqscaS"
extern void dbgprint_mem_range(const char *prefix, struct memory_range *mr, int nr_mr);
extern void die(const char *fmt, ...)
--
2021-12-25 19:53:29 +08:00
2.30.0