-
Notifications
You must be signed in to change notification settings - Fork 156
Using SR IOV with BESS
Sangjin Han edited this page Apr 4, 2017
·
5 revisions
(tested with QEMU 2.5)
The kernel should boot with intel_iommu=on
. Also make sure IOMMU is enabled in BIOS (VT-d).
Suppose 0000:02:00.1 (enp2s0f1) is the PF network interface from which you want to create a VF.
./dpdk-devbind.py -b i40e 0000:02:00.1 # only if not already bound to the kernel driver
echo 1 > /sys/class/net/enp2s0f1/device/sriov_numvfs # This will create a VF. Check with lspci
modprobe pci-stub
echo "8086 154c" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:02:0a.0 > /sys/bus/pci/devices/0000:02:0a.0/driver/unbind # 02:0a.0 is the BDF of VF
echo 0000:02:0a.0 > /sys/bus/pci/drivers/pci-stub/bind
qemu-system-x86_64 ... -device pci-assign,host=0000:02:0a.0,bus=pci.0,addr=0x10 ...
This will pass the 02:0a.0 host device to the VM as a PCI device at 00:10.0. bus
and addr
are optional.
Old QEMU versions may show this error message, but fear not.
qemu-system-x86_64: -device pci-assign,host=03:02.0: pci-assign: Invalid ROM.
i40evf driver should be working without any additional configuration.
Use igb_uio
to bind the VF device to DPDK (when I tried, uio_pci_generic
and vfio-pci
didn't work). Check the MAC address of the VM; only packets with the matching destination MAC address will be switched to the VF.