Use vfio-pci as DPDK driver if prerequisites are satisfied
authorYichen Wang <[email protected]>
Sun, 5 Mar 2017 07:58:41 +0000 (23:58 -0800)
committerYaroslav Brustinov <[email protected]>
Sun, 5 Mar 2017 21:39:29 +0000 (23:39 +0200)
Change-Id: Ic43742256e3f69361d0413b672341f1ea4cc02fc
Signed-off-by: Yichen Wang <[email protected]>
Conflicts:
scripts/dpdk_setup_ports.py

scripts/dpdk_setup_ports.py
scripts/trex-cfg

index bf6d171..6eb7481 100755 (executable)
@@ -24,6 +24,8 @@ import platform
 # 32  : no errors - mlx share object should be loaded 
 MLX_EXIT_CODE = 32
 
+out = subprocess.check_output(['lsmod'])
+DPDK_DRIVER = 'vfio-pci' if out.find('vfio_pci') != -1 else 'igb_uio'
 
 class ConfigCreator(object):
     mandatory_interface_fields = ['Slot_str', 'Device_str', 'NUMA']
@@ -444,7 +446,7 @@ Other network devices
         if mellanox:
             drv="mlx5_core"
         else:
-            drv="igb_uio"
+            drv=DPDK_DRIVER
 
         cmd='%s dpdk_nic_bind.py --bind=%s %s ' % (sys.executable, drv,key)
         print(cmd)
index aaaa2a3..5945a07 100755 (executable)
@@ -45,7 +45,10 @@ done
 
 PATH=$PATH:/sbin:/usr/sbin
 
-if ! lsmod | grep -q igb_uio  ;  then
+VFIO_PCI_KO=`find /lib/modules/$(uname -r) -type f -name vfio-pci.ko`
+if [ $VFIO_PCI_KO ] && grep "iommu=pt" /proc/cmdline | grep -q "intel_iommu=on" ; then
+    modprobe vfio-pci
+elif ! lsmod | grep -q igb_uio ; then
     echo "Loading kernel drivers for the first time"
     modprobe uio
     if [ $? -ne 0 ]; then