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]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.