mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Zhi Wang <zhiw@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, jhubbard@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,
	"Zhi Wang" <zhiw@nvidia.com>, "Boqun Feng" <boqun@kernel.org>,
	"Daniel Almeida" <daniel.almeida@collabora.com>,
	"Tamir Duberstein" <tamird@kernel.org>,
	"Onur Özkan" <work@onurozkan.dev>,
	"Jason Gunthorpe" <jgg@ziepe.ca>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	dri-devel@lists.freedesktop.org,
	"Peter Colberg" <peter@colberg.org>,
	"Simon Song" <xinmengs@nvidia.com>
Subject: [PATCH 0/7] Rust VFIO PCI support and NVIDIA vGPU driver
Date: Wed, 30 Sep 2026 13:57:42 +0300	[thread overview]
Message-ID: <cover.1790764573.git.zhiw@nvidia.com> (raw)

This series adds Rust support for VFIO PCI variant drivers and an NVIDIA
vGPU driver using Nova's typed SR-IOV PF services.

It follows the discussion of the original C NVIDIA vGPU VFIO variant [1]
and builds on Danilo Krummrich's Rust vGPU/VFIO proof of concept [2],
including his PCI helpers, VFIO abstractions and NVIDIA variant driver.
Keeping the variant in Rust preserves the ownership and lifetime
relationships with nova-core across the PF/VF interface, and allows
registration and first-open/last-close resources to use Rust's RAII model.

The VFIO core prerequisite is the work of Simon Song and Alex Williamson,
discussed in [3]. VFIO core previously required PCI driver data to point
directly to a vfio_pci_core_device, conflicting with Rust's typed private
data. Their changes let each driver's PM, AER and VGA callbacks recover
the core device from its own private data and pass it to shared VFIO
helpers. This addresses the concern raised in the earlier thread: the
Rust driver can retain its typed PCI private data without adding a
separate VFIO pointer to struct pci_dev.

The main changes from the PoC are:

  - Separate common VFIO device and callback-data handling from the PCI
    wrapper. Require covariant registration data when restoring erased
    lifetimes, keep callback borrows distinct from data lifetimes, and
    extend callback-scoped access to open, write and mmap.

  - Add a VFIO PCI adapter for PM, AER, reset and VGA callbacks. Register
    VFIO after publishing initialized PCI private data, and unregister
    before releasing that data.

  - Connect the typed PF instance handle to the existing Nova manager's
    implemented open, close and reset operations. Make PF service access
    fallible and reject PCI segments that do not fit the firmware's DBDF
    format.

  - Match all NVIDIA device IDs and classes through an override-only
    entry, with PCI passthrough for devices without Nova services. Wire
    up IOMMUFD PASID callbacks and passthrough BAR DMA-buffer operations.

  - Enforce the assigned BAR1 aperture for read, write and mmap as well
    as region-info queries. Set the guest device ID in VFIO's virtual
    configuration space and retain the subsystem-ID read override.

Integration branch:
https://github.com/zhiwang-nvidia/nova-core/tree/zhi/nova-vgpu-20260930

[1] https://lore.kernel.org/all/20260905081116.106613-13-zhiw@nvidia.com/
[2] https://lore.kernel.org/nova-gpu/DLCRZLO06SIO.LS7TWQXIPZSQ@kernel.org/
[3] https://lore.kernel.org/all/20260929144243.5cb913a0@nvidia.com/

Danilo Krummrich (5):
  rust: pci: add VFIO override device IDs
  rust: pci: expose the VF index within its PF
  rust: pci: allow drivers to manage DMA ownership
  rust: vfio: add PCI variant driver abstractions
  vfio/nvidia-vgpu: add the Rust VFIO variant driver

Zhi Wang (2):
  rust: vfio: separate common device handling from PCI
  gpu: nova-core: publish typed SR-IOV PF APIs

 drivers/gpu/Makefile                        |   15 +-
 drivers/gpu/nova-core/driver.rs             |   47 +
 drivers/gpu/nova-core/nova_core.rs          |    2 +
 drivers/gpu/nova-core/vgpu/vgpu_api.rs      |   82 +-
 drivers/vfio/pci/Kconfig                    |    2 +
 drivers/vfio/pci/Makefile                   |    2 +
 drivers/vfio/pci/nvidia-vgpu/Kconfig        |   20 +
 drivers/vfio/pci/nvidia-vgpu/Makefile       |    3 +
 drivers/vfio/pci/nvidia-vgpu/nvidia_vgpu.rs |  366 +++++++
 rust/bindings/bindings_helper.h             |    4 +
 rust/kernel/lib.rs                          |    2 +
 rust/kernel/pci.rs                          |   11 +
 rust/kernel/pci/iov.rs                      |    8 +
 rust/kernel/vfio.rs                         |  290 ++++++
 rust/kernel/vfio/pci.rs                     | 1038 +++++++++++++++++++
 15 files changed, 1888 insertions(+), 4 deletions(-)
 create mode 100644 drivers/vfio/pci/nvidia-vgpu/Kconfig
 create mode 100644 drivers/vfio/pci/nvidia-vgpu/Makefile
 create mode 100644 drivers/vfio/pci/nvidia-vgpu/nvidia_vgpu.rs
 create mode 100644 rust/kernel/vfio.rs
 create mode 100644 rust/kernel/vfio/pci.rs


base-commit: 808dda6545c8775ea0abce0490308ddfeb5b8178
-- 
2.53.0

             reply	other threads:[~2026-09-30 10:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-30 10:57 Zhi Wang [this message]
2026-09-30 10:57 ` [PATCH 1/7] rust: pci: add VFIO override device IDs Zhi Wang
2026-09-30 10:57 ` [PATCH 2/7] rust: pci: expose the VF index within its PF Zhi Wang
2026-09-30 15:48   ` Danilo Krummrich
2026-09-30 10:57 ` [PATCH 3/7] rust: pci: allow drivers to manage DMA ownership Zhi Wang
2026-09-30 10:57 ` [PATCH 4/7] rust: vfio: add PCI variant driver abstractions Zhi Wang
2026-09-30 10:57 ` [PATCH 5/7] rust: vfio: separate common device handling from PCI Zhi Wang
2026-09-30 10:57 ` [PATCH 6/7] gpu: nova-core: publish typed SR-IOV PF APIs Zhi Wang
2026-09-30 10:57 ` [PATCH 7/7] vfio/nvidia-vgpu: add the Rust VFIO variant driver Zhi Wang

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=cover.1790764573.git.zhiw@nvidia.com \
    --to=zhiw@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=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=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=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=xinmengs@nvidia.com \
    --cc=yishaih@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®