xref: /linux/tools/testing/selftests/vfio/scripts/cleanup.sh (revision 7bbf6d15e935abbb3d604c1fa157350e84a26f98)
1# SPDX-License-Identifier: GPL-2.0-or-later
2
3source $(dirname -- "${BASH_SOURCE[0]}")/lib.sh
4
5function cleanup_devices() {
6	local device_bdf
7	local device_dir
8
9	for device_bdf in "$@"; do
10		device_dir=${DEVICES_DIR}/${device_bdf}
11
12		if [ -f ${device_dir}/vfio-pci ]; then
13			unbind ${device_bdf} vfio-pci
14		fi
15
16		if [ -f ${device_dir}/driver_override ]; then
17			clear_driver_override ${device_bdf}
18		fi
19
20		if [ -f ${device_dir}/driver ]; then
21			bind ${device_bdf} $(cat ${device_dir}/driver)
22		fi
23
24		if [ -f ${device_dir}/sriov_numvfs ]; then
25			set_sriov_numvfs ${device_bdf} $(cat ${device_dir}/sriov_numvfs)
26		fi
27
28		rm -rf ${device_dir}
29	done
30}
31
32function main() {
33	if [ $# = 0 ]; then
34		cleanup_devices $(ls ${DEVICES_DIR})
35		rmdir ${DEVICES_DIR}
36	else
37		cleanup_devices "$@"
38	fi
39}
40
41main "$@"
42