X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=fhi_lib%2Fapp%2Fdpdk.sh;h=6fc02be59111fbdd653f913a3039bfef931951ef;hb=70d9d920dd4e575f085f1f1a9050fefd1c10e127;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..6fc02be --- a/fhi_lib/app/dpdk.sh +++ b/fhi_lib/app/dpdk.sh @@ -18,8 +18,18 @@ #* #*******************************************************************************/ -export RTE_SDK=/home/turner/dpdk -export RTE_TARGET=x86_64-native-linuxapp-icc +if [ -z "$RTE_SDK" ] +then + echo "## ERROR: Please make sure environment variable RTE_SDK is set to valid DPDK path." + echo " To fix, please do: export RTE_SDK=path_to_dpdk_folder before running this script" + exit 1 +fi + +if [ -z "$RTE_TARGET" ] +then + echo "## ERROR: Please make sure environment variable RTE_TARGET is set to valid DPDK path." + exit 1 +fi # # Unloads igb_uio.ko. @@ -65,7 +75,54 @@ 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 + + + echo "Loading VFIO module" + /sbin/lsmod | grep -s vfio_pci > /dev/null + if [ $? -ne 0 ] ; then + sudo /sbin/modprobe -v vfio-pci + 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 +138,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:19:02.0 + $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:02.1 + $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:0a.0 + $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:0a.1 else #VM $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:04.0