qubes-core-admin-linux/dracut/modules.d/90qubes-pciback/qubes-pciback.sh
Marek Marczykowski-Górecki 7ce62cbd98 dracut: support the case when xen-pciback is built-in, not a module
In such case, we can't set module parameters in initramfs. But we can
bind the driver to appropriate devices manually - which is also doable
in case of module.
2015-06-15 03:26:04 +02:00

26 lines
794 B
Bash
Executable File

#!/bin/sh
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
# Find all networking devices currenly installed...
HIDE_PCI="`lspci -mm -n | grep '^[^ ]* "02'|awk '{print $1}'`"
# ... and optionally all USB controllers...
if getargbool 0 rd.qubes.hide_all_usb; then
HIDE_PCI="$HIDE_PCI `lspci -mm -n | grep '^[^ ]* "0c03'|awk '{print $1}'`"
fi
HIDE_PCI="$HIDE_PCI `getarg rd.qubes.hide_pci | tr ',' ' '`"
modprobe xen-pciback 2>/dev/null || :
# ... and hide them so that Dom0 doesn't load drivers for them
for dev in $HIDE_PCI; do
BDF=0000:$dev
if [ -e /sys/bus/pci/devices/$BDF/driver ]; then
echo -n $BDF > /sys/bus/pci/devices/$BDF/driver/unbind
fi
echo -n $BDF > /sys/bus/pci/drivers/pciback/new_id
echo -n $BDF > /sys/bus/pci/drivers/pciback/bind
done