Re: [PATCH V2 06/12] vfio/pci: Split the pci_driver code out of vfio_pci_core.c
From: Alex Williamson <hidden>
Date: 2021-08-19 21:38:56
Also in:
kvm, linux-kbuild, linux-pci, linux-s390
On Thu, 19 Aug 2021 15:12:35 -0600 Alex Williamson [off-list ref] wrote:
On Wed, 18 Aug 2021 18:16:00 +0300 Yishai Hadas [off-list ref] wrote:quoted
+ +static int vfio_pci_sriov_configure(struct pci_dev *pdev, int nr_virtfn) +{ + might_sleep();vfio_pci_core_sriov_configure() retained the might_sleep(), it shouldn't be needed here.quoted
+ + if (!enable_sriov) + return -ENOENT; + + return vfio_pci_core_sriov_configure(pdev, nr_virtfn); +}...quoted
@@ -509,7 +449,7 @@ static struct vfio_pci_core_device *get_pf_vdev(struct vfio_pci_core_device *vde if (!pf_dev) return NULL; - if (pci_dev_driver(physfn) != &vfio_pci_driver) { + if (pci_dev_driver(physfn) != pci_dev_driver(vdev->pdev)) {I think this means that the PF and VF must use the same vfio-pci "variant" driver, it's too bad we're not enabling vfio-pci to own the PF while vfio-vendor-foo-pci owns the VF since our SR-IOV security model remains in the core. We can work on that later though, no loss of functionality here. ...quoted
@@ -1795,12 +1723,12 @@ static int vfio_pci_bus_notifier(struct notifier_block *nb, pci_info(vdev->pdev, "Captured SR-IOV VF %s driver_override\n", pci_name(pdev)); pdev->driver_override = kasprintf(GFP_KERNEL, "%s", - vfio_pci_ops.name); + vdev->vdev.ops->name); } else if (action == BUS_NOTIFY_BOUND_DRIVER && pdev->is_virtfn && physfn == vdev->pdev) { struct pci_driver *drv = pci_dev_driver(pdev); - if (drv && drv != &vfio_pci_driver) + if (drv && drv != pci_dev_driver(vdev->pdev)) pci_warn(vdev->pdev, "VF %s bound to driver %s while PF bound to vfio-pci\n","vfio-pci" is hardcoded in this comment. There are a few other user visible instances of this in vfio-pci-core.c as well: MODULE_PARM_DESC(disable_vga, "Disable VGA resource access through vfio-pci");
I see this one is resolved in a later patch. Thanks, Alex
ret = pci_request_selected_regions(pdev,
1 << index, "vfio-pci");
pci_info_ratelimited(vdev->pdev,
"VF token incorrectly provided, PF not bound to vfio-pci\n");
We should try to fix or reword as many of these as we reasonably can.
Thanks,
Alex