forked from pool/kdump
- kdump-turn-off-NUMA-in-kdump-kernel.patch: Turn off NUMA in the
kdump kernel (bsc#1109784, bsc#1102609). - kdump-fadump-add-udev-support.patch: fadump: add udev event support for fadump (bsc#1108170). - kdump-fadump-avoid-multipath-optimizations.patch: fadump: avoid multipath optimizations that break regular boot (bsc#1101730). - kdump-split-cmdline-purpose-wise.patch: cmdline: split kdump cmdline purpose wise (bsc#1101730). - kdump-fadump-fix-network-bring-up.patch: fadump: fix network bring up issue during default boot (bsc#1101730). OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kdump?expand=0&rev=173
This commit is contained in:
parent
6282a06a83
commit
b93682ecd4
73
kdump-fadump-add-udev-support.patch
Normal file
73
kdump-fadump-add-udev-support.patch
Normal file
@ -0,0 +1,73 @@
|
||||
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Subject: fadump: add udev event support for fadump
|
||||
References: bsc#1108170
|
||||
Upstream: merged
|
||||
Git-commit: eb5784f6cb8368b346b9b52be66116fc5a47f720
|
||||
|
||||
Currently, the udev rules written in kdump package only support reloading
|
||||
kdump on memory/cpu hot add/remove operation. But this is needed as much
|
||||
for FADump as well. The rules were not updated to support fadump owing to
|
||||
lack of support in the kernel for re-registering FADump. This support is
|
||||
now added to kernel with commit 0823c68b054b ("powerpc/fadump: re-register
|
||||
firmware-assisted dump if already registered"). Update kdump udev rules
|
||||
to load fadump on memory/cpu DLPAR operations.
|
||||
|
||||
Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Signed-off-by: Petr Tesarik <ptesarik@suse.com>
|
||||
---
|
||||
70-kdump.rules.in | 3 +++
|
||||
init/load.sh | 29 ++++++++++++++++-------------
|
||||
2 files changed, 19 insertions(+), 13 deletions(-)
|
||||
|
||||
--- a/70-kdump.rules.in
|
||||
+++ b/70-kdump.rules.in
|
||||
@@ -21,6 +21,9 @@ GOTO="kdump_end"
|
||||
# Reload only if panic kernel is already loaded
|
||||
LABEL="kdump_try_restart"
|
||||
PROGRAM="/bin/cat /sys/kernel/kexec_crash_loaded", RESULT!="0", RUN+="/lib/kdump/load-once.sh"
|
||||
+@if @ARCH@ ppc64 ppc64le
|
||||
+TEST=="/sys/kernel/fadump_registered", PROGRAM="/bin/cat /sys/kernel/fadump_registered", RESULT!="0", RUN+="/lib/kdump/load-once.sh"
|
||||
+@endif
|
||||
|
||||
LABEL="kdump_end"
|
||||
@endif
|
||||
--- a/init/load.sh
|
||||
+++ b/init/load.sh
|
||||
@@ -243,21 +243,24 @@ function load_kdump_fadump()
|
||||
|
||||
local msg
|
||||
local result=0
|
||||
+ local output
|
||||
|
||||
- # The kernel fails with EINVAL if registered already
|
||||
- # (see bnc#814780)
|
||||
- if [ "$(cat $FADUMP_REGISTERED)" != "1" ] ; then
|
||||
- local output
|
||||
-
|
||||
- output=$( (echo 1 > "$FADUMP_REGISTERED") 2>&1)
|
||||
- if [ $? -eq 0 ] ; then
|
||||
- msg="Registered fadump"
|
||||
- else
|
||||
- msg="FAILED to register fadump: $output"
|
||||
- result=1
|
||||
- fi
|
||||
+ # Re-registering of FADump is supported in kernel (see bsc#1108170).
|
||||
+ # So, don't bother about whether FADump was registered already
|
||||
+ output=$( (echo 1 > "$FADUMP_REGISTERED") 2>&1)
|
||||
+ if [ $? -eq 0 ] ; then
|
||||
+ msg="Registered fadump"
|
||||
else
|
||||
- msg="fadump is already registered"
|
||||
+ # For backward compatibility on older kernel that
|
||||
+ # returns -EEXIST/-EINVAL
|
||||
+ if [ "$(cat $FADUMP_REGISTERED)" == "1" ] ; then
|
||||
+ # TODO: unregiser/register OR warn user to stop/start?
|
||||
+ # Best bet is to update to latest kernel.
|
||||
+ msg="fadump is already registered"
|
||||
+ else
|
||||
+ msg="FAILED to register fadump: $output"
|
||||
+ result=1
|
||||
+ fi
|
||||
fi
|
||||
|
||||
echo "$msg"
|
76
kdump-fadump-avoid-multipath-optimizations.patch
Normal file
76
kdump-fadump-avoid-multipath-optimizations.patch
Normal file
@ -0,0 +1,76 @@
|
||||
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Date: Mon, 20 Aug 2018 16:11:38 +0200
|
||||
Subject: fadump: avoid multipath optimizations that break regular boot
|
||||
References: bsc#1101730
|
||||
Upstream: merged
|
||||
Git-commit: dc29a820687a3a267c56ad1b125cb670dbd194ad
|
||||
|
||||
Since commit 9a3764178a91 ("Blacklist unneeded multipath devices")
|
||||
multipath devices that are not needed while capturing dump were
|
||||
blacklisted. This reduces the memory requirements on kdump kernel.
|
||||
But when this optimization is added to default initrd by including
|
||||
dump capturing support for FADump, it is observed to mess with the
|
||||
initialization of such blacklisted multipath devices while booting
|
||||
the production kernel. To avoid such issues, use this optimization
|
||||
only while booting a capture kernel.
|
||||
|
||||
Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Acked-by: Petr Tesarik <ptesarik@suse.com>
|
||||
---
|
||||
init/CMakeLists.txt | 1 +
|
||||
init/kdump-boot.sh | 16 ++++++++++++++++
|
||||
init/module-setup.sh | 1 +
|
||||
init/setup-kdump.functions | 2 +-
|
||||
4 files changed, 19 insertions(+), 1 deletion(-)
|
||||
create mode 100755 init/kdump-boot.sh
|
||||
|
||||
--- a/init/CMakeLists.txt
|
||||
+++ b/init/CMakeLists.txt
|
||||
@@ -98,6 +98,7 @@ INSTALL(
|
||||
INSTALL(
|
||||
FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kdump-root.sh
|
||||
+ ${CMAKE_CURRENT_SOURCE_DIR}/kdump-boot.sh
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/module-setup.sh
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mount-kdump.sh
|
||||
DESTINATION
|
||||
--- /dev/null
|
||||
+++ b/init/kdump-boot.sh
|
||||
@@ -0,0 +1,16 @@
|
||||
+#! /bin/sh
|
||||
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
||||
+# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
+
|
||||
+# An Initrd with dump capturing support can boot a production kernel
|
||||
+# as well (FADump). In such scenario, apply optimizations only while
|
||||
+# booting the capture kernel - this is a kernel that
|
||||
+# a) has a /proc/vmcore file waiting to be saved.
|
||||
+# b) reboots after saving the dump.
|
||||
+
|
||||
+# apply multipath optimizations
|
||||
+if [ -s /proc/vmcore ]; then
|
||||
+ # Replace the multipath.conf file with the one optimized for kdump.
|
||||
+ rm -f /etc/multipath.conf
|
||||
+ mv /etc/multipath.conf.kdump /etc/multipath.conf
|
||||
+fi
|
||||
--- a/init/module-setup.sh
|
||||
+++ b/init/module-setup.sh
|
||||
@@ -264,6 +264,7 @@ install() {
|
||||
kdump_setup_files "$initdir" "$kdump_mpath_wwids"
|
||||
|
||||
inst_hook cmdline 50 "$moddir/kdump-root.sh"
|
||||
+ inst_hook cmdline 50 "$moddir/kdump-boot.sh"
|
||||
if dracut_module_included "systemd" ; then
|
||||
inst_binary "$moddir/device-timeout-generator" \
|
||||
"$systemdutildir"/system-generators/kdump-device-timeout-generator
|
||||
--- a/init/setup-kdump.functions
|
||||
+++ b/init/setup-kdump.functions
|
||||
@@ -1179,7 +1179,7 @@ function kdump_setup_files() # {
|
||||
#
|
||||
# create modified multipath.conf
|
||||
#
|
||||
- kdump_modify_multipath "$mpathdevs" > "${outdir}/etc/multipath.conf"
|
||||
+ kdump_modify_multipath "$mpathdevs" > "${outdir}/etc/multipath.conf.kdump"
|
||||
|
||||
#
|
||||
# filter out problematic sysctl settings
|
46
kdump-fadump-fix-network-bring-up.patch
Normal file
46
kdump-fadump-fix-network-bring-up.patch
Normal file
@ -0,0 +1,46 @@
|
||||
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Date: Mon, 20 Aug 2018 16:12:51 +0200
|
||||
Subject: fadump: fix network bring up issue during default boot
|
||||
References: bsc#1101730
|
||||
Upstream: merged
|
||||
Git-commit: 0ad221c8a81ee812b3afec6a9c873bd5bd1c228b
|
||||
|
||||
If ssh is used for dump target, kdump module enforces bringing up the
|
||||
network (rd.neednet=1). If bringing up the network fails, it drops to
|
||||
emergency shell. This sounds ok for a kdump kernel as it's only job is
|
||||
to save dump to the specified dump target and reboot. But in case of
|
||||
FADump, kdump module, which adds dump capturing support in the initrd,
|
||||
is added to the regular initrd. If network bring up fails, production
|
||||
kernel also falls to emergency shell while booting. Considering this
|
||||
requirement has no relevance in booting a production kerne, that could
|
||||
have been avoided. Fix it here by enforcing rd.neednet=1 only while
|
||||
booting a capture kernel.
|
||||
|
||||
Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Acked-by: Petr Tesarik <ptesarik@suse.com>
|
||||
---
|
||||
init/kdump-boot.sh | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/init/kdump-boot.sh
|
||||
+++ b/init/kdump-boot.sh
|
||||
@@ -3,8 +3,9 @@
|
||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||
|
||||
# An Initrd with dump capturing support can boot a production kernel
|
||||
-# as well (FADump). In such scenario, apply optimizations only while
|
||||
-# booting the capture kernel - this is a kernel that
|
||||
+# as well (FADump). In such scenario, apply optimizations and enforce
|
||||
+# bringing up dump target only while booting the capture kernel - this
|
||||
+# is a kernel that
|
||||
# a) has a /proc/vmcore file waiting to be saved.
|
||||
# b) reboots after saving the dump.
|
||||
|
||||
@@ -13,4 +14,7 @@ if [ -s /proc/vmcore ]; then
|
||||
# Replace the multipath.conf file with the one optimized for kdump.
|
||||
rm -f /etc/multipath.conf
|
||||
mv /etc/multipath.conf.kdump /etc/multipath.conf
|
||||
+else
|
||||
+ # avoid enforing network bring up while booting production kernel.
|
||||
+ rm -f /etc/cmdline.d/99kdump-net.conf
|
||||
fi
|
47
kdump-split-cmdline-purpose-wise.patch
Normal file
47
kdump-split-cmdline-purpose-wise.patch
Normal file
@ -0,0 +1,47 @@
|
||||
From: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Date: Mon, 20 Aug 2018 16:12:46 +0200
|
||||
Subject: cmdline: split kdump cmdline purpose wise
|
||||
References: bsc#1101730
|
||||
Upstream: merged
|
||||
Git-commit: 56c8821596ee64c400e66002d17449007d1bd5f0
|
||||
|
||||
Generate different cmdline files for different purposes. This gives
|
||||
flexibilty in handling them independently. The subsequent patch uses
|
||||
this in handling network bringup more gracefully.
|
||||
|
||||
Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
|
||||
Acked-by: Petr Tesarik <ptesarik@suse.com>
|
||||
---
|
||||
init/module-setup.sh | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/init/module-setup.sh
|
||||
+++ b/init/module-setup.sh
|
||||
@@ -205,10 +205,12 @@ kdump_cmdline_ip() {
|
||||
esac
|
||||
}
|
||||
|
||||
-cmdline() {
|
||||
+cmdline_zfcp() {
|
||||
local _arch=$(uname -m)
|
||||
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] && kdump_cmdline_zfcp
|
||||
+}
|
||||
|
||||
+cmdline_net() {
|
||||
kdump_cmdline_ip
|
||||
}
|
||||
|
||||
@@ -219,8 +221,11 @@ installkernel() {
|
||||
|
||||
install() {
|
||||
if [[ $hostonly_cmdline == "yes" ]] ; then
|
||||
- local _cmdline=$(cmdline)
|
||||
- [ -n "$_cmdline" ] && printf "%s\n" "$_cmdline" >> "${initdir}/etc/cmdline.d/99kdump.conf"
|
||||
+ local _cmdline=$(cmdline_zfcp)
|
||||
+ [ -n "$_cmdline" ] && printf "%s\n" "$_cmdline" >> "${initdir}/etc/cmdline.d/99kdump-zfcp.conf"
|
||||
+
|
||||
+ _cmdline=$(cmdline_net)
|
||||
+ [ -n "$_cmdline" ] && printf "%s\n" "$_cmdline" >> "${initdir}/etc/cmdline.d/99kdump-net.conf"
|
||||
fi
|
||||
|
||||
# Get a list of required multipath devices
|
34
kdump-turn-off-NUMA-in-kdump-kernel.patch
Normal file
34
kdump-turn-off-NUMA-in-kdump-kernel.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From: Petr Tesarik <ptesarik@suse.com>
|
||||
Date: Tue, 25 Sep 2018 09:23:04 +0200
|
||||
Subject: Turn off NUMA in the kdump kernel
|
||||
References: bsc#1109784, bsc#1102609
|
||||
Upstream: merged
|
||||
Git-commit: 4c0e78b9923f0dbba3ad1bacc2336d91f7b520e5
|
||||
|
||||
On NUMA systems, the crashkernel reserved region may get allocated
|
||||
on a different node than the low region (memory below 4G). With NUMA
|
||||
optimization turned on, the kernel will prefer node-local pages for
|
||||
all page allocations, which may unnecessarily deplete the DMA and
|
||||
DMA32 regions with data that could be allocated from the Normal
|
||||
zone (which is on a remote node).
|
||||
|
||||
It makes little sense to address this corner case in the memory
|
||||
management system, because nobody would build a machine with almost
|
||||
all memory on a remote node. So, instead, let's turn off NUMA for
|
||||
kdump and accept the potential performance hit.
|
||||
|
||||
Signed-off-by: Petr Tesarik <ptesarik@suse.com>
|
||||
---
|
||||
init/load.sh | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/init/load.sh
|
||||
+++ b/init/load.sh
|
||||
@@ -73,6 +73,7 @@ function build_kdump_commandline()
|
||||
fi
|
||||
# Use deadline for saving the memory footprint
|
||||
commandline="$commandline elevator=deadline sysrq=yes reset_devices acpi_no_memhotplug cgroup_disable=memory nokaslr"
|
||||
+ commandline="$commandline numa=off"
|
||||
commandline="$commandline irqpoll ${nr_cpus}"
|
||||
commandline="$commandline root=kdump rootflags=bind rd.udev.children-max=8"
|
||||
case $(uname -i) in
|
@ -1,3 +1,25 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 5 14:31:49 UTC 2018 - ptesarik@suse.com
|
||||
|
||||
- kdump-turn-off-NUMA-in-kdump-kernel.patch: Turn off NUMA in the
|
||||
kdump kernel (bsc#1109784, bsc#1102609).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 5 14:29:47 UTC 2018 - ptesarik@suse.com
|
||||
|
||||
- kdump-fadump-add-udev-support.patch: fadump: add udev event
|
||||
support for fadump (bsc#1108170).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 5 14:28:01 UTC 2018 - ptesarik@suse.com
|
||||
|
||||
- kdump-fadump-avoid-multipath-optimizations.patch: fadump: avoid
|
||||
multipath optimizations that break regular boot (bsc#1101730).
|
||||
- kdump-split-cmdline-purpose-wise.patch: cmdline: split kdump
|
||||
cmdline purpose wise (bsc#1101730).
|
||||
- kdump-fadump-fix-network-bring-up.patch: fadump: fix network
|
||||
bring up issue during default boot (bsc#1101730).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 16 17:44:58 UTC 2018 - mbrugger@suse.com
|
||||
|
||||
|
10
kdump.spec
10
kdump.spec
@ -48,6 +48,11 @@ Source: %{name}-%{version}.tar.bz2
|
||||
Source2: %{name}-rpmlintrc
|
||||
Patch1: %{name}-fillupdir-fixes.patch
|
||||
Patch2: %{name}-block-initrd-parse-etc.service.patch
|
||||
Patch3: %{name}-fadump-avoid-multipath-optimizations.patch
|
||||
Patch4: %{name}-split-cmdline-purpose-wise.patch
|
||||
Patch5: %{name}-fadump-fix-network-bring-up.patch
|
||||
Patch6: %{name}-fadump-add-udev-support.patch
|
||||
Patch7: %{name}-turn-off-NUMA-in-kdump-kernel.patch
|
||||
BuildRequires: asciidoc
|
||||
BuildRequires: cmake
|
||||
BuildRequires: gcc-c++
|
||||
@ -107,6 +112,11 @@ after a crash dump has occured.
|
||||
%patch1 -p1
|
||||
%endif
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
|
||||
%build
|
||||
export CFLAGS="%{optflags}"
|
||||
|
Loading…
Reference in New Issue
Block a user