qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 0/5] vhost-user: Add SHMEM_MAP/UNMAP requests


From: Albert Esteve
Subject: [PATCH v3 0/5] vhost-user: Add SHMEM_MAP/UNMAP requests
Date: Thu, 12 Sep 2024 16:53:30 +0200

Hi all,

v2->v3:
- Add track for mapped memory in VIRTIO
  Shared memory regions, so that boundaries
  can be verified when a request for
  new mmap is received
- Use address_space_read/write() for
  MEM_READ/_WRITE handling methods.
- Improve/fix support for flexible
  array members for MEM_READ/_WRITE requests.
- Split documentation into a separate patch.
- Various small fixes from previous review.

The usecase for this patch is, e.g., to support
vhost-user-gpu RESOURCE_BLOB operations,
or DAX Window request for virtio-fs. In
general, any operation where a backend
need to request the frontend to mmap an
fd into a VIRTIO Shared Memory Region,
so that the guest can then access it.

After receiving the SHMEM_MAP/UNMAP request,
the frontend will perform the mmap with the
instructed parameters (i.e., shmid, shm_offset,
fd_offset, fd, lenght).

As there are already a couple devices
that could benefit of such a feature,
and more could require it in the future,
the goal is to make the implementation
generic.

To that end, the VIRTIO Shared Memory
Region list is declared in the `VirtIODevice`
struct.

This patch also includes:
SHMEM_CONFIG frontend request that is
specifically meant to allow generic
vhost-user-device frontend to be able to
query VIRTIO Shared Memory settings from the
backend (as this device is generic and agnostic
of the actual backend configuration).

Finally, MEM_READ/WRITE backend requests are
added to deal with a potential issue when having
any backend sharing a descriptor that references
a mapping to another backend. The first
backend will not be able to see these
mappings. So these requests are a fallback
for vhost-user memory translation fails.

Albert Esteve (5):
  vhost-user: Add VIRTIO Shared Memory map request
  virtio: Track shared memory mappings
  vhost_user: Add frontend command for shmem config
  vhost-user-dev: Add cache BAR
  vhost_user: Add MEM_READ/WRITE backend requests

 hw/virtio/vhost-user-base.c               |  37 ++-
 hw/virtio/vhost-user-device-pci.c         |  39 +++-
 hw/virtio/vhost-user.c                    | 273 ++++++++++++++++++++--
 hw/virtio/virtio.c                        |  59 +++++
 include/hw/virtio/vhost-backend.h         |   6 +
 include/hw/virtio/vhost-user.h            |   1 +
 include/hw/virtio/virtio.h                |  26 +++
 subprojects/libvhost-user/libvhost-user.c | 144 ++++++++++++
 subprojects/libvhost-user/libvhost-user.h |  90 +++++++
 9 files changed, 648 insertions(+), 27 deletions(-)

-- 
2.45.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]