RE: [PATCH v1 0/7] vfio: Implement VFIO_DEVICE_FEATURE_DMA_BUF and use it in virtio-gpu

Kasireddy, Vivek posted 7 patches 1 month, 1 week ago
Only 0 patches received!
RE: [PATCH v1 0/7] vfio: Implement VFIO_DEVICE_FEATURE_DMA_BUF and use it in virtio-gpu
Posted by Kasireddy, Vivek 1 month, 1 week ago
Hi Cedric,

> Subject: Re: [PATCH v1 0/7] vfio: Implement
> VFIO_DEVICE_FEATURE_DMA_BUF and use it in virtio-gpu
> 
> Vivek,
> 
> On 10/4/25 01:35, Vivek Kasireddy wrote:
> > The virtio-gpu driver running in the Guest VM can create Guest blob
> > resources (by importing dmabufs) that are backed by System RAM. This
> > is made possible by making use of memfd memory backend and udmabuf
> > driver on the Host side. However, in order to create Guest blobs
> > that are backed by vfio-pci device regions (which happens when
> > virtio-gpu imports dmabufs from devices that have local memory such
> > as dGPU VFs), we have to implement VFIO_DEVICE_FEATURE_DMA_BUF and
> > leverage it in virtio-gpu.
> >
> > So, while creating the blobs we use memory_region_is_ram_device() to
> > figure out if the blob is backed by memfd or a vfio-pci device. If
> > it is determined that the blob is backed by vfio-pci device region,
> > instead of calling into udmabuf driver to create dmabuf we would
> > now call into vfio-pci driver to have a dmabuf created on the Host.
> >
> > RFC -> v1:
> > - Create the CPU mapping using vfio device fd if the dmabuf exporter
> >    (vfio-pci) does not provide mmap() support (Akihiko)
> > - Log a warning with LOG_GUEST_ERROR instead of warn_report() when
> >    dmabuf cannot be created using Guest provided addresses (Akihiko)
> > - Use address_space_translate() instead of gpa2hva() to obtain the
> >    Host addresses (Akihiko)
> > - Rearrange the patches and improve the commit messages (Akihiko)
> > - Fix compilation error when VFIO is not enabled (Alex)
> > - Add a new helper to obtain VFIO region index from memory region
> > - Move vfio_device_create_dmabuf() to hw/vfio/device.c
> >
> > Tested with an SRIOV enabled Intel dGPU by running Gnome Wayland
> 
> Could you please be more precise on the HW ?
Ok, I'll mention the specific model.

> 
> > (in the VM) and Qemu with the following (relevant) parameters:
> > -device vfio-pci,host=0000:03:00.1
> > -device virtio-vga,max_outputs=1,xres=1920,yres=1080,blob=true
> > -display gtk,gl=on
> >
> > Associated vfio-pci kernel driver series:
> > https://lore.kernel.org/dri-devel/cover.1754311439.git.leon@kernel.org/
> > Associated virtio-gpu kernel driver series (merged):
> > https://lore.kernel.org/dri-devel/20241126031643.3490496-1-
> vivek.kasireddy@intel.com/
> >
> > ---
> > Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
> > Cc: Alex Bennée <alex.bennee@linaro.org>
> > Cc: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
> > Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> > Cc: Alex Williamson <alex.williamson@redhat.com>
> > Cc: Cédric Le Goater <clg@redhat.com>
> > Cc: Leon Romanovsky <leon@kernel.org>
> > Cc: Leon Romanovsky <leonro@nvidia.com>
> > Cc: Jason Gunthorpe <jgg@nvidia.com>
> > Cc: Dongwon Kim <dongwon.kim@intel.com>
> >
> > Vivek Kasireddy (7):
> >    virtio-gpu: Recreate the resource's dmabuf if new backing is attached
> >    virtio-gpu: Don't rely on res->blob to identify blob resources
> >    virtio-gpu: Find hva for Guest's DMA addr associated with a ram device
> >    vfio/region: Add a helper to get region index from memory region
> >    linux-headers: Update vfio.h to include VFIO_DEVICE_FEATURE_DMA_BUF
> >    vfio/device: Add support for VFIO_DEVICE_FEATURE_DMA_BUF
> >    virtio-gpu-udmabuf: Create dmabuf for blobs associated with VFIO
> >      devices
> >
> >   hw/display/Kconfig              |   5 ++
> >   hw/display/virtio-gpu-udmabuf.c | 143
> ++++++++++++++++++++++++++++++--
> >   hw/display/virtio-gpu.c         |  53 +++++++++---
> >   hw/vfio/device.c                |  43 ++++++++++
> >   hw/vfio/region.c                |  14 ++++
> >   include/hw/vfio/vfio-device.h   |   5 ++
> >   linux-headers/linux/vfio.h      |  25 ++++++
> >   7 files changed, 270 insertions(+), 18 deletions(-)
> >
> 
> Please cc: Alex and I on all patches.
Sure, will do.

Thanks,
Vivek

> 
> Thanks,
> 
> C.