From: Simon Song <xinmengs@nvidia.com>
To: <dakr@kernel.org>, <acourbot@nvidia.com>, <kvm@vger.kernel.org>,
<rust-for-linux@vger.kernel.org>, <nova-gpu@lists.linux.dev>,
<linux-pci@vger.kernel.org>
Cc: <alex@shazbot.org>, <jgg@nvidia.com>, <yishaih@nvidia.com>,
<skolothumtho@nvidia.com>, <kevin.tian@intel.com>,
<airlied@gmail.com>, <simona@ffwll.ch>, <ojeda@kernel.org>,
<alex.gaynor@gmail.com>, <boqun.feng@gmail.com>,
<gary@garyguo.net>, <bjorn3_gh@protonmail.com>,
<lossin@kernel.org>, <a.hindborg@kernel.org>,
<aliceryhl@google.com>, <tmgross@umich.edu>,
<markus.probst@posteo.de>, <jhubbard@nvidia.com>,
<apopple@nvidia.com>, <joelagnelf@nvidia.com>,
<ecourtney@nvidia.com>, <cjia@nvidia.com>, <smitra@nvidia.com>,
<kjaju@nvidia.com>, <alkumar@nvidia.com>, <ankita@nvidia.com>,
<aniketa@nvidia.com>, <kwankhede@nvidia.com>,
<targupta@nvidia.com>, <linux-kernel@vger.kernel.org>,
<zhiwang@kernel.org>, <zhiw@nvidia.com>, <boqun@kernel.org>,
<daniel.almeida@collabora.com>, <tamird@kernel.org>,
<work@onurozkan.dev>, <jgg@ziepe.ca>, <bhelgaas@google.com>,
<kwilczynski@kernel.org>, <dri-devel@lists.freedesktop.org>,
<peter@colberg.org>, <xinmengs@nvidia.com>
Subject: [PATCH v6 00/11] Add Rust PCI SR-IOV support
Date: Wed, 11 Nov 2026 14:33:25 -0800 [thread overview]
Message-ID: <20261111223337.508989-1-xinmengs@nvidia.com> (raw)
Rust PCI drivers need to configure SR-IOV and let VF drivers borrow
selected PF-owned data. This series provides those operations and a
registration that keeps the shared data available until VF removal
completes.
This builds on Peter Colberg's Rust PCI SR-IOV series [1] and Danilo
Krummrich's typed PF registration design [2]. The PF/VF sample demonstrates
the interface using QEMU's 82576 emulation.
Drivers implement separate sriov_enable() and sriov_disable() callbacks,
each receiving pinned driver data and a token for the requested operation.
Enabling VFs returns a guard that disables them if later setup fails.
Returning the guard successfully leaves the VFs enabled, with
VfRegistration owning their final teardown. Drivers that do not share
data with VFs can register ().
Changes since v5 [3]:
- Stub the SR-IOV API when CONFIG_PCI_IOV is disabled instead of
cfg-gating it, so drivers need no configuration guards, following
Danilo's suggested diff [4].
- Add SriovEnable::enable_all() (patch 9), following Danilo's
suggestion [4].
- Split the drvdata_borrow() safety documentation fix into its own
patch (patch 5), and explain why driver data is dropped before
remove() returns, following Danilo's and Alexandre's review.
- Use NonZero<u16> for the requested VF count, const_assert!() and
#[optional] for the paired SR-IOV callbacks, and document the errors
returned by SriovEnable::enable(), following Alexandre's review.
- Build the sample as a single module with the PF and VF drivers in
separate files, and simplify it, following Danilo's and Alexandre's
review.
- Collect Alexandre's Reviewed-by (patches 1-4, 8 and 10) and Bjorn's
Acked-by for include/linux/pci.h (patch 7).
- Dropped Alexandre's Reviewed-by from patch 7 after adding
CONFIG_PCI_IOV=n support; the revised patch needs renewed review.
[1]
https://lore.kernel.org/rust-for-linux/20260303-rust-pci-sriov-v3-0-4443c35f0c88@redhat.com/
[2]
https://lore.kernel.org/nova-gpu/DLCRZLO06SIO.LS7TWQXIPZSQ@kernel.org/
[3]
https://lore.kernel.org/all/20261030171230.196717-1-xinmengs@nvidia.com/T/
[4]
https://lore.kernel.org/nova-gpu/DMRNF7IZQ1YI.1MRPH47QJC9XC@kernel.org/
John Hubbard (1):
rust: pci: add is_virtfn(), to check for VFs
Peter Colberg (5):
rust: pci: add internal SR-IOV enable and disable helpers
rust: pci: add vtable attribute to pci::Driver trait
rust: pci: add num_vf(), to return number of VFs
rust: pci: add SR-IOV enable and disable callbacks
samples: rust: add a Rust SR-IOV PF and VF driver sample
Simon Song (1):
rust: pci: add SriovEnable::enable_all(), to enable all requested VFs
Zhi Wang (4):
rust: device: clarify the drvdata_borrow() safety requirement
rust: pci: drop driver data before remove returns
rust: pci: add typed SR-IOV PF registration data
rust: pci: add SR-IOV enable and disable tokens
MAINTAINERS | 1 +
drivers/gpu/nova-core/driver.rs | 1 +
include/linux/pci.h | 7 +
rust/helpers/pci.c | 16 +
rust/kernel/device.rs | 4 +-
rust/kernel/pci.rs | 116 +++++++
rust/kernel/pci/iov.rs | 468 ++++++++++++++++++++++++++
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 | 178 ++++++++++
samples/rust/rust_driver_sriov_vf.rs | 49 +++
14 files changed, 853 insertions(+), 2 deletions(-)
create mode 100644 rust/kernel/pci/iov.rs
create mode 100644 samples/rust/rust_driver_sriov.rs
create mode 100644 samples/rust/rust_driver_sriov_vf.rs
base-commit: 6e557330b874b0e1fdd03e8fe4c438f36c93eefa
--
2.43.7
next reply other threads:[~2026-11-11 22:35 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-11 22:33 Simon Song [this message]
2026-11-11 22:33 ` [PATCH v6 01/11] rust: pci: add internal SR-IOV enable and disable helpers Simon Song
2026-11-11 22:33 ` [PATCH v6 02/11] rust: pci: add vtable attribute to pci::Driver trait Simon Song
2026-11-11 22:33 ` [PATCH v6 03/11] rust: pci: add is_virtfn(), to check for VFs Simon Song
2026-11-11 22:33 ` [PATCH v6 04/11] rust: pci: add num_vf(), to return number of VFs Simon Song
2026-11-11 22:33 ` [PATCH v6 05/11] rust: device: clarify the drvdata_borrow() safety requirement Simon Song
2026-11-11 22:33 ` [PATCH v6 06/11] rust: pci: drop driver data before remove returns Simon Song
2026-11-11 22:33 ` [PATCH v6 07/11] rust: pci: add typed SR-IOV PF registration data Simon Song
2026-11-11 22:33 ` [PATCH v6 08/11] rust: pci: add SR-IOV enable and disable tokens Simon Song
2026-11-11 22:33 ` [PATCH v6 09/11] rust: pci: add SriovEnable::enable_all(), to enable all requested VFs Simon Song
2026-11-11 22:33 ` [PATCH v6 10/11] rust: pci: add SR-IOV enable and disable callbacks Simon Song
2026-11-11 22:33 ` [PATCH v6 11/11] samples: rust: add a Rust SR-IOV PF and VF driver sample Simon Song
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=20261111223337.508989-1-xinmengs@nvidia.com \
--to=xinmengs@nvidia.com \
--cc=a.hindborg@kernel.org \
--cc=acourbot@nvidia.com \
--cc=airlied@gmail.com \
--cc=alex.gaynor@gmail.com \
--cc=alex@shazbot.org \
--cc=aliceryhl@google.com \
--cc=alkumar@nvidia.com \
--cc=aniketa@nvidia.com \
--cc=ankita@nvidia.com \
--cc=apopple@nvidia.com \
--cc=bhelgaas@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=boqun@kernel.org \
--cc=cjia@nvidia.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=ecourtney@nvidia.com \
--cc=gary@garyguo.net \
--cc=jgg@nvidia.com \
--cc=jgg@ziepe.ca \
--cc=jhubbard@nvidia.com \
--cc=joelagnelf@nvidia.com \
--cc=kevin.tian@intel.com \
--cc=kjaju@nvidia.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=markus.probst@posteo.de \
--cc=nova-gpu@lists.linux.dev \
--cc=ojeda@kernel.org \
--cc=peter@colberg.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=skolothumtho@nvidia.com \
--cc=smitra@nvidia.com \
--cc=tamird@kernel.org \
--cc=targupta@nvidia.com \
--cc=tmgross@umich.edu \
--cc=work@onurozkan.dev \
--cc=yishaih@nvidia.com \
--cc=zhiw@nvidia.com \
--cc=zhiwang@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®