Front Haul Interface Library update to first seed code contribution
[o-du/phy.git] / fhi_lib / app / dpdk.sh
index 96bb84f..5b267bd 100644 (file)
@@ -18,6 +18,7 @@
 #*
 #*******************************************************************************/
 
+
 export RTE_SDK=/home/turner/dpdk
 export RTE_TARGET=x86_64-native-linuxapp-icc
 
@@ -65,7 +66,57 @@ load_igb_uio_module()
     fi
 }
 
+#
+# Unloads VFIO modules.
+#
+remove_vfio_module()
+{
+       echo "Unloading any existing VFIO module"
+       /sbin/lsmod | grep -s vfio > /dev/null
+       if [ $? -eq 0 ] ; then
+               sudo /sbin/rmmod vfio-pci
+               sudo /sbin/rmmod vfio_iommu_type1
+               sudo /sbin/rmmod vfio
+       fi
+}
+
+#
+# Loads new vfio-pci (and vfio module if needed).
+#
+load_vfio_module()
+{
+       remove_vfio_module
+
+       VFIO_PATH="kernel/drivers/vfio/pci/vfio-pci.ko"
+
+       echo "Loading VFIO module"
+       /sbin/lsmod | grep -s vfio_pci > /dev/null
+       if [ $? -ne 0 ] ; then
+               if [ -f /lib/modules/$(uname -r)/$VFIO_PATH ] ; then
+                       sudo /sbin/modprobe vfio-pci
+               fi
+       fi
+
+       # make sure regular users can read /dev/vfio
+       echo "chmod /dev/vfio"
+       sudo chmod a+x /dev/vfio
+       if [ $? -ne 0 ] ; then
+               echo "FAIL"
+               quit
+       fi
+       echo "OK"
+
+       # check if /dev/vfio/vfio exists - that way we
+       # know we either loaded the module, or it was
+       # compiled into the kernel
+       if [ ! -e /dev/vfio/vfio ] ; then
+               echo "## ERROR: VFIO not found!"
+       fi
+}
+
+
 load_igb_uio_module
+load_vfio_module
 
 CPU_FEATURES_DETECT=`cat /proc/cpuinfo |grep hypervisor | wc -l`
 
@@ -81,10 +132,13 @@ fi
 $RTE_SDK/usertools/dpdk-devbind.py --status
 if [ ${VM_DETECT} == 'HOST' ]; then
     #HOST
-    $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:d8:02.0
-    $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:d8:02.1
-    $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:07:02.0
-    $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:07:02.1
+    $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:86:02.0
+    $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:86:02.1
+    $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:d8:02.0 
+    $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:d8:02.1 
+    $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:da:02.0 
+    $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:da:02.1
+
 else
     #VM
     $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:04.0