From 4d2c9267c2ddabfa9f6e49644521115182005236 Mon Sep 17 00:00:00 2001 From: Alexander Egorenkov Date: Mon, 13 May 2024 14:28:21 +0200 Subject: [PATCH] dumpconf: add new parameter 'SCP_DATA' for SCSI/NVMe/ECKD dump devices The new parameter 'SCP_DATA' can be used to pass additional kernel cmdline parameters to a stand-alone SCSI/NVMe/ECKD dumper for debugging purposes. Configuration example ===================== ON_PANIC=dump_reipl DUMP_TYPE=fcp DEVICE=0.0.4711 WWPN=0x5005076303004711 LUN=0x4711000000000000 BOOTPROG=0 BR_LBA=0 SCP_DATA="dump_debug=6 ignore_loglevel earlyprintk=sclp panic_print=3" Signed-off-by: Alexander Egorenkov Reviewed-by: Mikhail Zaslonko Signed-off-by: Steffen Eiden --- man/dumpconf.8 | 4 ++++ scripts/dumpconf | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/man/dumpconf.8 b/man/dumpconf.8 index bad5e1d8..4be30a68 100644 --- a/man/dumpconf.8 +++ b/man/dumpconf.8 @@ -80,6 +80,10 @@ Cylinder, Head and Record) or "auto". \fB - BR_LBA:\fR Boot record logical block address. +.TP +\fB - SCP_DATA:\fR +SCP data for SCSI, NVMe and ECKD dump devices. + .TP \fB - VMCMD_1, VMCMD_2 ... VMCMD_8:\fR Up to eight CP commands, which are executed in case of a kernel panic diff --git a/scripts/dumpconf b/scripts/dumpconf index a77cda82..7a3643e8 100755 --- a/scripts/dumpconf +++ b/scripts/dumpconf @@ -253,6 +253,13 @@ setup_eckd_device() pr_error "ERROR: Invalid BR_CHR '$BR_CHR'." $ERRMSG return fi + if [ -e $1/eckd/scp_data ]; then + echo -n "$SCP_DATA" > $1/eckd/scp_data 2>/dev/null || RETVAL=1 + if [ $RETVAL -eq 1 ]; then + pr_error "ERROR: Invalid SCP_DATA '$SCP_DATA'." $ERRMSG + return + fi + fi } setup_fcp_device() @@ -285,6 +292,13 @@ setup_fcp_device() pr_error "ERROR: Invalid BR_LBA '$BR_LBA'." $ERRMSG return fi + if [ -e $1/fcp/scp_data ]; then + echo -n "$SCP_DATA" > $1/fcp/scp_data 2>/dev/null || RETVAL=1 + if [ $RETVAL -eq 1 ]; then + pr_error "ERROR: Invalid SCP_DATA '$SCP_DATA'." $ERRMSG + return + fi + fi } setup_nss_device() @@ -314,6 +328,13 @@ setup_nvme_device() pr_error "ERROR: Invalid BR_LBA '$BR_LBA'." $ERRMSG return fi + if [ -e $1/nvme/scp_data ]; then + echo -n "$SCP_DATA" > $1/nvme/scp_data 2>/dev/null || RETVAL=1 + if [ $RETVAL -eq 1 ]; then + pr_error "ERROR: Invalid SCP_DATA '$SCP_DATA'." $ERRMSG + return + fi + fi } setup_reipl() @@ -429,6 +450,10 @@ print_fcp_device() pr_info "bootprog: $BOOTPROG" BR_LBA=$(cat $1/fcp/br_lba) || RETVAL=1 pr_info "br_lba..: $BR_LBA" + if [ -e $1/fcp/scp_data ]; then + SCP_DATA=$(cat $1/fcp/scp_data) || RETVAL=1 + pr_info "scp_data: $SCP_DATA" + fi } print_ccw_device() @@ -445,6 +470,10 @@ print_eckd_device() pr_info "br_chr..: $BR_CHR" BOOTPROG=$(cat $1/eckd/bootprog) || RETVAL=1 pr_info "bootprog: $BOOTPROG" + if [ -e $1/eckd/scp_data ]; then + SCP_DATA=$(cat $1/eckd/scp_data) || RETVAL=1 + pr_info "scp_data: $SCP_DATA" + fi } print_nvme_device() @@ -457,6 +486,10 @@ print_nvme_device() pr_info "bootprog: $BOOTPROG" BR_LBA=$(cat $1/nvme/br_lba) || RETVAL=1 pr_info "br_lba..: $BR_LBA" + if [ -e $1/nvme/scp_data ]; then + SCP_DATA=$(cat $1/nvme/scp_data) || RETVAL=1 + pr_info "scp_data: $SCP_DATA" + fi } print_nss_name()