test/setup: Check if correct driver is in use
Signed-off-by: Michal Berger <michalx.berger@intel.com> Change-Id: I9023a311442c01ef18d05903bed2eb1513f58a0f Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5310 Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
d60bc77142
commit
d69b091262
77
test/setup/driver.sh
Executable file
77
test/setup/driver.sh
Executable file
@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
testdir=$(readlink -f "$(dirname "$0")")
|
||||
rootdir=$(readlink -f "$testdir/../../")
|
||||
source "$testdir/common.sh"
|
||||
|
||||
shopt -s nullglob extglob
|
||||
|
||||
dep() { modprobe --show-depends "$1"; }
|
||||
mod() { [[ $(dep "$1") == *".ko"* ]]; }
|
||||
bui() { [[ $(dep "$1") == "builtin $1" ]]; }
|
||||
is_driver() { mod "$1" || bui "$1"; }
|
||||
|
||||
uio() {
|
||||
is_driver uio_pci_generic
|
||||
}
|
||||
|
||||
vfio() {
|
||||
local iommu_grups
|
||||
local unsafe_vfio
|
||||
|
||||
[[ -e /sys/module/vfio/parameters/enable_unsafe_noiommu_mode ]] \
|
||||
&& unsafe_vfio=$(< /sys/module/vfio/parameters/enable_unsafe_noiommu_mode)
|
||||
|
||||
iommu_groups=(/sys/kernel/iommu_groups/*)
|
||||
|
||||
if ((${#iommu_groups[@]} > 0)) || [[ $unsafe_vfio == Y ]]; then
|
||||
is_driver vfio_pci && return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
igb_uio() {
|
||||
is_driver igb_uio
|
||||
}
|
||||
|
||||
pick_driver() {
|
||||
if vfio; then
|
||||
echo "vfio-pci"
|
||||
elif uio; then
|
||||
# Consider special case for broken uio_pci_generic driver
|
||||
if igb_uio; then
|
||||
echo "@(uio_pci_generic|igb_uio)"
|
||||
else
|
||||
echo "uio_pci_generic"
|
||||
fi
|
||||
elif igb_uio; then
|
||||
echo "igb_uio"
|
||||
else
|
||||
echo "No valid driver found"
|
||||
fi
|
||||
}
|
||||
|
||||
guess_driver() {
|
||||
local driver setup_driver marker
|
||||
local fail=0
|
||||
|
||||
driver=$(pick_driver)
|
||||
|
||||
if [[ $driver == "No valid driver found" ]]; then
|
||||
[[ $(setup output config) == "$driver"* ]]
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Looking for driver=$driver"
|
||||
while read -r _ _ _ _ marker setup_driver; do
|
||||
[[ $marker == "->" ]] || continue
|
||||
# Allow for more open matching
|
||||
# shellcheck disable=SC2053
|
||||
[[ $setup_driver == $driver ]] || fail=1
|
||||
done < <(setup output config)
|
||||
|
||||
((fail == 0))
|
||||
setup reset
|
||||
}
|
||||
|
||||
setup reset
|
||||
run_test "guess_driver" "guess_driver"
|
@ -7,3 +7,4 @@ source "$testdir/common.sh"
|
||||
|
||||
run_test "acl" "$testdir/acl.sh"
|
||||
run_test "hugepages" "$testdir/hugepages.sh"
|
||||
run_test "driver" "$testdir/driver.sh"
|
||||
|
Loading…
Reference in New Issue
Block a user