Remove kdump-utils and makedumpfile
Resolves: RHEL-49401 Signed-off-by: Lichen Liu <lichliu@redhat.com>
This commit is contained in:
parent
7419c13d17
commit
d5198e30fe
@ -1,69 +0,0 @@
|
||||
From 98087d78eda2ca58a3b55ee5dd9e0e7bad8467ef Mon Sep 17 00:00:00 2001
|
||||
From: Tao Liu <ltao@redhat.com>
|
||||
Date: Tue, 25 Jun 2024 16:35:16 +1200
|
||||
Subject: [PATCH] Use "grep -q <<< $(cmd)" instead of "cmd | grep -q"
|
||||
|
||||
The following line of code's exit value should be the exit value of
|
||||
grep by default:
|
||||
|
||||
cmd | grep -q
|
||||
|
||||
However it will not always work as expected, a 141 exit code may be
|
||||
returned, see the following debug info:
|
||||
|
||||
//--- a/usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh
|
||||
//+++ b/usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh
|
||||
//@@ -55,6 +55,11 @@ depends() {
|
||||
// _dep="$_dep ssh-client"
|
||||
// fi
|
||||
//
|
||||
//+ dracut --list-modules 1>&2
|
||||
//+ echo $? 1>&2
|
||||
//+ dracut --list-modules | grep -q lvmthinpool-monitor
|
||||
//+ echo $? ${PIPESTATUS[0]} ${PIPESTATUS[1]} 1>&2
|
||||
//+
|
||||
// if is_lvm2_thinp_dump_target; then
|
||||
// if dracut --list-modules | grep -q lvmthinpool-monitor; then
|
||||
// add_opt_module lvmthinpool-monitor
|
||||
|
||||
$ kdumpctl rebuild
|
||||
kdump: Rebuilding /boot/initramfs-6.10.0-0.rc4.11.el10.x86_64kdump.img
|
||||
...snip...
|
||||
lvmmerge
|
||||
lvmthinpool-monitor
|
||||
..snip...
|
||||
uefi-lib
|
||||
0
|
||||
141 141 0
|
||||
|
||||
The reason is, grep exits immediately when there is a match but the
|
||||
first cmd still keep writing to the pipe. Since there is no reader,
|
||||
a SIGPIPE signal is generated. As a result, a 141 exit code will be
|
||||
returned.
|
||||
|
||||
Let's use the following line of code instead, which have the same effect
|
||||
but works as expected:
|
||||
|
||||
grep -q <<< $(cmd)
|
||||
|
||||
Signed-off-by: Tao Liu <ltao@redhat.com>
|
||||
---
|
||||
dracut-module-setup.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
|
||||
index 89d9959..76fb5b2 100755
|
||||
--- a/dracut-module-setup.sh
|
||||
+++ b/dracut-module-setup.sh
|
||||
@@ -56,7 +56,7 @@ depends() {
|
||||
fi
|
||||
|
||||
if is_lvm2_thinp_dump_target; then
|
||||
- if dracut --list-modules | grep -q lvmthinpool-monitor; then
|
||||
+ if grep -q lvmthinpool-monitor <<< $(dracut --list-modules); then
|
||||
add_opt_module lvmthinpool-monitor
|
||||
else
|
||||
dwarning "Required lvmthinpool-monitor modules is missing! Please upgrade dracut >= 057."
|
||||
--
|
||||
2.40.1
|
||||
|
@ -1,81 +0,0 @@
|
||||
From a078cd8dfe9fe7956ef04c04c97b7c7354808833 Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Rudo <prudo@redhat.com>
|
||||
Date: Thu, 11 Apr 2024 16:58:34 +0200
|
||||
Subject: [PATCH 1/7] dracut-module-setup: Fix missing systemd/system.conf
|
||||
error
|
||||
|
||||
There is a bug report for RHEL10 about a grep error reading
|
||||
|
||||
grep: /var/tmp/dracut.DiZuKp/initramfs/etc/systemd/system.conf*: No such file or directory
|
||||
|
||||
that shows up when rebuilding the initrd. This is caused by systemd
|
||||
v255 that allows installing the default systemd config files to
|
||||
/usr/lib/systemd instead of /etc/systemd [1][2] which is done for RHEL.
|
||||
So unless a user manually adds /etc/systemd/system.conf the file no
|
||||
longer exists.
|
||||
|
||||
However the test that requires the call to grep is somewhat wonky. IIUC
|
||||
the test is there so we don't overwrite a setting the user might have
|
||||
made. In my opinion this only makes sense as long as the timeout set is
|
||||
larger than what we would set. But this part of the logic is missing.
|
||||
So fix the error message by removing the test and add our config
|
||||
unconditionally.
|
||||
|
||||
While at it rename the created drop-ins to 99-kdump.conf to follow
|
||||
the recommended naming convention and to make sure that our value takes
|
||||
precedence.
|
||||
|
||||
Note: In case the test is still needed we can fall back to use
|
||||
'systemd-analyse cat-config' that automatically considers all potential
|
||||
locations for the config and its drop-ins.
|
||||
|
||||
[1] 6495361c7d ("meson: add build option for install path of main config files")
|
||||
[2] 6378f257e7 ("various: use new config loader instead of config_parse_config_file()")
|
||||
|
||||
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
||||
---
|
||||
dracut-module-setup.sh | 23 +++++++++++++----------
|
||||
1 file changed, 13 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
|
||||
index 7e1cb9f..acc0b28 100755
|
||||
--- a/dracut-module-setup.sh
|
||||
+++ b/dracut-module-setup.sh
|
||||
@@ -973,21 +973,24 @@ kdump_install_random_seed() {
|
||||
|
||||
kdump_install_systemd_conf() {
|
||||
# Kdump turns out to require longer default systemd mount timeout
|
||||
- # than 1st kernel(90s by default), we use default 300s for kdump.
|
||||
- if ! grep -q -r "^[[:space:]]*DefaultTimeoutStartSec=" "${initdir}/etc/systemd/system.conf"*; then
|
||||
- mkdir -p "${initdir}/etc/systemd/system.conf.d"
|
||||
- echo "[Manager]" > "${initdir}/etc/systemd/system.conf.d/kdump.conf"
|
||||
- echo "DefaultTimeoutStartSec=300s" >> "${initdir}/etc/systemd/system.conf.d/kdump.conf"
|
||||
- fi
|
||||
+ # than 1st kernel(45s by default), we use default 300s for kdump.
|
||||
+ mkdir -p "${initdir}/etc/systemd/system.conf.d"
|
||||
+ cat > "${initdir}/etc/systemd/system.conf.d/99-kdump.conf" << EOF
|
||||
+[Manager]
|
||||
+DefaultTimeoutStartSec=300s
|
||||
+EOF
|
||||
+
|
||||
|
||||
# Forward logs to console directly, and don't read Kmsg, this avoids
|
||||
# unneccessary memory consumption and make console output more useful.
|
||||
# Only do so for non fadump image.
|
||||
mkdir -p "${initdir}/etc/systemd/journald.conf.d"
|
||||
- echo "[Journal]" > "${initdir}/etc/systemd/journald.conf.d/kdump.conf"
|
||||
- echo "Storage=volatile" >> "${initdir}/etc/systemd/journald.conf.d/kdump.conf"
|
||||
- echo "ReadKMsg=no" >> "${initdir}/etc/systemd/journald.conf.d/kdump.conf"
|
||||
- echo "ForwardToConsole=yes" >> "${initdir}/etc/systemd/journald.conf.d/kdump.conf"
|
||||
+ cat > "${initdir}/etc/systemd/journald.conf.d/99-kdump.conf" << EOF
|
||||
+[Journal]
|
||||
+Storage=volatile
|
||||
+ReadKMsg=no
|
||||
+ForwardToConsole=yes
|
||||
+EOF
|
||||
}
|
||||
|
||||
remove_cpu_online_rule() {
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,120 +0,0 @@
|
||||
From 32f9ada4bfa9f9690bdcdb21de40568c81a5ea80 Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Rudo <prudo@redhat.com>
|
||||
Date: Fri, 14 Jun 2024 11:48:24 +0200
|
||||
Subject: [PATCH 1/7] kdumpctl: Drop default kexec '-d' option
|
||||
|
||||
Kernel commits cbc2fe9d9cb2 ("kexec_file: add kexec_file flag to control
|
||||
debug printing") and a85ee18c7900 ("kexec_file: print out debugging
|
||||
message if required") added debug messages to the kexec_file_load system
|
||||
call when option -d is provided to the kexec user space tool. As
|
||||
kexec_file_load is the default and option -d is set by default these
|
||||
messages are always printed when a crash kernel is loaded. This not only
|
||||
clutters the kernel log but also potentially leaks confidential kernel
|
||||
information to users. As the messages are printed to the kernel log, not
|
||||
stderr, the redirection to /var/log/kdump.log won't catch them. This
|
||||
will become even more problematic as for RHEL10 the kernel will be built
|
||||
without support for the kexec_load system call. So kexec_file_load will
|
||||
be the only choice in the future.
|
||||
|
||||
The redirection also caused confusion in a recent bug report. There a
|
||||
user moved a working /etc/sysconfig/kdump from ppc to s390 with
|
||||
KEXEC_ARGS containing the --dt-no-old-root option. This option is arch
|
||||
specific and does not exist on s390. Thus the kexec-tools failed with an
|
||||
'unrecognized option' error followed by the usage(). The problem was
|
||||
that the 'unrecognized option' error is printed to stderr, which got
|
||||
redirected to /var/log/kdump.log, while the usage() is printed to
|
||||
stdout, which ended up in the systemd journal. This caused confusion as
|
||||
the user only checked the journal and found the usage() without any
|
||||
error message.
|
||||
|
||||
Thus remove the default -d option and the redirection of stderr to
|
||||
/var/log/kdump.log for the kexec-tools user space tool.
|
||||
|
||||
This commit ultimately reverts 88a8b94 ("kdumpctl: add the '-d' option to
|
||||
enable the kexec loading debugging messages").
|
||||
|
||||
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
||||
---
|
||||
kdumpctl | 21 +++------------------
|
||||
kexec-kdump-howto.txt | 7 +------
|
||||
2 files changed, 4 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/kdumpctl b/kdumpctl
|
||||
index 30eb27d..8dc56e5 100755
|
||||
--- a/kdumpctl
|
||||
+++ b/kdumpctl
|
||||
@@ -5,7 +5,6 @@ KDUMP_KERNELVER=""
|
||||
KDUMP_KERNEL=""
|
||||
KDUMP_COMMANDLINE=""
|
||||
KEXEC_ARGS=""
|
||||
-KDUMP_LOG_PATH="/var/log"
|
||||
MKDUMPRD="/sbin/mkdumprd -f"
|
||||
MKFADUMPRD="/sbin/mkfadumprd"
|
||||
DRACUT_MODULES_FILE="/usr/lib/dracut/modules.txt"
|
||||
@@ -17,7 +16,7 @@ TARGET_INITRD=""
|
||||
#kdump shall be the default dump mode
|
||||
DEFAULT_DUMP_MODE="kdump"
|
||||
|
||||
-standard_kexec_args="-d -p"
|
||||
+standard_kexec_args="-p"
|
||||
|
||||
# Some default values in case /etc/sysconfig/kdump doesn't include
|
||||
KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug"
|
||||
@@ -696,7 +695,7 @@ function load_kdump_kernel_key()
|
||||
# as the currently running kernel.
|
||||
load_kdump()
|
||||
{
|
||||
- local ret uki
|
||||
+ local uki
|
||||
|
||||
KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}")
|
||||
KDUMP_COMMANDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}")
|
||||
@@ -713,26 +712,12 @@ load_kdump()
|
||||
|
||||
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
|
||||
$KEXEC $KEXEC_ARGS $standard_kexec_args \
|
||||
--command-line="$KDUMP_COMMANDLINE" \
|
||||
--initrd="$TARGET_INITRD" "$KDUMP_KERNEL"
|
||||
|
||||
- ret=$?
|
||||
- set +x
|
||||
- exec 2>&12 12>&-
|
||||
-
|
||||
- if [[ $ret == 0 ]]; then
|
||||
+ if [[ $? == 0 ]]; then
|
||||
dinfo "kexec: loaded kdump kernel"
|
||||
return 0
|
||||
else
|
||||
diff --git a/kexec-kdump-howto.txt b/kexec-kdump-howto.txt
|
||||
index 6741faf..c65d45a 100644
|
||||
--- a/kexec-kdump-howto.txt
|
||||
+++ b/kexec-kdump-howto.txt
|
||||
@@ -1016,12 +1016,7 @@ Debugging Tips
|
||||
and the second kernel.
|
||||
|
||||
In the first kernel, you can find the historical logs with the journalctl
|
||||
- command and check kdump service debugging information. In addition, the
|
||||
- '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
|
||||
+ command and check kdump service debugging information.
|
||||
|
||||
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
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,30 +0,0 @@
|
||||
From d25d3d4500d1ca1357350fa4a28ac89a33f250e0 Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Rudo <prudo@redhat.com>
|
||||
Date: Tue, 18 Jun 2024 14:57:16 +0200
|
||||
Subject: [PATCH 2/7] kdump-lib: fix sed expression in prepare_cmdline on
|
||||
aarch64
|
||||
|
||||
The sed expression misses a 's' for search and replace...
|
||||
|
||||
Fixes: 0f6ad91 ("kdump-lib: fix prepare_cmdline")
|
||||
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
||||
---
|
||||
kdump-lib.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kdump-lib.sh b/kdump-lib.sh
|
||||
index 79714f9..35f0ac9 100755
|
||||
--- a/kdump-lib.sh
|
||||
+++ b/kdump-lib.sh
|
||||
@@ -802,7 +802,7 @@ prepare_cmdline()
|
||||
|
||||
# This is a workaround on AWS platform. Always remove irqpoll since it
|
||||
# may cause the hot-remove of some pci hotplug device.
|
||||
- is_aws_aarch64 && out=$(echo "$out" | sed -e "/\<irqpoll\>//")
|
||||
+ is_aws_aarch64 && out=$(echo "$out" | sed -e "s/\<irqpoll\>//")
|
||||
|
||||
# Always disable gpt-auto-generator as it hangs during boot of the
|
||||
# crash kernel. Furthermore we know which disk will be used for dumping
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,55 +0,0 @@
|
||||
From 247c7a5f39b305f9a83bad2d936d00237165b7e0 Mon Sep 17 00:00:00 2001
|
||||
From: "Mamoru Nishibe (Fujitsu)" <nishibe.mamoru@fujitsu.com>
|
||||
Date: Wed, 24 Apr 2024 08:11:12 +0000
|
||||
Subject: [PATCH 2/7] mkdumprd: Fix makedumpfile parameter check.
|
||||
|
||||
If only "makedumpfile" is written in "core_collector" of /etc/kdump.conf
|
||||
and try to run makedumpfile without options,
|
||||
"makedumpfile --check-params" fails and terminates abnormally.
|
||||
|
||||
# grep ^core_collector /etc/kdump.conf
|
||||
core_collector makedumpfile
|
||||
# /usr/bin/kdumpctl start
|
||||
:
|
||||
Commandline parameter is invalid.
|
||||
Try `makedumpfile --help' for more information.
|
||||
kdump: makedumpfile parameter check failed.
|
||||
kdump: mkdumprd: failed to make kdump initrd
|
||||
kdump: Starting kdump: [FAILED]
|
||||
|
||||
On the other hand, "makedumpfile --check-params" works fine without any options.
|
||||
|
||||
# makedumpfile --check-params vmcore dumpfile
|
||||
# echo $?
|
||||
0
|
||||
|
||||
In addition, before verify_core_collector() was implemented,
|
||||
initial RAM for kdump was successfully created using only "core_collector makedumpfile".
|
||||
I consider it a regression.
|
||||
|
||||
This is due to a parameter extraction error in verify_core_collector().
|
||||
Fix it to correctly extract only the options as follows.
|
||||
|
||||
Fixes: a1c28126 ("mkdumprd: Use makedumpfile --check-params option")
|
||||
Signed-off-by: Mamoru Nishibe <nishibe.mamoru@fujitsu.com>
|
||||
Reviewed-by: Coiby Xu <coxu@redhat.com>
|
||||
---
|
||||
mkdumprd | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mkdumprd b/mkdumprd
|
||||
index 31c4b76..27eed5e 100644
|
||||
--- a/mkdumprd
|
||||
+++ b/mkdumprd
|
||||
@@ -256,7 +256,7 @@ check_user_configured_target()
|
||||
verify_core_collector()
|
||||
{
|
||||
local _cmd="${1%% *}"
|
||||
- local _params="${1#* }"
|
||||
+ local _params="${1#${_cmd}}"
|
||||
|
||||
if [[ $_cmd != "makedumpfile" ]]; then
|
||||
if is_raw_dump_target; then
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,53 +0,0 @@
|
||||
From d057153a1c3c36612a14143b29c0ff0be34e4fc2 Mon Sep 17 00:00:00 2001
|
||||
From: Coiby Xu <coxu@redhat.com>
|
||||
Date: Thu, 21 Sep 2023 11:50:14 +0800
|
||||
Subject: [PATCH 3/7] Try to install PHY and MDIO bus drivers explicitly
|
||||
|
||||
Resolves: https://issues.redhat.com/browse/RHEL-7028
|
||||
|
||||
Currently, nfs dumping fails on some machines that has a dedicated PHY
|
||||
driver (dealing with the physical layer) or MDIO bus (connecting the MAC
|
||||
to PHY devices) driver. This is because kexec-tools doesn't install
|
||||
dedicated PHY or MDIO driver explicitly. Usually a NIC driver shouldn't
|
||||
specify the dependency on the needed PHY or MDIO driver because it
|
||||
shouldn't a NIC (medium access control, MAC) driver is for dealing with
|
||||
the Data link layer and a PHY driver is for physical layer. So as long
|
||||
as a MAC driver can talk to the PHY layer via APIs, it shouldn't care
|
||||
which PHY driver or device it's talking to. So when the
|
||||
dependency on a PHY driver or MDIO driver is not found by dracut's
|
||||
instmods, the PHY or MDIO driver won't be installed.
|
||||
|
||||
This patch passes =drivers/net/phy and =drivers/net/mdio to dracut's
|
||||
instmods which will only install in-use PHY or MDIO driver(s).
|
||||
|
||||
Note ideally we should find out which PHY driver is used by a NIC but
|
||||
unfortunately currently no universal way can be found
|
||||
(/sys/class/net/NIC_NAME/phydev/driver/module can be used to find the
|
||||
name of the PHY driver for some NICs but it doesn't exist for some NICs
|
||||
like Qualcomm Atheros AR8031). So is it for a MDIO bus driver.
|
||||
Fortunately currently no huge memory consumption is found for a PHY or
|
||||
MDIO driver.
|
||||
|
||||
Fixes: a65dde2d ("Reduce kdump memory consumption by only installing needed NIC drivers")
|
||||
Reported-by: Doreen Alongi <dalongi@redhat.com>
|
||||
Signed-off-by: Coiby Xu <coxu@redhat.com>
|
||||
---
|
||||
dracut-module-setup.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
|
||||
index acc0b28..3c9bdbe 100755
|
||||
--- a/dracut-module-setup.sh
|
||||
+++ b/dracut-module-setup.sh
|
||||
@@ -384,7 +384,7 @@ _get_hpyerv_physical_driver() {
|
||||
kdump_install_nic_driver() {
|
||||
local _netif _driver _drivers
|
||||
|
||||
- _drivers=()
|
||||
+ _drivers=('=drivers/net/phy' '=drivers/net/mdio')
|
||||
|
||||
for _netif in $1; do
|
||||
[[ $_netif == lo ]] && continue
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,127 +0,0 @@
|
||||
From 8ebf2874a202a2d7116a27c69816b8621ace5224 Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Rudo <prudo@redhat.com>
|
||||
Date: Thu, 1 Jun 2023 17:04:13 +0200
|
||||
Subject: [PATCH 3/7] kdumpctl: Simplify fadump handling in reset_crashkernel
|
||||
|
||||
When handling fadump there are three cases we need to consider
|
||||
|
||||
1) When running on non-ppc64le systems
|
||||
In this case _dump_mode=kdump and _new_fadump='' always. In other
|
||||
words we don't need to care updating the fadump parameter on the
|
||||
kernel command line. We could always remove it like the code did so
|
||||
far. But should we remove it when we never set it? In particular as
|
||||
that might overwrite a change explicitly made by the user (for
|
||||
whatever reason)
|
||||
|
||||
2) When running on ppc64le and the user provided --fadump option
|
||||
In this case _new_fadump and _dump_mode are set accordingly to what
|
||||
the user provided. Thus we need to update both the crashkernel (in
|
||||
case fadump was turned on/off) and the fadump (in case the fadump
|
||||
mode changed) parameters.
|
||||
|
||||
3) When running on ppc64le but the user did not provide --fadump option
|
||||
In this case both _new_fadump='' and _dump_mode=''. In this case we
|
||||
take over the previously set fadump parameter. Which means that we
|
||||
don't need to update the fadump parameter at all. We do need to check
|
||||
whether the _new_dump_mode is fadump or kdump though so we use the
|
||||
correct (new) default crashkernel value.
|
||||
|
||||
In the three cases only the second one needs to update the fadump
|
||||
parameter. Reflect this discussion in code.
|
||||
|
||||
This also fixes a bug that always prints
|
||||
|
||||
kdump: Updated fadump= for kernel=$kernel. Please reboot the
|
||||
system for the change to take effect.
|
||||
|
||||
when the crashkernel= parameter is unchanged as well as reboots the
|
||||
system, if --reboot is provided. Even for non-ppc architectures.
|
||||
|
||||
Fixes: 140da74 ("rewrite reset_crashkernel to support fadump and to used by RPM scriptlet")
|
||||
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
||||
---
|
||||
kdumpctl | 38 ++++++++++++++++++++++----------------
|
||||
1 file changed, 22 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/kdumpctl b/kdumpctl
|
||||
index 8dc56e5..8ec638b 100755
|
||||
--- a/kdumpctl
|
||||
+++ b/kdumpctl
|
||||
@@ -1467,10 +1467,10 @@ _get_all_kernels_from_grubby()
|
||||
reset_crashkernel()
|
||||
{
|
||||
local _opt _val _reboot _grubby_kernel_path _kernel _kernels
|
||||
- local _dump_mode _new_dump_mode
|
||||
+ local _dump_mode
|
||||
local _has_changed _needs_reboot
|
||||
local _old_ck _new_ck
|
||||
- local _old_fadump _new_fadump
|
||||
+ local _old_fadump _new_fadump _opt_fadump
|
||||
|
||||
for _opt in "$@"; do
|
||||
case "$_opt" in
|
||||
@@ -1479,12 +1479,11 @@ reset_crashkernel()
|
||||
derror "Option --fadump only valid on PPC"
|
||||
exit 1
|
||||
fi
|
||||
- _new_fadump=${_opt#*=}
|
||||
- if ! _dump_mode=$(get_dump_mode_by_fadump_val $_new_fadump); then
|
||||
+ _opt_fadump=${_opt#*=}
|
||||
+ if ! _dump_mode=$(get_dump_mode_by_fadump_val $_opt_fadump); then
|
||||
derror "failed to determine dump mode"
|
||||
exit
|
||||
fi
|
||||
- [[ "$_new_fadump" == off ]] && _new_fadump=""
|
||||
;;
|
||||
--kernel=*)
|
||||
_val=${_opt#*=}
|
||||
@@ -1519,8 +1518,6 @@ reset_crashkernel()
|
||||
return
|
||||
fi
|
||||
|
||||
- [[ $(uname -m) != ppc64le ]] && _dump_mode=kdump
|
||||
-
|
||||
# If kernel-path not specified, either
|
||||
# - use KDUMP_KERNELVER if it's defined
|
||||
# - use current running kernel
|
||||
@@ -1536,19 +1533,28 @@ reset_crashkernel()
|
||||
|
||||
for _kernel in $_kernels; do
|
||||
_has_changed=""
|
||||
- if [[ -z $_dump_mode ]]; then
|
||||
- _new_dump_mode=$(get_dump_mode_by_kernel "$_kernel")
|
||||
- _new_fadump=$(get_grub_kernel_boot_parameter "$_kernel" fadump)
|
||||
+ if [[ $(uname -m) == ppc64le ]]; then
|
||||
+ if [[ -n "$_opt_fadump" ]]; then
|
||||
+ _new_ck=$(kdump_get_arch_recommend_crashkernel "$_dump_mode")
|
||||
+ _old_fadump=$(get_grub_kernel_boot_parameter "$_kernel" fadump)
|
||||
+ _new_fadump="$_opt_fadump"
|
||||
+ [[ "$_new_fadump" == off ]] && _new_fadump=""
|
||||
+ if _update_kernel_cmdline "$_kernel" fadump "$_old_fadump" "$_new_fadump"; then
|
||||
+ if [[ -n "$_new_fadump" ]]; then
|
||||
+ _has_changed="Updated fadump=$_new_fadump"
|
||||
+ else
|
||||
+ _has_changed="Removed fadump"
|
||||
+ fi
|
||||
+ fi
|
||||
+ else
|
||||
+ _dump_mode="$(get_dump_mode_by_kernel "$_kernel")"
|
||||
+ _new_ck=$(kdump_get_arch_recommend_crashkernel "$_dump_mode")
|
||||
+ fi
|
||||
else
|
||||
- _new_dump_mode=$_dump_mode
|
||||
+ _new_ck=$(kdump_get_arch_recommend_crashkernel kdump)
|
||||
fi
|
||||
|
||||
_old_ck=$(get_grub_kernel_boot_parameter "$_kernel" crashkernel)
|
||||
- _new_ck=$(kdump_get_arch_recommend_crashkernel "$_new_dump_mode")
|
||||
- _old_fadump=$(get_grub_kernel_boot_parameter "$_kernel" fadump)
|
||||
- if _update_kernel_cmdline "$_kernel" fadump "$_old_fadump" "$_new_fadump"; then
|
||||
- _has_changed="Updated fadump=$_new_fadump"
|
||||
- fi
|
||||
if _update_kernel_cmdline "$_kernel" crashkernel "$_old_ck" "$_new_ck"; then
|
||||
_has_changed="Updated crashkernel=$_new_ck"
|
||||
fi
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,50 +0,0 @@
|
||||
From 7a8edc8de67dccae23b01461bc3b17c0ad42aa5f Mon Sep 17 00:00:00 2001
|
||||
From: Coiby Xu <coxu@redhat.com>
|
||||
Date: Wed, 27 Sep 2023 09:31:39 +0800
|
||||
Subject: [PATCH 4/7] Install the driver of physical device for a SR-IOV
|
||||
virtual device
|
||||
|
||||
Currently, network dumping failed over a NIC that is a Single Root I/O
|
||||
Virtualization (SR-IOV) virtual device. Usually the driver of the
|
||||
virtual device won't specify the dependency on the driver of the
|
||||
physical device. So to fix this issue, the driver of the physical device
|
||||
needs to be found and installed as well.
|
||||
|
||||
Fixes: a65dde2d ("Reduce kdump memory consumption by only installing needed NIC drivers")
|
||||
Signed-off-by: Coiby Xu <coxu@redhat.com>
|
||||
---
|
||||
dracut-module-setup.sh | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
|
||||
index 3c9bdbe..89d9959 100755
|
||||
--- a/dracut-module-setup.sh
|
||||
+++ b/dracut-module-setup.sh
|
||||
@@ -381,6 +381,14 @@ _get_hpyerv_physical_driver() {
|
||||
_get_nic_driver "$_physical_nic"
|
||||
}
|
||||
|
||||
+_get_physical_function_driver() {
|
||||
+ local _physfn_dir=/sys/class/net/"$1"/device/physfn
|
||||
+
|
||||
+ if [[ -e "$_physfn_dir" ]]; then
|
||||
+ basename "$(readlink -f "$_physfn_dir"/driver)"
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
kdump_install_nic_driver() {
|
||||
local _netif _driver _drivers
|
||||
|
||||
@@ -408,6 +416,9 @@ kdump_install_nic_driver() {
|
||||
fi
|
||||
|
||||
_drivers+=("$_driver")
|
||||
+ # For a Single Root I/O Virtualization (SR-IOV) virtual device,
|
||||
+ # the driver of physical device needs to be installed as well
|
||||
+ _drivers+=("$(_get_physical_function_driver "$_netif")")
|
||||
done
|
||||
|
||||
[[ -n ${_drivers[*]} ]] || return
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,32 +0,0 @@
|
||||
From de393c1bcb7d32e97d9b46bb6a73180072f03aa3 Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Rudo <prudo@redhat.com>
|
||||
Date: Mon, 1 Jul 2024 12:52:39 +0200
|
||||
Subject: [PATCH 4/7] kdumpctl.8: Add description to reset-crashkernel --reboot
|
||||
|
||||
There is no description for parameter --reboot for reset-crashkernel.
|
||||
Thus add one.
|
||||
|
||||
Suggested-by: Lichen Liu <lichliu@redhat.com>
|
||||
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
||||
---
|
||||
kdumpctl.8 | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/kdumpctl.8 b/kdumpctl.8
|
||||
index 33c1115..29a6119 100644
|
||||
--- a/kdumpctl.8
|
||||
+++ b/kdumpctl.8
|
||||
@@ -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
|
||||
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
|
||||
used hardware and system configuration. Thus the recommended
|
||||
crashkernel might not work for your specific setup. Please test if
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,32 +0,0 @@
|
||||
From afc6ddb781079dfbdf7919803114458907fc4e6a Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Rudo <prudo@redhat.com>
|
||||
Date: Thu, 20 Jun 2024 13:19:30 +0200
|
||||
Subject: [PATCH 5/7] dracut-kdump.sh: Save kexec-dmesg.log after
|
||||
failure_action
|
||||
|
||||
The kexec-dmesg.log is only saved after the initial dump attempt but not
|
||||
for the failure_action. So in case the initial dump attempt failed and
|
||||
the failure_action is dump_to_rootfs the kexec-dmesg.log is missing. Fix
|
||||
that by calling save_log also after executing the failure_action.
|
||||
|
||||
Fixes: 3d70f8b ("logger: save log after all kdump progress finished")
|
||||
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
||||
---
|
||||
dracut-kdump.sh | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dracut-kdump.sh b/dracut-kdump.sh
|
||||
index 7b3ad7a..2e078c7 100755
|
||||
--- a/dracut-kdump.sh
|
||||
+++ b/dracut-kdump.sh
|
||||
@@ -579,6 +579,7 @@ fence_kdump_notify()
|
||||
if [ "$1" = "--error-handler" ]; then
|
||||
get_kdump_confs
|
||||
do_failure_action
|
||||
+ save_log
|
||||
do_final_action
|
||||
|
||||
exit $?
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,47 +0,0 @@
|
||||
From 659e0aae8f00570c85e82e1317153bf89e59929c Mon Sep 17 00:00:00 2001
|
||||
From: Baoquan He <bhe@redhat.com>
|
||||
Date: Thu, 7 Sep 2023 10:37:20 -0500
|
||||
Subject: [PATCH 5/7] update 98-kexec rules for crash hotplug
|
||||
|
||||
In kernel, with the support of cpu/memory hotplug on crash, kdump
|
||||
reloading only needs to update the elfcorehdr.
|
||||
|
||||
To realize the benefits, we need prevent udev from updating kdump
|
||||
kernel on hot un/plug changes when detecting that the crash_hotplug
|
||||
sysfs nodes are present.
|
||||
|
||||
Link: https://lore.kernel.org/lkml/20230814214446.6659-1-eric.devolder@oracle.com/
|
||||
Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d68b4b6f307d155475cce541f2aee938032ed22e
|
||||
Signed-off-by: Baoquan He <bhe@redhat.com>
|
||||
---
|
||||
98-kexec.rules | 4 ++++
|
||||
98-kexec.rules.ppc64 | 4 ++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/98-kexec.rules b/98-kexec.rules
|
||||
index b73b701..52b2ee8 100644
|
||||
--- a/98-kexec.rules
|
||||
+++ b/98-kexec.rules
|
||||
@@ -1,3 +1,7 @@
|
||||
+# The kernel updates the crash elfcorehdr for CPU and memory changes
|
||||
+SUBSYSTEM=="cpu", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end"
|
||||
+SUBSYSTEM=="memory", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end"
|
||||
+
|
||||
SUBSYSTEM=="cpu", ACTION=="add", GOTO="kdump_reload"
|
||||
SUBSYSTEM=="cpu", ACTION=="remove", GOTO="kdump_reload"
|
||||
SUBSYSTEM=="memory", ACTION=="online", GOTO="kdump_reload"
|
||||
diff --git a/98-kexec.rules.ppc64 b/98-kexec.rules.ppc64
|
||||
index e9db276..e7735b3 100644
|
||||
--- a/98-kexec.rules.ppc64
|
||||
+++ b/98-kexec.rules.ppc64
|
||||
@@ -1,3 +1,7 @@
|
||||
+# The kernel updates the crash elfcorehdr for CPU and memory changes
|
||||
+SUBSYSTEM=="cpu", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end"
|
||||
+SUBSYSTEM=="memory", ATTRS{crash_hotplug}=="1", GOTO="kdump_reload_end"
|
||||
+
|
||||
SUBSYSTEM=="cpu", ACTION=="online", GOTO="kdump_reload_cpu"
|
||||
SUBSYSTEM=="memory", ACTION=="online", GOTO="kdump_reload_mem"
|
||||
SUBSYSTEM=="memory", ACTION=="offline", GOTO="kdump_reload_mem"
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,43 +0,0 @@
|
||||
From e6b134a1593036b47a2a35da3c695a0db90de73f Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Rudo <prudo@redhat.com>
|
||||
Date: Mon, 24 Jun 2024 13:44:22 +0200
|
||||
Subject: [PATCH 6/7] Makefile: Fix early-kdump file names
|
||||
|
||||
When creating the kdump-utils subpackage the files for earlykdump were
|
||||
incorrectly renamed to kdump.sh and kdump-module-setup.sh rather than
|
||||
the expected early-kdump.sh and module-setup.sh. These incorrect file
|
||||
names then got transferred to the newly created Makefile with fe372af
|
||||
("Upstream kdump-utils").
|
||||
|
||||
With those incorrect file names dracut fails when trying to add the
|
||||
earlykdump module with
|
||||
|
||||
# dracut --add earlykdump kdump.img
|
||||
dracut[E]: Module 'earlykdump' cannot be installed.
|
||||
|
||||
Fix the file names to allow installing the earlykdump module.
|
||||
|
||||
Fixes: 372b4c6 ("Add kdump-utils subpackage")
|
||||
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
||||
---
|
||||
Makefile | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index e1a511c..538e4f4 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -26,8 +26,8 @@ dracut-modules:
|
||||
install -m 644 dracut-kdump-emergency.target $(kdumpbasemoddir)/kdump-emergency.target
|
||||
|
||||
mkdir -p -m755 $(dracutmoddir)/99earlykdump
|
||||
- install -m 755 dracut-early-kdump.sh $(dracutmoddir)/99earlykdump/kdump.sh
|
||||
- install -m 755 dracut-early-kdump-module-setup.sh $(dracutmoddir)/99earlykdump/kdump-module-setup.sh
|
||||
+ install -m 755 dracut-early-kdump.sh $(dracutmoddir)/99earlykdump/early-kdump.sh
|
||||
+ install -m 755 dracut-early-kdump-module-setup.sh $(dracutmoddir)/99earlykdump/module-setup.sh
|
||||
|
||||
ifeq ($(ARCH), $(filter ppc64le ppc64,$(ARCH)))
|
||||
mkdir -p -m755 $(dracutmoddir)/99zz-fadumpinit
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,61 +0,0 @@
|
||||
From ada6f5edf1ae06fc88759aa2f94d09e2a98d21ef Mon Sep 17 00:00:00 2001
|
||||
From: Tao Liu <ltao@redhat.com>
|
||||
Date: Wed, 1 May 2024 16:53:19 +0800
|
||||
Subject: [PATCH 6/7] sysconfig: add pcie_ports compat to
|
||||
KDUMP_COMMANDLINE_APPEND on x86_64
|
||||
|
||||
There have been some of failing cases of kdump in 2nd kernel, where
|
||||
ususally only one cpu is enabled by "nr_cpus=1", but with a large
|
||||
number of devices, which may easily exceed the maximum IRQ resources of
|
||||
one cpu can handle. As a result, the 2nd kernel will hang and kdump
|
||||
fails. This issue is often observed on machines with many cpus and many
|
||||
devices.
|
||||
|
||||
On those systems, pcieports consume quite proportion of IRQ resources,
|
||||
many following message can be seen in dmesg log:
|
||||
|
||||
pcieport 0000:18:01.0: PME: Signaling with IRQ 109
|
||||
|
||||
According to kernel doc[1], when "pcie_ports=compat" applied, it will disable
|
||||
native PCIe services (PME, AER, DPC, PCIe hotplug). Those functions are
|
||||
power management events, error reporting, performance, hotplug related,
|
||||
which are not the must-have functions for kdump. In addition, after
|
||||
testing, no side effects such as cannot writing vmcore into sdx, nvme
|
||||
etc been noticed.
|
||||
|
||||
This patch will disable native PCIe services for 2nd kernel, to saving the
|
||||
scarce IRQ resources and increase the kdump success.
|
||||
|
||||
Attach Prarit's comments:
|
||||
|
||||
This makes sense to me. The only concern anyone should have is that a PCIE
|
||||
error could have been responsible for taking down the kernel in the first
|
||||
place, and booting into the second kernel could then also have a fatal
|
||||
problem. I'm not sure we can ever fix that type of cascade of panics :)
|
||||
so it makes sense to disable these features.
|
||||
|
||||
[1]: https://www.kernel.org/doc/html/v6.9-rc1/admin-guide/kernel-parameters.html
|
||||
|
||||
Signed-off-by: Tao Liu <ltao@redhat.com>
|
||||
Acked-by: Prarit Bhargava <prarit@redhat.com>
|
||||
Acked-by: Dave Young <dyoung@redhat.com>
|
||||
---
|
||||
gen-kdump-sysconfig.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gen-kdump-sysconfig.sh b/gen-kdump-sysconfig.sh
|
||||
index 78b0bb7..1a2cd92 100755
|
||||
--- a/gen-kdump-sysconfig.sh
|
||||
+++ b/gen-kdump-sysconfig.sh
|
||||
@@ -104,7 +104,7 @@ s390x)
|
||||
x86_64)
|
||||
update_param KEXEC_ARGS "-s"
|
||||
update_param 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"
|
||||
+ "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"
|
||||
;;
|
||||
*)
|
||||
echo "Warning: Unknown architecture '$1', using default sysconfig template." >&2
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,41 +0,0 @@
|
||||
From b4e3d3724cf372493b404586126067ff66e550d6 Mon Sep 17 00:00:00 2001
|
||||
From: Sourabh Jain <sourabhjain@linux.ibm.com>
|
||||
Date: Fri, 26 Apr 2024 18:17:49 +0530
|
||||
Subject: [PATCH 7/7] fadump/udev: do not re-register fadump if kernel hotplug
|
||||
ready
|
||||
|
||||
With the introduction of kernel commit c6c5b14dac0d ("powerpc: make fadump
|
||||
resilient with memory add/remove events") linux kernel now internally manages
|
||||
the update of elfcorehdr during memory add/remove events. So no need to
|
||||
re-register fadump if the /sys/kernel/fadump/hotplug_ready is set to 1.
|
||||
|
||||
No impact for kernels that do not have /sys/kernel/fadump/hotplug_ready
|
||||
sysfs.
|
||||
|
||||
Relevant kernel commit links:
|
||||
1. https://msgid.link/20240422195932.1583833-2-sourabhjain@linux.ibm.com
|
||||
2. https://msgid.link/20240422195932.1583833-3-sourabhjain@linux.ibm.com
|
||||
|
||||
Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com>
|
||||
---
|
||||
98-kexec.rules.ppc64 | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/98-kexec.rules.ppc64 b/98-kexec.rules.ppc64
|
||||
index e7735b3..85fe0b1 100644
|
||||
--- a/98-kexec.rules.ppc64
|
||||
+++ b/98-kexec.rules.ppc64
|
||||
@@ -15,7 +15,9 @@ GOTO="kdump_reload_end"
|
||||
|
||||
LABEL="kdump_reload_mem"
|
||||
|
||||
-RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; /usr/bin/systemd-run --quiet --no-block /usr/lib/udev/kdump-udev-throttler'"
|
||||
+# Don't re-register fadump if /sys/kernel/fadump/hotplug_ready sysfs is set to 1.
|
||||
+
|
||||
+RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; ! test -f /sys/kernel/fadump/hotplug_ready || cat /sys/kernel/fadump/hotplug_ready | grep 1 || exit 0; /usr/bin/systemd-run --quiet --no-block /usr/lib/udev/kdump-udev-throttler'"
|
||||
|
||||
GOTO="kdump_reload_end"
|
||||
|
||||
--
|
||||
2.44.0
|
||||
|
@ -1,36 +0,0 @@
|
||||
From efc06f21a5b1b3a30ce438c15ce4a07fdfdd2440 Mon Sep 17 00:00:00 2001
|
||||
From: Philipp Rudo <prudo@redhat.com>
|
||||
Date: Mon, 24 Jun 2024 17:34:35 +0200
|
||||
Subject: [PATCH 7/7] kdump-lib: Drop 'file' dependency in is_uki
|
||||
|
||||
The 'file' utility is no longer installed per default. In addition there
|
||||
was an update to it so it now reports the file type as
|
||||
application/vnd.microsoft.portable-executable. Thus fall back to use
|
||||
objdump to avoid adding yet an other dependency for kdump-utils and deal
|
||||
with different versions of 'file'.
|
||||
|
||||
Note: This has the small drawback that objdump is arch specific. I.e.
|
||||
examining a aarch64 UKI on a x86_64 machine will return an 'file format
|
||||
not recognized' error.
|
||||
|
||||
Signed-off-by: Philipp Rudo <prudo@redhat.com>
|
||||
---
|
||||
kdump-lib.sh | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kdump-lib.sh b/kdump-lib.sh
|
||||
index 35f0ac9..13e16e3 100755
|
||||
--- a/kdump-lib.sh
|
||||
+++ b/kdump-lib.sh
|
||||
@@ -18,7 +18,7 @@ is_uki()
|
||||
img="$1"
|
||||
|
||||
[[ -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
|
||||
}
|
||||
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,132 +0,0 @@
|
||||
From: Coiby Xu <coxu@redhat.com>
|
||||
|
||||
Subject: [PATCH] ppc64: get vmalloc start address from vmcoreinfo
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2269991
|
||||
|
||||
commit 94241fd2feed059227a243618f2acc6aabf366e8
|
||||
Author: Aditya Gupta <adityag@linux.ibm.com>
|
||||
Date: Sat Feb 24 00:33:42 2024 +0530
|
||||
|
||||
[PATCH] ppc64: get vmalloc start address from vmcoreinfo
|
||||
|
||||
Below error was noticed when running makedumpfile on linux-next kernel
|
||||
crash (linux-next tag next-20240121):
|
||||
|
||||
Checking for memory holes : [100.0 %] | readpage_elf: Attempt to read non-existent page at 0xc000000000000.
|
||||
[ 17.551718] kdump.sh[404]: readmem: type_addr: 0, addr:c00c000000000000, size:16384
|
||||
[ 17.551793] kdump.sh[404]: __exclude_unnecessary_pages: Can't read the buffer of struct page.
|
||||
[ 17.551864] kdump.sh[404]: create_2nd_bitmap: Can't exclude unnecessary pages.
|
||||
[ 17.562632] kdump.sh[404]: The kernel version is not supported.
|
||||
[ 17.562708] kdump.sh[404]: The makedumpfile operation may be incomplete.
|
||||
[ 17.562773] kdump.sh[404]: makedumpfile Failed.
|
||||
[ 17.564335] kdump[406]: saving vmcore failed, _exitcode:1
|
||||
|
||||
Above error was due to 'vmap_area_list' and 'vmlist' symbols missing
|
||||
from the vmcore. 'vmap_area_list' was removed in the linux kernel
|
||||
6.9-rc1 by the commit below:
|
||||
|
||||
commit 55c49fee57af99f3c663e69dedc5b85e691bbe50
|
||||
mm/vmalloc: remove vmap_area_list
|
||||
|
||||
Subsequently the commit also introduced 'VMALLOC_START' in vmcoreinfo to
|
||||
get base address of vmalloc area, instead of depending on 'vmap_area_list'
|
||||
|
||||
Hence if 'VMALLOC_START' symbol is there in vmcoreinfo:
|
||||
1. Set vmalloc_start based on 'VMALLOC_START'
|
||||
2. Don't error if vmap_area_list/vmlist are not defined
|
||||
|
||||
Reported-by: Sachin Sant <sachinp@linux.ibm.com>
|
||||
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
|
||||
|
||||
Signed-off-by: Coiby Xu <coxu@redhat.com>
|
||||
|
||||
diff --git a/makedumpfile-1.7.4/arch/ppc64.c b/makedumpfile-1.7.4/arch/ppc64.c
|
||||
index 3b4f91981f71d035b94282f6c7e33323a4e4c1fd..a54f9a04db7f26eac2f1bd065b134a7e2fdaeb67 100644
|
||||
--- a/makedumpfile-1.7.4/arch/ppc64.c
|
||||
+++ b/makedumpfile-1.7.4/arch/ppc64.c
|
||||
@@ -568,7 +568,9 @@ get_machdep_info_ppc64(void)
|
||||
/*
|
||||
* Get vmalloc_start value from either vmap_area_list or vmlist.
|
||||
*/
|
||||
- if ((SYMBOL(vmap_area_list) != NOT_FOUND_SYMBOL)
|
||||
+ if (NUMBER(vmalloc_start) != NOT_FOUND_NUMBER) {
|
||||
+ vmalloc_start = NUMBER(vmalloc_start);
|
||||
+ } else if ((SYMBOL(vmap_area_list) != NOT_FOUND_SYMBOL)
|
||||
&& (OFFSET(vmap_area.va_start) != NOT_FOUND_STRUCTURE)
|
||||
&& (OFFSET(vmap_area.list) != NOT_FOUND_STRUCTURE)) {
|
||||
if (!readmem(VADDR, SYMBOL(vmap_area_list) + OFFSET(list_head.next),
|
||||
@@ -689,11 +691,16 @@ vaddr_to_paddr_ppc64(unsigned long vaddr)
|
||||
if ((SYMBOL(vmap_area_list) == NOT_FOUND_SYMBOL)
|
||||
|| (OFFSET(vmap_area.va_start) == NOT_FOUND_STRUCTURE)
|
||||
|| (OFFSET(vmap_area.list) == NOT_FOUND_STRUCTURE)) {
|
||||
- if ((SYMBOL(vmlist) == NOT_FOUND_SYMBOL)
|
||||
- || (OFFSET(vm_struct.addr) == NOT_FOUND_STRUCTURE)) {
|
||||
- ERRMSG("Can't get info for vmalloc translation.\n");
|
||||
- return NOT_PADDR;
|
||||
- }
|
||||
+ /*
|
||||
+ * Don't depend on vmap_area_list/vmlist if vmalloc_start is set in
|
||||
+ * vmcoreinfo, in that case proceed without error
|
||||
+ */
|
||||
+ if (NUMBER(vmalloc_start) == NOT_FOUND_NUMBER)
|
||||
+ if ((SYMBOL(vmlist) == NOT_FOUND_SYMBOL)
|
||||
+ || (OFFSET(vm_struct.addr) == NOT_FOUND_STRUCTURE)) {
|
||||
+ ERRMSG("Can't get info for vmalloc translation.\n");
|
||||
+ return NOT_PADDR;
|
||||
+ }
|
||||
}
|
||||
|
||||
return ppc64_vtop_level4(vaddr);
|
||||
diff --git a/makedumpfile-1.7.4/makedumpfile.c b/makedumpfile-1.7.4/makedumpfile.c
|
||||
index 58c6639f289f19cdbf39ed3899be9893fdc317fe..d7f1dd41d2cab526d7d40e809ddccf656c586811 100644
|
||||
--- a/makedumpfile-1.7.4/makedumpfile.c
|
||||
+++ b/makedumpfile-1.7.4/makedumpfile.c
|
||||
@@ -2978,6 +2978,8 @@ read_vmcoreinfo(void)
|
||||
READ_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE", PAGE_OFFLINE_MAPCOUNT_VALUE);
|
||||
READ_NUMBER("phys_base", phys_base);
|
||||
READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
|
||||
+
|
||||
+ READ_NUMBER_UNSIGNED("VMALLOC_START", vmalloc_start);
|
||||
#ifdef __aarch64__
|
||||
READ_NUMBER("VA_BITS", VA_BITS);
|
||||
READ_NUMBER("TCR_EL1_T1SZ", TCR_EL1_T1SZ);
|
||||
@@ -2989,7 +2991,6 @@ read_vmcoreinfo(void)
|
||||
READ_NUMBER("VA_BITS", va_bits);
|
||||
READ_NUMBER_UNSIGNED("phys_ram_base", phys_ram_base);
|
||||
READ_NUMBER_UNSIGNED("PAGE_OFFSET", page_offset);
|
||||
- READ_NUMBER_UNSIGNED("VMALLOC_START", vmalloc_start);
|
||||
READ_NUMBER_UNSIGNED("VMALLOC_END", vmalloc_end);
|
||||
READ_NUMBER_UNSIGNED("VMEMMAP_START", vmemmap_start);
|
||||
READ_NUMBER_UNSIGNED("VMEMMAP_END", vmemmap_end);
|
||||
diff --git a/makedumpfile-1.7.4/makedumpfile.h b/makedumpfile-1.7.4/makedumpfile.h
|
||||
index c04c330b69ecbe5fb232a2eabbd2d71f14b60cc0..c31f3a4371af8aae38dcba8cac4d6de1012b4cfd 100644
|
||||
--- a/makedumpfile-1.7.4/makedumpfile.h
|
||||
+++ b/makedumpfile-1.7.4/makedumpfile.h
|
||||
@@ -541,8 +541,6 @@ do { \
|
||||
* The value of dependence on machine
|
||||
*/
|
||||
#define PAGE_OFFSET (info->page_offset)
|
||||
-#define VMALLOC_START (info->vmalloc_start)
|
||||
-#define VMALLOC_END (info->vmalloc_end)
|
||||
#define VMEMMAP_START (info->vmemmap_start)
|
||||
#define VMEMMAP_END (info->vmemmap_end)
|
||||
#define PMASK (0x7ffffffffffff000UL)
|
||||
@@ -2263,6 +2261,9 @@ struct number_table {
|
||||
long HUGETLB_PAGE_DTOR;
|
||||
long phys_base;
|
||||
long KERNEL_IMAGE_SIZE;
|
||||
+
|
||||
+ unsigned long vmalloc_start;
|
||||
+
|
||||
#ifdef __aarch64__
|
||||
long VA_BITS;
|
||||
long TCR_EL1_T1SZ;
|
||||
@@ -2273,7 +2274,6 @@ struct number_table {
|
||||
long va_bits;
|
||||
unsigned long phys_ram_base;
|
||||
unsigned long page_offset;
|
||||
- unsigned long vmalloc_start;
|
||||
unsigned long vmalloc_end;
|
||||
unsigned long vmemmap_start;
|
||||
unsigned long vmemmap_end;
|
@ -1,99 +0,0 @@
|
||||
From 985e575253f1c2de8d6876cfe685c68a24ee06e1 Mon Sep 17 00:00:00 2001
|
||||
From: Kazuhito Hagio <k-hagio-ab@nec.com>
|
||||
Date: Thu, 30 May 2024 16:59:02 +0900
|
||||
Subject: [PATCH 1/2] [PATCH] Fix failure of hugetlb pages exclusion on Linux
|
||||
6.9 and later
|
||||
|
||||
* Required for kernel 6.9
|
||||
|
||||
Kernel commit d99e3140a4d3 ("mm: turn folio_test_hugetlb into a
|
||||
PageType") moved the PG_hugetlb flag from folio._flags_1 into
|
||||
page._mapcount and introduced NUMBER(PAGE_HUGETLB_MAPCOUNT_VALUE) entry
|
||||
into vmcoreinfo.
|
||||
|
||||
Without the patch, "makedumpfile -d 8" cannot exclude hugetlb pages.
|
||||
|
||||
Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com>
|
||||
---
|
||||
makedumpfile.c | 22 ++++++++++++++++++++--
|
||||
makedumpfile.h | 3 +++
|
||||
2 files changed, 23 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/makedumpfile-1.7.4/makedumpfile.c b/makedumpfile-1.7.4/makedumpfile.c
|
||||
index d7f1dd4..437ad91 100644
|
||||
--- a/makedumpfile-1.7.4/makedumpfile.c
|
||||
+++ b/makedumpfile-1.7.4/makedumpfile.c
|
||||
@@ -2975,6 +2975,7 @@ read_vmcoreinfo(void)
|
||||
READ_SRCFILE("pud_t", pud_t);
|
||||
|
||||
READ_NUMBER("PAGE_BUDDY_MAPCOUNT_VALUE", PAGE_BUDDY_MAPCOUNT_VALUE);
|
||||
+ READ_NUMBER("PAGE_HUGETLB_MAPCOUNT_VALUE", PAGE_HUGETLB_MAPCOUNT_VALUE);
|
||||
READ_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE", PAGE_OFFLINE_MAPCOUNT_VALUE);
|
||||
READ_NUMBER("phys_base", phys_base);
|
||||
READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
|
||||
@@ -6510,6 +6511,9 @@ __exclude_unnecessary_pages(unsigned long mem_map,
|
||||
_count = UINT(pcache + OFFSET(page._refcount));
|
||||
mapping = ULONG(pcache + OFFSET(page.mapping));
|
||||
|
||||
+ if (OFFSET(page._mapcount) != NOT_FOUND_STRUCTURE)
|
||||
+ _mapcount = UINT(pcache + OFFSET(page._mapcount));
|
||||
+
|
||||
compound_order = 0;
|
||||
compound_dtor = 0;
|
||||
/*
|
||||
@@ -6520,6 +6524,22 @@ __exclude_unnecessary_pages(unsigned long mem_map,
|
||||
if ((index_pg < PGMM_CACHED - 1) && isCompoundHead(flags)) {
|
||||
unsigned char *addr = pcache + SIZE(page);
|
||||
|
||||
+ /*
|
||||
+ * Linux 6.9 and later kernels use _mapcount value for hugetlb pages.
|
||||
+ * See kernel commit d99e3140a4d3.
|
||||
+ */
|
||||
+ if (NUMBER(PAGE_HUGETLB_MAPCOUNT_VALUE) != NOT_FOUND_NUMBER) {
|
||||
+ unsigned long _flags_1 = ULONG(addr + OFFSET(page.flags));
|
||||
+ unsigned int PG_hugetlb = ~NUMBER(PAGE_HUGETLB_MAPCOUNT_VALUE);
|
||||
+
|
||||
+ compound_order = _flags_1 & 0xff;
|
||||
+
|
||||
+ if ((_mapcount & (PAGE_TYPE_BASE | PG_hugetlb)) == PAGE_TYPE_BASE)
|
||||
+ compound_dtor = IS_HUGETLB;
|
||||
+
|
||||
+ goto check_order;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* Linux 6.6 and later. Kernels that have PG_hugetlb should also
|
||||
* have the compound order in the low byte of folio._flags_1.
|
||||
@@ -6564,8 +6584,6 @@ check_order:
|
||||
if (OFFSET(page.compound_head) != NOT_FOUND_STRUCTURE)
|
||||
compound_head = ULONG(pcache + OFFSET(page.compound_head));
|
||||
|
||||
- if (OFFSET(page._mapcount) != NOT_FOUND_STRUCTURE)
|
||||
- _mapcount = UINT(pcache + OFFSET(page._mapcount));
|
||||
if (OFFSET(page.private) != NOT_FOUND_STRUCTURE)
|
||||
private = ULONG(pcache + OFFSET(page.private));
|
||||
|
||||
diff --git a/makedumpfile-1.7.4/makedumpfile.h b/makedumpfile-1.7.4/makedumpfile.h
|
||||
index 75b66ce..f08c49f 100644
|
||||
--- a/makedumpfile-1.7.4/makedumpfile.h
|
||||
+++ b/makedumpfile-1.7.4/makedumpfile.h
|
||||
@@ -165,6 +165,8 @@ test_bit(int nr, unsigned long addr)
|
||||
#define isAnon(mapping, flags) (((unsigned long)mapping & PAGE_MAPPING_ANON) != 0 \
|
||||
&& !isSlab(flags))
|
||||
|
||||
+#define PAGE_TYPE_BASE (0xf0000000)
|
||||
+
|
||||
#define PTOB(X) (((unsigned long long)(X)) << PAGESHIFT())
|
||||
#define BTOP(X) (((unsigned long long)(X)) >> PAGESHIFT())
|
||||
|
||||
@@ -2255,6 +2257,7 @@ struct number_table {
|
||||
long PG_hugetlb;
|
||||
|
||||
long PAGE_BUDDY_MAPCOUNT_VALUE;
|
||||
+ long PAGE_HUGETLB_MAPCOUNT_VALUE;
|
||||
long PAGE_OFFLINE_MAPCOUNT_VALUE;
|
||||
long SECTION_SIZE_BITS;
|
||||
long MAX_PHYSMEM_BITS;
|
||||
--
|
||||
2.40.1
|
||||
|
@ -1,129 +0,0 @@
|
||||
From bad2a7c4fa75d37a41578441468584963028bdda Mon Sep 17 00:00:00 2001
|
||||
From: Kazuhito Hagio <k-hagio-ab@nec.com>
|
||||
Date: Fri, 7 Jun 2024 15:34:05 +0900
|
||||
Subject: [PATCH 2/2] [PATCH] Fix wrong exclusion of Slab pages on Linux
|
||||
6.10-rc1 and later
|
||||
|
||||
* Required for kernel 6.10
|
||||
|
||||
Kernel commit 46df8e73a4a3 ("mm: free up PG_slab") moved the PG_slab
|
||||
flag from page.flags into page._mapcount (slab.__page_type), and
|
||||
introduced NUMBER(PAGE_SLAB_MAPCOUNT_VALUE) entry into vmcoreinfo.
|
||||
|
||||
Without the patch, "makedumpfile -d 8" option wrongly excludes Slab
|
||||
pages and crash cannot open the dumpfile with an error like this:
|
||||
|
||||
$ crash --kaslr auto vmlinux dumpfile
|
||||
...
|
||||
please wait... (gathering task table data)
|
||||
crash: page excluded: kernel virtual address: ffff909980440270 type: "xa_node.slots[off]"
|
||||
|
||||
Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com>
|
||||
---
|
||||
makedumpfile.c | 24 +++++++++++++++++++-----
|
||||
makedumpfile.h | 6 +++---
|
||||
2 files changed, 22 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/makedumpfile-1.7.4/makedumpfile.c b/makedumpfile-1.7.4/makedumpfile.c
|
||||
index 437ad91..5b34712 100644
|
||||
--- a/makedumpfile-1.7.4/makedumpfile.c
|
||||
+++ b/makedumpfile-1.7.4/makedumpfile.c
|
||||
@@ -275,13 +275,26 @@ isHugetlb(unsigned long dtor)
|
||||
&& (SYMBOL(free_huge_page) == dtor));
|
||||
}
|
||||
|
||||
+static inline int
|
||||
+isSlab(unsigned long flags, unsigned int _mapcount)
|
||||
+{
|
||||
+ /* Linux 6.10 and later */
|
||||
+ if (NUMBER(PAGE_SLAB_MAPCOUNT_VALUE) != NOT_FOUND_NUMBER) {
|
||||
+ unsigned int PG_slab = ~NUMBER(PAGE_SLAB_MAPCOUNT_VALUE);
|
||||
+ if ((_mapcount & (PAGE_TYPE_BASE | PG_slab)) == PAGE_TYPE_BASE)
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+
|
||||
+ return flags & (1UL << NUMBER(PG_slab));
|
||||
+}
|
||||
+
|
||||
static int
|
||||
isOffline(unsigned long flags, unsigned int _mapcount)
|
||||
{
|
||||
if (NUMBER(PAGE_OFFLINE_MAPCOUNT_VALUE) == NOT_FOUND_NUMBER)
|
||||
return FALSE;
|
||||
|
||||
- if (flags & (1UL << NUMBER(PG_slab)))
|
||||
+ if (isSlab(flags, _mapcount))
|
||||
return FALSE;
|
||||
|
||||
if (_mapcount == (int)NUMBER(PAGE_OFFLINE_MAPCOUNT_VALUE))
|
||||
@@ -2977,6 +2990,7 @@ read_vmcoreinfo(void)
|
||||
READ_NUMBER("PAGE_BUDDY_MAPCOUNT_VALUE", PAGE_BUDDY_MAPCOUNT_VALUE);
|
||||
READ_NUMBER("PAGE_HUGETLB_MAPCOUNT_VALUE", PAGE_HUGETLB_MAPCOUNT_VALUE);
|
||||
READ_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE", PAGE_OFFLINE_MAPCOUNT_VALUE);
|
||||
+ READ_NUMBER("PAGE_SLAB_MAPCOUNT_VALUE", PAGE_SLAB_MAPCOUNT_VALUE);
|
||||
READ_NUMBER("phys_base", phys_base);
|
||||
READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
|
||||
|
||||
@@ -6043,7 +6057,7 @@ static int
|
||||
page_is_buddy_v3(unsigned long flags, unsigned int _mapcount,
|
||||
unsigned long private, unsigned int _count)
|
||||
{
|
||||
- if (flags & (1UL << NUMBER(PG_slab)))
|
||||
+ if (isSlab(flags, _mapcount))
|
||||
return FALSE;
|
||||
|
||||
if (_mapcount == (int)NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE))
|
||||
@@ -6618,7 +6632,7 @@ check_order:
|
||||
*/
|
||||
else if ((info->dump_level & DL_EXCLUDE_CACHE)
|
||||
&& is_cache_page(flags)
|
||||
- && !isPrivate(flags) && !isAnon(mapping, flags)) {
|
||||
+ && !isPrivate(flags) && !isAnon(mapping, flags, _mapcount)) {
|
||||
pfn_counter = &pfn_cache;
|
||||
}
|
||||
/*
|
||||
@@ -6626,7 +6640,7 @@ check_order:
|
||||
*/
|
||||
else if ((info->dump_level & DL_EXCLUDE_CACHE_PRI)
|
||||
&& is_cache_page(flags)
|
||||
- && !isAnon(mapping, flags)) {
|
||||
+ && !isAnon(mapping, flags, _mapcount)) {
|
||||
if (isPrivate(flags))
|
||||
pfn_counter = &pfn_cache_private;
|
||||
else
|
||||
@@ -6638,7 +6652,7 @@ check_order:
|
||||
* - hugetlbfs pages
|
||||
*/
|
||||
else if ((info->dump_level & DL_EXCLUDE_USER_DATA)
|
||||
- && (isAnon(mapping, flags) || isHugetlb(compound_dtor))) {
|
||||
+ && (isAnon(mapping, flags, _mapcount) || isHugetlb(compound_dtor))) {
|
||||
pfn_counter = &pfn_user;
|
||||
}
|
||||
/*
|
||||
diff --git a/makedumpfile-1.7.4/makedumpfile.h b/makedumpfile-1.7.4/makedumpfile.h
|
||||
index f08c49f..6b43a8b 100644
|
||||
--- a/makedumpfile-1.7.4/makedumpfile.h
|
||||
+++ b/makedumpfile-1.7.4/makedumpfile.h
|
||||
@@ -161,9 +161,8 @@ test_bit(int nr, unsigned long addr)
|
||||
#define isSwapBacked(flags) test_bit(NUMBER(PG_swapbacked), flags)
|
||||
#define isHWPOISON(flags) (test_bit(NUMBER(PG_hwpoison), flags) \
|
||||
&& (NUMBER(PG_hwpoison) != NOT_FOUND_NUMBER))
|
||||
-#define isSlab(flags) test_bit(NUMBER(PG_slab), flags)
|
||||
-#define isAnon(mapping, flags) (((unsigned long)mapping & PAGE_MAPPING_ANON) != 0 \
|
||||
- && !isSlab(flags))
|
||||
+#define isAnon(mapping, flags, _mapcount) \
|
||||
+ (((unsigned long)mapping & PAGE_MAPPING_ANON) != 0 && !isSlab(flags, _mapcount))
|
||||
|
||||
#define PAGE_TYPE_BASE (0xf0000000)
|
||||
|
||||
@@ -2259,6 +2258,7 @@ struct number_table {
|
||||
long PAGE_BUDDY_MAPCOUNT_VALUE;
|
||||
long PAGE_HUGETLB_MAPCOUNT_VALUE;
|
||||
long PAGE_OFFLINE_MAPCOUNT_VALUE;
|
||||
+ long PAGE_SLAB_MAPCOUNT_VALUE;
|
||||
long SECTION_SIZE_BITS;
|
||||
long MAX_PHYSMEM_BITS;
|
||||
long HUGETLB_PAGE_DTOR;
|
||||
--
|
||||
2.40.1
|
||||
|
232
kexec-tools.spec
232
kexec-tools.spec
@ -1,9 +1,3 @@
|
||||
%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
|
||||
%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
|
||||
%global mkdf_ver 1.7.4
|
||||
%global kdump_utils_ver 1.0.42
|
||||
%global mkdf_shortver %(c=%{mkdf_ver}; echo ${c:0:7})
|
||||
|
||||
Name: kexec-tools
|
||||
Version: 2.0.28
|
||||
Release: 14%{?dist}
|
||||
@ -13,9 +7,6 @@ Summary: The kexec/kdump userspace component
|
||||
|
||||
Source0: http://kernel.org/pub/linux/utils/kernel/kexec/%{name}-%{version}.tar.xz
|
||||
Recommends: kdump-utils
|
||||
Source1: https://github.com/rhkdump/kdump-utils/archive/v%{kdump_utils_ver}/kdump-utils-%{kdump_utils_ver}.tar.gz
|
||||
Source9: https://github.com/makedumpfile/makedumpfile/archive/%{mkdf_ver}/makedumpfile-%{mkdf_shortver}.tar.gz
|
||||
Source19: https://github.com/lucchouina/eppic/archive/%{eppic_ver}/eppic-%{eppic_shortver}.tar.gz
|
||||
|
||||
BuildRequires: automake
|
||||
BuildRequires: autoconf
|
||||
@ -54,25 +45,6 @@ Patch101: kexec-tools-2.0.28-Fix-building-on-x86_64-with-binutils-2.41.patch
|
||||
# Author: Jiri Bohac <jbohac@suse.cz>
|
||||
Patch601: kexec-tools-2.0.28-kexec-don-t-use-kexec_file_load-on-XEN.patch
|
||||
|
||||
Patch602: kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch
|
||||
Patch603: 0001-dracut-module-setup-Fix-missing-systemd-system.conf-.patch
|
||||
Patch604: 0002-mkdumprd-Fix-makedumpfile-parameter-check.patch
|
||||
Patch605: 0003-Try-to-install-PHY-and-MDIO-bus-drivers-explicitly.patch
|
||||
Patch606: 0004-Install-the-driver-of-physical-device-for-a-SR-IOV-v.patch
|
||||
Patch607: 0005-update-98-kexec-rules-for-crash-hotplug.patch
|
||||
Patch608: 0006-sysconfig-add-pcie_ports-compat-to-KDUMP_COMMANDLINE.patch
|
||||
Patch609: 0007-fadump-udev-do-not-re-register-fadump-if-kernel-hotp.patch
|
||||
Patch610: kexec-tools-2.0.28-makedumpfile-0002-PATCH-Fix-failure-of-hugetlb-pages-exclusion-on-Linu.patch
|
||||
Patch611: kexec-tools-2.0.28-makedumpfile-0003-PATCH-Fix-wrong-exclusion-of-Slab-pages-on-Linux-6.1.patch
|
||||
Patch612: 0001-Use-grep-q-cmd-instead-of-cmd-grep-q.patch
|
||||
Patch613: 0001-kdumpctl-Drop-default-kexec-d-option.patch
|
||||
Patch614: 0002-kdump-lib-fix-sed-expression-in-prepare_cmdline-on-a.patch
|
||||
Patch615: 0003-kdumpctl-Simplify-fadump-handling-in-reset_crashkern.patch
|
||||
Patch616: 0004-kdumpctl.8-Add-description-to-reset-crashkernel-rebo.patch
|
||||
Patch617: 0005-dracut-kdump.sh-Save-kexec-dmesg.log-after-failure_a.patch
|
||||
Patch618: 0006-Makefile-Fix-early-kdump-file-names.patch
|
||||
Patch619: 0007-kdump-lib-Drop-file-dependency-in-is_uki.patch
|
||||
|
||||
%description
|
||||
kexec-tools provides /sbin/kexec binary that facilitates a new
|
||||
kernel to boot using the kernel's kexec feature either on a
|
||||
@ -80,100 +52,13 @@ normal or a panic reboot. This package contains the /sbin/kexec
|
||||
binary and ancillary utilities that together form the userspace
|
||||
component of the kernel's kexec feature.
|
||||
|
||||
|
||||
%package -n makedumpfile
|
||||
Version: %{mkdf_ver}
|
||||
Summary: make a small dumpfile of kdump
|
||||
License: GPL-2.0-only
|
||||
URL: https://github.com/makedumpfile/makedumpfile
|
||||
|
||||
Conflicts: kexec-tools < 2.0.28-5
|
||||
BuildRequires: make
|
||||
BuildRequires: gcc
|
||||
BuildRequires: zlib-devel
|
||||
BuildRequires: elfutils-devel
|
||||
BuildRequires: glib2-devel
|
||||
BuildRequires: bzip2-devel
|
||||
BuildRequires: ncurses-devel
|
||||
BuildRequires: bison
|
||||
BuildRequires: flex
|
||||
BuildRequires: lzo-devel
|
||||
BuildRequires: snappy-devel
|
||||
BuildRequires: libzstd-devel
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: intltool
|
||||
BuildRequires: gettext
|
||||
|
||||
|
||||
%description -n makedumpfile
|
||||
makedumpfile is a tool to compress and filter out unneeded data from kernel
|
||||
dumps to reduce its file size. It is typically used with the kdump mechanism.
|
||||
|
||||
|
||||
%package -n kdump-utils
|
||||
Version: 1.0.42
|
||||
License: GPL-2.0-only AND LGPL-2.1-or-later
|
||||
URL: https://github.com/rhkdump/kdump-utils
|
||||
Summary: Kernel crash dump collection utilities
|
||||
|
||||
%ifarch ppc64 ppc64le
|
||||
Requires(post): servicelog
|
||||
Recommends: keyutils
|
||||
%endif
|
||||
Requires(pre): coreutils
|
||||
Requires(pre): sed
|
||||
Requires: kexec-tools >= 2.0.28-8
|
||||
Requires: makedumpfile
|
||||
Requires: dracut >= 058
|
||||
Requires: dracut-network >= 058
|
||||
Requires: dracut-squash >= 058
|
||||
Requires: ethtool
|
||||
Requires: util-linux
|
||||
# Needed for UKI support
|
||||
Recommends: binutils
|
||||
Recommends: grubby
|
||||
Recommends: hostname
|
||||
BuildRequires: systemd-rpm-macros
|
||||
|
||||
%ifnarch s390x
|
||||
Requires: systemd-udev%{?_isa}
|
||||
%endif
|
||||
%description -n kdump-utils
|
||||
kdump-utils is responsible for collecting the crash kernel dump. It builds and
|
||||
loads the kdump initramfs so when a kernel crashes, the system will boot the
|
||||
kdump kernel and initramfs to save the collected crash kernel dump to specified
|
||||
target.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
tar -z -x -v -f %{SOURCE1}
|
||||
|
||||
mkdir -p -m755 kcp
|
||||
tar -z -x -v -f %{SOURCE9}
|
||||
tar -z -x -v -f %{SOURCE19}
|
||||
|
||||
%patch 101 -p1
|
||||
%patch 601 -p1
|
||||
%patch 602 -p1
|
||||
%patch 603 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 604 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 605 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 606 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 607 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 608 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 609 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 610 -p1
|
||||
%patch 611 -p1
|
||||
%patch 612 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 613 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 614 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 615 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 616 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 617 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 618 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
%patch 619 -p1 -d kdump-utils-%{kdump_utils_ver}
|
||||
|
||||
%ifarch ppc
|
||||
%define archdef ARCH=ppc
|
||||
@ -194,80 +79,10 @@ autoreconf
|
||||
rm -f kexec-tools.spec.in
|
||||
%make_build
|
||||
|
||||
# makedumpfile
|
||||
make -C eppic-%{eppic_ver}/libeppic
|
||||
make -C makedumpfile-%{mkdf_ver} LINKTYPE=dynamic USELZO=on USESNAPPY=on USEZSTD=on
|
||||
make -C makedumpfile-%{mkdf_ver} LDFLAGS="$LDFLAGS -I../eppic-%{eppic_ver}/libeppic -L../eppic-%{eppic_ver}/libeppic" eppic_makedumpfile.so
|
||||
|
||||
|
||||
%install
|
||||
%make_install
|
||||
rm -f %{buildroot}/%{_libdir}/kexec-tools/kexec_test
|
||||
|
||||
# kdump-utils
|
||||
%define kdump_utils_dir kdump-utils-%{kdump_utils_ver}
|
||||
make DESTDIR=%{buildroot} -C %kdump_utils_dir install
|
||||
|
||||
# makedumpfile
|
||||
|
||||
make DESTDIR=%{buildroot} -C makedumpfile-%{mkdf_ver} install
|
||||
install -m 644 -D makedumpfile-%{mkdf_ver}/makedumpfile.conf %{buildroot}/%{_sysconfdir}/makedumpfile.conf.sample
|
||||
rm %{buildroot}/%{_sbindir}/makedumpfile-R.pl
|
||||
|
||||
install -m 755 -D makedumpfile-%{mkdf_ver}/eppic_makedumpfile.so %{buildroot}/%{_libdir}/eppic_makedumpfile.so
|
||||
|
||||
%post -n kdump-utils
|
||||
# don't try to systemctl preset the kdump service for old kexec-tools
|
||||
#
|
||||
# when the old kexec-tools gets removed, this trigger will be excuted to
|
||||
# create a file. So later the posttrans scriptlet will know there is no need to
|
||||
# systemctl preset the kdump service.
|
||||
# This solution can be dropped in F41 when we assume no users will use old
|
||||
# version of kexec-tools.
|
||||
%define kexec_tools_no_preset %{_localstatedir}/lib/rpm-state/kexec-tools.no-preset
|
||||
%triggerun -- kexec-tools
|
||||
touch %{kexec_tools_no_preset}
|
||||
|
||||
touch /etc/kdump.conf
|
||||
|
||||
%ifarch ppc64 ppc64le
|
||||
servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh 2>/dev/null
|
||||
servicelog_notify --add --command=/usr/lib/kdump/kdump-migrate-action.sh --match='refcode="#MIGRATE" and serviceable=0' --type=EVENT --method=pairs_stdin >/dev/null
|
||||
%endif
|
||||
:
|
||||
|
||||
|
||||
%postun -n kdump-utils
|
||||
%systemd_postun_with_restart kdump.service
|
||||
|
||||
%preun -n kdump-utils
|
||||
%ifarch ppc64 ppc64le
|
||||
servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh >/dev/null
|
||||
%endif
|
||||
%systemd_preun kdump.service
|
||||
|
||||
|
||||
%posttrans -n kdump-utils
|
||||
# don't try to systemctl preset the kdump service for old kexec-tools
|
||||
if [[ -f %{kexec_tools_no_preset} ]]; then
|
||||
# this if branch can be removed in F41 when we assume no users will use the old kexec-tools
|
||||
rm %{kexec_tools_no_preset}
|
||||
else
|
||||
# Initial installation
|
||||
%systemd_post kdump.service
|
||||
fi
|
||||
# Try to reset kernel crashkernel value to new default value or set up
|
||||
# crasherkernel value for new install
|
||||
#
|
||||
# Note
|
||||
# 1. Skip ostree systems as they are not supported.
|
||||
# 2. For Fedora 36 and RHEL9, "[ $1 == 1 ]" in posttrans scriptlet means both install and upgrade;
|
||||
# For Fedora > 36, "[ $1 == 1 ]" only means install and "[ $1 == 2 ]" means upgrade
|
||||
if [ ! -f /run/ostree-booted ] && [ $1 == 1 -o $1 == 2 ]; then
|
||||
kdumpctl _reset-crashkernel-after-update
|
||||
:
|
||||
fi
|
||||
|
||||
|
||||
%files
|
||||
%{_sbindir}/kexec
|
||||
@ -278,53 +93,6 @@ fi
|
||||
%license COPYING
|
||||
%doc TODO
|
||||
|
||||
%files -n kdump-utils
|
||||
%ifarch ppc64 ppc64le
|
||||
%{_sbindir}/mkfadumprd
|
||||
%{_prefix}/lib/kernel/install.d/60-fadump.install
|
||||
%endif
|
||||
%{_sbindir}/mkdumprd
|
||||
%{_bindir}/*
|
||||
%{_prefix}/lib/kdump
|
||||
%config(noreplace,missingok) %{_sysconfdir}/sysconfig/kdump
|
||||
%config(noreplace,missingok) %verify(not mtime) %{_sysconfdir}/kdump.conf
|
||||
%ifnarch s390x
|
||||
%{_udevrulesdir}
|
||||
%{_udevrulesdir}/../kdump-udev-throttler
|
||||
%endif
|
||||
%{_prefix}/lib/dracut/modules.d/*
|
||||
%dir %{_localstatedir}/crash
|
||||
%dir %{_sysconfdir}/kdump
|
||||
%dir %{_sysconfdir}/kdump/pre.d
|
||||
%dir %{_sysconfdir}/kdump/post.d
|
||||
%dir %{_sharedstatedir}/kdump
|
||||
%{_mandir}/man8/kdumpctl.8*
|
||||
%{_mandir}/man8/mkdumprd.8*
|
||||
%{_mandir}/man5/kdump.conf.5*
|
||||
%{_unitdir}/kdump.service
|
||||
%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
|
||||
%{_prefix}/lib/kernel/install.d/60-kdump.install
|
||||
%{_prefix}/lib/kernel/install.d/92-crashkernel.install
|
||||
%license %kdump_utils_dir/COPYING
|
||||
%doc %kdump_utils_dir/kexec-kdump-howto.txt
|
||||
%doc %kdump_utils_dir/early-kdump-howto.txt
|
||||
%doc %kdump_utils_dir/fadump-howto.txt
|
||||
%doc %kdump_utils_dir/kdump-in-cluster-environment.txt
|
||||
%doc %kdump_utils_dir/live-image-kdump-howto.txt
|
||||
%doc %kdump_utils_dir/crashkernel-howto.txt
|
||||
%doc %kdump_utils_dir/supported-kdump-targets.txt
|
||||
|
||||
|
||||
%files -n makedumpfile
|
||||
%license makedumpfile-%{mkdf_ver}/COPYING
|
||||
%{_sbindir}/makedumpfile
|
||||
%{_mandir}/man5/makedumpfile.conf.5.*
|
||||
%{_mandir}/man8/makedumpfile.8.*
|
||||
%{_sysconfdir}/makedumpfile.conf.sample
|
||||
%{_libdir}/eppic_makedumpfile.so
|
||||
%{_datadir}/makedumpfile/
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Jul 12 2024 Lichen Liu <lichliu@redhat.com> - 2.0.28-14
|
||||
- Various fixes.
|
||||
|
Loading…
Reference in New Issue
Block a user