Hello community, here is the log from the commit of package crash.11778 for openSUSE:Leap:15.1:Update checked in at 2020-01-19 00:11:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.1:Update/crash.11778 (Old) and /work/SRC/openSUSE:Leap:15.1:Update/.crash.11778.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "crash.11778" Sun Jan 19 00:11:37 2020 rev:1 rq:764116 version:unknown Changes: -------- New Changes file: --- /dev/null 2019-12-19 10:12:34.003146842 +0100 +++ /work/SRC/openSUSE:Leap:15.1:Update/.crash.11778.new.26092/crash.changes 2020-01-19 00:11:39.634592946 +0100 @@ -0,0 +1,3841 @@ +------------------------------------------------------------------- +Thu Nov 7 20:24:06 UTC 2019 - David Mair <dm...@suse.com> + +- Apply initial changes to support kernel address space layout + randomization (KASLR) for s390X: + crash-s390-kaslr-minimal-patchset.patch + + Apply fix to allow automated detection of s390x kernels that have + been configured with CONFIG_RANDOMIZE_BASE=y (KASLR). Without it + the "--kaslr=<offset>" command line option is required: + crash-s390-autodetect-kaslr.patch + + The two patches implement jsc#SLE-9797 + +------------------------------------------------------------------- +Thu Mar 21 20:43:53 CET 2019 - dm...@suse.de + +- Update for XEN dom0 changes in v4.11 that cause coredumps made + of a domU using virch on the dom0 to fail to load in the dom0 + version of crash reporting "crash: invalid kernel virtual address: + <address> type:fill_pcpu_struct", followed by "WARNING: cannot + fill pcpu_struct" and "crash: cannot read cpu_info" + (bsc#1124690 and bsc#1122594) + Added: + crash-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch + +------------------------------------------------------------------- +Fri Jan 11 15:07:52 UTC 2019 - sparscha...@suse.de + +- Update the recognition of x86_64 CPU_ENTRY_AREA (bsc#1104743, bsc#1090127) + Added: + crash-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch + +------------------------------------------------------------------- +Tue Dec 18 16:36:40 UTC 2018 - Michal Suchanek <msucha...@suse.de> + +- Fix SLE15 SP1 Incorrect vmcore generated (bsc#1119791). + Added: + crash-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch + crash-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch + This is a change for SLE15 SP1 only and needs to be updated before merging to + other codestreams. + +------------------------------------------------------------------- +Mon Oct 8 05:12:45 UTC 2018 - Jeffrey Cheung <jche...@suse.com> + +- Enabled kmp-rt for SLERT15 SP1 + +------------------------------------------------------------------- +Wed Aug 8 11:02:28 UTC 2018 - msucha...@suse.com + +- Added: + crash-Fix-and-an-update-for-the-ipcs-command.patch + + The update is required for Linux 4.11 and greater kernels, which + reimplemented the IDR facility to use radix trees in kernel commit + 0a835c4f090af2c76fc2932c539c3b32fd21fbbb, titled "Reimplement IDR and IDA + using the radix tree". Without the patch, if any IPCS entry exists, the + command would fail with the message "ipcs: invalid structure member offset: + idr_top" (bsc#1092101) + +- fix license warning + +------------------------------------------------------------------- +Mon Mar 19 20:42:50 UTC 2018 - dm...@suse.com + +- Upgraded to 7.2.1 because it includes the fixes to support + several core cases that recently were caused tofail to open. + As a result, removed patches that were already superceded by + 7.2.1 source (bsc#1103371). + + Removed: + crash-ppc64-book3s-update-hash-page-table-geometry.patch + crash-x86_64_kvtop-usable-symtab_init.patch + crash-ppc64-ensure-chosen-stack-symbol-relates-to-an-actual-backtrace.patch + crash-fix-error-cannot-resolve-schedulers-0001.patch + crash-fix-error-cannot-resolve-schedulers-0002.patch + crash-extend-direct-mapping-to-5TB.patch + + Modified: + crash-allow-use-of-sadump-captured-KASLR-kernel.patch + +------------------------------------------------------------------- +Mon Feb 5 18:56:04 UTC 2018 - dm...@suse.com + +- Added: + crash-fix-error-cannot-resolve-schedulers-0001.patch + crash-fix-error-cannot-resolve-schedulers-0002.patch + crash-extend-direct-mapping-to-5TB.patch + + Fixes Xen dump files that cannot be opened in hypervisor mode. + bsc#1073993 + +------------------------------------------------------------------- +Fri Jan 12 18:14:39 UTC 2018 - dm...@suse.com + +- Added crash-ppc64-ensure-chosen-stack-symbol-relates-to-an-actual-backtrace.patch + + With latest NMI IPI changes, crash_ipi_callback is found multiple + times on the stack. Ensure the chosen symbol relates to an actual + backtrace. bsc#1072718 + +------------------------------------------------------------------- +Thu Dec 7 11:05:03 UTC 2017 - dims...@opensuse.org + +- Escape the usage of %{VERSION} when calling out to rpm. + RPM 4.14 has %{VERSION} defined as 'the main packages version'. + +------------------------------------------------------------------- +Wed Nov 29 17:45:11 UTC 2017 - dm...@suse.com + +- Added crash-x86_64_kvtop-usable-symtab_init.patch to change + x86_64_kvtop() so that it can be called during symtab_init() + + Added crash-allow-use-of-sadump-captured-KASLR-kernel.patch to + allow use of dumps of KASLR enabled kernels that were captured + by sadump. + + Both are bsc#1070278/FATE#323473 + +------------------------------------------------------------------- +Tue Nov 14 22:32:42 UTC 2017 - dm...@suse.com + +- Upgrade the source tarball to version to 7.2.0 which requires the + removal of patches that are then already applied: + + crash-gdb-add-proc_service-sync-with-GLIBC.patch + crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch + + A complete changelog is available via the crash source page at: + + http://people.redhat.com/anderson/crash.changelog.html + + Added crash-ppc64-book3s-update-hash-page-table-geometry.patch + from hbath...@linux.vnet.ibm.com via bsc#1067702 to correct + errors with virtual-to-physical address translation in the larger + virtual address range of newer kernels. + + Added a BuildRequires of libelf that will populate the build + workspace with libelf (from elfutils) even though it is not + directly required by crash but is required by gdb (which crash + nests). It no longer got picked up automatically for build and + gdb and kernel module features had build errors before it. + +------------------------------------------------------------------- +Fri Jun 9 14:43:20 UTC 2017 - dm...@suse.com + +- crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch: + Since linux kernel 3.19 crash readmem() can't be used to read + xen_p2m_addr associate memory directly during m2p translation. + PV domU p2m mapping is also stored at xd->xfd + xch_index_offset + and organized as struct xen_dumpcore_p2m. This patch implements + a special reading function read_xc_p2m() to extract the mfns + from xd->xfd + xch_index_offset and makes and crash support Xen + PV domU dumpfiles for kernel 3.19 and later (bsc#1043501). + - add crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch + +------------------------------------------------------------------- +Fri Jun 2 12:03:45 UTC 2017 - msucha...@suse.com + +- Merge SLE changes into Factory (bsc#1041638) + +------------------------------------------------------------------- +Thu May 25 18:56:51 CEST 2017 - dm...@suse.com + +- crash-stop_read_error_when_intent_is_retry.patch: When reading a + memory image fails it may not be an error if it is still possible + to switch image and retry the read. Fix the error message output + to only occur if no retries are intended (bsc#1038839). + - add crash-stop_read_error_when_intent_is_retry.patch + +------------------------------------------------------------------- +Mon Apr 24 15:50:26 UTC 2017 - astie...@suse.com + +- Exclude openSUSE from RT KMP build (bsc#1013843) + +------------------------------------------------------------------- +Tue Mar 28 19:50:52 UTC 2017 - dm...@suse.com + +- crash source nests gdb source but gdb has a new build error on + Factory due to the bug and build environment modifications. The + fix is upstream gdb but not upstream crash's gdb. + + Created crash patch: + + crash-gdb-add-proc_service-sync-with-GLIBC.patch + + to create the gdb patch in expanded crash and added to the gdb + Makefile patch it's application. Resolves the build error. + +------------------------------------------------------------------- +Tue Mar 7 16:14:26 CET 2017 - dm...@suse.de + +- Upgrade of source tarball to 7.1.8 from upstream and refresh of + patches to align with the version. For a detailed changelog of + the source tarball see: + ++++ 3644 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:Leap:15.1:Update/.crash.11778.new.26092/crash.changes New: ---- Module.supported README.SUSE crash-7.2.1.tar.gz crash-Fix-and-an-update-for-the-ipcs-command.patch crash-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch crash-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch crash-allow-use-of-sadump-captured-KASLR-kernel.patch crash-compressed-booted-kernel.patch crash-debuginfo-compressed.patch crash-gdb-7.6.series crash-kmp-preamble crash-make-emacs-default.diff crash-missing-declarations.patch crash-patch-gdb.patch crash-rpmlintrc crash-s390-autodetect-kaslr.patch crash-s390-kaslr-minimal-patchset.patch crash-sial-ps-2.6.29.diff crash-sles9-quirk.patch crash-sles9-time.patch crash-stop_read_error_when_intent_is_retry.patch crash-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch crash-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch crash.changes crash.spec crash_enable_lzo_support.patch crash_enable_snappy_support.patch crash_whitepaper-2003.tar.bz2 depmod.sh eppic-support-arm64.patch eppic-switch-to-system-lib.patch gcore-2011-09-22.tar.bz2 get-kernel-flavors.sh mkinitrd.sh sial-scripts-2008-02-08.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crash.spec ++++++ # # spec file for package crash # # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # # needssslcertforbuild %define whitepaper_version 2003 %define scripts_version 2008-02-08 %define gcore_version 2011-09-22 %if 0%{!?have_snappy:1} %if 0%{?suse_version} >= 1310 %define have_snappy 1 %else %define have_snappy 0 %endif %endif Name: crash %ifarch ppc %define build_sial 0 %define build_eppic 0 %else %define build_sial 0 %define build_eppic 1 %endif %ifarch %ix86 x86_64 %define build_gcore 1 %else %define build_gcore 0 %endif %ifnarch %ix86 s390 %define build_kmp 1 %if ! 0%{?is_opensuse} %ifarch x86_64 %if 0%{?sle_version} >= 150100 %define buildrt 1 %endif %endif %endif %endif Url: http://people.redhat.com/anderson/ Summary: Crash utility for live systems; netdump, diskdump, LKCD or mcore dumpfiles License: GPL-3.0-or-later AND GFDL-1.2-only Group: Development/Tools/Debuggers Version: 7.2.1 Release: 0 Source: %{name}-%{version}.tar.gz Source2: crash_whitepaper-%{whitepaper_version}.tar.bz2 Source3: README.SUSE Source4: sial-scripts-%{scripts_version}.tar.bz2 Source5: gcore-%{gcore_version}.tar.bz2 Source6: Module.supported Source95: get-kernel-flavors.sh Source96: depmod.sh Source97: mkinitrd.sh Source98: %{name}-kmp-preamble Source99: crash-rpmlintrc Source100: %{name}-gdb-7.6.series BuildRoot: %{_tmppath}/%{name}-%{version}-build Patch1: %{name}-make-emacs-default.diff Patch2: %{name}-sles9-quirk.patch Patch4: %{name}-sles9-time.patch Patch8: %{name}-missing-declarations.patch Patch9: %{name}-debuginfo-compressed.patch Patch10: %{name}_enable_lzo_support.patch Patch11: %{name}-compressed-booted-kernel.patch Patch12: eppic-switch-to-system-lib.patch Patch13: %{name}-patch-gdb.patch Patch15: %{name}_enable_snappy_support.patch Patch16: eppic-support-arm64.patch Patch18: %{name}-stop_read_error_when_intent_is_retry.patch Patch21: %{name}-allow-use-of-sadump-captured-KASLR-kernel.patch Patch22: %{name}-Fix-and-an-update-for-the-ipcs-command.patch Patch23: %{name}-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch Patch24: %{name}-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch Patch25: %{name}-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch Patch26: %{name}-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch Patch27: %{name}-s390-kaslr-minimal-patchset.patch Patch28: %{name}-s390-autodetect-kaslr.patch Patch90: %{name}-sial-ps-2.6.29.diff BuildRequires: bison BuildRequires: flex BuildRequires: libeppic-devel BuildRequires: lzo-devel BuildRequires: ncurses-devel %if %{have_snappy} BuildRequires: snappy-devel %endif BuildRequires: libelf-devel BuildRequires: zlib-devel Requires: /usr/bin/nm ExclusiveArch: %ix86 x86_64 ia64 s390 s390x ppc64 ppc64le alpha aarch64 # Source code says it can do ppc32. Excluded here? ExcludeArch: ppc # crash driver KMP %if 0%{?build_kmp} BuildRequires: kernel-syms BuildRequires: module-init-tools %if 0%{?buildrt} %if ! 0%{?build_crash_on_obs} BuildRequires: kernel-syms-rt %endif %endif %if 0%{?suse_version} >= 1130 BuildRequires: kernel-devel %endif %endif %if 0%{?build_kmp} %if 0%{?suse_version} >= 920 %suse_kernel_module_package -n crash -p %_sourcedir/%{name}-kmp-preamble um %define arch %_target_cpu %define kmp_pkg KMP %else %define kver %(rpm -q --qf '%%{VERSION}-%%{RELEASE}' kernel-source) %define kver_ %(rpm -q --qf '%%{VERSION}_%%{RELEASE}' kernel-source) %define arch %(echo %_target_cpu | sed -e 's/i.86/i386/') %define flavors_to_build %(sh %_sourcedir/get-kernel-flavors.sh %arch) %define kmp_pkg kmp %endif %endif %description The core analysis suite is a self-contained tool that can be used to investigate either live systems, kernel core dumps created from the netdump and diskdump packages from Red Hat Linux, the mcore kernel patch offered by Mission Critical Linux, or the LKCD kernel patch. Authors: -------- David Anderson <ander...@redhat.com> %package doc Requires: %{name} = %{version} Summary: Documentation for Crash License: GFDL-1.2-only Group: Development/Tools/Debuggers %description doc This subpackage contains the crash whitepaper from Dave Anderson. Authors: -------- David Anderson <ander...@redhat.com> %package devel Requires: %{name} = %{version} Summary: Development files for crash License: GPL-2.0-or-later Group: Development/Tools/Debuggers %description devel This files are required to build extensions for crash. Crash is the core analysis suite that can be used to investigate either live systems, kernel core dumps created from the netdump and diskdump packages from Red Hat Linux, the mcore kernel patch offered by Mission Critical Linux, or the LKCD kernel patch. Authors: -------- David Anderson <ander...@redhat.com> %if %build_eppic %package eppic Requires: %{name} = %{version} %if %build_sial # Nothing to do %else Provides: %{name}-sial = %{version} Obsoletes: %{name}-sial < %{version} %endif Summary: Embeddable Pre-Processor and Interpreter for C extension for crash License: GPL-2.0-or-later Group: Development/Tools/Debuggers %description eppic EPPIC is a C interpreter that permits easy access to the symbol and type information stored in a executable image like a coredump or live memory interfaces (e.g. /dev/kmem, /dev/mem). Although it has a strong association with live or postmortem kernel analysis, it is not constraint to it and can be embedded in any tools that is C friendly. Authors: -------- Luc Chouinard <lucchou...@gmail.com> %endif %if %build_sial %package sial Requires: %{name} = %{version} Summary: SIAL extension for crash License: GPL-2.0-or-later Group: Development/Tools/Debuggers %description sial This module is a prerequisite for the loading of SIAL scripts. Upon loading the sial.so object file with extend, any SIAL scripts located in the /usr/share/sial/crash or $HOME/.sial directories will be loaded automatically. Authors: -------- David Anderson <ander...@redhat.com> %endif %if %build_gcore %package gcore Requires: %{name} = %{version} Summary: Gcore extension for crash License: GPL-2.0-or-later Group: Development/Tools/Debuggers %description gcore Create a core dump file of a user-space task that was running in a kernel dumpfile. Authors: -------- Daisuke Hatayama <d.hatay...@jp.fujitsu.com> %endif %if 0%{?build_kmp} %package %kmp_pkg Summary: Memory driver for the crash utility License: GPL-2.0-only Group: System/Kernel %if 0%{?suse_version} < 920 Version: %{version}_%{kver_} Release: 0 Requires: kernel = %kver %endif %description %kmp_pkg To run the crash utility on a live system, a memory device must be present. Due to many limitations of the /dev/mem interface, a separate kernel module is provided to access all RAM through the /dev/crash device. Authors: -------- David Anderson <ander...@redhat.com> %endif %prep %setup -q -a 2 -a 4 %patch1 -p1 %patch2 -p1 %patch4 -p1 %patch8 -p1 %patch9 -p1 %patch10 -p1 %patch11 -p1 %patch13 -p1 %patch18 -p1 %patch21 -p1 %patch22 -p1 %patch23 -p1 %patch24 -p1 %patch25 -p1 %patch26 -p1 %patch27 -p1 %patch28 -p1 %if %{have_snappy} %patch15 -p1 %endif ## GDB patches #for f in %{S:XXX} ; do # base=`basename "$f"` # cp "$f" "${base#%{name}-}" #done ## SIAL patches cd sial-scripts-%{scripts_version} %patch90 -p1 cd - ## gcore extension cd extensions tar xfvj %{S:5} cd - %patch12 -p1 %patch16 -p1 cp %{S:3} . mkdir kbuild %if ! 0%{?is_opensuse} cp %{S:6} memory_driver %endif %build export CFLAGS="$RPM_OPT_FLAGS -fno-builtin-memset -fno-strict-aliasing" export GDB="gdb-%{gdb_version}" make RPMPKG="`cat .rh_rpm_package`" %{?jobs:-j%jobs} make extensions %{?jobs:-j%jobs} %if 0%{?build_kmp} export EXTRA_CFLAGS='-DVERSION=\"%version\"' for flavor in %flavors_to_build; do rm -rf kbuild/$flavor cp -r memory_driver kbuild/$flavor make -C /usr/src/linux-obj/%arch/$flavor modules \ M=$PWD/kbuild/$flavor done %endif %install mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_libdir} make DESTDIR=%{buildroot} install mkdir -p %{buildroot}%{_mandir}/man8 install -m 0644 crash.8 %{buildroot}%{_mandir}/man8/crash.8 # devel files mkdir -p $RPM_BUILD_ROOT/%{_includedir}/crash install -m 0644 defs.h $RPM_BUILD_ROOT/%{_includedir}/crash # permissions chmod 644 COPYING3 # extensions mkdir -p $RPM_BUILD_ROOT/%{_libdir}/crash/extensions %if %build_gcore install -m 0644 extensions/gcore.so $RPM_BUILD_ROOT/%{_libdir}/crash/extensions %endif %if %build_eppic install -m 0644 extensions/eppic.so $RPM_BUILD_ROOT/%{_libdir}/crash/extensions %endif %if %build_sial install -m 0644 extensions/sial.so $RPM_BUILD_ROOT/%{_libdir}/crash/extensions %endif %if %build_eppic # scripts mkdir -p $RPM_BUILD_ROOT/%{_datadir}/sial/crash install -m 0644 sial-scripts-%{scripts_version}/*.c \ $RPM_BUILD_ROOT/%{_datadir}/sial/crash %endif %if 0%{?build_kmp} # memory driver module export INSTALL_MOD_PATH=$RPM_BUILD_ROOT export INSTALL_MOD_DIR=updates for flavor in %flavors_to_build; do make -C /usr/src/linux-obj/%arch/$flavor modules_install \ M=$PWD/kbuild/$flavor done # Ugly SLES9-style KMP %if 0%{?suse_version} < 920 set -- $(ls $RPM_BUILD_ROOT/lib/modules) KERNELRELEASES=$* set -- $(find $RPM_BUILD_ROOT/lib/modules -type f -name '*.ko' \ | sed -e 's:.*/::' -e 's:\.ko$::' | sort -u) MODULES=$* ( cat <<-EOF # IMPORTANT: Do not change the KERNELRELEASES definition; it will be # replaced during driver reuse! KERNELRELEASES="$KERNELRELEASES" MODULES="$MODULES" EOF cat %_sourcedir/depmod.sh cat %_sourcedir/mkinitrd.sh ) > post_postun.sh %post kmp -f post_postun.sh %postun kmp -f post_postun.sh %endif %endif %clean rm -rf %{buildroot} %files %defattr(-,root,root) %{_bindir}/crash %{_mandir}/man8/crash.8* %license COPYING3 %doc README README.SUSE %dir %{_libdir}/crash %dir %{_libdir}/crash/extensions %files devel %defattr(-,root,root) %{_includedir}/* %files doc %defattr(-,root,root) %doc crash_whitepaper/* %if %build_eppic %files eppic %defattr(-,root,root) %{_libdir}/crash/extensions/eppic.so %{_datadir}/sial/crash %dir %{_datadir}/sial %endif %if %build_sial %files sial %defattr(-,root,root) %doc extensions/libsial/README %{_libdir}/crash/extensions/sial.so %{_datadir}/sial/crash %dir %{_datadir}/sial %endif %if %build_gcore %files gcore %defattr(-,root,root) %{_libdir}/crash/extensions/gcore.so %doc extensions/README.gcore %endif %if 0%{?build_kmp} %if 0%{?suse_version} < 920 %files %kmp_pkg %defattr(-,root,root) /lib/modules/* %endif %endif %changelog ++++++ Module.supported ++++++ crash.ko ++++++ README.SUSE ++++++ Changes in the SUSE package =========================== - Emacs is the default editing mode, can still be overwritten to vi mode via command line or configuration file - added the Crash Whitepaper from http://people.redhat.com/anderson/.crash_whitepaper/ - fix for LKCD header (SLES9 has another header format than SLES10) in IA64 SIAL ==== To use the SIAL extension, install crash-sial and load it with "extend sial.so" in crash. If you want to have the sial extension automatically loaded at startup, add this command to your ~/.crashrc configuration file. Place custom scripts in /usr/share/sial/crash (system wide) or ~/.sial (per user). ++++++ crash-Fix-and-an-update-for-the-ipcs-command.patch ++++++ >From 759dc0c50dc6cc3199e56be57cb57d41812b0397 Mon Sep 17 00:00:00 2001 From: Dave Anderson <ander...@redhat.com> Date: Mon, 30 Apr 2018 10:38:26 -0400 Subject: [PATCH] Fix, and an update, for the "ipcs" command. The fix addresses an error where IPCS entries are not displayed because of a faulty read of the "deleted" member of the embedded "kern_ipc_perm" data structure. The "deleted" member was being read as a 4-byte integer, but since it is declared as a "bool" type, only the lowest byte gets set to 1 or 0. Since the structure is not zeroed-out when allocated, stale data may be left in the upper 3 bytes, and the IPCS entry gets rejected. The update is required for Linux 4.11 and greater kernels, which reimplemented the IDR facility to use radix trees in kernel commit 0a835c4f090af2c76fc2932c539c3b32fd21fbbb, titled "Reimplement IDR and IDA using the radix tree". Without the patch, if any IPCS entry exists, the command would fail with the message "ipcs: invalid structure member offset: idr_top" (ander...@redhat.com) References: bsc#1092101 Patch-mainline: 7.2.2 Git-commit: 759dc0c50dc6cc3199e56be57cb57d41812b0397 --- ipcs.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 14 deletions(-) diff --git a/ipcs.c b/ipcs.c index 4fa9ab428fdb..ef51fddd33b8 100644 --- a/ipcs.c +++ b/ipcs.c @@ -71,6 +71,8 @@ struct ipcs_table { ulong shm_f_op_huge_addr; int use_shm_f_op; int seq_multiplier; + int rt_cnt; + struct radix_tree_pair *rtp; }; /* @@ -92,6 +94,7 @@ static void get_sem_info(struct sem_info *, ulong, int); static void get_msg_info(struct msg_info *, ulong, int); static void add_rss_swap(ulong, int, ulong *, ulong *); static int is_file_hugepages(ulong); +static void gather_radix_tree_entries(ulong); /* * global data @@ -574,7 +577,7 @@ ipc_search_array(ulong ipc_ids_p, int specified, ulong specified_value, int (*fn static int ipc_search_idr(ulong ipc_ids_p, int specified, ulong specified_value, int (*fn)(ulong, int, ulong, int, int), int verbose) { - int in_use; + int i, in_use; ulong ipcs_idr_p; ulong ipc; int next_id, total; @@ -591,16 +594,32 @@ ipc_search_idr(ulong ipc_ids_p, int specified, ulong specified_value, int (*fn)( return 0; } - for (total = 0, next_id = 0; total < in_use; next_id++) { - ipc = idr_find(ipcs_idr_p, next_id); - if (ipc == 0) - continue; - - total++; - if (fn(ipc, specified, specified_value, next_id, verbose)) { - found = 1; - if (specified != SPECIFIED_NOTHING) - break; + if (VALID_MEMBER(idr_idr_rt)) { + gather_radix_tree_entries(ipcs_idr_p); + + for (i = 0; i < ipcs_table.rt_cnt; i++) { + ipc = (ulong)ipcs_table.rtp[i].value; + if (fn(ipc, specified, specified_value, UNUSED, verbose)) { + found = 1; + if (specified != SPECIFIED_NOTHING) + break; + } + } + + if (ipcs_table.rtp) + FREEBUF(ipcs_table.rtp); + } else { + for (total = 0, next_id = 0; total < in_use; next_id++) { + ipc = idr_find(ipcs_idr_p, next_id); + if (ipc == 0) + continue; + + total++; + if (fn(ipc, specified, specified_value, next_id, verbose)) { + found = 1; + if (specified != SPECIFIED_NOTHING) + break; + } } } @@ -885,7 +904,7 @@ get_shm_info(struct shm_info *shm_info, ulong shp, int id) add_rss_swap(inodep, is_file_hugepages(filep), &shm_info->rss, &shm_info->swap); - shm_info->deleted = UINT(buf + OFFSET(shmid_kernel_shm_perm) + + shm_info->deleted = UCHAR(buf + OFFSET(shmid_kernel_shm_perm) + OFFSET(kern_ipc_perm_deleted)); } @@ -930,7 +949,7 @@ get_sem_info(struct sem_info *sem_info, ulong shp, int id) sem_info->nsems = ULONG(buf + OFFSET(sem_array_sem_nsems)); - sem_info->deleted = UINT(buf + OFFSET(sem_array_sem_perm) + + sem_info->deleted = UCHAR(buf + OFFSET(sem_array_sem_perm) + OFFSET(kern_ipc_perm_deleted)); } @@ -976,7 +995,7 @@ get_msg_info(struct msg_info *msg_info, ulong shp, int id) msg_info->messages = ULONG(buf + OFFSET(msg_queue_q_qnum)); - msg_info->deleted = UINT(buf + OFFSET(msg_queue_q_perm) + + msg_info->deleted = UCHAR(buf + OFFSET(msg_queue_q_perm) + OFFSET(kern_ipc_perm_deleted)); } @@ -1083,3 +1102,19 @@ again: return 0; } +static void +gather_radix_tree_entries(ulong ipcs_idr_p) +{ + long len; + + ipcs_table.rt_cnt = do_radix_tree(ipcs_idr_p, RADIX_TREE_COUNT, NULL); + + if (ipcs_table.rt_cnt) { + len = sizeof(struct radix_tree_pair) * (ipcs_table.rt_cnt+1); + ipcs_table.rtp = (struct radix_tree_pair *)GETBUF(len); + ipcs_table.rtp[0].index = ipcs_table.rt_cnt; + ipcs_table.rt_cnt = do_radix_tree(ipcs_idr_p, RADIX_TREE_GATHER, ipcs_table.rtp); + } else + ipcs_table.rtp = NULL; +} + -- 2.13.7 ++++++ crash-SLE15-SP1-Fix-for-PPC64-kernel-virtual-address-translation-in.patch ++++++ >From 28fa7bd09013455b5ddc020dea4706278cda0d65 Mon Sep 17 00:00:00 2001 From: Dave Anderson <ander...@redhat.com> Date: Tue, 19 Jun 2018 16:31:54 -0400 Subject: [PATCH] Fix for PPC64 kernel virtual address translation in Linux 4.17 and later kernels with commit c2b4d8b7417a59b7f9a52d0d8402f5257cbbd398, titled "powerpc/mm/hash64: Increase the VA range", in which the maximum virtual address value has been increased to 4PB. Without the patch, the translation/access of high vmalloc space addresses fails; for example, the "kmem -[sS]" option fails the translation of per-cpu kmem_cache_cpu addresses located in vmalloc space, with the error messages "kmem: invalid kernel virtual address: <address> type: kmem_cache_cpu.freelist" and "kmem: invalid kernel virtual address: <address> type: kmem_cache_cpu.page", and the "vtop" command shows the addresses as "(not mapped)". (hbath...@linux.ibm.com) [note: apply on 4.12+ for SLE 15 SP1 - incompatible with SLE 15 SP0] --- defs.h | 1 + ppc64.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/defs.h b/defs.h index 6e6f6be50fa4..e6e3850c819d 100644 --- a/defs.h +++ b/defs.h @@ -3977,6 +3977,7 @@ struct efi_memory_desc_t { #define PMD_INDEX_SIZE_L4_64K_4_12 10 #define PUD_INDEX_SIZE_L4_64K_4_12 7 #define PGD_INDEX_SIZE_L4_64K_4_12 8 +#define PUD_INDEX_SIZE_L4_64K_4_17 10 #define PTE_INDEX_SIZE_RADIX_64K 5 #define PMD_INDEX_SIZE_RADIX_64K 9 #define PUD_INDEX_SIZE_RADIX_64K 9 diff --git a/ppc64.c b/ppc64.c index 0dd8a2af5818..f5d0dacaca2b 100644 --- a/ppc64.c +++ b/ppc64.c @@ -451,7 +451,10 @@ ppc64_init(int when) if (THIS_KERNEL_VERSION >= LINUX(4,12,0)) { m->l2_index_size = PMD_INDEX_SIZE_L4_64K_4_12; - m->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_12; + if (THIS_KERNEL_VERSION >= LINUX(4,12,0)) /* SLE15 SP1 */ + m->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_17; + else + m->l3_index_size = PUD_INDEX_SIZE_L4_64K_4_12; m->l4_index_size = PGD_INDEX_SIZE_L4_64K_4_12; } else { m->l2_index_size = PMD_INDEX_SIZE_L4_64K_4_6; -- 2.19.2 ++++++ crash-SLE15-SP1-With-Linux-4.19-rc1-up-MAX_PHYSMEM_BITS-to-128TB.patch ++++++ >From 599a6579aa916df7800f8e889d68e4287e4520dd Mon Sep 17 00:00:00 2001 From: Dave Anderson <ander...@redhat.com> Date: Thu, 27 Sep 2018 14:14:31 -0400 Subject: [PATCH] With Linux 4.19-rc1 commit 7d4340bb92a9df78e6e28152f3dd89d9bd82146b, titled "powerpc/mm: Increase MAX_PHYSMEM_BITS to 128TB with SPARSEMEM_VMEMMAP config", the PPC64 MAX_PHYSMEM_BITS value has been bumped up to 47. The appropriate update has been made in this patch. (hbath...@linux.ibm.com) [note: apply on 4.12+ for SLE 15 SP1 - incompatible with SLE 15 SP0] --- defs.h | 1 + ppc64.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/defs.h b/defs.h index 80c61ef94f3d..5b64bb7bb629 100644 --- a/defs.h +++ b/defs.h @@ -4073,6 +4073,7 @@ struct efi_memory_desc_t { #define _SECTION_SIZE_BITS 24 #define _MAX_PHYSMEM_BITS 44 #define _MAX_PHYSMEM_BITS_3_7 46 +#define _MAX_PHYSMEM_BITS_4_19 47 #endif /* PPC64 */ diff --git a/ppc64.c b/ppc64.c index 8badcde3ca76..ee2f76f198fb 100644 --- a/ppc64.c +++ b/ppc64.c @@ -554,7 +554,10 @@ ppc64_init(int when) ppc64_vmemmap_init(); machdep->section_size_bits = _SECTION_SIZE_BITS; - if (THIS_KERNEL_VERSION >= LINUX(3,7,0)) + if ((machdep->flags & VMEMMAP) && + (THIS_KERNEL_VERSION >= LINUX(4,12,0))) /* SLE15 SP1 */ + machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_4_19; + else if (THIS_KERNEL_VERSION >= LINUX(3,7,0)) machdep->max_physmem_bits = _MAX_PHYSMEM_BITS_3_7; else machdep->max_physmem_bits = _MAX_PHYSMEM_BITS; -- 2.19.2 ++++++ crash-allow-use-of-sadump-captured-KASLR-kernel.patch ++++++ This patch fix a problem that crash cannot open a dumpfile which is captured by sadump in KASLR enabled kernel. When KASLR feature is enabled, a kernel is placed on the memory randomly and therefore crash cannot open a dumpfile captured by sadump because addresses of kernel symbols in System.map or vmlinux are different from actual addresses. To solve this problem, we need to calculate kaslr offset(the difference between original symbol address and actual address) and phys_base, and adjust symbol table of crash. In the case of dumpfile of kdump, these information is included in the header, but dumpfile of sadump does not have such a information. This patch calculate kaslr offset and phys_base to solve this problem. Please see the comment in the calc_kaslr_offset() for the detail idea. The basic idea is getting register (IDTR and CR3) from dump header, and calculate kaslr_offset/phys_base using them. Signed-off-by: Takao Indoh <indou.ta...@jp.fujitsu.com> --- symbols.c | 3 +++ 1 file changed, 3 insertions(+) --- a/symbols.c +++ b/symbols.c @@ -1133,6 +1133,9 @@ symname_hash_install(struct syment *spn) } } } + + if (SADUMP_DUMPFILE()) + kt->flags2 |= KASLR_CHECK; } /* ++++++ crash-compressed-booted-kernel.patch ++++++ From: Petr Tesarik <ptesa...@suse.cz> Subject: Automatically detect compressed booted kernel References: bnc#777516, bnc#828260 Patch-mainline: not yet Signed-off-by: Petr Tesarik <ptesa...@suse.cz> --- filesys.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) --- a/filesys.c +++ b/filesys.c @@ -571,6 +571,7 @@ static int find_booted_kernel(void) { char kernel[BUFSIZE]; + char *real_kernel; char buffer[BUFSIZE]; char **searchdirs; int i, preferred, wrapped; @@ -620,16 +621,24 @@ find_booted_kernel(void) sprintf(kernel, "%s%s", searchdirs[i], dp->d_name); if (mount_point(kernel) || - !file_readable(kernel) || - !is_elf_file(kernel)) + !file_readable(kernel)) continue; + if (!is_compressed_kernel(kernel, &real_kernel)) + real_kernel = kernel; + if (CRASHDEBUG(1)) fprintf(fp, "find_booted_kernel: check: %s\n", kernel); - found = match_file_string(kernel, kt->proc_version, buffer); - + if (!is_elf_file(real_kernel)) { + if (real_kernel != kernel) + free(real_kernel); + continue; + } + + found = match_file_string(real_kernel, kt->proc_version, buffer); + if (found) break; } @@ -649,10 +658,19 @@ find_booted_kernel(void) if (CRASHDEBUG(1)) fprintf(fp, "find_booted_kernel: found: %s\n", pc->namelist); + if (real_kernel != kernel) { + pc->namelist_orig = pc->namelist; + pc->namelist = real_kernel; + } return TRUE; } } + if (real_kernel != kernel) { + remove(real_kernel); + free(real_kernel); + } + error(INFO, "cannot find booted kernel -- please enter namelist argument\n\n"); return FALSE; ++++++ crash-debuginfo-compressed.patch ++++++ From: Petr Tesarik <ptesa...@suse.cz> Subject: Search debuginfo files in the original directory References: bnc#723639 If debuginfo is in a separate file and the kernel image is compressed, then it should be found in the same directory as the original (compressed) image, not in the directory with the uncompressed image (TMPDIR). Signed-off-by: Petr Tesarik <ptesa...@suse.cz> --- symbols.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) --- a/symbols.c +++ b/symbols.c @@ -204,9 +204,9 @@ symtab_init(void) * Pull a bait-and-switch on st->bfd if we've got a separate * .gnu_debuglink file that matches the CRC. Not done for kerntypes. */ - if (!(LKCD_KERNTYPES()) && - !(bfd_get_file_flags(st->bfd) & HAS_SYMS)) { - if (!check_gnu_debuglink(st->bfd)) + if (!(LKCD_KERNTYPES())) { + if (!check_gnu_debuglink(st->bfd) && + !(bfd_get_file_flags(st->bfd) & HAS_SYMS)) no_debugging_data(FATAL); } @@ -268,13 +268,16 @@ check_gnu_debuglink(bfd *bfd) char *contents; int crc_offset; unsigned long crc32; + char *namelist; char *dirname; char *namelist_debug; char **matching; + namelist = pc->namelist_orig ? pc->namelist_orig : pc->namelist; + sect = bfd_get_section_by_name(bfd, ".gnu_debuglink"); if (!sect) { - error(INFO, "%s: no .gnu_debuglink section\n", pc->namelist); + error(INFO, "%s: no .gnu_debuglink section\n", namelist); return FALSE; } @@ -295,14 +298,14 @@ check_gnu_debuglink(bfd *bfd) contents, crc32); if ((pc->debuginfo_file = (char *) - malloc(((strlen(pc->namelist) + strlen("/.debug/") + + malloc(((strlen(namelist) + strlen("/.debug/") + + strlen(".debug") + strlen(" /usr/lib/debug/boot/ "))*10) + strlen(pc->namelist_debug ? pc->namelist_debug : " "))) == NULL) error(FATAL, "debuginfo file name malloc: %s\n", strerror(errno)); - dirname = GETBUF(strlen(pc->namelist)+1); - strcpy(dirname, pc->namelist); + dirname = GETBUF(strlen(namelist)+1); + strcpy(dirname, namelist); for (i = strlen(dirname)-1; i >= 0; i--) { ++++++ crash-kmp-preamble ++++++ Requires: kernel-%1 ++++++ crash-make-emacs-default.diff ++++++ --- main.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) --- a/main.c +++ b/main.c @@ -1158,12 +1158,6 @@ setup_environment(int argc, char **argv) pc->flags |= READLINE; pc->editing_mode = "no_mode"; - if ((p1 = getenv("EDITOR"))) { - if (strstr(p1, "vi")) - pc->editing_mode = "vi"; - if (strstr(p1, "emacs")) - pc->editing_mode = "emacs"; - } /* * Resolve $HOME .rc file first, then the one in the local directory. @@ -1213,7 +1207,7 @@ setup_environment(int argc, char **argv) } if (STREQ(pc->editing_mode, "no_mode")) - pc->editing_mode = "vi"; + pc->editing_mode = "emacs"; machdep_init(SETUP_ENV); } ++++++ crash-missing-declarations.patch ++++++ From: Petr Tesarik <ptesa...@suse.cz> Subject: Add missing includes This fixes a compilation failure on ppc64. --- gdb-7.6.patch | 10 ++++++++++ 1 file changed, 10 insertions(+) --- a/gdb-7.6.patch +++ b/gdb-7.6.patch @@ -17,6 +17,16 @@ ./pex-djgpp.$(objext) ./pex-msdos.$(objext) \ ./pex-unix.$(objext) ./pex-win32.$(objext) \ ./putenv.$(objext) \ +--- gdb-7.6/sim/common/gentmap.c.orig ++++ gdb-7.6/sim/common/gentmap.c +@@ -2,6 +2,7 @@ + + #include <stdio.h> + #include <stdlib.h> ++#include <string.h> + + struct tdefs { + char *symbol; --- gdb-7.6/opcodes/i386-dis.c.orig +++ gdb-7.6/opcodes/i386-dis.c @@ -11510,6 +11510,10 @@ print_insn (bfd_vma pc, disassemble_info ++++++ crash-patch-gdb.patch ++++++ From: Petr Tesarik <ptesa...@suse.cz> Subject: Apply custom patches to gdb Patch-mainline: never Enhance the crash specfile to allow applying custom patches. Update jeffm 17 Sep 2014: What used to be in the series file is now in gdb-7.6-ppc64le-support.patch. We used to apply it unconditionally so we'll continue to do so. Signed-off-by: Petr Tesarik <ptesa...@suse.cz> --- Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- a/Makefile +++ b/Makefile @@ -263,8 +263,11 @@ gdb_unzip: gdb_patch: if [ -f ${GDB}.patch ] && [ -s ${GDB}.patch ]; then \ patch -p0 < ${GDB}.patch; cp ${GDB}.patch ${GDB}; fi - if [ "${ARCH}" = "ppc64le" ] && [ -f ${GDB}-ppc64le-support.patch ]; then \ - patch -d ${GDB} -p1 -F0 < ${GDB}-ppc64le-support.patch ; \ + patch -d ${GDB} -p1 -F0 < ${GDB}-ppc64le-support.patch ; \ + if [ -f ${GDB}.series ]; then \ + while read p; do \ + patch -d ${GDB} -p1 -F0 < "$$p" ; \ + done < ${GDB}.series ; \ fi if [ "${ARCH}" = "x86_64" ] && [ "${TARGET}" = "PPC64" ] && [ -f ${GDB}-ppc64le-support.patch ]; then \ patch -d ${GDB} -p1 -F0 < ${GDB}-ppc64le-support.patch ; \ ++++++ crash-rpmlintrc ++++++ addFilter("devel-file-in-non-devel-package .*/usr/share/sial/crash.*") # crash-7.0.9.tar compresses better with gzip than with bzip2 addFilter(" source-or-patch-not-bzipped crash-7.0.9.tar.gz") addFilter(" source-or-patch-not-compressed bz2 crash-7.0.9.tar.gz") ++++++ crash-s390-autodetect-kaslr.patch ++++++ Fix to allow live system analysis of s390x kernels that have been configured with CONFIG_RANDOMIZE_BASE=y (KASLR). Without the patch, the "--kaslr=<offset>" command line option is required. (ander...@redhat.com) --- Index: b/symbols.c =================================================================== --- a/symbols.c +++ b/symbols.c @@ -613,6 +613,12 @@ kaslr_init(void) st->_stext_vmlinux = UNINITIALIZED; } + if (machine_type("S390X") && /* Linux 5.2 */ + (symbol_value_from_proc_kallsyms("__kaslr_offset") != BADVAL)) { + kt->flags2 |= (RELOC_AUTO|KASLR); + st->_stext_vmlinux = UNINITIALIZED; + } + if (KDUMP_DUMPFILE() || DISKDUMP_DUMPFILE()) { if ((string = pc->read_vmcoreinfo("SYMBOL(_stext)"))) { kt->vmcoreinfo._stext_SYMBOL = ++++++ crash-s390-kaslr-minimal-patchset.patch ++++++ Add --kaslr support for s390x kernels configured with CONFIG_RANDOMIZE_BASE. Only kdumps or ELF dumps with vmcoreinfo are supported. Suggested-by: Gerald Schaefer <gerald.schae...@de.ibm.com> Signed-off-by: Mikhail Zaslonko <zaslo...@linux.ibm.com> --- help.c | 2 +- main.c | 3 ++- symbols.c | 9 +++++---- 3 files changed, 8 insertions(+), 6 deletions(-) Index: b/help.c =================================================================== --- a/help.c +++ b/help.c @@ -333,7 +333,7 @@ char *program_usage_info[] = { " and verification. The default count is 32768.", "", " --kaslr offset | auto", - " If an x86 or x86_64 kernel was configured with CONFIG_RANDOMIZE_BASE,", + " If x86, x86_64 or s390x kernel was configured with CONFIG_RANDOMIZE_BASE,", " the offset value is equal to the difference between the symbol values ", " compiled into the vmlinux file and their relocated KASLR value. If", " set to auto, the KASLR offset value will be automatically calculated.", Index: b/main.c =================================================================== --- a/main.c +++ b/main.c @@ -228,7 +228,8 @@ main(int argc, char **argv) } } else if (STREQ(long_options[option_index].name, "kaslr")) { if (!machine_type("X86_64") && - !machine_type("ARM64") && !machine_type("X86")) + !machine_type("ARM64") && !machine_type("X86") && + !machine_type("S390X")) error(INFO, "--kaslr not valid " "with this machine type.\n"); else if (STREQ(optarg, "auto")) Index: b/symbols.c =================================================================== --- a/symbols.c +++ b/symbols.c @@ -597,8 +597,8 @@ kaslr_init(void) { char *string; - if ((!machine_type("X86_64") && !machine_type("ARM64") && !machine_type("X86")) || - (kt->flags & RELOC_SET)) + if ((!machine_type("X86_64") && !machine_type("ARM64") && !machine_type("X86") && + !machine_type("S390X")) || (kt->flags & RELOC_SET)) return; /* @@ -737,7 +737,8 @@ store_symbols(bfd *abfd, int dynamic, vo fromend, size, store); } else if (!(kt->flags & RELOC_SET)) kt->flags |= RELOC_FORCE; - } else if (machine_type("X86_64") || machine_type("ARM64")) { + } else if (machine_type("X86_64") || machine_type("ARM64") || + machine_type("S390X")) { if ((kt->flags2 & RELOC_AUTO) && !(kt->flags & RELOC_SET)) derive_kaslr_offset(abfd, dynamic, from, fromend, size, store); @@ -809,7 +810,7 @@ store_sysmap_symbols(void) strerror(errno)); if (!machine_type("X86") && !machine_type("X86_64") && - !machine_type("ARM64")) + !machine_type("ARM64") && !machine_type("S390X")) kt->flags &= ~RELOC_SET; first = 0; ++++++ crash-sial-ps-2.6.29.diff ++++++ diff -Nurp sial-scripts-2008-02-08.orig//ps.c sial-scripts-2008-02-08/ps.c --- sial-scripts-2008-02-08.orig//ps.c 2010-03-12 19:59:03.227788951 +0100 +++ sial-scripts-2008-02-08/ps.c 2010-03-12 19:59:16.690665574 +0100 @@ -192,7 +192,11 @@ string cmd; printf("%p %7d %7d %7d 0x%02x 0x%08x %5d:%-5d %s\n" , t +#if LINUX_RELEASE > 0x02061d + , t->real_cred->uid +#else , t->uid +#endif , t->pid #if LINUX_2_6_X , t->parent->pid ++++++ crash-sles9-quirk.patch ++++++ From: Bernhard Walle <bwa...@suse.de> Subject: [PATCH] Add quirk for SLES9 LKCD header Patch-mainline: never On SLES9, we have a different header on IA64: SLES 10: typedef struct __dump_header_asm { uint64_t dha_magic_number; uint32_t dha_version; uint32_t dha_header_size; uint64_t dha_pt_regs; struct pt_regs dha_regs; uint64_t dha_rnat; uint64_t dha_pfs; uint64_t dha_bspstore; uint32_t dha_smp_num_cpus; uint32_t dha_dumping_cpu; struct pt_regs dha_smp_regs[NR_CPUS]; uint64_t dha_smp_current_task[NR_CPUS]; uint64_t dha_stack[NR_CPUS]; uint64_t dha_stack_ptr[NR_CPUS]; uint64_t dha_kernel_addr; } __attribute__((packed)) dump_header_asm_t; SLES 9: typedef struct __dump_header_asm { uint64_t dha_magic_number; uint32_t dha_version; uint32_t dha_header_size; uint64_t dha_kernel_addr; uint64_t dha_pt_regs; struct pt_regs dha_regs; uint64_t dha_rnat; uint64_t dha_pfs; uint64_t dha_bspstore; uint32_t dha_smp_num_cpus; uint32_t dha_dumping_cpu; struct pt_regs dha_smp_regs[NR_CPUS]; uint64_t dha_smp_current_task[NR_CPUS]; uint64_t dha_stack[NR_CPUS]; uint64_t dha_stack_ptr[NR_CPUS]; } __attribute__((packed)) dump_header_asm_t; That patch tries to guess if it's a SLES 9 or a SLES 10 header at runtime. Signed-off-by: Bernhard Walle <bwa...@suse.de> --- lkcd_v8.c | 11 +++++++++++ 1 file changed, 11 insertions(+) --- a/lkcd_v8.c +++ b/lkcd_v8.c @@ -130,6 +130,17 @@ lkcd_dump_init_v8_arch(dump_header_t *dh goto err; } +#if IA64 + /* SLES9 on IA64? */ + if ( *((uint64_t *)(hdr_buf + hdr_size - sizeof(uint64_t))) <= NR_CPUS) { + uint64_t kernel_addr; + kernel_addr = ((dump_header_asm_t *)hdr_buf)->dha_pt_regs; + memmove(hdr_buf + offsetof(dump_header_asm_t, dha_pt_regs), + hdr_buf + offsetof(dump_header_asm_t, dha_regs), + hdr_size - offsetof(dump_header_asm_t, dha_regs)); + *((uint64_t *)(hdr_buf + hdr_size - sizeof(uint64_t))) = kernel_addr; + } +#endif /* * Though we have KL_NR_CPUS is 128, the header size is different ++++++ crash-sles9-time.patch ++++++ From: Alan Tyson <aty...@hp.com> Subject: [PATCH] Fix "uptime" and "ps -t" for SLES9 References: 352836 This patch adds a quirk for SLES9 jiffies initialisation and corrects the time data in "uptime" and "ps -t" command. Acked-by: Bernhard Walle <bwa...@suse.de> --- defs.h | 8 ++++++++ kernel.c | 9 ++++++++- task.c | 11 +++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) --- a/defs.h +++ b/defs.h @@ -731,6 +731,7 @@ struct kernel_table { ulong p2m_missing; } pvops_xen; int highest_irq; + int is_suse_kernel; #define IKCONFIG_AVAIL 0x1 /* kernel contains ikconfig data */ #define IKCONFIG_LOADED 0x2 /* ikconfig data is currently loaded */ int ikconfig_flags; @@ -6539,6 +6540,13 @@ extern struct lkcd_environment *lkcd; #endif /* LKCD_COMMON */ + +/* + * SUSE specific + */ +#define is_SLES9() \ + ((THIS_KERNEL_VERSION == LINUX(2,6,5)) && kt->is_suse_kernel) + /* * gdb_interface.c */ --- a/kernel.c +++ b/kernel.c @@ -286,6 +286,12 @@ kernel_init() verify_version(); + /* + * check if we have a suse kernel (this is the module supported + * patch of agr...@suse.de + */ + kt->is_suse_kernel = symbol_exists("unsupported"); + if (symbol_exists("__per_cpu_offset")) { if (LKCD_KERNTYPES()) i = get_cpus_possible(); @@ -5456,7 +5462,7 @@ get_uptime(char *buf, ulonglong *j64p) if (symbol_exists("jiffies_64")) { get_symbol_data("jiffies_64", sizeof(ulonglong), &jiffies_64); - if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) { + if (THIS_KERNEL_VERSION >= LINUX(2,6,0) && !is_SLES9()) { wrapped = (jiffies_64 & 0xffffffff00000000ULL); if (wrapped) { wrapped -= 0x100000000ULL; @@ -6050,6 +6056,7 @@ no_cpu_flags: fprintf(fp, " p2m_mid_missing: %lx\n", kt->pvops_xen.p2m_mid_missing); fprintf(fp, " p2m_missing: %lx\n", kt->pvops_xen.p2m_missing); } + fprintf(fp, " is_suse_kernel: %ld\n", kt->is_suse_kernel); } /* --- a/task.c +++ b/task.c @@ -4100,6 +4100,12 @@ start_time_timespec(void) default: break; } + /* SLES9 stores start_time in nanoseconds, so set TIMESPEC in order */ + /* to do the right calculations in convert_start_time */ + if (is_SLES9()) { + tt->flags |= TIMESPEC; + return TRUE; + } tt->flags |= NO_TIMESPEC; @@ -4136,6 +4142,11 @@ convert_start_time(ulonglong start_time, ulong tmp1, tmp2; ulonglong wrapped; + /* SLES9's start_time is neither jiffies nor a timespec. It's ns */ + if (is_SLES9()) { + start_time = start_time / 1000000000; + } + switch(tt->flags & (TIMESPEC | NO_TIMESPEC | START_TIME_NSECS)) { case START_TIME_NSECS: ++++++ crash-stop_read_error_when_intent_is_retry.patch ++++++ From: David Mair <dm...@suse.com> Date: 2017-05-25 10:27:21 -0600 Subject: Avoid printing a read error for a failed read that can be retried References: bnc#1038839 Upstream: tbd When reading a memory image fails it may not be an error if it is still possible to switch image and retry the read. Fix the error message output to only occur if no retries are intended. --- memory.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/memory.c +++ b/memory.c @@ -2237,13 +2237,15 @@ readmem(ulonglong addr, int memtype, voi goto readmem_error; case READ_ERROR: - if (PRINT_ERROR_MESSAGE) - error(INFO, READ_ERRMSG, memtype_string(memtype, 0), addr, type); if ((pc->flags & DEVMEM) && (kt->flags & PRE_KERNEL_INIT) && !(error_handle & NO_DEVMEM_SWITCH) && devmem_is_restricted() && switch_to_proc_kcore()) return(readmem(addr, memtype, bufptr, size, type, error_handle)); + + if (PRINT_ERROR_MESSAGE) + error(INFO, READ_ERRMSG, memtype_string(memtype, 0), addr, type); + goto readmem_error; case PAGE_EXCLUDED: ++++++ crash-update-recognition-of-x86_64-CPU_ENTRY_AREA.patch ++++++ From: Dave Anderson <ander...@redhat.com> Date: Fri, 1 Jun 2018 10:58:00 -0400 Subject: Update the recognition of x86_64 CPU_ENTRY_AREA References: bsc#1090127, bsc#1104743 Upstream: merged Git-commit: da49e2010b3cb88b4755d69d38fe90af6ba218b2 Update for the recognition of the new x86_64 CPU_ENTRY_AREA virtual address range introduced in Linux 4.15. The memory range exists above the vmemmap range and below the mapped kernel static text/data region, and where all of the x86_64 exception stacks have been moved. Without the patch, reads from the new memory region fail because the address range is not recognized as a legitimate virtual address. Most notable is the failure of "bt" on tasks whose backtraces originate from any of the exception stacks, which fail with the two error messages "bt: seek error: kernel virtual address: <address> type: stack contents" followed by "bt: read of stack at <address> failed". (ander...@redhat.com) --- defs.h | 5 +++++ x86_64.c | 47 +++++++++++++++++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 12 deletions(-) --- a/defs.h +++ b/defs.h @@ -3392,6 +3392,9 @@ struct arm64_stackframe { #define VSYSCALL_START 0xffffffffff600000 #define VSYSCALL_END 0xffffffffff601000 +#define CPU_ENTRY_AREA_START 0xfffffe0000000000 +#define CPU_ENTRY_AREA_END 0xfffffe7fffffffff + #define PTOV(X) ((unsigned long)(X)+(machdep->kvbase)) #define VTOP(X) x86_64_VTOP((ulong)(X)) #define IS_VMALLOC_ADDR(X) x86_64_IS_VMALLOC_ADDR((ulong)(X)) @@ -5830,6 +5833,8 @@ struct machine_specific { ulong kpti_entry_stack; ulong kpti_entry_stack_size; ulong ptrs_per_pgd; + ulong cpu_entry_area_start; + ulong cpu_entry_area_end; }; #define KSYMS_START (0x1) --- a/x86_64.c +++ b/x86_64.c @@ -407,6 +407,11 @@ x86_64_init(int when) machdep->machspec->modules_end = MODULES_END_2_6_31; } } + if (STRUCT_EXISTS("cpu_entry_area")) { + machdep->machspec->cpu_entry_area_start = CPU_ENTRY_AREA_START; + machdep->machspec->cpu_entry_area_end = CPU_ENTRY_AREA_END; + } + STRUCT_SIZE_INIT(cpuinfo_x86, "cpuinfo_x86"); /* * Before 2.6.25 the structure was called gate_struct @@ -865,20 +870,21 @@ x86_64_dump_machdep_table(ulong arg) /* pml4 and upml is legacy for extension modules */ if (ms->pml4) { - fprintf(fp, " pml4: %lx\n", (ulong)ms->pml4); - fprintf(fp, " last_pml4_read: %lx\n", (ulong)ms->last_pml4_read); + fprintf(fp, " pml4: %lx\n", (ulong)ms->pml4); + fprintf(fp, " last_pml4_read: %lx\n", (ulong)ms->last_pml4_read); } else { - fprintf(fp, " pml4: (unused)\n"); - fprintf(fp, " last_pml4_read: (unused)\n"); + fprintf(fp, " pml4: (unused)\n"); + fprintf(fp, " last_pml4_read: (unused)\n"); } if (ms->upml) { - fprintf(fp, " upml: %lx\n", (ulong)ms->upml); - fprintf(fp, " last_upml_read: %lx\n", (ulong)ms->last_upml_read); + fprintf(fp, " upml: %lx\n", (ulong)ms->upml); + fprintf(fp, " last_upml_read: %lx\n", (ulong)ms->last_upml_read); } else { - fprintf(fp, " upml: (unused)\n"); - fprintf(fp, " last_upml_read: (unused)\n"); + fprintf(fp, " GART_end: %lx\n", ms->GART_end); + fprintf(fp, " upml: (unused)\n"); + fprintf(fp, " last_upml_read: (unused)\n"); } if (ms->p4d) { @@ -1002,10 +1008,14 @@ x86_64_dump_machdep_table(ulong arg) fprintf(fp, "\n "); fprintf(fp, "%016lx ", ms->stkinfo.ibase[c]); } - fprintf(fp, "\n kpti_entry_stack_size: %ld", ms->kpti_entry_stack_size); - fprintf(fp, "\n kpti_entry_stack: "); + fprintf(fp, "\n kpti_entry_stack_size: "); + if (ms->kpti_entry_stack_size) + fprintf(fp, "%ld", ms->kpti_entry_stack_size); + else + fprintf(fp, "(unused)"); + fprintf(fp, "\n kpti_entry_stack: "); if (machdep->flags & KPTI) { - fprintf(fp, "%lx\n ", ms->kpti_entry_stack); + fprintf(fp, "(percpu: %lx):\n ", ms->kpti_entry_stack); for (c = 0; c < cpus; c++) { if (c && !(c%4)) fprintf(fp, "\n "); @@ -1014,6 +1024,16 @@ x86_64_dump_machdep_table(ulong arg) fprintf(fp, "\n"); } else fprintf(fp, "(unused)\n"); + fprintf(fp, " cpu_entry_area_start: "); + if (ms->cpu_entry_area_start) + fprintf(fp, "%016lx\n", (ulong)ms->cpu_entry_area_start); + else + fprintf(fp, "(unused)\n"); + fprintf(fp, " cpu_entry_area_end: "); + if (ms->cpu_entry_area_end) + fprintf(fp, "%016lx\n", (ulong)ms->cpu_entry_area_end); + else + fprintf(fp, "(unused)\n"); } /* @@ -1572,7 +1592,10 @@ x86_64_IS_VMALLOC_ADDR(ulong vaddr) ((machdep->flags & VMEMMAP) && (vaddr >= VMEMMAP_VADDR && vaddr <= VMEMMAP_END)) || (vaddr >= MODULES_VADDR && vaddr <= MODULES_END) || - (vaddr >= VSYSCALL_START && vaddr < VSYSCALL_END)); + (vaddr >= VSYSCALL_START && vaddr < VSYSCALL_END) || + (machdep->machspec->cpu_entry_area_start && + vaddr >= machdep->machspec->cpu_entry_area_start && + vaddr <= machdep->machspec->cpu_entry_area_end)); } static int ++++++ crash-xen-invalid-pcpu-vaddr-use-hware-domain-sym.patch ++++++ Two fixes for the Xen hypervisor; the first fixes a bug seen with Xen 4.11.0 during initialization, which fails with the error message "crash: invalid kernel virtual address: <address> type: fill_pcpu_struct", followed by "WARNING: cannot fill pcpu_struct" and "crash: cannot read cpu_info". The second fix prevents a segmentation violation associated with a crash-7.1.1 commit that addressed the Xen 4.5.0 hypervisor symbol name change from "dom0" to "hardware_domain". (dietmar.h...@ts.fujitsu.com) --- x86_64.c | 7 +++++-- xen_hyper.c | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) --- a/x86_64.c +++ b/x86_64.c @@ -7744,8 +7744,11 @@ x86_64_init_hyper(int when) case POST_GDB: XEN_HYPER_STRUCT_SIZE_INIT(cpuinfo_x86, "cpuinfo_x86"); XEN_HYPER_STRUCT_SIZE_INIT(tss_struct, "tss_struct"); - XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "__blh") + sizeof(short unsigned int); - XEN_HYPER_MEMBER_OFFSET_INIT(tss_struct_ist, "tss_struct", "ist"); + if (MEMBER_EXISTS("tss_struct", "__blh")) { + XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "__blh") + sizeof(short unsigned int); + } else { + XEN_HYPER_ASSIGN_OFFSET(tss_struct_rsp0) = MEMBER_OFFSET("tss_struct", "rsp0"); + } XEN_HYPER_MEMBER_OFFSET_INIT(tss_struct_ist, "tss_struct", "ist"); if (symbol_exists("cpu_data")) { xht->cpu_data_address = symbol_value("cpu_data"); } --- a/xen_hyper.c +++ b/xen_hyper.c @@ -1060,8 +1060,8 @@ xen_hyper_get_domains(void) long domain_next_in_list; int i, j; - if (!try_get_symbol_data("dom0", sizeof(void *), &domain)) - get_symbol_data("hardware_domain", sizeof(void *), &domain); + if (!try_get_symbol_data("hardware_domain", sizeof(void *), &domain)) + get_symbol_data("dom0", sizeof(void *), &domain); domain_next_in_list = MEMBER_OFFSET("domain", "next_in_list"); i = 0; @@ -1103,8 +1103,8 @@ xen_hyper_get_domain_next(int mod, ulong if (xhdt->dom0) { *next = xhdt->dom0->domain; } else { - if (!try_get_symbol_data("dom0", sizeof(void *), next)) - get_symbol_data("hardware_domain", sizeof(void *), next); + if (!try_get_symbol_data("hardware_domain", sizeof(void *), next)) + get_symbol_data("dom0", sizeof(void *), next); } return xhdt->domain_struct; break; ++++++ crash_enable_lzo_support.patch ++++++ --- CFLAGS.extra | 1 + LDFLAGS.extra | 1 + 2 files changed, 2 insertions(+) --- /dev/null +++ b/CFLAGS.extra @@ -0,0 +1 @@ +-DLZO --- /dev/null +++ b/LDFLAGS.extra @@ -0,0 +1 @@ +-llzo2 ++++++ crash_enable_snappy_support.patch ++++++ From: Petr Tesarik <ptesa...@suse.cz> Subject: enably snappy support Patch-mainline: never, configurable default Signed-off-by: Petr Tesarik <ptesa...@suse.cz> --- CFLAGS.extra | 2 +- LDFLAGS.extra | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) --- a/CFLAGS.extra +++ b/CFLAGS.extra @@ -1 +1 @@ --DLZO +-DLZO -DSNAPPY --- a/LDFLAGS.extra +++ b/LDFLAGS.extra @@ -1 +1 @@ --llzo2 +-llzo2 -lsnappy ++++++ depmod.sh ++++++ # Need to call depmod when the list of modules changes for kernelrelease in $KERNELRELEASES; do if [ -e /boot/System.map-$kernelrelease ]; then depmod -a -F /boot/System.map-$kernelrelease $kernelrelease fi done ++++++ eppic-support-arm64.patch ++++++ From: Luc Chouinard <lchouin...@lchouinard-desktop.englab.juniper.net> Date: Thu Jun 19 12:28:40 2014 -0700 Subject: Support for ARM64 References: FATE#320844 Patch-mainline: yes Git-commit: 5391d3dd0e6710c22ec5801f99a6788a2e4b132a Acked-by: Petr Tesarik <ptesa...@suse.com> --- extensions/eppic/applications/crash/eppic.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/extensions/eppic/applications/crash/eppic.c +++ b/extensions/eppic/applications/crash/eppic.c @@ -1033,10 +1033,14 @@ _init() /* Register the command set. */ #ifdef PPC64 #define EPPIC_ABI ABI_PPC64 #else +#ifdef ARM64 +#define EPPIC_ABI ABI_ARM64 +#else #error eppic: Unkown ABI #endif #endif #endif +#endif #endif #endif #endif ++++++ eppic-switch-to-system-lib.patch ++++++ ++++ 1161 lines (skipped) ++++++ get-kernel-flavors.sh ++++++ #! /bin/sh arch=$1 flavors= for flavor in $(ls /usr/src/linux-obj/$arch 2>/dev/null); do if [ "$flavor" = um ]; then continue fi flavors="$flavors $flavor" done echo $flavors ++++++ mkinitrd.sh ++++++ # If one of the modules in this package is in the initrd, # we need to recreate the initrd. if [ -e /etc/sysconfig/kernel -a -f /etc/fstab ]; then source /etc/sysconfig/kernel run_mkinitrd= for module in $INITRD_MODULES; do case " $MODULES " in *" $module "*) run_mkinitrd=1 break ;; esac done if [ -n "$run_mkinitrd" ]; then for kernelrelease in $KERNELRELEASES; do for image in vmlinuz image vmlinux linux bzImage; do if [ -f /boot/$image-$kernelrelease ]; then /sbin/mkinitrd -k /boot/$image-$kernelrelease \ -i /boot/initrd-$kernelrelease \ || exit 1 fi done done fi fi