On Wed, 2012-10-31 at 17:19 -0400, Donald Dutile wrote: > Some implementations of SRIOV provide a capability structure > value of TotalVFs that is greater than what the software can support. > Provide a method to reduce the capability structure reported value > to the value the driver can support. > This ensures sysfs reports the current capability of the system, > hardware and software. > Example for its use: igb & ixgbe -- report 8 & 64 as TotalVFs, > but drivers only support 7 & 63 maximum. > > Signed-off-by: Donald Dutile <ddutile@xxxxxxxxxx> > --- > drivers/pci/iov.c | 27 ++++++++++++++++++++++++++- > drivers/pci/pci-sysfs.c | 10 ++++++++-- > drivers/pci/pci.h | 1 + > include/linux/pci.h | 5 +++++ > 4 files changed, 40 insertions(+), 3 deletions(-) > > diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c > index aeccc91..98c3d37 100644 > --- a/drivers/pci/iov.c > +++ b/drivers/pci/iov.c > @@ -682,7 +682,6 @@ int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn) > > if (!dev->is_physfn) > return -ENODEV; > - > return sriov_enable(dev, nr_virtfn); > } > EXPORT_SYMBOL_GPL(pci_enable_sriov); This hunk doesn't belong in this patch. > @@ -735,3 +734,29 @@ int pci_num_vf(struct pci_dev *dev) > return dev->sriov->nr_virtfn; > } > EXPORT_SYMBOL_GPL(pci_num_vf); > + > +/** > + * pci_sriov_set_totalvfs -- reduce the TotalVFs available > + * @dev: the PCI PF device > + * numvfs: number that should be used for TotalVFs supported > + * > + * Should be called from PF driver's probe routine with > + * device's mutex held. > + * > + * Returns 0 if PF is an SRIOV-capable device and > + * value of numvfs valid, otherwise -EINVAL This says the only possible error is -EINVAL, but it can also return -EIO! And the already-enabled case might be one that some drivers will need to handle specially. > + */ > +int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs) > +{ > + if (!dev || !dev->is_physfn || (numvfs > dev->sriov->total)) > + return -EINVAL; > + > + /* Shouldn't change if VFs already enabled */ > + if (dev->sriov->ctrl & PCI_SRIOV_CTRL_VFE) > + return -EIO; [...] EBUSY seems a bit more appropriate. Ben. -- Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html