diff --git a/packages/s/s390-tools/.files b/packages/s/s390-tools/.files
index c2501f7..180d813 100644
Binary files a/packages/s/s390-tools/.files and b/packages/s/s390-tools/.files differ
diff --git a/packages/s/s390-tools/.rev b/packages/s/s390-tools/.rev
index 8da3002..cd11120 100644
--- a/packages/s/s390-tools/.rev
+++ b/packages/s/s390-tools/.rev
@@ -683,4 +683,12 @@
1071822
+
+ a500dcb3a3608e948d5b9c4bf59288e9
+ 2.25.0
+
+ dimstar_suse
+
+ 1073791
+
diff --git a/packages/s/s390-tools/module-setup.sh b/packages/s/s390-tools/module-setup.sh
new file mode 100644
index 0000000..bb2e547
--- /dev/null
+++ b/packages/s/s390-tools/module-setup.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# called by dracut
+check() {
+ arch=${DRACUT_ARCH:-$(uname -m)}
+ [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1
+
+ require_binaries chzdev || return 1
+
+ [[ $hostonly ]] || return 0
+
+ # or on request
+ return 255
+}
+
+# called by dracut
+depends() {
+ echo bash
+ return 0
+}
+
+# called by dracut
+installkernel() {
+ instmods ctcm lcs qeth qeth_l2 qeth_l3 dasd_diag_mod dasd_eckd_mod dasd_fba_mod
+}
+
+# called by dracut
+install() {
+ inst_hook cmdline 41 "$moddir/parse-zdev-suse.sh"
+ inst_hook cleanup 41 "$moddir/write-udev-live-suse.sh"
+ inst_multiple chzdev
+}
diff --git a/packages/s/s390-tools/parse-zdev-suse.sh b/packages/s/s390-tools/parse-zdev-suse.sh
new file mode 100644
index 0000000..d33b4c3
--- /dev/null
+++ b/packages/s/s390-tools/parse-zdev-suse.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+for zdev in $(getargs rd.zdev -d 'rd_ZDEV='); do
+ IFS=, read -r z_drv z_chan znet_opts <<< "$zdev"
+ if [ -n "$z_drv" ] && [ "$z_drv" = "no-auto" ] ; then
+ : # ignore, as it's handled by 95zdev
+ elif [ -z "$z_drv" ] || [ -z "$z_chan" ]; then
+ warn "Invalid arguments for rd.zdev="
+ else
+ info "+ chzdev --persistent --enable [...] $z_drv $z_chan $z_opts"
+ chzdev --persistent --enable --force --yes --no-root-update --no-settle $z_drv $z_chan $z_opts
+ fi
+done
+
+# REMOVE everything below for FCS!
+# support initial implementation only for already deployed `parmfile`s
+for znet in $(getargs rd.znet -d 'rd_ZNET='); do
+ IFS=, read -r znet_drv znet_sc0 znet_sc1 znet_sc2 znet_options <<< "$znet"
+ if [ -z "$znet_drv" ] || [ -z "$znet_sc0" ] || [ -z "$znet_sc1" ] || [ -z "$znet_sc2" ] ; then
+ warn "Invalid arguments for rd.znet="
+ else
+ info "+ chzdev --persistent --enable $znet_drv $znet_sc0:$znet_sc1:$znet_sc2 $znet_options"
+ chzdev --persistent --enable --force --yes --no-root-update --no-settle $znet_drv $znet_sc0:$znet_sc1:$znet_sc2 $znet_options
+ fi
+done
+
+for dasd in $(getargs rd.dasd -d 'rd_DASD='); do
+ dasd_drv=dasd
+ IFS=, read -r dasd_sc0 dasd_options <<< "$dasd"
+ if [ -z "$dasd_sc0" ]; then
+ warn "Invalid arguments for rd.dasd="
+ else
+ info "+ chzdev --persistent --enable $dasd_drv $dasd_sc0 $dasd_options"
+ chzdev --persistent --enable --force --yes --no-root-update --no-settle $dasd_drv $dasd_sc0 $dasd_options
+ fi
+done
+
diff --git a/packages/s/s390-tools/s390-tools.changes b/packages/s/s390-tools/s390-tools.changes
index 096a08b..b5f3984 100644
--- a/packages/s/s390-tools/s390-tools.changes
+++ b/packages/s/s390-tools/s390-tools.changes
@@ -1,4 +1,12 @@
-------------------------------------------------------------------
+Wed Mar 22 12:13:52 UTC 2023 - Nikolay Gueorguiev
+
+- Added SUSE scripts
+ * module-setup.sh
+ * parse-zdev-suse.sh
+ * write-udev-live-suse.sh
+
+-------------------------------------------------------------------
Mon Mar 13 15:33:43 UTC 2023 - Nikolay Gueorguiev
- Applied a patch (bsc#1209196)
diff --git a/packages/s/s390-tools/s390-tools.spec b/packages/s/s390-tools/s390-tools.spec
index db093b1..cb942c7 100644
--- a/packages/s/s390-tools/s390-tools.spec
+++ b/packages/s/s390-tools/s390-tools.spec
@@ -104,7 +104,11 @@ Source39: vmlogrdr.service.suse
%endif
Source40: xpram.service
Source41: pkey.conf
-
+###
+Source42: module-setup.sh
+Source43: parse-zdev-suse.sh
+Source44: write-udev-live-suse.sh
+###
### Obsolete scripts and man pages to be removed once changes in other tools are made
### That's been delayed to at least SLES12 SP1, but I'm leaving the comments here.
Source86: read_values.c
diff --git a/packages/s/s390-tools/write-udev-live-suse.sh b/packages/s/s390-tools/write-udev-live-suse.sh
new file mode 100644
index 0000000..177c12c
--- /dev/null
+++ b/packages/s/s390-tools/write-udev-live-suse.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ -w /sysroot/etc/udev/rules.d ]; then
+ # chzdev generated device activation starts with 41 ...
+ cp -p /etc/udev/rules.d/41-* /sysroot/etc/udev/rules.d
+fi