Link to the documentation: https://lore.kernel.org/all/20240912144432.126717-1-aest...@redhat.com/T/#t
On Thu, Sep 12, 2024 at 4:53 PM Albert Esteve <aest...@redhat.com> wrote: > 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 > >