Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kexec-tools for openSUSE:Factory checked in at 2021-05-10 15:36:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kexec-tools (Old) and /work/SRC/openSUSE:Factory/.kexec-tools.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kexec-tools" Mon May 10 15:36:10 2021 rev:140 rq:890016 version:2.0.22 Changes: -------- --- /work/SRC/openSUSE:Factory/kexec-tools/kexec-tools.changes 2021-04-26 16:38:43.281989395 +0200 +++ /work/SRC/openSUSE:Factory/.kexec-tools.new.2988/kexec-tools.changes 2021-05-10 15:38:09.561857606 +0200 @@ -1,0 +2,7 @@ +Mon May 3 10:57:35 UTC 2021 - Petr Tesa????k <[email protected]> + +- Bump version to 2.0.21 +- Drop patches from upstream git: + * kexec-tools-video-capability.patch + +------------------------------------------------------------------- Old: ---- kexec-tools-2.0.21.tar.xz kexec-tools-video-capability.patch New: ---- kexec-tools-2.0.22.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kexec-tools.spec ++++++ --- /var/tmp/diff_new_pack.R3Lmhg/_old 2021-05-10 15:38:10.065855613 +0200 +++ /var/tmp/diff_new_pack.R3Lmhg/_new 2021-05-10 15:38:10.069855596 +0200 @@ -17,7 +17,7 @@ Name: kexec-tools -Version: 2.0.21 +Version: 2.0.22 Release: 0 Summary: Tools for loading replacement kernels into memory License: GPL-2.0-or-later @@ -29,7 +29,6 @@ Source4: %{name}-rpmlintrc Patch3: %{name}-disable-test.patch Patch4: %{name}-vmcoreinfo-in-xen.patch -Patch9: %{name}-video-capability.patch Patch10: %{name}-SYS_getrandom.patch Patch11: %{name}-remove-duplicate-ramdisk-definition.patch BuildRequires: autoconf ++++++ kexec-tools-2.0.21.tar.xz -> kexec-tools-2.0.22.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/Makefile.in new/kexec-tools-2.0.22/Makefile.in --- old/kexec-tools-2.0.21/Makefile.in 2018-05-29 10:30:39.000000000 +0200 +++ new/kexec-tools-2.0.22/Makefile.in 2021-04-07 21:26:01.000000000 +0200 @@ -55,6 +55,8 @@ # Utilities called by the makefiles INSTALL = @INSTALL@ +CHMOD = @CHMOD@ +CD = cd MKDIR = @MKDIR@ RM = @RM@ CP = @CP@ @@ -106,6 +108,14 @@ PKGLIBDIR=$(LIBDIR)/$(PACKAGE_NAME) PKGINCLUDEIR=$(INCLUDEDIR)/$(PACKAGE_NAME) +ALLOWED_UNINSTALL_DIRS := \ + $(SBINDIR) \ + $(sbindir) $(bindir) $(libexecdir) $(datadir) $(sysconfdir) \ + $(sharedstatedir) $(localstatedir) $(libdir) $(infodir) \ + $(mandir)/man1 $(mandir)/man2 $(mandir)/man3 $(mandir)/man4 \ + $(mandir)/man5 $(mandir)/man6 $(mandir)/man7 $(mandir)/man8 \ + $(includedir) $(pkgdatadir) $(pkglibdir) $(pkgincludedir) + all: targets # generic build rules @@ -181,15 +191,19 @@ UNINSTALL_KDUMP_MANPAGE = $(mandir)/man8/kdump.8 UNINSTALL_KEXEC = $(sbindir)/kexec UNINSTALL_KEXEC_MANPAGE = $(mandir)/man8/kexec.8 +UNINSTALL_KEXEC_TEST = $(pkglibdir)/kexec_test UNINSTALL_VMCORE_DMESG = $(sbindir)/vmcore-dmesg UNINSTALL_VMCORE_DMESG_MANPAGE = $(mandir)/man8/vmcore-dmesg.8 TARGETS:=$(BINARIES) $(MAN_PAGES) targets: $(TARGETS) +UNINSTALL_TARGETS_i386:=$(UNINSTALL_KEXEC_TEST) +UNINSTALL_TARGETS_x86_64:=$(UNINSTALL_KEXEC_TEST) UNINSTALL_TARGETS:=$(UNINSTALL_KDUMP) $(UNINSTALL_KDUMP_MANPAGE) \ $(UNINSTALL_KEXEC) $(UNINSTALL_KEXEC_MANPAGE) \ - $(UNINSTALL_VMCORE_DMESG) $(UNINSTALL_VMCORE_DMESG_MANPAGE) + $(UNINSTALL_VMCORE_DMESG) $(UNINSTALL_VMCORE_DMESG_MANPAGE) \ + $(UNINSTALL_TARGETS_$(ARCH)) uninstall-targets: $(UNINSTALL_TARGETS) Makefile: Makefile.in config.status @@ -198,17 +212,20 @@ configure: configure.ac cd $(srcdir) && autoheader && autoconf && rm -rf autom4te.cache +dist: tarball + tarball: $(TARBALL.gz) $(TARBALL): $(SRCS) $(GENERATED_SRCS) - $(RM) -f $(PACKAGE_NAME)-$(PACKAGE_VERSION) - $(LN) -s $(srcdir) $(PACKAGE_NAME)-$(PACKAGE_VERSION) + [ ! -d $(PACKAGE_NAME)-$(PACKAGE_VERSION) ] || \ + $(CHMOD) u+w $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(RM) -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(MKDIR) $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(TAR) -c $(SRCS) $(GENERATED_SRCS) | \ + $(TAR) -C $(PACKAGE_NAME)-$(PACKAGE_VERSION) -x $(TAR) -cf $@ $(PSRCS) - $(RM) -f $(PACKAGE_NAME)-$(PACKAGE_VERSION) - $(LN) -sf . $(PACKAGE_NAME)-$(PACKAGE_VERSION) $(TAR) -rf $@ $(PGSRCS) - $(RM) -f $(PACKAGE_NAME)-$(PACKAGE_VERSION) - @echo $(dist) + $(RM) -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION) $(TARBALL.gz): $(TARBALL) gzip -c < $^ > $@ @@ -242,6 +259,38 @@ $(RM) -f include/config.h.in configure $(SPEC) $(RM) -rf autom4te.cache +distuninstallcheck: + FOUND=$$(find $(distuninstallcheck_dir) ! -type d) && \ + [ -z "$$FOUND" ] || { \ + echo "Unexpeced files found after uninstall:" && \ + echo "$$FOUND" && \ + exit 1; } + +distcheck: $(TARBALL) + [ ! -d $(PACKAGE_NAME)-$(PACKAGE_VERSION) ] || \ + $(CHMOD) u+w $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(RM) -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(TAR) -xf $(TARBALL) + $(MKDIR) $(PACKAGE_NAME)-$(PACKAGE_VERSION)/_build \ + $(PACKAGE_NAME)-$(PACKAGE_VERSION)/_build/sub \ + $(PACKAGE_NAME)-$(PACKAGE_VERSION)/_inst \ + $(PACKAGE_NAME)-$(PACKAGE_VERSION)/_dest + $(CHMOD) a-w $(PACKAGE_NAME)-$(PACKAGE_VERSION) + test -d $(PACKAGE_NAME)-$(PACKAGE_VERSION)/_build + INSTALL_BASE=$$($(CD) $(PACKAGE_NAME)-$(PACKAGE_VERSION)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,') &&\ + DESTDIR="$(PACKAGE_NAME)-$(PACKAGE_VERSION)/_dest" && \ + $(CD) $(PACKAGE_NAME)-$(PACKAGE_VERSION)/_build/sub && \ + ../../configure \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$INSTALL_BASE" && \ + $(MAKE) $(AM_MAKEFLAGS) && \ + $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$DESTDIR" install && \ + $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$DESTDIR" uninstall && \ + $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$DESTDIR" \ + distuninstallcheck + $(CHMOD) u+w $(PACKAGE_NAME)-$(PACKAGE_VERSION) + $(RM) -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION) + install: $(TARGETS) for file in $(TARGETS) ; do \ if test `$(DIRNAME) $$file` = "$(SBINDIR)" ; then \ @@ -331,71 +380,17 @@ done uninstall: - UINSTALL_LIST='$(UNINSTALL_TARGETS)'; for file in $$UINSTALL_LIST ; do \ - if test `$(DIRNAME) $$file` = "$(sbindir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(bindir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(libexecdir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(datadir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(sysconfdir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(sharedstatedir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(localstatedir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(libdir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(infodir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(mandir)/man1" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(mandir)/man2" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(mandir)/man3" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(mandir)/man4" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(mandir)/man5" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(mandir)/man6" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(mandir)/man7" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(mandir)/man8" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(includedir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(pkgdatadir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(pkglibdir)" ; then \ - rm -rf $$file ; \ - fi; \ - if test `$(DIRNAME) $$file` = "$(pkgincludedir)" ; then \ - rm -rf $$file ; \ - fi; \ + UINSTALL_LIST='$(UNINSTALL_TARGETS)'; \ + for file in $$UINSTALL_LIST ; do \ + DIRS='$(ALLOWED_UNINSTALL_DIRS)'; \ + for dir in $$DIRS ; do \ + if test `$(DIRNAME) $$file` = "$$dir" ; then \ + rm -rf $(DESTDIR)/$$file ; \ + break ; \ + fi; \ + done; \ done -.PHONY: echo install uninstall all targets uninstall-targets clean dist-clean distclean \ - maintainer-clean maintainerclean tarball rpm +.PHONY: echo install uninstall distuninstallcheck all targets \ + uninstall-targets clean dist-clean distclean distcheck \ + maintainer-clean maintainerclean dist tarball rpm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/configure new/kexec-tools-2.0.22/configure --- old/kexec-tools-2.0.21/configure 2020-12-17 13:17:55.000000000 +0100 +++ new/kexec-tools-2.0.22/configure 2021-05-02 10:09:56.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for kexec-tools 2.0.21. +# Generated by GNU Autoconf 2.69 for kexec-tools 2.0.22. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -577,8 +577,8 @@ # Identity of this package. PACKAGE_NAME='kexec-tools' PACKAGE_TARNAME='kexec-tools' -PACKAGE_VERSION='2.0.21' -PACKAGE_STRING='kexec-tools 2.0.21' +PACKAGE_VERSION='2.0.22' +PACKAGE_STRING='kexec-tools 2.0.22' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -639,6 +639,7 @@ CP RM MKDIR +CHMOD INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM @@ -1279,7 +1280,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures kexec-tools 2.0.21 to adapt to many kinds of systems. +\`configure' configures kexec-tools 2.0.22 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1346,7 +1347,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of kexec-tools 2.0.21:";; + short | recursive ) echo "Configuration of kexec-tools 2.0.22:";; esac cat <<\_ACEOF @@ -1436,7 +1437,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -kexec-tools configure 2.0.21 +kexec-tools configure 2.0.22 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1734,7 +1735,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by kexec-tools $as_me 2.0.21, which was +It was created by kexec-tools $as_me 2.0.22, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -4006,6 +4007,44 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +# Extract the first word of "chmod", so it can be a program name with args. +set dummy chmod; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CHMOD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CHMOD"; then + ac_cv_prog_CHMOD="$CHMOD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CHMOD="chmod" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_CHMOD" && ac_cv_prog_CHMOD=""no"" +fi +fi +CHMOD=$ac_cv_prog_CHMOD +if test -n "$CHMOD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHMOD" >&5 +$as_echo "$CHMOD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + # Extract the first word of "mkdir", so it can be a program name with args. set dummy mkdir; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -5512,7 +5551,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by kexec-tools $as_me 2.0.21, which was +This file was extended by kexec-tools $as_me 2.0.22, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5574,7 +5613,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -kexec-tools config.status 2.0.21 +kexec-tools config.status 2.0.22 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/configure.ac new/kexec-tools-2.0.22/configure.ac --- old/kexec-tools-2.0.21/configure.ac 2020-12-17 13:16:14.000000000 +0100 +++ new/kexec-tools-2.0.22/configure.ac 2021-05-02 09:50:30.000000000 +0200 @@ -4,7 +4,7 @@ dnl dnl ---Required -AC_INIT(kexec-tools, 2.0.21) +AC_INIT(kexec-tools, 2.0.22) AC_CONFIG_AUX_DIR(./config) AC_CONFIG_HEADERS([include/config.h]) AC_LANG(C) @@ -151,6 +151,7 @@ dnl Find the helper functions AC_PROG_INSTALL +AC_CHECK_PROG([CHMOD], chmod, chmod, "no", [$PATH]) AC_CHECK_PROG([MKDIR], mkdir, mkdir, "no", [$PATH]) AC_CHECK_PROG([RM], rm, rm, "no", [$PATH]) AC_CHECK_PROG([CP], cp, cp, "no", [$PATH]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/include/config.h new/kexec-tools-2.0.22/include/config.h --- old/kexec-tools-2.0.21/include/config.h 2020-12-17 13:16:32.000000000 +0100 +++ new/kexec-tools-2.0.22/include/config.h 2021-05-02 10:09:57.000000000 +0200 @@ -56,7 +56,7 @@ #define PACKAGE_NAME "kexec-tools" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "kexec-tools 2.0.21" +#define PACKAGE_STRING "kexec-tools 2.0.22" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "kexec-tools" @@ -65,7 +65,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "2.0.21" +#define PACKAGE_VERSION "2.0.22" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/Makefile new/kexec-tools-2.0.22/kexec/Makefile --- old/kexec-tools-2.0.21/kexec/Makefile 2019-10-01 12:46:44.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/Makefile 2021-04-17 09:15:15.000000000 +0200 @@ -22,7 +22,6 @@ KEXEC_SRCS_base += kexec/crashdump.c KEXEC_SRCS_base += kexec/crashdump-xen.c KEXEC_SRCS_base += kexec/phys_arch.c -KEXEC_SRCS_base += kexec/kernel_version.c KEXEC_SRCS_base += kexec/lzma.c KEXEC_SRCS_base += kexec/zlib.c KEXEC_SRCS_base += kexec/kexec-xen.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/arm/kexec-zImage-arm.c new/kexec-tools-2.0.22/kexec/arch/arm/kexec-zImage-arm.c --- old/kexec-tools-2.0.21/kexec/arch/arm/kexec-zImage-arm.c 2020-06-06 15:22:30.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/arch/arm/kexec-zImage-arm.c 2021-04-17 09:20:37.000000000 +0200 @@ -382,6 +382,7 @@ unsigned int atag_offset = 0x1000; /* 4k offset from memory start */ unsigned int extra_size = 0x8000; /* TEXT_OFFSET */ const struct zimage_tag *tag; + size_t kernel_buf_size; size_t kernel_mem_size; const char *command_line; char *modified_cmdline = NULL; @@ -538,6 +539,15 @@ } /* + * Save the length of the compressed kernel image w/o the appended DTB. + * This will be required later on when the kernel image contained + * in the zImage will be loaded into a kernel memory segment. + * And we want to load ONLY the compressed kernel image from the zImage + * and discard the appended DTB. + */ + kernel_buf_size = len; + + /* * Always extend the zImage by four bytes to ensure that an appended * DTB image always sees an initialised value after _edata. */ @@ -759,7 +769,7 @@ add_segment(info, dtb_buf, dtb_length, dtb_offset, dtb_length); } - add_segment(info, buf, len, kernel_base, kernel_mem_size); + add_segment(info, buf, kernel_buf_size, kernel_base, kernel_mem_size); info->entry = (void*)kernel_base; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/i386/crashdump-x86.c new/kexec-tools-2.0.22/kexec/arch/i386/crashdump-x86.c --- old/kexec-tools-2.0.21/kexec/arch/i386/crashdump-x86.c 2020-09-29 18:14:33.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/arch/i386/crashdump-x86.c 2021-04-17 09:15:15.000000000 +0200 @@ -55,16 +55,8 @@ int kv; if (elf_info->machine == EM_X86_64) { - kv = kernel_version(); - if (kv < 0) - return -1; - - if (kv < KERNEL_VERSION(2, 6, 27)) - elf_info->page_offset = X86_64_PAGE_OFFSET_PRE_2_6_27; - else if (kv < KERNEL_VERSION(4, 20, 0)) - elf_info->page_offset = X86_64_PAGE_OFFSET_PRE_4_20_0; - else - elf_info->page_offset = X86_64_PAGE_OFFSET; + /* get_kernel_vaddr_and_size will override this */ + elf_info->page_offset = X86_64_PAGE_OFFSET; } else if (elf_info->machine == EM_386) { elf_info->page_offset = X86_PAGE_OFFSET; @@ -151,17 +143,15 @@ /* Search for the real PAGE_OFFSET when KASLR memory randomization * is enabled */ - if (get_kernel_sym("page_offset_base") != 0) { - for(phdr = ehdr.e_phdr; phdr != end_phdr; phdr++) { - if (phdr->p_type == PT_LOAD) { - vaddr = phdr->p_vaddr & pud_mask; - if (lowest_vaddr == 0 || lowest_vaddr > vaddr) - lowest_vaddr = vaddr; - } + for(phdr = ehdr.e_phdr; phdr != end_phdr; phdr++) { + if (phdr->p_type == PT_LOAD) { + vaddr = phdr->p_vaddr & pud_mask; + if (lowest_vaddr == 0 || lowest_vaddr > vaddr) + lowest_vaddr = vaddr; } - if (lowest_vaddr != 0) - elf_info->page_offset = lowest_vaddr; } + if (lowest_vaddr != 0) + elf_info->page_offset = lowest_vaddr; /* Traverse through the Elf headers and find the region where * _stext symbol is located in. That's where kernel is mapped */ @@ -271,8 +261,14 @@ str = line + consumed; dbgprintf("%016llx-%016llx : %s", start, end, str); - /* Only Dumping memory of type System RAM. */ - if (memcmp(str, "System RAM\n", 11) == 0) { + /* + * We want to dump any System RAM -- memory regions currently + * used by the kernel. In the usual case, this is "System RAM" + * on the top level. However, we can also have "System RAM + * (virtio_mem)" below virtio devices or "System RAM (kmem)" + * below "Persistent Memory". + */ + if (strstr(str, "System RAM")) { type = RANGE_RAM; } else if (memcmp(str, "ACPI Tables\n", 12) == 0) { /* @@ -349,8 +345,8 @@ static int get_crash_memory_ranges_xen(struct memory_range **range, int *ranges, unsigned long lowmem_limit) { + struct e820entry *e820entries; int j, rc, ret = -1; - struct e820entry e820entries[CRASH_MAX_MEMORY_RANGES]; unsigned int i; xc_interface *xc; @@ -361,6 +357,8 @@ return -1; } + e820entries = xmalloc(sizeof(*e820entries) * CRASH_MAX_MEMORY_RANGES); + rc = xc_get_machine_memory_map(xc, e820entries, CRASH_MAX_MEMORY_RANGES); if (rc < 0) { @@ -389,7 +387,7 @@ err: xc_interface_close(xc); - + free(e820entries); return ret; } #else @@ -475,9 +473,18 @@ int i, j, nr_entries = 0, tidx = 0, align = 1024; unsigned long long mstart, mend; - /* Do alignment check if it's RANGE_RAM */ - if ((type == RANGE_RAM) && ((addr%align) || (size%align))) - return -1; + /* Shrink to 1KiB alignment if needed. */ + if (type == RANGE_RAM && ((addr%align) || (size%align))) { + unsigned long long end = addr + size; + + printf("%s: RAM chunk %#llx - %#llx unaligned\n", __func__, addr, end); + addr = _ALIGN_UP(addr, align); + end = _ALIGN_DOWN(end, align); + if (addr >= end) + return -1; + size = end - addr; + printf("%s: RAM chunk shrunk to %#llx - %#llx\n", __func__, addr, end); + } /* Make sure at least one entry in list is free. */ for (i = 0; i < CRASH_MAX_MEMMAP_NR; i++) { @@ -982,7 +989,7 @@ cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr); /* Inform second kernel about the presence of ACPI tables. */ - for (i = 0; i < CRASH_MAX_MEMORY_RANGES; i++) { + for (i = 0; i < nr_ranges; i++) { unsigned long start, end, size, type; if ( !( mem_range[i].type == RANGE_ACPI || mem_range[i].type == RANGE_ACPI_NVS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/i386/crashdump-x86.h new/kexec-tools-2.0.22/kexec/arch/i386/crashdump-x86.h --- old/kexec-tools-2.0.21/kexec/arch/i386/crashdump-x86.h 2019-09-16 09:22:42.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/arch/i386/crashdump-x86.h 2021-04-02 12:09:36.000000000 +0200 @@ -22,7 +22,8 @@ #define X86_64_KERNEL_TEXT_SIZE (512UL*1024*1024) #define CRASH_MAX_MEMMAP_NR 1024 -#define CRASH_MAX_MEMORY_RANGES (MAX_MEMORY_RANGES + 2) + +#define CRASH_MAX_MEMORY_RANGES 32768 /* Backup Region, First 640K of System RAM. */ #define BACKUP_SRC_START 0x00000000 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/i386/kexec-x86-common.c new/kexec-tools-2.0.22/kexec/arch/i386/kexec-x86-common.c --- old/kexec-tools-2.0.21/kexec/arch/i386/kexec-x86-common.c 2020-04-01 14:48:56.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/arch/i386/kexec-x86-common.c 2021-04-07 21:26:41.000000000 +0200 @@ -48,6 +48,12 @@ #define E820_PRAM 12 #endif +/* + * The real mode IVT ends at 0x400. + * See https://wiki.osdev.org/Interrupt_Vector_Table. + */ +#define REALMODE_IVT_END 0x400 + static struct memory_range memory_range[MAX_MEMORY_RANGES]; /** @@ -360,8 +366,8 @@ /* Don't report the interrupt table as ram */ for (i = 0; i < *ranges; i++) { if ((*range)[i].type == RANGE_RAM && - ((*range)[i].start < 0x100)) { - (*range)[i].start = 0x100; + ((*range)[i].start < REALMODE_IVT_END)) { + (*range)[i].start = REALMODE_IVT_END; break; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/i386/x86-linux-setup.c new/kexec-tools-2.0.22/kexec/arch/i386/x86-linux-setup.c --- old/kexec-tools-2.0.21/kexec/arch/i386/x86-linux-setup.c 2020-11-16 11:59:20.000000000 +0100 +++ new/kexec-tools-2.0.22/kexec/arch/i386/x86-linux-setup.c 2021-04-02 12:09:36.000000000 +0200 @@ -37,6 +37,10 @@ #include "x86-linux-setup.h" #include "../../kexec/kexec-syscall.h" +#ifndef VIDEO_CAPABILITY_64BIT_BASE +#define VIDEO_CAPABILITY_64BIT_BASE (1 << 1) /* Frame buffer base is 64-bit */ +#endif + void init_linux_parameters(struct x86_linux_param_header *real_mode) { /* Fill in the values that are usually provided by the kernel. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/mips/crashdump-mips.c new/kexec-tools-2.0.22/kexec/arch/mips/crashdump-mips.c --- old/kexec-tools-2.0.21/kexec/arch/mips/crashdump-mips.c 2020-12-09 13:47:27.000000000 +0100 +++ new/kexec-tools-2.0.22/kexec/arch/mips/crashdump-mips.c 2021-04-02 12:09:36.000000000 +0200 @@ -401,7 +401,7 @@ * kernel's available memory */ cmdline_add_mem(mod_cmdline, crash_reserved_mem.start, - crash_reserved_mem.end - crash_reserved_mem.start); + crash_reserved_mem.end - crash_reserved_mem.start + 1); cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr); dbgprintf("CRASH MEMORY RANGES:\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/mips/include/arch/options.h new/kexec-tools-2.0.22/kexec/arch/mips/include/arch/options.h --- old/kexec-tools-2.0.21/kexec/arch/mips/include/arch/options.h 2016-12-20 09:28:23.000000000 +0100 +++ new/kexec-tools-2.0.22/kexec/arch/mips/include/arch/options.h 2021-04-02 12:09:36.000000000 +0200 @@ -1,10 +1,11 @@ #ifndef KEXEC_ARCH_MIPS_OPTIONS_H #define KEXEC_ARCH_MIPS_OPTIONS_H -#define OPT_ARCH_MAX (OPT_MAX+0) -#define OPT_APPEND (OPT_ARCH_MAX+0) -#define OPT_DTB (OPT_ARCH_MAX+1) -#define OPT_RAMDISK (OPT_ARCH_MAX+2) +#define OPT_ARCH_MAX (OPT_MAX+0) +#define OPT_APPEND (OPT_ARCH_MAX+0) +#define OPT_DTB (OPT_ARCH_MAX+1) +#define OPT_RAMDISK (OPT_ARCH_MAX+2) +#define OPT_REUSE_CMDLINE (OPT_ARCH_MAX+3) /* Options relevant to the architecture (excluding loader-specific ones), * in this case none: @@ -14,7 +15,8 @@ {"command-line", 1, 0, OPT_APPEND}, \ {"append", 1, 0, OPT_APPEND}, \ {"dtb", 1, 0, OPT_DTB }, \ - {"initrd", 1, 0, OPT_RAMDISK }, + {"initrd", 1, 0, OPT_RAMDISK }, \ + { "reuse-cmdline", 0, NULL, OPT_REUSE_CMDLINE }, #define KEXEC_ARCH_OPT_STR KEXEC_OPT_STR "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/mips/kexec-mips.c new/kexec-tools-2.0.22/kexec/arch/mips/kexec-mips.c --- old/kexec-tools-2.0.21/kexec/arch/mips/kexec-mips.c 2017-10-18 07:15:24.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/arch/mips/kexec-mips.c 2021-04-02 12:09:36.000000000 +0200 @@ -3,7 +3,7 @@ * Copyright (C) 2007 Francesco Chiechi, Alessandro Rubini * Copyright (C) 2007 Tvblob s.r.l. * - * derived from ../ppc/kexec-mips.c + * derived from ../ppc/kexec-ppc.c * Copyright (C) 2004, 2005 Albert Herranz * * This source code is licensed under the GNU General Public License, @@ -89,6 +89,7 @@ " --append=STRING Set the kernel command line to STRING.\n" " --dtb=FILE Use FILE as the device tree blob.\n" " --initrd=FILE Use FILE as initial ramdisk.\n" + " --reuse-cmdline Use kernel command line from running system.\n" ); } @@ -115,6 +116,9 @@ case OPT_APPEND: arch_options.command_line = optarg; break; + case OPT_REUSE_CMDLINE: + arch_options.command_line = get_command_line(); + break; case OPT_DTB: arch_options.dtb_file = optarg; break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/ppc/crashdump-powerpc.c new/kexec-tools-2.0.22/kexec/arch/ppc/crashdump-powerpc.c --- old/kexec-tools-2.0.21/kexec/arch/ppc/crashdump-powerpc.c 2017-08-10 09:28:22.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/arch/ppc/crashdump-powerpc.c 2021-04-17 09:15:15.000000000 +0200 @@ -255,8 +255,7 @@ int cmdline_size; int cmdlen = strlen(cmdline) + strlen(str); - cmdline_size = (kernel_version() < KERNEL_VERSION(3, 15, 0) ? - 512 : COMMAND_LINE_SIZE); + cmdline_size = COMMAND_LINE_SIZE; if (cmdlen > (cmdline_size - 1)) die("Command line overflow\n"); strcat(cmdline, str); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/arch/ppc64/crashdump-ppc64.c new/kexec-tools-2.0.22/kexec/arch/ppc64/crashdump-ppc64.c --- old/kexec-tools-2.0.21/kexec/arch/ppc64/crashdump-ppc64.c 2020-09-29 18:14:33.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/arch/ppc64/crashdump-ppc64.c 2021-04-17 09:15:15.000000000 +0200 @@ -478,8 +478,7 @@ strcat(str, byte); len = strlen(str); cmdlen = strlen(cmdline) + len; - cmdline_size = (kernel_version() < KERNEL_VERSION(3, 15, 0) ? - 512 : COMMAND_LINE_SIZE); + cmdline_size = COMMAND_LINE_SIZE; if (cmdlen > (cmdline_size - 1)) die("Command line overflow\n"); strcat(cmdline, str); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/kernel_version.c new/kexec-tools-2.0.22/kexec/kernel_version.c --- old/kexec-tools-2.0.21/kexec/kernel_version.c 2016-12-09 10:42:06.000000000 +0100 +++ new/kexec-tools-2.0.22/kexec/kernel_version.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,57 +0,0 @@ -#include "kexec.h" -#include <errno.h> -#include <string.h> -#include <sys/utsname.h> -#include <string.h> -#include <limits.h> -#include <stdlib.h> - -long kernel_version(void) -{ - struct utsname utsname; - unsigned long major, minor, patch; - char *p; - - if (uname(&utsname) < 0) { - fprintf(stderr, "uname failed: %s\n", strerror(errno)); - return -1; - } - - p = utsname.release; - major = strtoul(p, &p, 10); - if (major == ULONG_MAX) { - fprintf(stderr, "strtoul failed: %s\n", strerror(errno)); - return -1; - } - - if (*p++ != '.') { - fprintf(stderr, "Unsupported utsname.release: %s\n", - utsname.release); - return -1; - } - - minor = strtoul(p, &p, 10); - if (minor == ULONG_MAX) { - fprintf(stderr, "strtoul failed: %s\n", strerror(errno)); - return -1; - } - - /* There may or may not be a patch level for this kernel */ - if (*p++ == '.') { - patch = strtoul(p, &p, 10); - if (patch == ULONG_MAX) { - fprintf(stderr, "strtoul failed: %s\n",strerror(errno)); - return -1; - } - } else { - patch = 0; - } - - if (major >= 256 || minor >= 256 || patch >= 256) { - fprintf(stderr, "Unsupported utsname.release: %s\n", - utsname.release); - return -1; - } - - return KERNEL_VERSION(major, minor, patch); -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/kexec-xen.c new/kexec-tools-2.0.22/kexec/kexec-xen.c --- old/kexec-tools-2.0.21/kexec/kexec-xen.c 2020-04-07 13:55:42.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/kexec-xen.c 2021-04-02 12:09:36.000000000 +0200 @@ -91,6 +91,17 @@ return rc; } +static uint8_t xen_get_kexec_type(unsigned long kexec_flags) +{ + if (kexec_flags & KEXEC_ON_CRASH) + return KEXEC_TYPE_CRASH; + + if (kexec_flags & KEXEC_LIVE_UPDATE) + return KEXEC_TYPE_LIVE_UPDATE; + + return KEXEC_TYPE_DEFAULT; +} + #define IDENTMAP_1MiB (1024 * 1024) int xen_kexec_load(struct kexec_info *info) @@ -177,12 +188,7 @@ seg++; } - if (info->kexec_flags & KEXEC_ON_CRASH) - type = KEXEC_TYPE_CRASH; - else if (info->kexec_flags & KEXEC_LIVE_UPDATE ) - type = KEXEC_TYPE_LIVE_UPDATE; - else - type = KEXEC_TYPE_DEFAULT; + type = xen_get_kexec_type(info->kexec_flags); arch = (info->kexec_flags & KEXEC_ARCH_MASK) >> 16; #if defined(__i386__) || defined(__x86_64__) @@ -211,8 +217,7 @@ if (!xch) return -1; - type = (kexec_flags & KEXEC_ON_CRASH) ? KEXEC_TYPE_CRASH - : KEXEC_TYPE_DEFAULT; + type = xen_get_kexec_type(kexec_flags); ret = xc_kexec_unload(xch, type); @@ -232,7 +237,7 @@ if (!xch) return -1; - type = (kexec_flags & KEXEC_ON_CRASH) ? KEXEC_TYPE_CRASH : KEXEC_TYPE_DEFAULT; + type = xen_get_kexec_type(kexec_flags); ret = xc_kexec_status(xch, type); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/kexec.8 new/kexec-tools-2.0.22/kexec/kexec.8 --- old/kexec-tools-2.0.21/kexec/kexec.8 2019-07-03 09:56:22.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/kexec.8 2021-04-02 12:09:36.000000000 +0200 @@ -108,9 +108,9 @@ Enable debugging messages. .TP .B \-S\ (\-\-status) -Return 0 if the type (by default crash) is loaded. Can be used in conjuction -with -l or -p to toggle the type. Note this option supersedes other options -and it will +Return 1 if the type (by default crash) is loaded, 0 if not. Can be used in +conjuction with -l or -p to toggle the type. Note this option supersedes other +options and it will .BR not\ load\ or\ unload\ the\ kernel. .TP .B \-e\ (\-\-exec) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/kexec.c new/kexec-tools-2.0.22/kexec/kexec.c --- old/kexec-tools-2.0.21/kexec/kexec.c 2020-09-29 18:12:05.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/kexec.c 2021-04-02 12:09:36.000000000 +0200 @@ -1040,7 +1040,8 @@ " syscall is not supported or the kernel did not\n" " understand the image\n" " -d, --debug Enable debugging to help spot a failure.\n" - " -S, --status Return 0 if the type (by default crash) is loaded.\n" + " -S, --status Return 1 if the type (by default crash) is loaded,\n" + " 0 if not.\n" "\n" "Supported kernel file types and options: \n"); for (i = 0; i < file_types; i++) { @@ -1189,7 +1190,8 @@ xen_get_kexec_range(KEXEC_RANGE_MA_LIVEUPDATE, &lu_start, &lu_end); lu_sizeM = (lu_end - lu_start) / (1024 * 1024) + 1; - sprintf(buf, " liveupdate=%luM@0x%lx", lu_sizeM, lu_start); + sprintf(buf, " liveupdate=%lluM@0x%llx", (unsigned long long)lu_sizeM, + (unsigned long long)lu_start); len = strlen(*base) + strlen(buf) + 1; str = xmalloc(len); sprintf(str, "%s%s", *base, buf); @@ -1335,6 +1337,7 @@ int main(int argc, char *argv[]) { + int has_opt_load = 0; int do_load = 1; int do_exec = 0; int do_load_jump_back_helper = 0; @@ -1392,6 +1395,7 @@ do_exec = 1; break; case OPT_LOAD: + has_opt_load = 1; do_load = 1; do_exec = 0; do_shutdown = 0; @@ -1511,7 +1515,7 @@ do_sync = 0; if (do_status) { - if (kexec_flags == 0) + if (kexec_flags == 0 && !has_opt_load) kexec_flags = KEXEC_ON_CRASH; do_load = 0; do_reuse_initrd = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec/kexec.h new/kexec-tools-2.0.22/kexec/kexec.h --- old/kexec-tools-2.0.21/kexec/kexec.h 2020-09-25 08:07:30.000000000 +0200 +++ new/kexec-tools-2.0.22/kexec/kexec.h 2021-04-17 09:15:15.000000000 +0200 @@ -179,10 +179,6 @@ extern const struct arch_map_entry arches[]; long physical_arch(void); -#define KERNEL_VERSION(major, minor, patch) \ - (((major) << 16) | ((minor) << 8) | patch) -long kernel_version(void); - void usage(void); int get_memory_ranges(struct memory_range **range, int *ranges, unsigned long kexec_flags); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/kexec-tools.spec new/kexec-tools-2.0.22/kexec-tools.spec --- old/kexec-tools-2.0.21/kexec-tools.spec 2020-12-17 13:17:55.000000000 +0100 +++ new/kexec-tools-2.0.22/kexec-tools.spec 2021-05-02 10:10:56.000000000 +0200 @@ -1,6 +1,6 @@ Summary: Load one kernel from another Name: kexec-tools -Version: 2.0.21 +Version: 2.0.22 Release: 0 License: GPL Group: Development/Tools diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kexec-tools-2.0.21/util_lib/elf_info.c new/kexec-tools-2.0.22/util_lib/elf_info.c --- old/kexec-tools-2.0.21/util_lib/elf_info.c 2020-11-30 17:33:25.000000000 +0100 +++ new/kexec-tools-2.0.22/util_lib/elf_info.c 2021-04-02 12:09:36.000000000 +0200 @@ -920,8 +920,8 @@ #define DESC_SV_BITS (sizeof(uint64_t) * 8) #define DESC_FLAGS_SHIFT (DESC_SV_BITS - 2) -#define DESC_FLAGS_MASK (3UL << DESC_FLAGS_SHIFT) -#define DESC_STATE(sv) (3UL & (sv >> DESC_FLAGS_SHIFT)) +#define DESC_FLAGS_MASK (3ULL << DESC_FLAGS_SHIFT) +#define DESC_STATE(sv) (3ULL & (sv >> DESC_FLAGS_SHIFT)) #define DESC_ID_MASK (~DESC_FLAGS_MASK) #define DESC_ID(sv) ((sv) & DESC_ID_MASK) @@ -1092,13 +1092,13 @@ kaddr = read_file_pointer(fd, vaddr_to_offset(prb_vaddr)); m.prb = calloc(1, printk_ringbuffer_sz); if (!m.prb) { - fprintf(stderr, "Failed to malloc %lu bytes for prb: %s\n", + fprintf(stderr, "Failed to malloc %zu bytes for prb: %s\n", printk_ringbuffer_sz, strerror(errno)); exit(64); } ret = pread(fd, m.prb, printk_ringbuffer_sz, vaddr_to_offset(kaddr)); if (ret != printk_ringbuffer_sz) { - fprintf(stderr, "Failed to read prb of size %lu bytes: %s\n", + fprintf(stderr, "Failed to read prb of size %zu bytes: %s\n", printk_ringbuffer_sz, strerror(errno)); exit(65); } ++++++ kexec-tools-remove-duplicate-ramdisk-definition.patch ++++++ --- /var/tmp/diff_new_pack.R3Lmhg/_old 2021-05-10 15:38:10.277854773 +0200 +++ /var/tmp/diff_new_pack.R3Lmhg/_new 2021-05-10 15:38:10.277854773 +0200 @@ -1,6 +1,7 @@ From: Petr Tesarik <[email protected]> Subject: Remove duplicate definition of ramdisk -Upstream: not yet, sent on 2021-04-26 +Upstream: merged +Git-commit: 5e7ce27626a44428c01e0e5ab3fe60ef98ca788c The ramdisk variable is defined in kexec/arch/ppc/kexec-ppc.c. This other definition is not needed and breaks build with -fno-common.
