[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
- [PATCH v3 0/5] vhost-user: Add SHMEM_MAP/UNMAP requests,
Albert Esteve <=