setup.sh 992 B

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