xref: /linux/tools/testing/selftests/vfio/scripts/lib.sh (revision a3ebb59eee2e558e8f8f27fc3f75cd367f17cd8e)
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