1*fa246a1dSDavid Matlack# SPDX-License-Identifier: GPL-2.0-or-later 2*fa246a1dSDavid Matlack 3*fa246a1dSDavid Matlackreadonly DEVICES_DIR="${TMPDIR:-/tmp}/vfio-selftests-devices" 4*fa246a1dSDavid Matlack 5*fa246a1dSDavid Matlackfunction write_to() { 6*fa246a1dSDavid Matlack # Unfortunately set -x does not show redirects so use echo to manually 7*fa246a1dSDavid Matlack # tell the user what commands are being run. 8*fa246a1dSDavid Matlack echo "+ echo \"${2}\" > ${1}" 9*fa246a1dSDavid Matlack echo "${2}" > ${1} 10*fa246a1dSDavid Matlack} 11*fa246a1dSDavid Matlack 12*fa246a1dSDavid Matlackfunction get_driver() { 13*fa246a1dSDavid Matlack if [ -L /sys/bus/pci/devices/${1}/driver ]; then 14*fa246a1dSDavid Matlack basename $(readlink -m /sys/bus/pci/devices/${1}/driver) 15*fa246a1dSDavid Matlack fi 16*fa246a1dSDavid Matlack} 17*fa246a1dSDavid Matlack 18*fa246a1dSDavid Matlackfunction bind() { 19*fa246a1dSDavid Matlack write_to /sys/bus/pci/drivers/${2}/bind ${1} 20*fa246a1dSDavid Matlack} 21*fa246a1dSDavid Matlack 22*fa246a1dSDavid Matlackfunction unbind() { 23*fa246a1dSDavid Matlack write_to /sys/bus/pci/drivers/${2}/unbind ${1} 24*fa246a1dSDavid Matlack} 25*fa246a1dSDavid Matlack 26*fa246a1dSDavid Matlackfunction set_sriov_numvfs() { 27*fa246a1dSDavid Matlack write_to /sys/bus/pci/devices/${1}/sriov_numvfs ${2} 28*fa246a1dSDavid Matlack} 29*fa246a1dSDavid Matlack 30*fa246a1dSDavid Matlackfunction get_sriov_numvfs() { 31*fa246a1dSDavid Matlack if [ -f /sys/bus/pci/devices/${1}/sriov_numvfs ]; then 32*fa246a1dSDavid Matlack cat /sys/bus/pci/devices/${1}/sriov_numvfs 33*fa246a1dSDavid Matlack fi 34*fa246a1dSDavid Matlack} 35*fa246a1dSDavid Matlack 36*fa246a1dSDavid Matlackfunction set_driver_override() { 37*fa246a1dSDavid Matlack write_to /sys/bus/pci/devices/${1}/driver_override ${2} 38*fa246a1dSDavid Matlack} 39*fa246a1dSDavid Matlack 40*fa246a1dSDavid Matlackfunction clear_driver_override() { 41*fa246a1dSDavid Matlack set_driver_override ${1} "" 42*fa246a1dSDavid Matlack} 43