[PATCH v2 2/7] rust: pci: Add sriov_get_totalvfs() helper
From: Zhi Wang
Date: Mon Jun 22 2026 - 15:48:27 EST
Expose pci_sriov_get_totalvfs() to Rust PCI drivers so they can query
how many SR-IOV VFs a device supports.
The C helper now returns u16 and reports 0 when SR-IOV is unavailable
or the device is not a PF, so mirror that API directly instead of
modeling 0 VFs as an error.
Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
Cc: linux-pci@xxxxxxxxxxxxxxx
Signed-off-by: Zhi Wang <zhiw@xxxxxxxxxx>
---
rust/kernel/pci.rs | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs
index 5071cae6543f..adcb99fd0a2e 100644
--- a/rust/kernel/pci.rs
+++ b/rust/kernel/pci.rs
@@ -450,6 +450,12 @@ 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.
+ pub fn sriov_get_totalvfs(&self) -> u16 {
+ // SAFETY: `self.as_raw()` is a valid pointer to a `struct pci_dev`.
+ unsafe { bindings::pci_sriov_get_totalvfs(self.as_raw()) }
+ }
}
impl<'a> Device<device::Core<'a>> {
--
2.51.0