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.
This commit is contained in:
parent
07de8f7515
commit
7ce62cbd98
@ -3,14 +3,23 @@
|
||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||
|
||||
# Find all networking devices currenly installed...
|
||||
HIDE_PCI=`lspci -mm -n | grep '^[^ ]* "02'|awk '{ ORS="";print "(" $1 ")";}'`
|
||||
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 '{ ORS="";print "(" $1 ")";}'`
|
||||
HIDE_PCI="$HIDE_PCI `lspci -mm -n | grep '^[^ ]* "0c03'|awk '{print $1}'`"
|
||||
fi
|
||||
|
||||
HIDE_PCI=$HIDE_PCI`getarg rd.qubes.hide_pci | tr ',' '\n'|awk '{ ORS="";print "(" $1 ")";}'`
|
||||
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
|
||||
modprobe pciback hide=$HIDE_PCI 2> /dev/null || modprobe xen-pciback hide=$HIDE_PCI
|
||||
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user