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, 14 insertions(+), 4 deletions(-) diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c index 6fd6fa5..32bc1b4 100644 --- a/drivers/vfio/vfio.c +++ b/drivers/vfio/vfio.c @@ -646,6 +646,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); @@ -658,10 +659,19 @@ 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(1, "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(1, "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