Re: [PATCH v3 2/8] rust: pci: add sriov_get_totalvfs() helper
"Alexandre Courbot" <[email protected]>
| Newsgroups | dev.linux.lists.nova-gpu,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <[email protected]> |
On Wed Jul 1, 2026 at 3:26 PM JST, Zhi Wang wrote: > Expose pci_sriov_get_totalvfs() to Rust PCI drivers so they can query > how many SR-IOV VFs a device supports. > > Cc: 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]> > --- > rust/kernel/pci.rs | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs > index 5071cae6543f..21c51981c02e 100644 > --- a/rust/kernel/pci.rs > +++ b/rust/kernel/pci.rs > @@ -450,6 +450,17 @@ pub fn pci_class(&self) -> Class { > // SAFETY: `self.as_raw` is a valid pointer to a `struct pci_dev`. > Class::from_raw(unsafe { (*self.as_raw()).class }) > } > + > + /// Returns the total number of VFs, or 0 if SR-IOV is not available. > + #[inline] > + pub fn sriov_get_totalvfs(&self) -> u16 { > + // SAFETY: `self.as_raw()` is a valid pointer to a `struct pci_dev`. > + let total_vfs = unsafe { bindings::pci_sriov_get_totalvfs(self.as_raw()) }; > + > + // CAST: The C helper returns `unsigned int`, but the value originates > + // from TotalVFs/driver_max_VFs, so this cast cannot truncate. nit: "from TotalVFs/driver_max_VFs (which are defined as `u16`), ..." With that, Reviewed-by: Alexandre Courbot <[email protected]>