From 3047f5bb7a2b34646c6b587c83da13b84401803b Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Tue, 30 Jan 2018 19:09:56 +0100 Subject: [PATCH] vfio: only rebind pci device to VFIO driver if not already bound --- fpga/lib/kernel/vfio.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/fpga/lib/kernel/vfio.c b/fpga/lib/kernel/vfio.c index 018f42dcf..0c0de58d4 100644 --- a/fpga/lib/kernel/vfio.c +++ b/fpga/lib/kernel/vfio.c @@ -229,10 +229,13 @@ int vfio_pci_attach(struct vfio_device *d, struct vfio_container *c, struct pci_ if (kernel_module_load("vfio_pci")) error("Failed to load kernel driver: %s", "vfio_pci"); - /* Bind PCI card to vfio-pci driver*/ - ret = pci_attach_driver(pdev, "vfio-pci"); - if (ret) - error("Failed to attach device to driver"); + /* Bind PCI card to vfio-pci driver if not already bound */ + ret = pci_get_driver(pdev, name, sizeof(name)); + if (ret || strcmp(name, "vfio-pci")) { + ret = pci_attach_driver(pdev, "vfio-pci"); + if (ret) + error("Failed to attach device to driver"); + } /* Get IOMMU group of device */ int index = pci_get_iommu_group(pdev);