Re: [PATCH v9 00/11] vfio/pci: Allow MMIO regions to be exported through dma-buf

Ankit Agrawal
2025-11-20T17:23:14Z

> This series extends the VFIO PCI subsystem to support exporting MMIO
> regions from PCI device BARs as dma-buf objects, enabling safe sharing of
> non-struct page memory with controlled lifetime management. This allows RDMA
> and other subsystems to import dma-buf FDs and build them into memory regions
> for PCI P2P operations.
>
> The series supports a use case for SPDK where a NVMe device will be
> owned by SPDK through VFIO but interacting with a RDMA device. The RDMA
> device may directly access the NVMe CMB or directly manipulate the NVMe
> device's doorbell using PCI P2P.
>
> However, as a general mechanism, it can support many other scenarios with
> VFIO. This dmabuf approach can be usable by iommufd as well for generic
> and safe P2P mappings.
>
> In addition to the SPDK use-case mentioned above, the capability added
> in this patch series can also be useful when a buffer (located in device
> memory such as VRAM) needs to be shared between any two dGPU devices or
> instances (assuming one of them is bound to VFIO PCI) as long as they
> are P2P DMA compatible.
>
> The implementation provides a revocable attachment mechanism using dma-buf
> move operations. MMIO regions are normally pinned as BARs don't change
> physical addresses, but access is revoked when the VFIO device is closed
> or a PCI reset is issued. This ensures kernel self-defense against
> potentially hostile userspace.
>
> The series includes significant refactoring of the PCI P2PDMA subsystem
> to separate core P2P functionality from memory allocation features,
> making it more modular and suitable for VFIO use cases that don't need
> struct page support.
>
> -----------------------------------------------------------------------
> The series is based originally on
> https://lore.kernel.org/all/20250307052248.405803-1-vivek.kasireddy@intel.com/
> but heavily rewritten to be based on DMA physical API.
> -----------------------------------------------------------------------
> The WIP branch can be found here:
> https://git.kernel.org/pub/scm/linux/kernel/git/leon/linux-rdma.git/log/?h=dmabuf-vfio-v9

Acked-by: Ankit Agrawal <ankita@nvidia.com>