Message ID | 20250217164012.246727-1-aesteve@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | vhost-user: Add SHMEM_MAP/UNMAP requests | expand |
On 17.02.25 17:40, Albert Esteve wrote: > Hi all, > Hi, looks like our debugging session was successfu :) One question below. > v3->v4 > - Change mmap strategy to use RAM blocks > and subregions. > - Add new bitfield to qmp feature map > - Followed most review comments from > last iteration. > - Merged documentation patch again with > this one. Makes more sense to > review them together after all. > - Add documentation for MEM_READ/WRITE > messages. > > The goal of this patch is to support > dynamic fd-backed memory maps initiated > from vhost-user backends. > There are many devices that could already > benefit of this feature, e.g., > virtiofs or virtio-gpu. > > After receiving the SHMEM_MAP/UNMAP request, > the frontend creates the RAMBlock form the > fd and maps it by adding it as a subregion > of the shared memory region container. > > The VIRTIO Shared Memory Region list is > declared in the `VirtIODevice` struct > to make it generic. > > TODO: There was a conversation on the > previous version around adding tests > to the patch (which I have acknowledged). > However, given the numerous changes > that the patch already has, I have > decided to send it early and collect > some feedback while I work on the > tests for the next iteration. > Given that I have been able to > test the implementation with > my local setup, I am more or less > confident that, at least, the code > is in a relatively sane state > so that no reviewing time is > wasted on broken patches. > > 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). > > - MEM_READ/WRITE backend requests are > added to deal with a potential issue when having > multiple backends sharing a file descriptor. > When a backend calls SHMEM_MAP it makes > accessing to the region fail for other > backend as it is missing from their translation > table. So these requests are a fallback > for vhost-user memory translation fails. Can you elaborate what the issue here is? Why would SHMEM_MAP make accessing the region fail for other backends -- what makes this missing from their translation?