xref: /spdk/test/setup/acl.sh (revision 32999ab917f67af61872f868585fd3d78ad6fb8a)
1#!/usr/bin/env bash
2testdir=$(readlink -f "$(dirname "$0")")
3rootdir=$(readlink -f "$testdir/../../")
4source "$testdir/common.sh"
5
6declare -a devs=()
7declare -A drivers=()
8
9collect_setup_devs() {
10	local dev driver
11
12	while read -r _ dev _ _ _ driver _; do
13		[[ $dev == *:*:*.* ]] || continue
14		[[ $driver == nvme ]] || continue
15		devs+=("$dev") drivers["$dev"]=$driver
16	done < <(setup output status)
17	((${#devs[@]} > 0))
18}
19
20verify() {
21	local dev driver
22
23	for dev; do
24		[[ -e /sys/bus/pci/devices/$dev ]]
25		driver=$(readlink -f "/sys/bus/pci/devices/$dev/driver")
26		[[ ${drivers["$dev"]} == "${driver##*/}" ]]
27	done
28}
29
30denied() {
31	# Include OCSSD devices in the PCI_BLOCKED to make sure we don't unbind
32	# them from the pci-stub (see autotest.sh for details).
33	PCI_BLOCKED="$OCSSD_PCI_DEVICES ${devs[0]}" setup output config \
34		| grep "Skipping denied controller at ${devs[0]}"
35	verify "${devs[0]}"
36	setup reset
37}
38
39allowed() {
40	PCI_ALLOWED="${devs[0]}" setup output config \
41		| grep -E "${devs[0]} .*: ${drivers["${devs[0]}"]} -> .*"
42	verify "${devs[@]:1}"
43	setup reset
44}
45
46setup reset
47collect_setup_devs
48
49run_test "denied" denied
50run_test "allowed" allowed
51