[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] xen PV passthru: assign SR-IOV virtual functions to separate virtual slots
>>> On 17.10.12 at 11:55, Laszlo Ersek <lersek@xxxxxxxxxx> wrote: > VFs are reported as single-function devices in PCI_HEADER_TYPE, which > causes pci_scan_slot() in the PV domU to skip all VFs beyond #0 in the > pciback-provided slot. Avoid this by assigning each VF to a separate > virtual slot. > > Signed-off-by: Laszlo Ersek <lersek@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> > --- > v1->v2: > * avoid extra indentation > * make sure virtual functions are assigned with func=0 > > drivers/xen/xen-pciback/vpci.c | 14 ++++++++++---- > 1 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/xen/xen-pciback/vpci.c b/drivers/xen/xen-pciback/vpci.c > index 46d140b..0f478ac 100644 > --- a/drivers/xen/xen-pciback/vpci.c > +++ b/drivers/xen/xen-pciback/vpci.c > @@ -89,9 +89,15 @@ static int __xen_pcibk_add_pci_dev(struct xen_pcibk_device > *pdev, > > mutex_lock(&vpci_dev->lock); > > - /* Keep multi-function devices together on the virtual PCI bus */ > - for (slot = 0; slot < PCI_SLOT_MAX; slot++) { > - if (!list_empty(&vpci_dev->dev_list[slot])) { > + /* > + * Keep multi-function devices together on the virtual PCI bus, except > + * virtual functions. > + */ > + if (!dev->is_virtfn) { > + for (slot = 0; slot < PCI_SLOT_MAX; slot++) { > + if (list_empty(&vpci_dev->dev_list[slot])) > + continue; > + > t = list_entry(list_first(&vpci_dev->dev_list[slot]), > struct pci_dev_entry, list); > > @@ -116,7 +122,7 @@ static int __xen_pcibk_add_pci_dev(struct > xen_pcibk_device *pdev, > pci_name(dev), slot); > list_add_tail(&dev_entry->list, > &vpci_dev->dev_list[slot]); > - func = PCI_FUNC(dev->devfn); > + func = dev->is_virtfn ? 0 : PCI_FUNC(dev->devfn); > goto unlock; > } > } > -- > 1.7.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |