X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=fhi_lib%2Fapp%2Fdpdk.sh;h=2f5aa8a68d655dbf750392d6509a5265f7112934;hb=d0fb1c6fee9f4bd737ab346380f27d0f5ab5ca3c;hp=96bb84f8661ee9bb3100deeb7459ca2c262c32a6;hpb=4745e5c88ba931c6d71cb6d8c681f76cf364eac5;p=o-du%2Fphy.git diff --git a/fhi_lib/app/dpdk.sh b/fhi_lib/app/dpdk.sh old mode 100644 new mode 100755 index 96bb84f..2f5aa8a --- a/fhi_lib/app/dpdk.sh +++ b/fhi_lib/app/dpdk.sh @@ -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,10 @@ 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:22:02.0 + $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:22:02.1 + $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:22:0a.0 + $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:22:0a.1 else #VM $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:04.0