Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0-or-later
2set -e
3
4source $(dirname -- "${BASH_SOURCE[0]}")/lib.sh
5
6function main() {
7 local device_bdf
8 local device_dir
9 local numvfs
10 local driver
11
12 if [ $# = 0 ]; then
13 echo "usage: $0 segment:bus:device.function ..." >&2
14 exit 1
15 fi
16
17 for device_bdf in "$@"; do
18 test -d /sys/bus/pci/devices/${device_bdf}
19
20 device_dir=${DEVICES_DIR}/${device_bdf}
21 if [ -d "${device_dir}" ]; then
22 echo "${device_bdf} has already been set up, exiting."
23 exit 0
24 fi
25
26 mkdir -p ${device_dir}
27
28 numvfs=$(get_sriov_numvfs ${device_bdf})
29 if [ "${numvfs}" ]; then
30 set_sriov_numvfs ${device_bdf} 0
31 echo ${numvfs} > ${device_dir}/sriov_numvfs
32 fi
33
34 driver=$(get_driver ${device_bdf})
35 if [ "${driver}" ]; then
36 unbind ${device_bdf} ${driver}
37 echo ${driver} > ${device_dir}/driver
38 fi
39
40 set_driver_override ${device_bdf} vfio-pci
41 touch ${device_dir}/driver_override
42
43 bind ${device_bdf} vfio-pci
44 touch ${device_dir}/vfio-pci
45 done
46}
47
48main "$@"