From c22f60e6e55f1bf300dd76d2222a93911f3b2bb2 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Thu, 12 Oct 2023 04:00:49 +0000 Subject: automatic import of xen --- init.pciback | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 init.pciback (limited to 'init.pciback') 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 -- cgit v1.2.3