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