Messages in this thread Patch in this message | | | From | Andre Richter <> | Subject | [PATCH 1/1] vfio-pci: Add SR-IOV VF configuration via sysfs | Date | Wed, 1 Oct 2014 15:38:53 +0200 |
| |
If a PCIe device bound to vfio-pci happens to be SR-IOV capabale, there is no possibility to bring up/shutdown the device's VFs.
This patch adds a generic callback for the sysfs sriov_numvfs attribute. The attribute will only show up for SR-IOV devices. Additionally, each utilized pci_* function checks if the device is a PF.
Signed-off-by: Andre Richter <andre.o.richter@gmail.com> --- drivers/vfio/pci/vfio_pci.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c index f782533..2f6dfb3 100644 --- a/drivers/vfio/pci/vfio_pci.c +++ b/drivers/vfio/pci/vfio_pci.c @@ -919,12 +919,27 @@ static struct pci_error_handlers vfio_err_handlers = { .error_detected = vfio_pci_aer_err_detected, }; +static int vfio_pci_sriov_configure(struct pci_dev *pdev, int num_vfs) +{ + int ret = 0; + + if (num_vfs > 0) { + ret = pci_enable_sriov(pdev, num_vfs); + if (!ret) + ret = pci_num_vf(pdev); + } else + pci_disable_sriov(pdev); + + return ret; +} + static struct pci_driver vfio_pci_driver = { - .name = "vfio-pci", - .id_table = NULL, /* only dynamic ids */ - .probe = vfio_pci_probe, - .remove = vfio_pci_remove, - .err_handler = &vfio_err_handlers, + .name = "vfio-pci", + .id_table = NULL, /* only dynamic ids */ + .probe = vfio_pci_probe, + .remove = vfio_pci_remove, + .sriov_configure = vfio_pci_sriov_configure, + .err_handler = &vfio_err_handlers, }; /* -- 1.9.1
| |