From 78589a32079efb504fb702af6317463654b43498 Mon Sep 17 00:00:00 2001 From: Hari Bathini Date: Fri, 25 Jul 2014 00:09:22 +0530 Subject: [PATCH] kdump: Check whether or not to invoke capturing vmcore The script dracut-kdump.sh is responsible for capturing vmcore during second kernel boot. Currently this script gets installed into kdump initrd as part of kdumpbase dracut module. With fadump support, 'dracut-kdump.sh' script also gets installed into default initrd to capture vmcore generated by firmware assisted dump. Thus in fadump case, the same initrd is going to be used for normal boot as well as boot after system crash. Hence a check is required to see if it is a normal boot or boot after crash. A new node "ibm,kernel-dump" is added, to the device tree, by firmware to notify kernel if it is booting after crash. The below patch adds a check for this node before executing steps to capture vmcore. This check will help bypassing the vmcore capture steps during normal boot process. Signed-off-by: Mahesh Salgaonkar Signed-off-by: Hari Bathini Acked-by: Vivek Goyal --- dracut-kdump.sh | 5 +++++ kdumpctl | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/dracut-kdump.sh b/dracut-kdump.sh index cb13d92..9958317 100755 --- a/dracut-kdump.sh +++ b/dracut-kdump.sh @@ -1,5 +1,10 @@ #!/bin/sh +# continue here only if we have to save dump. +if [ -f /etc/fadump.initramfs ] && [ ! -f /proc/device-tree/rtas/ibm,kernel-dump ]; then + return +fi + exec &> /dev/console . /lib/dracut-lib.sh . /lib/kdump-lib.sh diff --git a/kdumpctl b/kdumpctl index ff09b9a..98de747 100755 --- a/kdumpctl +++ b/kdumpctl @@ -151,8 +151,12 @@ rebuild_fadump_initrd() # backup fadump initrd for reference before replacing it backup_initrd + # this file tells the initrd is fadump enabled + touch /tmp/fadump.initramfs target_initrd_tmp="$TARGET_INITRD.tmp" - $MKDUMPRD $target_initrd_tmp --rebuild $TARGET_INITRD --kver $kdump_kver + $MKDUMPRD $target_initrd_tmp --rebuild $TARGET_INITRD --kver $kdump_kver \ + -i /tmp/fadump.initramfs /etc/fadump.initramfs + rm -f /tmp/fadump.initramfs if [ $? != 0 ]; then echo "mkdumprd: failed to rebuild initrd with fadump support" >&2 return 1