When a new device is added to a live VFIO group, use driver_override to force the device to be probed by the VFIO driver. Signed-off-by: Ilya Lesokhin <ilyal@xxxxxxxxxxxx> --- drivers/vfio/vfio.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c index 563c510..176647e 100644 --- a/drivers/vfio/vfio.c +++ b/drivers/vfio/vfio.c @@ -504,6 +504,7 @@ static int vfio_dev_viable(struct device *dev, void *data) static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev) { struct vfio_device *device; + struct pci_dev *pdev; /* Do we already know about it? We shouldn't */ device = vfio_group_get_device(group, dev); @@ -516,9 +517,20 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev) if (!atomic_read(&group->container_users)) return 0; - /* TODO Prevent device auto probing */ - WARN("Device %s added to live group %d!\n", dev_name(dev), - iommu_group_id(group->iommu_group)); + if (dev_is_pci(dev)) { + /* a device that shares a group with another VFIO + * device should also be probed by VFIO + */ + pdev = to_pci_dev(dev); + if (pdev->driver_override) + kfree(pdev->driver_override); + + pdev->driver_override = kstrdup("vfio-pci", GFP_KERNEL); + } else { + /* TODO Prevent device auto probing */ + WARN("Device %s added to live group %d!\n", dev_name(dev), + iommu_group_id(group->iommu_group)); + } return 0; } -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html