080f64dafa
- Update to version 2.0.14 (bsc#1039937, FATE#320672, FATE#320671) Changelog: http://git.kernel.org/cgit/utils/kernel/kexec/kexec-tools.git/log/?id=refs/tags/v2.0.13..v2.0.14 - Backport upstream fixes (bsc#1039937, FATE#320672, FATE#320671) 0001-kexec-tools-2.0.14.git.patch 0002-ppc64-Reduce-number-of-ELF-LOAD-segments.patch 0003-kexec-Increase-the-upper-limit-for-RAM-segments.patch 0004-alpha-add-missing-__NR_kexec_load-definition.patch 0005-kexec-implemented-XEN-KEXEC-STATUS-to-determine-if-a.patch 0006-kexec-Remove-redundant-space-from-help-message.patch 0007-purgatory-Add-purgatory.map-and-purgatory.ro.sym-to-.patch 0008-kexec-Add-option-to-get-crash-kernel-region-size.patch 0009-crashdump-arm-Add-get_crash_kernel_load_range-functi.patch 0010-crashdump-arm64-Add-get_crash_kernel_load_range-func.patch 0011-crashdump-cris-Add-get_crash_kernel_load_range-funct.patch 0012-crashdump-ia64-Add-get_crash_kernel_load_range-funct.patch 0013-crashdump-m68k-Add-get_crash_kernel_load_range-funct.patch 0014-crashdump-mips-Add-get_crash_kernel_load_range-funct.patch 0015-crashdump-ppc-Add-get_crash_kernel_load_range-functi.patch 0016-crashdump-ppc64-Add-get_crash_kernel_load_range-func.patch 0017-crashdump-s390-Add-get_crash_kernel_load_range-funct.patch 0018-crashdump-sh-Add-get_crash_kernel_load_range-functio.patch 0019-gitignore-add-two-generated-files-in-purgatory.patch 0020-Only-print-debug-message-when-failed-to-serach-for-k.patch 0021-build_mem_phdrs-check-if-p_paddr-is-invalid.patch 0022-uImage-fix-realloc-pointer-confusion.patch 0023-uImage-Fix-uImage_load-for-little-endian-machines.patch 0024-uImage-Add-new-IH_ARCH_xxx-definitions.patch 0025-uImage-use-char-instead-of-unsigned-char-for-uImage_.patch 0026-uImage-use-char-instead-of-unsigned-char-for-uImage_.patch 0027-arm64-add-uImage-support.patch OBS-URL: https://build.opensuse.org/request/show/500203 OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kexec-tools?expand=0&rev=83
111 lines
3.8 KiB
Diff
111 lines
3.8 KiB
Diff
From 76b31203222a9833f424e98a134603c2f840c82b Mon Sep 17 00:00:00 2001
|
|
From: Daniel Kiper <daniel.kiper@oracle.com>
|
|
Date: Fri, 17 Feb 2017 16:47:25 -0600
|
|
Subject: [PATCH 08/45] kexec: Add option to get crash kernel region size
|
|
|
|
Crash kernel region size is available via sysfs on Linux running on
|
|
bare metal. However, this does not work when Linux runs as Xen dom0.
|
|
In this case Xen crash kernel region size should be established using
|
|
__HYPERVISOR_kexec_op hypercall (Linux kernel kexec functionality does
|
|
not make a lot of sense in Xen dom0). Sadly hypercalls are not easily
|
|
accessible using shell scripts or something like that. Potentially we
|
|
can check "xl dmesg" output for crashkernel option but this is not nice.
|
|
So, let's add this functionality, for Linux running on bare metal and
|
|
as Xen dom0, to kexec-tools. This way kdump scripts may establish crash
|
|
kernel region size in one way regardless of platform. All burden of
|
|
platform detection lies on kexec-tools.
|
|
|
|
Figure (and unit) displayed by this new kexec-tools functionality is
|
|
the same as one taken from /sys/kernel/kexec_crash_size.
|
|
|
|
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
|
|
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
|
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
|
Signed-off-by: Simon Horman <horms@verge.net.au>
|
|
---
|
|
kexec/kexec.8 | 3 +++
|
|
kexec/kexec.c | 16 ++++++++++++++++
|
|
kexec/kexec.h | 4 +++-
|
|
3 files changed, 22 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/kexec/kexec.8 b/kexec/kexec.8
|
|
index f4b39a656831..e0131b4ea827 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 a2ba79d59006..cfd837c1b6bb 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 2b06f590b5ab..52bef9b3c0f5 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"
|
|
|
|
--
|
|
2.13.0
|
|
|