On Wed, Jun 5, 2024 at 1:16 PM Stefan Hajnoczi <stefa...@redhat.com> wrote:

> On Wed, Jun 05, 2024 at 09:24:36AM +0200, Albert Esteve wrote:
> > On Tue, Jun 4, 2024 at 8:16 PM Stefan Hajnoczi <stefa...@redhat.com>
> wrote:
> >
> > > On Thu, May 30, 2024 at 05:22:22PM +0200, Albert Esteve wrote:
> > > > Hi all,
> > > >
> > > > This is an early attempt to have backends
> > > > support dynamic fd mapping into shared
> > > > memory regions. As such, there are a few
> > > > things that need settling, so I wanted to
> > > > post this first to have some early feedback.
> > > >
> > > > The usecase for this 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
> > > > would need to mmap an fd to a shared
> > > > memory so that the guest can access it.
> > >
> > > I wanted to mention that this sentence confuses me because:
> > >
> > > - The frontend will mmap an fd into the guest's memory space so that a
> > >   VIRTIO Shared Memory Region is exposed to the guest. The backend
> > >   requests the frontend to perform this operation. The backend does not
> > >   invoke mmap itself.
> > >
> >
> > Sorry for the confused wording. It is true that the backend does not
> > do the mmap, but requests it to be done. One point of confusion for
> > me from your sentence is that I refer to the driver as the frontend,
>
> They are different concepts. Frontend is defined in the vhost-user spec
> and driver is defined in the VIRTIO spec.
>

Ah! I see. Then you may probably want to ignore some of my responses to
other mail of this series :P

Thanks for the clarification.


>
> The frontend is the application that uses vhost-user protocol messages
> to communicate with the backend.
>
> The driver uses VIRTIO device model interfaces like virtqueues to
> communicate with the device.
>
> > and the mapping is done by the VMM (i.e., QEMU).
> >
> > But yeah, I agree and the scenario you describe is what
> > I had in mind. Thanks for pointing it out. I will rephrase it
> > in follow-up patches.
>
> Thanks!
>
> >
> >
> > >
> > > - "Shared memory" is ambiguous. Please call it VIRTIO Shared Memory
> > >   Region to differentiate from vhost-user shared memory tables/regions.
> > >
> >
> > Ok!
> >
> >
> > >
> > > > The request will be processed by the VMM,
> > > > that will, in turn, trigger a 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,
> > > > my intention was to make it generic.
> > > >
> > > > To that end, I declared the shared
> > > > memory region list in `VirtIODevice`.
> > > > I could add a couple commodity
> > > > functions to add new regions to the list,
> > > > so that the devices can use them. But
> > > > I wanted to gather some feedback before
> > > > refining it further, as I am probably
> > > > missing some required steps/or security
> > > > concerns that I am not taking into account.
> > > >
> > > > Albert Esteve (1):
> > > >   vhost-user: add shmem mmap request
> > > >
> > > >  docs/interop/vhost-user.rst |  23 ++++++++
> > > >  hw/virtio/vhost-user.c      | 106
> ++++++++++++++++++++++++++++++++++++
> > > >  hw/virtio/virtio.c          |   2 +
> > > >  include/hw/virtio/virtio.h  |   3 +
> > > >  4 files changed, 134 insertions(+)
> > > >
> > > > --
> > > > 2.44.0
> > > >
> > >
>

Reply via email to