diff --git a/6419b008fde783fd0cc2cc266bd1c9cf35e99a0e.patch b/6419b008fde783fd0cc2cc266bd1c9cf35e99a0e.patch deleted file mode 100644 index b2f2e98..0000000 --- a/6419b008fde783fd0cc2cc266bd1c9cf35e99a0e.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 6419b008fde783fd0cc2cc266bd1c9cf35e99a0e Mon Sep 17 00:00:00 2001 -From: Julien Olivain -Date: Sat, 23 Sep 2023 18:46:06 +0200 -Subject: kexec: provide a memfd_create() wrapper if not present in libc - -Commit 714fa115 "kexec/arm64: Simplify the code for zImage" introduced -a use of the memfd_create() system call, included in version -kexec-tools v2.0.27. - -This system call was introduced in kernel commit [1], first included -in kernel v3.17 (released on 2014-10-05). - -The memfd_create() glibc wrapper function was added much later in -commit [2], first included in glibc version 2.27 (released on -2018-02-01). - -This direct use memfd_create() introduced a requirement on -Kernel >= 3.17 and glibc >= 2.27. - -There is old toolchains like [3] for example (which ships gcc 7.3.1, -glibc 2.25 and includes kernel v4.10 headers), that can still be used -to build newer kernels. Even if such toolchains can be seen as -outdated, they are is still claimed as supported by recent kernel. -For example, Kernel v6.5.5 has a requirement on gcc version 5.1 and -greater. See [4]. - -Moreover, kexec-tools <= 2.0.26 could be compiled using recent -toolchains with alternative libc (e.g. uclibc-ng, musl) which are not -providing the memfd_create() wrapper. - -When compiling kexec-tools v2.0.27 with a toolchain not providing the -memfd_create() syscall wrapper, the compilation fail with message: - - kexec/kexec.c: In function 'copybuf_memfd': - kexec/kexec.c:645:7: warning: implicit declaration of function 'memfd_create'; did you mean 'SYS_memfd_create'? [-Wimplicit-function-declaration] - fd = memfd_create("kernel", MFD_ALLOW_SEALING); - ^~~~~~~~~~~~ - SYS_memfd_create - kexec/kexec.c:645:30: error: 'MFD_ALLOW_SEALING' undeclared (first use in this function); did you mean '_PC_ALLOC_SIZE_MIN'? - fd = memfd_create("kernel", MFD_ALLOW_SEALING); - ^~~~~~~~~~~~~~~~~ - _PC_ALLOC_SIZE_MIN - -In order to let kexec-tools compile in a wider range of configurations, -this commit adds a memfd_create() function check in autoconf configure -script, and adds a system call wrapper which will be used if the -function is not available. With this commit, the environment -requirement is relaxed to only kernel >= v3.17. - -Note: this issue was found in kexec-tools integration in Buildroot [5] -using the command "utils/test-pkg -a -p kexec", which tests many -toolchain/arch combinations. - -[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=9183df25fe7b194563db3fec6dc3202a5855839c -[2] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=59d2cbb1fe4b8601d5cbd359c3806973eab6c62d -[3] https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz -[4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/process/changes.rst?h=v6.5.5#n32 -[5] https://buildroot.org/ - -Signed-off-by: Julien Olivain -Signed-off-by: Simon Horman ---- - configure.ac | 3 +++ - kexec/kexec.c | 11 +++++++++++ - 2 files changed, 14 insertions(+) - -diff --git a/configure.ac b/configure.ac -index 352eefee..602de79b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -208,6 +208,9 @@ if test "$ac_cv_lib_xenctrl_xc_kexec_load" = yes ; then - AC_MSG_NOTICE([The kexec_status call is not available])) - fi - -+dnl Check if libc has the memfd_create() syscall wrapper -+AC_CHECK_FUNCS([memfd_create]) -+ - dnl ---Sanity checks - if test "$CC" = "no"; then AC_MSG_ERROR([cc not found]); fi - if test "$CPP" = "no"; then AC_MSG_ERROR([cpp not found]); fi -diff --git a/kexec/kexec.c b/kexec/kexec.c -index fdb4c984..08edfca2 100644 ---- a/kexec/kexec.c -+++ b/kexec/kexec.c -@@ -31,6 +31,10 @@ - #include - #include - #include -+#ifndef HAVE_MEMFD_CREATE -+#include -+#include -+#endif - #include - #include - #include -@@ -640,6 +644,13 @@ char *slurp_decompress_file(const char *filename, off_t *r_size) - return kernel_buf; - } - -+#ifndef HAVE_MEMFD_CREATE -+static int memfd_create(const char *name, unsigned int flags) -+{ -+ return syscall(SYS_memfd_create, name, flags); -+} -+#endif -+ - static int copybuf_memfd(const char *kernel_buf, size_t size) - { - int fd, count; --- -cgit - diff --git a/kexec-dont-use-kexec_file_load-on-xen.patch b/kexec-dont-use-kexec_file_load-on-xen.patch deleted file mode 100644 index 5c18f79..0000000 --- a/kexec-dont-use-kexec_file_load-on-xen.patch +++ /dev/null @@ -1,59 +0,0 @@ -From: Jiri Bohac -Subject: [PATCH] kexec: dont use kexec_file_load on XEN -Patch-mainline: 94fbe64fb22d61726ca0c0996987574b6c783c19 -References: bsc#1218590 - -Since commit 29fe5067ed07 ("kexec: make -a the default") -kexec tries the kexec_file_load syscall first and only falls back to kexec_load on -selected error codes. - -This effectively breaks kexec on XEN, unless -c is pecified to force the kexec_load -syscall. - -The XEN-specific functions (xen_kexec_load / xen_kexec_unload) are only called -from my_load / k_unload, i.e. the kexec_load code path. - -With -p (panic kernel) kexec_file_load on XEN fails with -EADDRNOTAVAIL (crash -kernel reservation is ignored by the kernel on XEN), which is not in the list -of return codes that cause the fallback to kexec_file. - -Without -p kexec_file_load actualy leads to a kernel oops on v6.4.0 -(needs to be dubugged separately). - -Signed-off-by: Jiri Bohac -Fixes: 29fe5067ed07 ("kexec: make -a the default") ---- - kexec/kexec.8 | 1 + - kexec/kexec.c | 4 ++++ - 2 files changed, 5 insertions(+) - -diff --git a/kexec/kexec.8 b/kexec/kexec.8 -index b969cea..9e995fe 100644 ---- a/kexec/kexec.8 -+++ b/kexec/kexec.8 -@@ -162,6 +162,7 @@ Specify that the new kernel is of this - .TP - .BI \-s\ (\-\-kexec-file-syscall) - Specify that the new KEXEC_FILE_LOAD syscall should be used exclusively. -+Ignored on XEN. - .TP - .BI \-c\ (\-\-kexec-syscall) - Specify that the old KEXEC_LOAD syscall should be used exclusively. -diff --git a/kexec/kexec.c b/kexec/kexec.c -index 08edfca..9d0ec46 100644 ---- a/kexec/kexec.c -+++ b/kexec/kexec.c -@@ -1685,6 +1685,10 @@ int main(int argc, char *argv[]) - } - } - } -+ if (xen_present()) { -+ do_kexec_file_syscall = 0; -+ do_kexec_fallback = 0; -+ } - if (do_kexec_file_syscall) { - if (do_load_jump_back_helper && !do_kexec_fallback) - die("--load-jump-back-helper not supported with kexec_file_load\n"); --- -2.43.0 - diff --git a/kexec-tools-2.0.27.tar.sign b/kexec-tools-2.0.27.tar.sign deleted file mode 100644 index 097cd18..0000000 Binary files a/kexec-tools-2.0.27.tar.sign and /dev/null differ diff --git a/kexec-tools-2.0.27.tar.xz b/kexec-tools-2.0.27.tar.xz deleted file mode 100644 index ee552a7..0000000 --- a/kexec-tools-2.0.27.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38d78bcfa33a88928324b57dc81f50c1dfc279eede45e80957ca18f4e84b8187 -size 308540 diff --git a/kexec-tools-2.0.29.tar.sign b/kexec-tools-2.0.29.tar.sign new file mode 100644 index 0000000..0550b10 Binary files /dev/null and b/kexec-tools-2.0.29.tar.sign differ diff --git a/kexec-tools-2.0.29.tar.xz b/kexec-tools-2.0.29.tar.xz new file mode 100644 index 0000000..12a7fd0 --- /dev/null +++ b/kexec-tools-2.0.29.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67b1ac503aade45a54db0bc79228a8830a35d5d4f83cee932cff3e7a81a4a9ec +size 314576 diff --git a/kexec-tools-disable-test.patch b/kexec-tools-disable-test.patch index 23a3699..0a69fa7 100644 --- a/kexec-tools-disable-test.patch +++ b/kexec-tools-disable-test.patch @@ -8,10 +8,12 @@ Fedora). Also one less file for usr_merge Makefile.in | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) ---- a/Makefile.in -+++ b/Makefile.in -@@ -173,8 +173,11 @@ PSRCS:=$(foreach s, $(SRCS), $(PACKAGE_N - PGSRCS:=$(foreach s, $(GENERATED_SRCS), $(PACKAGE_NAME)-$(PACKAGE_VERSION)/$(s)) +Index: kexec-tools-2.0.28/Makefile.in +=================================================================== +--- kexec-tools-2.0.28.orig/Makefile.in ++++ kexec-tools-2.0.28/Makefile.in +@@ -181,8 +181,11 @@ TARBALL.gz=$(TARBALL).gz + SRCS:= $(dist) MAN_PAGES:=$(KEXEC_MANPAGE) $(VMCORE_DMESG_MANPAGE) -BINARIES_i386:=$(KEXEC_TEST) diff --git a/kexec-tools-riscv-hotplug.patch b/kexec-tools-riscv-hotplug.patch new file mode 100644 index 0000000..ac2a091 --- /dev/null +++ b/kexec-tools-riscv-hotplug.patch @@ -0,0 +1,23 @@ +From: Petr Tesarik +Subject: riscv: fix build with hotplug support +Upstream: not yet, blocked by base RISC-V patches + +Commit 3c47f384f1c4 ("kexec_load: Use new kexec flag for hotplug support") +adds a new architecture-specific function named arch_do_exclude_segment. +Since RISC-V does not yet implement hotplug updates in the kernel, add a +trivial definition of this function to kexec-tools. + +Signed-off-by: Petr Tesarik +Index: kexec-tools-2.0.29/kexec/arch/riscv/kexec-riscv.c +=================================================================== +--- kexec-tools-2.0.29.orig/kexec/arch/riscv/kexec-riscv.c ++++ kexec-tools-2.0.29/kexec/arch/riscv/kexec-riscv.c +@@ -362,3 +362,8 @@ int arch_compat_trampoline(struct kexec_ + void arch_update_purgatory(struct kexec_info *UNUSED(info)) + { + } ++ ++int arch_do_exclude_segment(struct kexec_info *UNUSED(info), struct kexec_segment *UNUSED(segment)) ++{ ++ return 0; ++} diff --git a/kexec-tools.changes b/kexec-tools.changes index e3a45b4..1686a4e 100644 --- a/kexec-tools.changes +++ b/kexec-tools.changes @@ -1,5 +1,56 @@ ------------------------------------------------------------------- -Thu Jan 25 17:38:17 UTC 2024 - Jiri Bohac +Fri Sep 13 13:13:13 UTC 2024 - olaf@aepfle.de + +- To create rckexec-reload, the service binary is required at + build time. This binary is provided by aaa_base. Make sure this + package is available during build. + +------------------------------------------------------------------- +Mon Aug 12 11:15:32 UTC 2024 - Petr Tesařík + +- update to 2.0.29: + * update man and --help + * powerpc/kexec_load: add hotplug support + * kexec_load: Use new kexec flag for hotplug support + * x86-linux-setup.c: Use POSIX basename API + * LoongArch: fix load command line segment error + * LoongArch: add multi crash kernel segment support + * LoongArch: fix kernel image size error + * Arm: Fix add_buffer_phys_virt() align issue + * Fix incorrect Free Software Foundation address in the license + * util_lib/elf_info.c: fix a warning + * kexec_file: add kexec_file flag to support debug printing + * workflow: update to use checkout@v4 +- drop kexec-dont-use-kexec_file_load-on-xen.patch, upstream +- drop fix-building-on-x86_64-with-binutils-2.41.patch, upstream +- kexec-tools-riscv-hotplug.patch: Fix build for riscv64. + +------------------------------------------------------------------- +Wed Mar 6 16:46:15 UTC 2024 - Jiri Bohac + +- update to 2.0.28: + * LoongArch: Load vmlinux.efi to the link address + * LoongArch: Fix an issue with relocatable vmlinux + * m68k: fix getrandom() use with uclibc + * lzma: Relax memory limit for lzma decompressor + * kexec: ppc64: print help to stdout instead of stderr + * kexec/loongarch64: fix 'make dist' file loss issue + * crashdump/x86: set the elfcorehdr segment size for hotplug + * crashdump/x86: identify elfcorehdr segment for hotplug + * crashdump: exclude elfcorehdr segment from digest for hotplug + * crashdump: setup general hotplug support + * crashdump: introduce the hotplug command line options + * kexec: define KEXEC_UPDATE_ELFCOREHDR + * kexec: update manpage with explicit mention of clean kexec + * zboot: add loongarch kexec_load support + * zboot: enable arm64 kexec_load for zboot image +- drop 6419b008fde783fd0cc2cc266bd1c9cf35e99a0e.patch, upstream +- add fix-building-on-x86_64-with-binutils-2.41.patch: + * fix assembling on binutils >= 2.42 +- refresh kexec-tools-disable-test.patch + +------------------------------------------------------------------- +Fri Jan 19 16:50:42 UTC 2024 - Jiri Bohac - add kexec-dont-use-kexec_file_load-on-xen.patch: kexec: don't use kexec_file_load on xen (bsc#1218590) diff --git a/kexec-tools.spec b/kexec-tools.spec index d57d8c7..f770c67 100644 --- a/kexec-tools.spec +++ b/kexec-tools.spec @@ -1,7 +1,7 @@ # # spec file for package kexec-tools # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ # Temporarily bump version to aid package split Name: kexec-tools -Version: 2.0.27 +Version: 2.0.29 Release: 0 Summary: Tools for loading replacement kernels into memory License: GPL-2.0-or-later @@ -29,13 +29,13 @@ Source1: https://kernel.org/pub/linux/utils/kernel/kexec/%{name}-%{versio Source2: kexec-tools.keyring Source3: kexec-load.service Source4: %{name}-rpmlintrc -Patch0: 6419b008fde783fd0cc2cc266bd1c9cf35e99a0e.patch Patch3: %{name}-disable-test.patch Patch4: %{name}-vmcoreinfo-in-xen.patch # https://patchwork.kernel.org/project/linux-riscv/patch/20190416123233.4779-1-mick@ics.forth.gr/ Patch5: %{name}-riscv64.patch Patch10: %{name}-SYS_getrandom.patch -Patch11: kexec-dont-use-kexec_file_load-on-xen.patch +Patch11: %{name}-riscv-hotplug.patch +BuildRequires: aaa_base BuildRequires: autoconf BuildRequires: automake BuildRequires: systemd-rpm-macros @@ -44,7 +44,7 @@ BuildRequires: zlib-devel #!BuildIgnore: gcc-PIE Requires: perl-Bootloader >= 1.6 Requires(post): suse-module-tools -Requires(postun):suse-module-tools +Requires(postun): suse-module-tools %{?systemd_requires} %if 0%{?suse_version} == 1600 # No Xen