import kexec-tools-2.0.27-16.el9_5.1

i9c changed/i9c/kexec-tools-2.0.27-16.el9_5.1
MSVSphere Packaging Team 2 months ago
parent 88083b132c
commit 029faf39c9
Signed by: sys_gitsync
GPG Key ID: B2B0B9F29E528FE8

@ -494,6 +494,24 @@ _find_znet_nmconnection() {
"$1"/*.nmconnection | LC_ALL=C sed -e "$2" "$1"/*.nmconnection | LC_ALL=C sed -e "$2"
} }
kdump_setup_ovs() {
local _netdev="$1"
local _dev _phy_if
_phy_if=$(ovs_find_phy_if "$_netdev")
if kdump_is_bridge "$_phy_if"; then
kdump_setup_vlan "$_phy_if"
elif kdump_is_bond "$_phy_if"; then
kdump_setup_bond "$_phy_if" || return 1
elif kdump_is_team "$_phy_if"; then
derror "Ovs bridge over team is not supported!"
exit 1
fi
_save_kdump_netifs "$_phy_if"
}
# setup s390 znet # setup s390 znet
# #
# Note part of code is extracted from ccw_init provided by s390utils # Note part of code is extracted from ccw_init provided by s390utils
@ -545,6 +563,28 @@ kdump_get_remote_ip() {
echo "$_remote" echo "$_remote"
} }
# Find the physical interface of Open vSwitch (Ovs) bridge
#
# The physical network interface has the same MAC address as the Ovs bridge
ovs_find_phy_if() {
local _mac _dev
_mac=$(kdump_get_mac_addr $1)
for _dev in $(ovs-vsctl list-ifaces $1); do
if [[ $_mac == $(</sys/class/net/$_dev/address) ]]; then
echo -n "$_dev"
return
fi
done
return 1
}
# Tell if a network interface is an Open vSwitch (Ovs) bridge
kdump_is_ovs_bridge() {
[[ $(_get_nic_driver $1) == openvswitch ]]
}
# Collect netifs needed by kdump # Collect netifs needed by kdump
# $1: destination host # $1: destination host
kdump_collect_netif_usage() { kdump_collect_netif_usage() {
@ -568,6 +608,9 @@ kdump_collect_netif_usage() {
kdump_setup_team "$_netdev" kdump_setup_team "$_netdev"
elif kdump_is_vlan "$_netdev"; then elif kdump_is_vlan "$_netdev"; then
kdump_setup_vlan "$_netdev" kdump_setup_vlan "$_netdev"
elif kdump_is_ovs_bridge "$_netdev"; then
has_ovs_bridge=yes
kdump_setup_ovs "$_netdev"
fi fi
_save_kdump_netifs "$_netdev" _save_kdump_netifs "$_netdev"
@ -614,6 +657,29 @@ kdump_install_resolv_conf() {
fi fi
} }
kdump_install_ovs_deps() {
[[ $has_ovs_bridge == yes ]] || return 0
inst_multiple -o $(rpm -ql NetworkManager-ovs) $(rpm -ql $(rpm -qf /usr/lib/systemd/system/openvswitch.service)) /sbin/sysctl /usr/bin/uuidgen /usr/bin/hostname /usr/bin/touch /usr/bin/expr /usr/bin/id /usr/bin/install /usr/bin/setpriv /usr/bin/nice /usr/bin/df
# 1. Overwrite the copied /etc/sysconfig/openvswitch so
# ovsdb-server.service can run as the default user root.
# /etc/sysconfig/openvswitch by default intructs ovsdb-server.service to
# run as USER=openvswitch, However openvswitch doesn't have the permission
# to write to /tmp in kdump initrd and ovsdb-server.servie will fail
# with the error "ovs-ctl[1190]: ovsdb-server: failed to create temporary
# file (Permission denied)". So run ovsdb-server.service as root instead
#
# 2. Bypass the error "referential integrity violation: Table Port column
# interfaces row" caused by we changing the connection profiles
echo "OPTIONS=\"--ovsdb-server-options='--disable-file-column-diff'\"" >"${initdir}/etc/sysconfig/openvswitch"
KDUMP_DROP_IN_DIR="${initdir}/etc/systemd/system/nm-initrd.service.d"
mkdir -p "$KDUMP_DROP_IN_DIR"
printf "[Unit]\nAfter=openvswitch.service\n" >$KDUMP_DROP_IN_DIR/01-after-ovs.conf
$SYSTEMCTL -q --root "$initdir" enable openvswitch.service
$SYSTEMCTL -q --root "$initdir" add-wants basic.target openvswitch.service
}
# Setup dracut to bring up network interface that enable # Setup dracut to bring up network interface that enable
# initramfs accessing giving destination # initramfs accessing giving destination
kdump_install_net() { kdump_install_net() {
@ -627,6 +693,7 @@ kdump_install_net() {
kdump_install_nm_netif_allowlist "$_netifs" kdump_install_nm_netif_allowlist "$_netifs"
kdump_install_nic_driver "$_netifs" kdump_install_nic_driver "$_netifs"
kdump_install_resolv_conf kdump_install_resolv_conf
kdump_install_ovs_deps
fi fi
} }
@ -1041,7 +1108,7 @@ remove_cpu_online_rule() {
install() { install() {
declare -A unique_netifs ipv4_usage ipv6_usage declare -A unique_netifs ipv4_usage ipv6_usage
local arch local arch has_ovs_bridge
kdump_module_init kdump_module_init
kdump_install_conf kdump_install_conf

@ -101,15 +101,8 @@ get_fs_type_from_target()
get_mntpoint_from_target() get_mntpoint_from_target()
{ {
local SOURCE TARGET # --source is applied to ensure non-bind mount is returned
findmnt -k --pairs -o SOURCE,TARGET "$1" | while read line; do get_mount_info TARGET source "$1" -f
eval "$line"
# omit sources that are bind mounts i.e. they contain a [/path/to/subpath].
if [[ ! "$SOURCE" =~ \[ ]]; then
echo $TARGET
break
fi
done
} }
is_ssh_dump_target() is_ssh_dump_target()

@ -15,7 +15,7 @@ is_uki()
img="$1" img="$1"
[[ -f "$img" ]] || return [[ -f "$img" ]] || return
[[ "$(file -b --mime-type "$img")" == application/x-dosexec ]] || return [[ "$(objdump -a "$img" 2> /dev/null)" =~ pei-(x86-64|aarch64-little) ]] || return
objdump -h -j .linux "$img" &> /dev/null objdump -h -j .linux "$img" &> /dev/null
} }
@ -213,7 +213,7 @@ get_bind_mount_source()
_fsroot=${_src#${_src_nofsroot}[} _fsroot=${_src#${_src_nofsroot}[}
_fsroot=${_fsroot%]} _fsroot=${_fsroot%]}
_mnt=$(get_mntpoint_from_target "$_src_nofsroot") _mnt=$(get_mount_info TARGET source "$_src_nofsroot" -f)
# for btrfs, _fsroot will also contain the subvol value as well, strip it # for btrfs, _fsroot will also contain the subvol value as well, strip it
if [[ $_fstype == btrfs ]]; then if [[ $_fstype == btrfs ]]; then

@ -21,7 +21,7 @@ KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swio
# This variable lets us append arguments to the current kdump commandline # This variable lets us append arguments to the current kdump commandline
# after processed by KDUMP_COMMANDLINE_REMOVE # after processed by KDUMP_COMMANDLINE_REMOVE
KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1 reset_devices novmcoredd cma=0 hugetlb_cma=0" KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices novmcoredd cma=0 hugetlb_cma=0"
# Any additional kexec arguments required. In most situations, this should # Any additional kexec arguments required. In most situations, this should
# be left empty # be left empty

@ -21,7 +21,7 @@ KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swio
# This variable lets us append arguments to the current kdump commandline # This variable lets us append arguments to the current kdump commandline
# after processed by KDUMP_COMMANDLINE_REMOVE # after processed by KDUMP_COMMANDLINE_REMOVE
KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0" KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0"
# Any additional kexec arguments required. In most situations, this should # Any additional kexec arguments required. In most situations, this should
# be left empty # be left empty

@ -21,7 +21,7 @@ KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swio
# This variable lets us append arguments to the current kdump commandline # This variable lets us append arguments to the current kdump commandline
# after processed by KDUMP_COMMANDLINE_REMOVE # after processed by KDUMP_COMMANDLINE_REMOVE
KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0" KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0"
# Any additional kexec arguments required. In most situations, this should # Any additional kexec arguments required. In most situations, this should
# be left empty # be left empty

@ -21,7 +21,7 @@ KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swio
# This variable lets us append arguments to the current kdump commandline # This variable lets us append arguments to the current kdump commandline
# after processed by KDUMP_COMMANDLINE_REMOVE # after processed by KDUMP_COMMANDLINE_REMOVE
KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 acpi_no_memhotplug transparent_hugepage=never nokaslr hest_disable novmcoredd cma=0 hugetlb_cma=0" KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 acpi_no_memhotplug transparent_hugepage=never nokaslr hest_disable novmcoredd cma=0 hugetlb_cma=0 pcie_ports=compat"
# Any additional kexec arguments required. In most situations, this should # Any additional kexec arguments required. In most situations, this should
# be left empty # be left empty

@ -5,7 +5,6 @@ KDUMP_KERNELVER=""
KDUMP_KERNEL="" KDUMP_KERNEL=""
KDUMP_COMMANDLINE="" KDUMP_COMMANDLINE=""
KEXEC_ARGS="" KEXEC_ARGS=""
KDUMP_LOG_PATH="/var/log"
MKDUMPRD="/sbin/mkdumprd -f" MKDUMPRD="/sbin/mkdumprd -f"
MKFADUMPRD="/sbin/mkfadumprd" MKFADUMPRD="/sbin/mkfadumprd"
DRACUT_MODULES_FILE="/usr/lib/dracut/modules.txt" DRACUT_MODULES_FILE="/usr/lib/dracut/modules.txt"
@ -21,7 +20,7 @@ TARGET_INITRD=""
DEFAULT_DUMP_MODE="kdump" DEFAULT_DUMP_MODE="kdump"
image_time=0 image_time=0
standard_kexec_args="-d -p" standard_kexec_args="-p"
# Some default values in case /etc/sysconfig/kdump doesn't include # Some default values in case /etc/sysconfig/kdump doesn't include
KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug" KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug"
@ -639,7 +638,7 @@ function load_kdump_kernel_key()
# as the currently running kernel. # as the currently running kernel.
load_kdump() load_kdump()
{ {
local ret uki local uki
KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}") KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}")
KDUMP_COMMANDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}") KDUMP_COMMANDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}")
@ -656,26 +655,12 @@ load_kdump()
ddebug "$KEXEC $KEXEC_ARGS $standard_kexec_args --command-line=$KDUMP_COMMANDLINE --initrd=$TARGET_INITRD $KDUMP_KERNEL" ddebug "$KEXEC $KEXEC_ARGS $standard_kexec_args --command-line=$KDUMP_COMMANDLINE --initrd=$TARGET_INITRD $KDUMP_KERNEL"
# The '12' represents an intermediate temporary file descriptor
# to store the standard error file descriptor '2', and later
# restore the error file descriptor with the file descriptor '12'
# and release it.
exec 12>&2
exec 2>> $KDUMP_LOG_PATH/kdump.log
chmod 600 $KDUMP_LOG_PATH/kdump.log
PS4='+ $(date "+%Y-%m-%d %H:%M:%S") ${BASH_SOURCE}@${LINENO}: '
set -x
# shellcheck disable=SC2086 # shellcheck disable=SC2086
$KEXEC $KEXEC_ARGS $standard_kexec_args \ $KEXEC $KEXEC_ARGS $standard_kexec_args \
--command-line="$KDUMP_COMMANDLINE" \ --command-line="$KDUMP_COMMANDLINE" \
--initrd="$TARGET_INITRD" "$KDUMP_KERNEL" --initrd="$TARGET_INITRD" "$KDUMP_KERNEL"
ret=$? if [[ $? == 0 ]]; then
set +x
exec 2>&12 12>&-
if [[ $ret == 0 ]]; then
dinfo "kexec: loaded kdump kernel" dinfo "kexec: loaded kdump kernel"
return 0 return 0
else else
@ -1658,6 +1643,7 @@ reset_crashkernel()
_old_crashkernel=$(get_grub_kernel_boot_parameter "$_kernel" crashkernel) _old_crashkernel=$(get_grub_kernel_boot_parameter "$_kernel" crashkernel)
_old_fadump_val=$(get_grub_kernel_boot_parameter "$_kernel" fadump) _old_fadump_val=$(get_grub_kernel_boot_parameter "$_kernel" fadump)
[[ "$_new_fadump_val" == off ]] && _new_fadump_val=""
if [[ $_old_crashkernel != "$_new_crashkernel" || $_old_fadump_val != "$_new_fadump_val" ]]; then if [[ $_old_crashkernel != "$_new_crashkernel" || $_old_fadump_val != "$_new_fadump_val" ]]; then
_update_kernel_cmdline "$_kernel" "$_new_crashkernel" "$_new_dump_mode" "$_new_fadump_val" _update_kernel_cmdline "$_kernel" "$_new_crashkernel" "$_new_dump_mode" "$_new_fadump_val"
if [[ $_reboot != yes ]]; then if [[ $_reboot != yes ]]; then

@ -62,6 +62,10 @@ grubby's kernel-path=ALL and kernel-path=DEFAULT. ppc64le supports FADump and
supports an additional [--fadump=[on|off|nocma]] parameter to toggle FADump supports an additional [--fadump=[on|off|nocma]] parameter to toggle FADump
on/off. on/off.
If the optional parameter [--reboot] is provided the system will automatically
reboot for changes to take effect. If no changes were made to the kernel
command line the reboot is omitted.
Note: The memory requirements for kdump varies heavily depending on the Note: The memory requirements for kdump varies heavily depending on the
used hardware and system configuration. Thus the recommended used hardware and system configuration. Thus the recommended
crashkernel might not work for your specific setup. Please test if crashkernel might not work for your specific setup. Please test if

@ -1016,12 +1016,7 @@ Debugging Tips
and the second kernel. and the second kernel.
In the first kernel, you can find the historical logs with the journalctl In the first kernel, you can find the historical logs with the journalctl
command and check kdump service debugging information. In addition, the command and check kdump service debugging information.
'kexec -d' debugging messages are also saved to /var/log/kdump.log in the
first kernel. For example:
[root@ibm-z-109 ~]# ls -al /var/log/kdump.log
-rw-r--r--. 1 root root 63238 Oct 28 06:40 /var/log/kdump.log
If you want to get the debugging information of building kdump initramfs, you If you want to get the debugging information of building kdump initramfs, you
can enable the '--debug' option for the dracut_args in the /etc/kdump.conf, and can enable the '--debug' option for the dracut_args in the /etc/kdump.conf, and

@ -0,0 +1,44 @@
From 9d9cf8de8b2ad8273861a30476a46f34cd34871a Mon Sep 17 00:00:00 2001
From: Baoquan He <bhe@redhat.com>
Date: Tue, 14 Nov 2023 23:20:30 +0800
Subject: [PATCH] kexec_file: add kexec_file flag to support debug printing
Content-type: text/plain
This add KEXEC_FILE_DEBUG to kexec_file_flags so that it can be passed
to kernel when '-d' is added with kexec_file_load interface. With that
flag enabled, kernel can enable the debugging message printing.
Signed-off-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Simon Horman <horms@kernel.org>
---
kexec/kexec-syscall.h | 1 +
kexec/kexec.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
index 2559bffb93da..73e52543e1b0 100644
--- a/kexec/kexec-syscall.h
+++ b/kexec/kexec-syscall.h
@@ -119,6 +119,7 @@ static inline long kexec_file_load(int kernel_fd, int initrd_fd,
#define KEXEC_FILE_UNLOAD 0x00000001
#define KEXEC_FILE_ON_CRASH 0x00000002
#define KEXEC_FILE_NO_INITRAMFS 0x00000004
+#define KEXEC_FILE_DEBUG 0x00000008
/* These values match the ELF architecture values.
* Unless there is a good reason that should continue to be the case.
diff --git a/kexec/kexec.c b/kexec/kexec.c
index 9d0ec46e5657..222f79e3112e 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -1477,6 +1477,7 @@ int main(int argc, char *argv[])
return 0;
case OPT_DEBUG:
kexec_debug = 1;
+ kexec_file_flags |= KEXEC_FILE_DEBUG;
break;
case OPT_NOIFDOWN:
skip_ifdown = 1;
--
2.41.0

@ -5,7 +5,7 @@
Name: kexec-tools Name: kexec-tools
Version: 2.0.27 Version: 2.0.27
Release: 8%{?dist}.3 Release: 16%{?dist}.1
License: GPLv2 License: GPLv2
Summary: The kexec/kdump userspace component Summary: The kexec/kdump userspace component
@ -114,6 +114,7 @@ Requires: systemd-udev%{?_isa}
# Patches 601 onward are generic patches # Patches 601 onward are generic patches
# #
Patch601: kexec-update-manpage-with-explicit-mention-of-clean-.patch Patch601: kexec-update-manpage-with-explicit-mention-of-clean-.patch
Patch602: kexec_file-add-kexec_file-flag-to-support-debug-prin.patch
%description %description
kexec-tools provides /sbin/kexec binary that facilitates a new kexec-tools provides /sbin/kexec binary that facilitates a new
@ -130,6 +131,7 @@ tar -z -x -v -f %{SOURCE9}
tar -z -x -v -f %{SOURCE19} tar -z -x -v -f %{SOURCE19}
%patch601 -p1 %patch601 -p1
%patch602 -p1
%ifarch ppc %ifarch ppc
%define archdef ARCH=ppc %define archdef ARCH=ppc
@ -408,16 +410,38 @@ fi
%endif %endif
%changelog %changelog
* Wed Jul 24 2024 Tao Liu <ltao@redhat.com> - 2.0.27-8.3 * Wed Sep 18 2024 Tao Liu <ltao@redhat.com> - 2.0.27-16.1
- Rebuild with updated release
* Tue Sep 10 2024 Tao Liu <ltao@redhat.com> - 2.0.27-16
- Revert "lib: Ensure we don't find bind mounts for device target"
* Wed Aug 7 2024 Tao Liu <ltao@redhat.com> - 2.0.27-15
- Support setting up Open vSwitch (Ovs) Bridge network
* Wed Jul 24 2024 Tao Liu <ltao@redhat.com> - 2.0.27-14
- lib: Ensure we don't find bind mounts for device target - lib: Ensure we don't find bind mounts for device target
- dracut: Disable ostree-prepare-root - dracut: Disable ostree-prepare-root
* Thu Jul 4 2024 Tao Liu <ltao@redhat.com> - 2.0.27-8.2 * Tue Jul 16 2024 Tao Liu <ltao@redhat.com> - 2.0.27-13
- kdump-lib: Drop 'file' dependency in is_uki
- kdumpctl.8: Add description to reset-crashkernel --reboot
- kdumpctl: Fix misleading message and erratic reboot in reset_crashkernel
- kdumpctl: Drop default kexec '-d' option
* Thu Jun 27 2024 Tao Liu <ltao@redhat.com> - 2.0.27-12
- ppc64le: replace kernel cmdline maxcpu=1 with nr_cpus=1
* Fri May 31 2024 Tao Liu <ltao@redhat.com> - 2.0.27-11
- sysconfig: add pcie_ports compat to KDUMP_COMMANDLINE_APPEND on x86_64
* Tue May 14 2024 Tao Liu <ltao@redhat.com> - 2.0.27-10
- mkdumprd: Fix makedumpfile parameter check.
- Install the driver of physical device for a SR-IOV virtual device - Install the driver of physical device for a SR-IOV virtual device
- Try to install PHY and MDIO bus drivers explicitly - Try to install PHY and MDIO bus drivers explicitly
* Wed Jun 19 2024 Tao Liu <ltao@redhat.com> - 2.0.27-8.1 * Wed May 08 2024 Tao Liu <ltao@redhat.com> - 2.0.27-9
- mkdumprd: Fix makedumpfile parameter check. - kexec_file: add kexec_file flag to support debug printing
* Tue Jan 30 2024 Tao Liu <ltao@redhat.com> - 2.0.27-8 * Tue Jan 30 2024 Tao Liu <ltao@redhat.com> - 2.0.27-8
- dracut-module-setup: Skip initrd-cleanup and initrd-parse-etc in kdump - dracut-module-setup: Skip initrd-cleanup and initrd-parse-etc in kdump

Loading…
Cancel
Save