diff options
-rw-r--r-- | kexec/kexec.8 | 3 | ||||
-rw-r--r-- | kexec/kexec.c | 16 | ||||
-rw-r--r-- | kexec/kexec.h | 4 |
3 files changed, 22 insertions, 1 deletions
diff --git a/kexec/kexec.8 b/kexec/kexec.8 index f4b39a6..e0131b4 100644 --- a/kexec/kexec.8 +++ b/kexec/kexec.8 @@ -179,6 +179,9 @@ Load a helper image to jump back to original kernel. .TP .BI \-\-reuseinitrd Reuse initrd from first boot. +.TP +.BI \-\-print-ckr-size +Print crash kernel region size, if available. .SH SUPPORTED KERNEL FILE TYPES AND OPTIONS diff --git a/kexec/kexec.c b/kexec/kexec.c index a2ba79d..cfd837c 100644 --- a/kexec/kexec.c +++ b/kexec/kexec.c @@ -995,6 +995,7 @@ void usage(void) " --mem-max=<addr> Specify the highest memory address to\n" " load code into.\n" " --reuseinitrd Reuse initrd from first boot.\n" + " --print-ckr-size Print crash kernel region size.\n" " --load-preserve-context Load the new kernel and preserve\n" " context of current kernel during kexec.\n" " --load-jump-back-helper Load a helper image to jump back\n" @@ -1218,6 +1219,18 @@ static int do_kexec_file_load(int fileind, int argc, char **argv, return ret; } +static void print_crashkernel_region_size(void) +{ + uint64_t start = 0, end = 0; + + if (is_crashkernel_mem_reserved() && + get_crash_kernel_load_range(&start, &end)) { + fprintf(stderr, "get_crash_kernel_load_range() failed.\n"); + return; + } + + printf("%lu\n", (start != end) ? (end - start + 1) : 0UL); +} int main(int argc, char *argv[]) { @@ -1375,6 +1388,9 @@ int main(int argc, char *argv[]) case OPT_STATUS: do_status = 1; break; + case OPT_PRINT_CKR_SIZE: + print_crashkernel_region_size(); + return 0; default: break; } diff --git a/kexec/kexec.h b/kexec/kexec.h index 2b06f59..52bef9b 100644 --- a/kexec/kexec.h +++ b/kexec/kexec.h @@ -226,7 +226,8 @@ extern int file_types; #define OPT_LOAD_PRESERVE_CONTEXT 259 #define OPT_LOAD_JUMP_BACK_HELPER 260 #define OPT_ENTRY 261 -#define OPT_MAX 262 +#define OPT_PRINT_CKR_SIZE 262 +#define OPT_MAX 263 #define KEXEC_OPTIONS \ { "help", 0, 0, OPT_HELP }, \ { "version", 0, 0, OPT_VERSION }, \ @@ -247,6 +248,7 @@ extern int file_types; { "kexec-file-syscall", 0, 0, OPT_KEXEC_FILE_SYSCALL }, \ { "debug", 0, 0, OPT_DEBUG }, \ { "status", 0, 0, OPT_STATUS }, \ + { "print-ckr-size", 0, 0, OPT_PRINT_CKR_SIZE }, \ #define KEXEC_OPT_STR "h?vdfxyluet:psS" |