summaryrefslogtreecommitdiff
path: root/init.pciback
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-10-12 04:00:49 +0000
committerCoprDistGit <infra@openeuler.org>2023-10-12 04:00:49 +0000
commitc22f60e6e55f1bf300dd76d2222a93911f3b2bb2 (patch)
treeef665e7018377f53612ac2751dcaea35a1c587b6 /init.pciback
parent39a4763249cd6289e5019acfe0c98dbb169f5f2e (diff)
automatic import of xenopeneuler22.03_LTS
Diffstat (limited to 'init.pciback')
-rw-r--r--init.pciback119
1 files changed, 119 insertions, 0 deletions
diff --git a/init.pciback b/init.pciback
new file mode 100644
index 0000000..db0d79d
--- /dev/null
+++ b/init.pciback
@@ -0,0 +1,119 @@
+#!/bin/bash
+#
+# Copyright (c) 2014 SUSE GmbH Nuernberg, Germany. All rights reserved.
+#
+# /etc/init.d/pciback
+#
+### BEGIN INIT INFO
+# Provides: pciback
+# Required-Start: $syslog $network
+# Should-Start: $null
+# Required-Stop: $syslog $network
+# Should-Stop: $null
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 6
+# Description: bind PCI devices to pciback
+### END INIT INFO
+
+. /etc/rc.status
+. /etc/sysconfig/pciback
+
+rc_reset
+
+load_pciback() {
+ if ! lsmod | grep -qi "pciback"
+ then
+ echo "Loading pciback ..."
+ modprobe pciback
+ fi
+}
+
+unload_pciback() {
+ if lsmod | grep -qi "pciback"
+ then
+ echo "Unloading pciback ..."
+ modprobe -r pciback
+ fi
+}
+
+bind_dev_to_pciback() {
+ for DEVICE in ${XEN_PCI_HIDE_LIST}
+ do
+ local DRV=`echo ${DEVICE} | /usr/bin/cut -d "," -f 1`
+ local PCIID=`echo ${DEVICE} | /usr/bin/cut -d "," -f 2`
+
+ if ! ls /sys/bus/pci/drivers/pciback/${PCIID} > /dev/null 2>&1
+ then
+ echo "Binding ${PCIID} ..."
+ if ls /sys/bus/pci/drivers/${DRV}/${PCIID} > /dev/null 2>&1
+ then
+ echo -n ${PCIID} > /sys/bus/pci/drivers/${DRV}/unbind
+ fi
+ echo -n ${PCIID} > /sys/bus/pci/drivers/pciback/new_slot
+ echo -n ${PCIID} > /sys/bus/pci/drivers/pciback/bind
+ fi
+ done
+}
+
+unbind_dev_from_pciback() {
+ for DEVICE in ${XEN_PCI_HIDE_LIST}
+ do
+ local DRV=`echo ${DEVICE} | /usr/bin/cut -d "," -f 1`
+ local PCIID=`echo ${DEVICE} | /usr/bin/cut -d "," -f 2`
+
+ if ls /sys/bus/pci/drivers/pciback/${PCIID} > /dev/null
+ then
+ echo "Unbinding ${PCIID} ..."
+ echo -n ${PCIID} > /sys/bus/pci/drivers/pciback/unbind
+ fi
+ done
+}
+
+test "uname -r" | grep xen && exit 0
+
+case $1 in
+ start)
+ echo "Starting pciback ..."
+ echo
+ load_pciback
+ bind_dev_to_pciback
+
+ rc_status -v -r
+ ;;
+ stop)
+ echo "Stopping pciback ..."
+ echo
+ unbind_dev_from_pciback
+ unload_pciback
+
+ rc_status -v
+ ;;
+ reload|restart)
+ echo "Stopping pciback ..."
+ echo
+ unbind_dev_from_pciback
+ unload_pciback
+ echo "Starting pciback ..."
+ echo
+ load_pciback
+ bind_dev_to_pciback
+ ;;
+ status)
+ if lsmod | grep -qi pciback
+ then
+ echo
+ echo "pciback: loaded"
+ echo
+ echo "Currently bound devices ..."
+ echo "-----------------------------"
+ ls /sys/bus/pci/drivers/pciback | grep ^0000
+ echo
+ else
+ echo "pciback: not loaded"
+ fi
+ ;;
+ *)
+ echo "Usage: $0 [start|stop|restart|reload|status]"
+ exit 1
+ ;;
+esac