[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v2 0/5] vhost-user: Add SHMEM_MAP/UNMAP requests
From: |
Alyssa Ross |
Subject: |
Re: [RFC PATCH v2 0/5] vhost-user: Add SHMEM_MAP/UNMAP requests |
Date: |
Thu, 11 Jul 2024 12:56:09 +0200 |
Adding David Stevens, who implemented SHMEM_MAP and SHMEM_UNMAP in
crosvm a couple of years ago.
David, I'd be particularly interested for your thoughts on the MEM_READ
and MEM_WRITE commands, since as far as I know crosvm doesn't implement
anything like that. The discussion leading to those being added starts
here:
https://lore.kernel.org/qemu-devel/20240604185416.GB90471@fedora.redhat.com/
It would be great if this could be standardised between QEMU and crosvm
(and therefore have a clearer path toward being implemented in other VMMs)!
Albert Esteve <aesteve@redhat.com> writes:
> Hi all,
>
> v1->v2:
> - Corrected typos and clarifications from
> first review
> - Added SHMEM_CONFIG frontend request to
> query VIRTIO shared memory regions from
> backends
> - vhost-user-device to use SHMEM_CONFIG
> to request and initialise regions
> - Added MEM_READ/WRITE backend requests
> in case address translation fails
> accessing VIRTIO Shared Memory Regions
> with MMAPs
>
> This is an update of my attempt to have
> backends support dynamic fd mapping into VIRTIO
> Shared Memory Regions. After the first review
> I have added more commits and new messages
> to the vhost-user protocol.
> However, I still have some doubts as to
> how will this work, specially regarding
> the MEM_READ and MEM_WRITE commands.
> Thus, I am still looking for feedback,
> to ensure that I am going in the right
> direction with the implementation.
>
> 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
> vhost_user: Add frontend command for shmem config
> vhost-user-dev: Add cache BAR
> vhost_user: Add MEM_READ/WRITE backend requests
> vhost_user: Implement mem_read/mem_write handlers
>
> docs/interop/vhost-user.rst | 58 ++++++
> hw/virtio/vhost-user-base.c | 39 +++-
> hw/virtio/vhost-user-device-pci.c | 37 +++-
> hw/virtio/vhost-user.c | 221 ++++++++++++++++++++++
> hw/virtio/virtio.c | 12 ++
> include/hw/virtio/vhost-backend.h | 6 +
> include/hw/virtio/vhost-user.h | 1 +
> include/hw/virtio/virtio.h | 5 +
> subprojects/libvhost-user/libvhost-user.c | 149 +++++++++++++++
> subprojects/libvhost-user/libvhost-user.h | 91 +++++++++
> 10 files changed, 614 insertions(+), 5 deletions(-)
>
> --
> 2.45.2
signature.asc
Description: PGP signature