From f869082a911e7fb5d16a58b14cd09b7e3736c29c Mon Sep 17 00:00:00 2001 From: Dariusz Stojaczyk Date: Thu, 4 Jan 2018 22:16:30 +0100 Subject: [PATCH] setup.sh: don't bind virtio-pci devices with active mountpoints Change-Id: I92aeb8259383fa3e207e6ab3059109f8275bc549 Signed-off-by: Dariusz Stojaczyk Reviewed-on: https://review.gerrithub.io/393684 Reviewed-by: Daniel Verkamp Tested-by: SPDK Automated Test System Reviewed-by: Jim Harris --- scripts/setup.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/scripts/setup.sh b/scripts/setup.sh index 6ba75088e..50228f8df 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -71,6 +71,18 @@ function get_nvme_name_from_bdf { done } +function get_virtio_name_from_bdf { + set +e + virtio_ctrlrs=`lsblk --nodeps --output "NAME,SUBSYSTEMS" | grep virtio | awk '{print $1}'` + set -e + for ctrlr in $virtio_ctrlrs; do + if readlink "/sys/block/$ctrlr" | grep -q "$1"; then + eval "$2=$ctrlr" + return + fi + done +} + function configure_linux_pci { driver_name=vfio-pci if [ -z "$(ls /sys/kernel/iommu_groups)" ]; then @@ -116,7 +128,13 @@ function configure_linux_pci { for dev_id in `cat $TMP`; do for bdf in $(iter_pci_dev_id 1af4 $dev_id); do - linux_bind_driver "$bdf" "$driver_name" + blkname='' + get_virtio_name_from_bdf "$bdf" blkname + if mount | grep -q "/dev/$blkname"; then + echo Active mountpoints on /dev/$blkname, so not binding PCI dev $bdf + else + linux_bind_driver "$bdf" "$driver_name" + fi done done rm $TMP