xref: /spdk/test/setup/acl.sh (revision eb53c23236cccb6b698b7ca70ee783da1c574b5f)
1#!/usr/bin/env bash
2#  SPDX-License-Identifier: BSD-3-Clause
3#  Copyright (C) 2020 Intel Corporation
4#  All rights reserved.
5#
6testdir=$(readlink -f "$(dirname "$0")")
7rootdir=$(readlink -f "$testdir/../../")
8source "$testdir/common.sh"
9
10get_zoned_devs
11
12declare -a devs=()
13declare -A drivers=()
14
15collect_setup_devs() {
16	local dev driver
17
18	while read -r _ dev _ _ _ driver _; do
19		[[ $dev == *:*:*.* ]] || continue
20		[[ $driver == nvme ]] || continue
21		[[ ${zoned_devs[*]} == *"$dev"* ]] && continue
22		devs+=("$dev") drivers["$dev"]=$driver
23	done < <(setup output status)
24	((${#devs[@]} > 0))
25}
26
27verify() {
28	local dev driver
29
30	for dev; do
31		[[ -e /sys/bus/pci/devices/$dev ]]
32		driver=$(readlink -f "/sys/bus/pci/devices/$dev/driver")
33		[[ ${drivers["$dev"]} == "${driver##*/}" ]]
34	done
35}
36
37denied() {
38	PCI_BLOCKED="$PCI_BLOCKED ${devs[0]}" setup output config \
39		| grep "Skipping denied controller at ${devs[0]}"
40	verify "${devs[0]}"
41	setup reset
42}
43
44allowed() {
45	PCI_ALLOWED="${devs[0]}" setup output config \
46		| grep -E "${devs[0]} .*: ${drivers["${devs[0]}"]} -> .*"
47	verify "${devs[@]:1}"
48	setup reset
49}
50
51setup reset
52collect_setup_devs
53
54run_test "denied" denied
55run_test "allowed" allowed
56