forked from pool/s390-tools
5500b3a5bc
- Added the following patches for Fate#326825 (bsc#1113329) I/O device pre-configuration * s390-tools-sles15sp1-01-zdev-use-libutil-provided-path-functions.patch * s390-tools-sles15sp1-02-zdev-Prepare-for-firmware-configuration-file-support.patch * s390-tools-sles15sp1-03-zdev-Add-support-for-reading-firmware-configuration-.patch * s390-tools-sles15sp1-04-zdev-Implement-no-settle.patch * s390-tools-sles15sp1-05-zdev-Write-zfcp-lun-udev-rules-to-separate-files.patch * s390-tools-sles15sp1-06-zdev-Add-support-for-handling-auto-configuration-dat.patch * s390-tools-sles15sp1-07-zdev-Integrate-firmware-auto-configuration-with-drac.patch * s390-tools-sles15sp1-08-zdev-Integrate-firmware-auto-configuration-with-init.patch * s390-tools-sles15sp1-09-zdev-Implement-internal-device-attributes.patch * s390-tools-sles15sp1-10-zdev-Implement-support-for-early-device-configuratio.patch * s390-tools-sles15sp1-11-zdev-Do-not-call-zipl-on-initrd-update.patch - Removed the obsolete customize-zdev-root-update-script.patch - Replaced s390-tools-sles15-zdev-fix-qeth-BridgePort-and-VNICC-conflict-checking.patch with s390-tools-sles15sp1-zdev-fix-qeth-BridgePort-and-VNICC-conflict-checking.patch to fit the current version. OBS-URL: https://build.opensuse.org/request/show/655900 OBS-URL: https://build.opensuse.org/package/show/Base:System/s390-tools?expand=0&rev=61
156 lines
5.2 KiB
Diff
156 lines
5.2 KiB
Diff
Subject: zdev: Integrate firmware auto-configuration with dracut
|
|
From: Peter Oberparleiter <oberpar@linux.ibm.com>
|
|
|
|
Summary: zdev: Add support for handling I/O configuration data
|
|
Description: LPARs that are running in IBM Dynamic Partition Manager (DPM) mode
|
|
can access a firmware-generated I/O configuration data file that
|
|
contains s390-specific information about available I/O devices
|
|
such as qeth device numbers and parameters, and FCP device IDs.
|
|
|
|
This data file is intended to remove the need for users to
|
|
manually enter the corresponding device data during installation.
|
|
|
|
Linux kernels with the corresponding support make the I/O
|
|
configuration data available at the following location:
|
|
|
|
/sys/firmware/sclp_sd/config/data
|
|
|
|
This patch set adds support for handling this data file using the
|
|
chzdev and lszdev tools:
|
|
|
|
- I/O configuration data can be applied using chzdev's --import
|
|
option
|
|
- Initial RAM-Disk scripts automatically apply the
|
|
I/O configuration data to the system configuration
|
|
- lszdev can be used to display the applied auto-configuration
|
|
data
|
|
- chzdev can be used to manually override the
|
|
auto-configuration data
|
|
|
|
Upstream-ID: 3fb356ebd297e4384208b7688d49cb3eb8f5b3e1
|
|
Problem-ID: LS1604
|
|
|
|
Upstream-Description:
|
|
|
|
zdev: Integrate firmware auto-configuration with dracut
|
|
|
|
Add a dracut hook that applies firmware-provided I/O configuration data
|
|
as auto-configuration during boot. This way, all I/O devices configured
|
|
by DPM are automatically brought online without further user
|
|
interaction.
|
|
|
|
This mechanism is active by default. It can be deactivated by specifying
|
|
the following parameter on the kernel command line:
|
|
|
|
rd.zdev=no-auto
|
|
|
|
Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
|
|
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
|
|
|
|
|
|
Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
|
|
---
|
|
zdev/dracut/95zdev/module-setup.sh | 19 ++++++++++----
|
|
zdev/dracut/95zdev/parse-zdev.sh | 38 +++++++++++++++++++++++++++++
|
|
zdev/dracut/Makefile | 3 ++
|
|
3 files changed, 55 insertions(+), 5 deletions(-)
|
|
|
|
--- a/zdev/dracut/95zdev/module-setup.sh
|
|
+++ b/zdev/dracut/95zdev/module-setup.sh
|
|
@@ -9,7 +9,8 @@
|
|
# 95zdev/module_setup.sh
|
|
# This module installs configuration files (udev rules and modprobe.conf
|
|
# files) required to enable the root device on s390. It will only work when
|
|
-# the root device was configured using the chzdev tool.
|
|
+# the root device was configured using the chzdev tool. In addition,
|
|
+# a hook is installed to parse rd.zdev= kernel parameters.
|
|
#
|
|
|
|
check() {
|
|
@@ -29,15 +30,23 @@ depends() {
|
|
}
|
|
|
|
installkernel() {
|
|
- local _modules=$(lszdev --by-path / --columns MODULES --no-headings 2>/dev/null)
|
|
-
|
|
- [ -z "$_modules" ] && return 0
|
|
- [ ! -z "$_modules" ] && instmods $_modules
|
|
+ # Add modules for all device types supported by chzdev (required for
|
|
+ # auto-configuration)
|
|
+ instmods lcs qeth qeth_l2 qeth_l3 dasd_mod dasd_eckd_mod dasd_fba_mod \
|
|
+ dasd_diag_mod zfcp
|
|
}
|
|
|
|
install() {
|
|
local _tempfile
|
|
|
|
+ # Ensure that required tools are available
|
|
+ inst_multiple chzdev lszdev vmcp
|
|
+
|
|
+ # Hook to parse zdev kernel parameter
|
|
+ inst_hook cmdline 95 "$moddir/parse-zdev.sh"
|
|
+
|
|
+ # Obtain root device configuration
|
|
+
|
|
# Exit early if root device type is unknown
|
|
if ! lszdev --by-path / >/dev/null 2>&1 ; then
|
|
return 0
|
|
--- /dev/null
|
|
+++ b/zdev/dracut/95zdev/parse-zdev.sh
|
|
@@ -0,0 +1,38 @@
|
|
+#!/bin/sh
|
|
+#
|
|
+# Copyright IBM Corp. 2017
|
|
+#
|
|
+# s390-tools is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the MIT license. See LICENSE for details.
|
|
+#
|
|
+# 95zdev/parse-zdev.sh
|
|
+# Parse the kernel command line for rd.zdev kernel parameters. These
|
|
+# parameters are evaluated and used to configure z Systems specific devices.
|
|
+#
|
|
+# Format:
|
|
+# rd.zdev=no-auto
|
|
+#
|
|
+# where
|
|
+#
|
|
+# no-auto: Indicates that firmware-provided I/O configuration data
|
|
+# should not be applied.
|
|
+#
|
|
+
|
|
+zdev_fw_file="/sys/firmware/sclp_sd/config/data"
|
|
+zdev_base_args="--force --yes --no-root-update --no-settle --auto-conf --quiet"
|
|
+
|
|
+if [ -e "$zdev_fw_file" ] ; then
|
|
+ zdev_auto=1
|
|
+else
|
|
+ zdev_auto=0
|
|
+fi
|
|
+
|
|
+for zdev_arg in $(getargs rd.zdev); do
|
|
+ if [ "$zdev_arg" = "no-auto" ] ; then
|
|
+ zdev_auto=0
|
|
+ fi
|
|
+done
|
|
+
|
|
+if [ $zdev_auto -eq 1 ] ; then
|
|
+ chzdev --import "$zdev_fw_file" $zdev_base_args
|
|
+fi
|
|
--- a/zdev/dracut/Makefile
|
|
+++ b/zdev/dracut/Makefile
|
|
@@ -11,11 +11,14 @@ ZDEVDIR := 95zdev
|
|
# performs the following functions when dracut is run:
|
|
#
|
|
# - copy the persistent root device configuration to the initial ram disk
|
|
+# - install a boot-time hook to apply firmware-provided configuration data
|
|
+# to the system
|
|
#
|
|
ifeq ($(HAVE_DRACUT),1)
|
|
install:
|
|
$(INSTALL) -m 755 -d $(DESTDIR)$(MODDIR)
|
|
$(INSTALL) -m 755 -d $(DESTDIR)$(MODDIR)/$(ZDEVDIR)
|
|
$(INSTALL) -m 755 $(ZDEVDIR)/module-setup.sh \
|
|
+ $(ZDEVDIR)/parse-zdev.sh \
|
|
$(DESTDIR)$(MODDIR)/$(ZDEVDIR)/
|
|
endif
|