echo "ERROR: $*" >&2
exit 1
}
+function pci-unbind() {
+ echo $1 | sudo tee /sys/bus/pci/devices/$1/driver/unbind > /dev/null
+}
+function pci-bind() {
+ pci-unbind $1
+ echo $2 | sudo tee /sys/bus/pci/devices/$1/driver_override > /dev/null
+ echo $1 | sudo tee /sys/bus/pci/drivers/$2/bind > /dev/null
+ echo | sudo tee /sys/bus/pci/devices/$1/driver_override > /dev/null
+}
function show_vfs() {
path=$1
mac_prefix=$(cat ${netdev_path}/address | cut -d: -f1,3,4,5,6 )
for vf_path in ${path}/virtfn*; do
vf=$(basename $(readlink ${vf_path}))
+ iommu_group=$(basename $(readlink ${vf_path}/iommu_group))
vfid=$(basename ${vf_path//virtfn/})
mac="${mac_prefix}:$(printf "%02x" ${vfid})"
sudo ip link set dev ${netdev} vf ${vfid} mac ${mac}
+ sudo ip link set dev ${netdev} vf ${vfid} trust on
+ sudo ip link set dev ${netdev} vf ${vfid} spoofchk off
+ pci-bind ${vf} vfio-pci
+ sudo chmod g+rw /dev/vfio/${iommu_group}
+ sudo chgrp sudo /dev/vfio/${iommu_group}
+ echo "VFIO group ${iommu_group} group ownership changed to sudo, group permissions changed to rw"
done
[ $(cat ${path}/sriov_numvfs) -gt 0 ] && show_vfs ${path} ${netdev}
$0 remove-all <dev>
Remove all virtual functions from device <dev>.
-$0 remove-all <dev> <num>
+$0 create <dev> <num>
Create <num> virtual functions on device<dev>.
__EOF__
}