3 #/******************************************************************************
5 #* Copyright (c) 2020 Intel.
7 #* Licensed under the Apache License, Version 2.0 (the "License");
8 #* you may not use this file except in compliance with the License.
9 #* You may obtain a copy of the License at
11 #* http://www.apache.org/licenses/LICENSE-2.0
13 #* Unless required by applicable law or agreed to in writing, software
14 #* distributed under the License is distributed on an "AS IS" BASIS,
15 #* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 #* See the License for the specific language governing permissions and
17 #* limitations under the License.
19 #*******************************************************************************/
23 echo "## ERROR: Please make sure environment variable RTE_SDK is set to valid DPDK path."
24 echo " To fix, please do: export RTE_SDK=path_to_dpdk_folder before running this script"
28 if [ -z "$RTE_TARGET" ]
30 echo "## ERROR: Please make sure environment variable RTE_TARGET is set to valid DPDK path."
37 remove_igb_uio_module()
39 echo "Unloading any existing DPDK UIO module"
40 /sbin/lsmod | grep -s igb_uio > /dev/null
41 if [ $? -eq 0 ] ; then
42 sudo /sbin/rmmod igb_uio
47 # Loads new igb_uio.ko (and uio module if needed).
51 if [ ! -f $RTE_SDK/$RTE_TARGET/kmod/igb_uio.ko ];then
52 echo "## ERROR: Target does not have the DPDK UIO Kernel Module."
53 echo " To fix, please try to rebuild target."
59 /sbin/lsmod | grep -s uio > /dev/null
60 if [ $? -ne 0 ] ; then
61 if [ -f /lib/modules/$(uname -r)/kernel/drivers/uio/uio.ko ] ; then
62 echo "Loading uio module"
63 sudo /sbin/modprobe uio
67 # UIO may be compiled into kernel, so it may not be an error if it can't
70 echo "Loading DPDK UIO module"
71 sudo /sbin/insmod $RTE_SDK/$RTE_TARGET/kmod/igb_uio.ko
72 if [ $? -ne 0 ] ; then
73 echo "## ERROR: Could not load kmod/igb_uio.ko."
79 # Unloads VFIO modules.
83 echo "Unloading any existing VFIO module"
84 /sbin/lsmod | grep -s vfio > /dev/null
85 if [ $? -eq 0 ] ; then
86 sudo /sbin/rmmod vfio-pci
87 sudo /sbin/rmmod vfio_iommu_type1
93 # Loads new vfio-pci (and vfio module if needed).
100 echo "Loading VFIO module"
101 /sbin/lsmod | grep -s vfio_pci > /dev/null
102 if [ $? -ne 0 ] ; then
103 sudo /sbin/modprobe -v vfio-pci
106 # make sure regular users can read /dev/vfio
107 echo "chmod /dev/vfio"
108 sudo chmod a+x /dev/vfio
109 if [ $? -ne 0 ] ; then
115 # check if /dev/vfio/vfio exists - that way we
116 # know we either loaded the module, or it was
117 # compiled into the kernel
118 if [ ! -e /dev/vfio/vfio ] ; then
119 echo "## ERROR: VFIO not found!"
127 CPU_FEATURES_DETECT=`cat /proc/cpuinfo |grep hypervisor | wc -l`
129 if [ "$CPU_FEATURES_DETECT" -eq "0" ]
138 $RTE_SDK/usertools/dpdk-devbind.py --status
139 if [ ${VM_DETECT} == 'HOST' ]; then
141 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:02.0
142 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:02.1
143 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:02.2
144 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:02.3
145 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:0a.0
146 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:0a.1
147 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:0a.2
148 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:19:0a.3
150 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:af:02.0
151 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:af:02.1
152 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:af:02.2
153 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:af:02.3
154 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:af:0a.0
155 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:af:0a.1
156 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:af:0a.2
157 $RTE_SDK/usertools/dpdk-devbind.py --bind=vfio-pci 0000:af:0a.3
161 $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:04.0
162 $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:05.0
163 $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:06.0
164 $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:00:07.0
167 $RTE_SDK/usertools/dpdk-devbind.py --status