| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # SPDX-License-Identifier: GPL-2.0-or-later
- set -e
- source $(dirname -- "${BASH_SOURCE[0]}")/lib.sh
- function main() {
- local device_bdf
- local device_dir
- local numvfs
- local driver
- if [ $# = 0 ]; then
- echo "usage: $0 segment:bus:device.function ..." >&2
- exit 1
- fi
- for device_bdf in "$@"; do
- test -d /sys/bus/pci/devices/${device_bdf}
- device_dir=${DEVICES_DIR}/${device_bdf}
- if [ -d "${device_dir}" ]; then
- echo "${device_bdf} has already been set up, exiting."
- exit 0
- fi
- mkdir -p ${device_dir}
- numvfs=$(get_sriov_numvfs ${device_bdf})
- if [ "${numvfs}" ]; then
- set_sriov_numvfs ${device_bdf} 0
- echo ${numvfs} > ${device_dir}/sriov_numvfs
- fi
- driver=$(get_driver ${device_bdf})
- if [ "${driver}" ]; then
- unbind ${device_bdf} ${driver}
- echo ${driver} > ${device_dir}/driver
- fi
- set_driver_override ${device_bdf} vfio-pci
- touch ${device_dir}/driver_override
- bind ${device_bdf} vfio-pci
- touch ${device_dir}/vfio-pci
- done
- }
- main "$@"
|