X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=o-du%2Fphy.git;a=blobdiff_plain;f=fhi_lib%2Fapp%2Fdpdk.sh;h=5b267bd055a54efcd736cff6b0d3ed40c4ce65e0;hp=96bb84f8661ee9bb3100deeb7459ca2c262c32a6;hb=cef07f74965b1749dd909fc1322e211489fea2ea;hpb=bc60e3a69129edf1c21a01683f84a77483f6e3cc diff --git a/fhi_lib/app/dpdk.sh b/fhi_lib/app/dpdk.sh index 96bb84f..5b267bd 100644 --- 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,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