Awesome
vfio-pci-bind
This script takes one or two parameters in any order:
Vendor:Device
i.e.vvvv:dddd
Domain:Bus:Device.Function
i.e.dddd:vv:dd.f
and then:
-
If both
Vendor:Device
andDomain:Bus:Device.Function
were provided, validate that the requestedVendor:Device
exists atDomain:Bus:Device.Function
If only
Vendor:Device
was provided, determine the currentDomain:Bus:Device.Function
for that device.If only
Domain:Bus:Device.Function
was provided, use it. -
Unbinds all devices that are in the same iommu group as the supplied device from their current driver (except PCIe bridges).
-
Binds to vfio-pci:
- The supplied device.
- All devices that are in the same iommu group.
-
Transfers ownership of the respective iommu group inside /dev/vfio to $SUDO_USER
Suggestions:
-
If you have a single piece of hardware with a given
Vendor:Device
, you can call the script like this:vfio-pci-bind.sh Vendor:Device
The script will target that device regardless of how the PCI address might change due to the addition or removal of other hardware.
-
If you have multiple pieces of hardware with the same
Vendor:Device
code, you need to pass the PCI address as well:vfio-pci-bind.sh Vendor:Device Domain:Bus:Device.Function
This will ensure the correct instance of the hardware is bound to vfio-pci.
Note: If the PCI address for this device changes as a result of adding or removing hardware, you will need to update the PCI address in this call.
-
For backwards compatibility you can also specify just the PCI address:
vfio-pci-bind.sh Domain:Bus:Device.Function
Note: If you add or remove hardware, the device associated with that PCI address can change resulting in the wrong device being bound to vfio-pci. Consider passing the
Vendor:Device
as well.
Script must be executed via sudo!
Automatically binding devices on boot
Devices can be automatically bound to vfio-pci
on boot using the supplied 25-vfio-pci-bind.rules
udev rules file.
- Copy
vfio-pci-bind.sh
to/lib/udev/
and ensure it is marked executable. - Copy
25-vfio-pci-bind.rules
to/etc/udev/rules.d/
- Edit
/etc/udev/rules.d/25-vfio-pci-bind.rules
and add PCI device matching rules following the examples in the file. - Reboot.
License
See supplied LICENSE file.