Linux PCI subsystem development
 help / color / mirror / Atom feed
* [PATCH v5 0/9] Add Rust PCI SR-IOV support
@ 2026-10-30 17:12 Simon Song
  2026-10-30 17:12 ` [PATCH v5 1/9] rust: pci: add internal SR-IOV enable and disable helpers Simon Song
                   ` (8 more replies)
  0 siblings, 9 replies; 19+ messages in thread
From: Simon Song @ 2026-10-30 17:12 UTC (permalink / raw)
  To: dakr, acourbot, kvm, rust-for-linux, nova-gpu, linux-pci
  Cc: alex, jgg, yishaih, skolothumtho, kevin.tian, airlied, simona,
	ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, lossin,
	a.hindborg, aliceryhl, tmgross, markus.probst, jhubbard, apopple,
	joelagnelf, ecourtney, cjia, smitra, kjaju, alkumar, ankita,
	aniketa, kwankhede, targupta, linux-kernel, zhiwang, zhiw, boqun,
	daniel.almeida, tamird, work, jgg, bhelgaas, kwilczynski,
	dri-devel, peter, xinmengs

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 samples demonstrate
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 v4 [3]:
- Add #[inline] to the small SR-IOV helpers and accessors identified in
  Sashiko's review.
- Move Device::is_virtfn() to pci.rs so it is available when CONFIG_PCI_IOV
  is disabled, following Sashiko's review.
- Remove VfRegistration::data(), following Danilo's suggestion. Remove the
  PF sample's dependent helper and request-count log, and update the
  documentation and commit messages.

[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/20261004120732.1045629-1-zhiw@nvidia.com/T/

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 Rust SR-IOV PF and VF driver samples

Zhi Wang (3):
  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/kernel/device.rs                       |   4 +-
 rust/kernel/pci.rs                          | 115 ++++++
 rust/kernel/pci/iov.rs                      | 387 ++++++++++++++++++++
 samples/rust/Kconfig                        |  12 +
 samples/rust/Makefile                       |  50 +++
 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_pf_exports.c |   9 +
 samples/rust/rust_driver_sriov_pf_main.rs   | 164 +++++++++
 samples/rust/rust_driver_sriov_vf.rs        |  70 ++++
 14 files changed, 821 insertions(+), 2 deletions(-)
 create mode 100644 rust/kernel/pci/iov.rs
 create mode 100644 samples/rust/rust_driver_sriov_pf_exports.c
 create mode 100644 samples/rust/rust_driver_sriov_pf_main.rs
 create mode 100644 samples/rust/rust_driver_sriov_vf.rs


base-commit: 414628df5e4629a39ff683924d192145a4307872
-- 
2.43.7


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2026-10-30 17:32 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-30 17:12 [PATCH v5 0/9] Add Rust PCI SR-IOV support Simon Song
2026-10-30 17:12 ` [PATCH v5 1/9] rust: pci: add internal SR-IOV enable and disable helpers Simon Song
2026-10-30 17:17   ` sashiko-bot
2026-10-30 17:12 ` [PATCH v5 2/9] rust: pci: add vtable attribute to pci::Driver trait Simon Song
2026-10-30 17:17   ` sashiko-bot
2026-10-30 17:12 ` [PATCH v5 3/9] rust: pci: add is_virtfn(), to check for VFs Simon Song
2026-10-30 17:21   ` sashiko-bot
2026-10-30 17:12 ` [PATCH v5 4/9] rust: pci: add num_vf(), to return number of VFs Simon Song
2026-10-30 17:21   ` sashiko-bot
2026-10-30 17:12 ` [PATCH v5 5/9] rust: pci: drop driver data before remove returns Simon Song
2026-10-30 17:21   ` sashiko-bot
2026-10-30 17:12 ` [PATCH v5 6/9] rust: pci: add typed SR-IOV PF registration data Simon Song
2026-10-30 17:32   ` sashiko-bot
2026-10-30 17:12 ` [PATCH v5 7/9] rust: pci: add SR-IOV enable and disable tokens Simon Song
2026-10-30 17:21   ` sashiko-bot
2026-10-30 17:12 ` [PATCH v5 8/9] rust: pci: add SR-IOV enable and disable callbacks Simon Song
2026-10-30 17:23   ` sashiko-bot
2026-10-30 17:12 ` [PATCH v5 9/9] samples: rust: add Rust SR-IOV PF and VF driver samples Simon Song
2026-10-30 17:26   ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox