From: Peter Colberg <pcolberg@redhat.com>
To: Zhi Wang <zhiw@nvidia.com>
Cc: "Danilo Krummrich" <dakr@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Abdiel Janulgue" <abdiel.janulgue@gmail.com>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Robin Murphy" <robin.murphy@arm.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Dave Ertman" <david.m.ertman@intel.com>,
"Ira Weiny" <ira.weiny@intel.com>,
"Leon Romanovsky" <leon@kernel.org>,
linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Alexandre Courbot" <acourbot@nvidia.com>,
"Alistair Popple" <apopple@nvidia.com>,
"Joel Fernandes" <joelagnelf@nvidia.com>,
"John Hubbard" <jhubbard@nvidia.com>,
"Jason Gunthorpe" <jgg@ziepe.ca>
Subject: Re: [PATCH 0/8] rust: pci: add abstractions for SR-IOV capability
Date: Fri, 21 Nov 2025 12:05:10 -0500 [thread overview]
Message-ID: <aSCbxjbNJPPy2NVd@earendel> (raw)
In-Reply-To: <20251120203444.321378c2.zhiw@nvidia.com>
On Thu, Nov 20, 2025 at 08:34:44PM +0200, Zhi Wang wrote:
> On Thu, 20 Nov 2025 10:03:45 -0500
> Peter Colberg <pcolberg@redhat.com> wrote:
>
> Hi Peter:
>
> I met some errors when compiling on driver-core-next branch, you can
> fix those in the next spin.
>
> Fixes:
>
> diff --git a/drivers/gpu/nova-core/driver.rs
> b/drivers/gpu/nova-core/driver.rs index ca0d5f8ad54b..730e745cad63
> 100644 --- a/drivers/gpu/nova-core/driver.rs
> +++ b/drivers/gpu/nova-core/driver.rs
> @@ -49,6 +49,7 @@ pub(crate) struct NovaCore {
> ]
> );
>
> +#[vtable]
> impl pci::Driver for NovaCore {
> type IdInfo = ();
> const ID_TABLE: pci::IdTable<Self::IdInfo> = &PCI_TABLE;
>
> diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs
> index d6cc5d7e7cd7..2d68db076f92 100644
> --- a/rust/kernel/pci.rs
> +++ b/rust/kernel/pci.rs
> @@ -292,6 +292,7 @@ macro_rules! pci_device_table {
> /// ]
> /// );
> ///
> +/// #[vtable]
> /// impl pci::Driver for MyDriver {
> /// type IdInfo = ();
> /// const ID_TABLE: pci::IdTable<Self::IdInfo> = &PCI_TABLE;
>
> The code in the examples should be able to compile.
>
> You can enable doctest by:
>
> CONFIG_RUST_KERNEL_DOCTESTS=y
>
> Then:
>
> impl Device<device::Bound> {
> /// Returns the Physical Function (PF) device for a Virtual
> Function (VF) device. ///
> /// # Examples
> ///
>
> snip
>
> /// ```
> /// let pf_pdev = vf_pdev.physfn()?;
> /// let pf_drvdata = pf_pdev.as_ref().drvdata::<MyDriver>()?;
>
> I saw this part is not able to be compiled.^
Thanks Zhi, I applied all fixes.
Peter
>
> Z.
>
> > On Thu, Nov 20, 2025 at 08:32:13AM +0200, Zhi Wang wrote:
> > > On Wed, 19 Nov 2025 17:19:04 -0500
> > > Peter Colberg <pcolberg@redhat.com> wrote:
> > >
> > > Hi Peter:
> > >
> > > Thanks for the patches. :) I will test them with nova-core and come
> > > back with Tested-bys.
> >
> > Perfect, thanks Zhi.
> >
> > > Nit: Let's use "kernel vertical" styles on imports. [1]
> > >
> > > [1]
> > > https://lore.kernel.org/all/20251105120352.77603-1-dakr@kernel.org/
> >
> > Thanks, done for patch "samples: rust: add SR-IOV driver sample".
> >
> > Peter
> >
> > >
> > > > Add Rust abstractions for the Single Root I/O Virtualization
> > > > (SR-IOV) capability of a PCI device. Provide a minimal set of
> > > > wrappers for the SR-IOV C API to enable and disable SR-IOV for a
> > > > device, and query if a PCI device is a Physical Function (PF) or
> > > > Virtual Function (VF).
> > > >
> > > > Using the #[vtable] attribute, extend the pci::Driver trait with
> > > > an optional bus callback sriov_configure() that is invoked when a
> > > > user-space application writes the number of VFs to the sysfs file
> > > > `sriov_numvfs` to enable SR-IOV, or zero to disable SR-IOV [1].
> > > >
> > > > Add a method physfn() to return the Physical Function (PF) device
> > > > for a Virtual Function (VF) device in the bound device context.
> > > > Unlike for a PCI driver written in C, guarantee that when a VF
> > > > device is bound to a driver, the underlying PF device is bound to
> > > > a driver, too.
> > > >
> > > > When a device with enabled VFs is unbound from a driver, invoke
> > > > the sriov_configure() callback to disable SR-IOV before the
> > > > unbind() callback. To ensure the guarantee is upheld, call
> > > > disable_sriov() to remove all VF devices if the driver has not
> > > > done so already.
> > > >
> > > > This series is based on Danilo Krummrich's series
> > > > "Device::drvdata() and driver/driver interaction (auxiliary)"
> > > > applied to driver-core-next, which similarly guarantees that when
> > > > an auxiliary bus device is bound to a driver, the underlying
> > > > parent device is bound to a driver, too [2].
> > > >
> > > > Add an SR-IOV driver sample that exercises the SR-IOV capability
> > > > using QEMU's 82576 (igb) emulation and was used to test the
> > > > abstractions [3].
> > > >
> > > > [1] https://docs.kernel.org/PCI/pci-iov-howto.html
> > > > [2]
> > > > https://lore.kernel.org/rust-for-linux/20251020223516.241050-1-dakr@kernel.org/
> > > > [3] https://www.qemu.org/docs/master/system/devices/igb.html
> > > >
> > > > Signed-off-by: Peter Colberg <pcolberg@redhat.com>
> > > > ---
> > > > John Hubbard (1):
> > > > rust: pci: add is_virtfn(), to check for VFs
> > > >
> > > > Peter Colberg (7):
> > > > rust: pci: add is_physfn(), to check for PFs
> > > > rust: pci: add {enable,disable}_sriov(), to control SR-IOV
> > > > capability rust: pci: add num_vf(), to return number of VFs
> > > > rust: pci: add vtable attribute to pci::Driver trait
> > > > rust: pci: add bus callback sriov_configure(), to control
> > > > SR-IOV from sysfs rust: pci: add physfn(), to return PF device
> > > > for VF device samples: rust: add SR-IOV driver sample
> > > >
> > > > MAINTAINERS | 1 +
> > > > rust/kernel/pci.rs | 148
> > > > ++++++++++++++++++++++++++++++++++ samples/rust/Kconfig
> > > > | 11 +++ samples/rust/Makefile | 1 +
> > > > samples/rust/rust_dma.rs | 1 +
> > > > samples/rust/rust_driver_auxiliary.rs | 1 +
> > > > samples/rust/rust_driver_pci.rs | 1 +
> > > > samples/rust/rust_driver_sriov.rs | 107
> > > > ++++++++++++++++++++++++ 8 files changed, 271 insertions(+)
> > > > ---
> > > > base-commit: e4addc7cc2dfcc19f1c8c8e47f3834b22cb21559
> > > > change-id: 20251026-rust-pci-sriov-ca8f501b2ae3
> > > >
> > > > Best regards,
> > >
> >
> >
>
prev parent reply other threads:[~2025-11-21 17:05 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-19 22:19 [PATCH 0/8] rust: pci: add abstractions for SR-IOV capability Peter Colberg
2025-11-19 22:19 ` [PATCH 1/8] rust: pci: add is_virtfn(), to check for VFs Peter Colberg
2025-11-21 3:00 ` kernel test robot
2025-11-21 18:27 ` Peter Colberg
2025-12-07 6:28 ` Joel Fernandes
2025-12-09 18:22 ` Peter Colberg
2025-11-19 22:19 ` [PATCH 2/8] rust: pci: add is_physfn(), to check for PFs Peter Colberg
2025-11-21 4:35 ` kernel test robot
2025-12-07 6:35 ` Joel Fernandes
2025-12-09 18:24 ` Peter Colberg
2025-11-19 22:19 ` [PATCH 3/8] rust: pci: add {enable,disable}_sriov(), to control SR-IOV capability Peter Colberg
2025-11-21 23:28 ` Jason Gunthorpe
2025-12-23 19:17 ` Peter Colberg
2026-01-06 1:22 ` Jason Gunthorpe
2026-02-05 21:27 ` Peter Colberg
2025-12-07 6:33 ` Joel Fernandes
2025-12-09 17:59 ` Peter Colberg
2025-11-19 22:19 ` [PATCH 4/8] rust: pci: add num_vf(), to return number of VFs Peter Colberg
2025-11-19 22:19 ` [PATCH 5/8] rust: pci: add vtable attribute to pci::Driver trait Peter Colberg
2025-11-19 22:19 ` [PATCH 6/8] rust: pci: add bus callback sriov_configure(), to control SR-IOV from sysfs Peter Colberg
2025-11-21 6:00 ` kernel test robot
2025-11-19 22:19 ` [PATCH 7/8] rust: pci: add physfn(), to return PF device for VF device Peter Colberg
2025-11-21 7:57 ` kernel test robot
2025-11-21 23:26 ` Jason Gunthorpe
2025-11-22 10:23 ` Danilo Krummrich
2025-11-22 16:16 ` Jason Gunthorpe
2025-11-22 18:57 ` Leon Romanovsky
2025-11-22 22:26 ` Danilo Krummrich
2025-11-23 6:34 ` Leon Romanovsky
2025-11-23 10:07 ` Danilo Krummrich
2025-11-23 11:18 ` Leon Romanovsky
2025-11-24 13:57 ` Jason Gunthorpe
2025-11-24 14:53 ` Leon Romanovsky
2025-11-24 15:04 ` Jason Gunthorpe
2025-11-24 15:11 ` Leon Romanovsky
2025-11-22 22:43 ` Danilo Krummrich
2025-11-24 13:59 ` Jason Gunthorpe
2025-12-04 21:07 ` Peter Colberg
2025-11-19 22:19 ` [PATCH 8/8] samples: rust: add SR-IOV driver sample Peter Colberg
2025-11-20 6:41 ` Zhi Wang
2025-11-20 15:49 ` Peter Colberg
2025-11-20 6:32 ` [PATCH 0/8] rust: pci: add abstractions for SR-IOV capability Zhi Wang
2025-11-20 15:03 ` Peter Colberg
2025-11-20 18:34 ` Zhi Wang
2025-11-20 21:16 ` Zhi Wang
2025-11-21 17:05 ` Peter Colberg [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aSCbxjbNJPPy2NVd@earendel \
--to=pcolberg@redhat.com \
--cc=a.hindborg@kernel.org \
--cc=abdiel.janulgue@gmail.com \
--cc=acourbot@nvidia.com \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=apopple@nvidia.com \
--cc=bhelgaas@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=david.m.ertman@intel.com \
--cc=gary@garyguo.net \
--cc=gregkh@linuxfoundation.org \
--cc=ira.weiny@intel.com \
--cc=jgg@ziepe.ca \
--cc=jhubbard@nvidia.com \
--cc=joelagnelf@nvidia.com \
--cc=kwilczynski@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=robin.murphy@arm.com \
--cc=rust-for-linux@vger.kernel.org \
--cc=tmgross@umich.edu \
--cc=zhiw@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.