Re: [PATCH v4 1/6] PCI/IOV: Return unsigned int from pci_sriov_get_totalvfs()
Bjorn Helgaas <[email protected]> Thu, 9 Jul 2026 17:46:23 -0500
| Newsgroups | dev.linux.lists.nova-gpu,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <20260709224623.GA914514@bhelgaas> |
On Thu, Jul 09, 2026 at 06:02:01PM +0300, Zhi Wang wrote: > pci_sriov_get_totalvfs() reports a VF count, not an errno-style > status. It returns 0 when SR-IOV is unavailable or the device is not a > PF, and otherwise returns the PF's driver_max_VFs value. > > driver_max_VFs is stored as a u16 in struct pci_sriov. It is derived > from the SR-IOV TotalVFs field or from a driver-provided limit, so the > implementation cannot return a negative value. > > Change the declaration, CONFIG_PCI_IOV stub, and implementation to > return unsigned int. > > Suggested-by: Alexandre Courbot <[email protected]> > Reviewed-by: Alexandre Courbot <[email protected]> > Cc: Bjorn Helgaas <[email protected]> > Cc: David Laight <[email protected]> > Cc: Gary Guo <[email protected]> > Cc: [email protected] > Link: https://lore.kernel.org/all/[email protected]/ > Signed-off-by: Zhi Wang <[email protected]> Acked-by: Bjorn Helgaas <[email protected]> Feel free to merge via another tree, or let me know if you want me to take just this patch via PCI. > --- > drivers/pci/iov.c | 2 +- > include/linux/pci.h | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c > index b0d24839c084..9d408fb8ac25 100644 > --- a/drivers/pci/iov.c > +++ b/drivers/pci/iov.c > @@ -1283,7 +1283,7 @@ EXPORT_SYMBOL_GPL(pci_sriov_set_totalvfs); > * SRIOV capability value of TotalVFs or the value of driver_max_VFs > * if the driver reduced it. Otherwise 0. > */ > -int pci_sriov_get_totalvfs(struct pci_dev *dev) > +unsigned int pci_sriov_get_totalvfs(struct pci_dev *dev) > { > if (!dev->is_physfn) > return 0; > diff --git a/include/linux/pci.h b/include/linux/pci.h > index ebb5b9d76360..2b9c61de5f67 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -2569,7 +2569,7 @@ void pci_iov_remove_virtfn(struct pci_dev *dev, int id); > int pci_num_vf(struct pci_dev *dev); > int pci_vfs_assigned(struct pci_dev *dev); > int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs); > -int pci_sriov_get_totalvfs(struct pci_dev *dev); > +unsigned int pci_sriov_get_totalvfs(struct pci_dev *dev); > int pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn); > resource_size_t pci_iov_resource_size(const struct pci_dev *dev, int resno); > int pci_iov_vf_bar_set_size(struct pci_dev *dev, int resno, int size); > @@ -2622,7 +2622,7 @@ static inline int pci_vfs_assigned(struct pci_dev *dev) > { return 0; } > static inline int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs) > { return 0; } > -static inline int pci_sriov_get_totalvfs(struct pci_dev *dev) > +static inline unsigned int pci_sriov_get_totalvfs(struct pci_dev *dev) > { return 0; } > #define pci_sriov_configure_simple NULL > static inline resource_size_t pci_iov_resource_size(const struct pci_dev *dev, > -- > 2.51.0 >