2020-11-27 09:22:54 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
testdir=$(readlink -f "$(dirname "$0")")
|
|
|
|
rootdir=$(readlink -f "$testdir/../../")
|
|
|
|
source "$testdir/common.sh"
|
|
|
|
|
2021-08-13 11:39:27 +02:00
|
|
|
get_zoned_devs
|
|
|
|
|
2020-11-27 09:22:54 +01:00
|
|
|
declare -a devs=()
|
|
|
|
declare -A drivers=()
|
|
|
|
|
|
|
|
collect_setup_devs() {
|
|
|
|
local dev driver
|
|
|
|
|
|
|
|
while read -r _ dev _ _ _ driver _; do
|
|
|
|
[[ $dev == *:*:*.* ]] || continue
|
2021-04-16 14:28:05 +08:00
|
|
|
[[ $driver == nvme ]] || continue
|
2021-08-13 11:39:27 +02:00
|
|
|
[[ ${zoned_devs[*]} == *"$dev"* ]] && continue
|
2020-11-27 09:22:54 +01:00
|
|
|
devs+=("$dev") drivers["$dev"]=$driver
|
|
|
|
done < <(setup output status)
|
|
|
|
((${#devs[@]} > 0))
|
|
|
|
}
|
|
|
|
|
|
|
|
verify() {
|
|
|
|
local dev driver
|
|
|
|
|
|
|
|
for dev; do
|
|
|
|
[[ -e /sys/bus/pci/devices/$dev ]]
|
|
|
|
driver=$(readlink -f "/sys/bus/pci/devices/$dev/driver")
|
|
|
|
[[ ${drivers["$dev"]} == "${driver##*/}" ]]
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
denied() {
|
2021-08-13 11:39:27 +02:00
|
|
|
PCI_BLOCKED="$PCI_BLOCKED ${devs[0]}" setup output config \
|
2020-11-27 09:22:54 +01:00
|
|
|
| grep "Skipping denied controller at ${devs[0]}"
|
|
|
|
verify "${devs[0]}"
|
|
|
|
setup reset
|
|
|
|
}
|
|
|
|
|
|
|
|
allowed() {
|
|
|
|
PCI_ALLOWED="${devs[0]}" setup output config \
|
2021-04-16 14:28:05 +08:00
|
|
|
| grep -E "${devs[0]} .*: ${drivers["${devs[0]}"]} -> .*"
|
2020-11-27 09:22:54 +01:00
|
|
|
verify "${devs[@]:1}"
|
|
|
|
setup reset
|
|
|
|
}
|
|
|
|
|
|
|
|
setup reset
|
|
|
|
collect_setup_devs
|
|
|
|
|
|
|
|
run_test "denied" denied
|
|
|
|
run_test "allowed" allowed
|