On Fri, Jun 28, 2024 at 04:57:07PM +0200, Albert Esteve wrote: > The frontend can use this command to retrieve > VIRTIO Shared Memory Regions configuration from > the backend. The response contains the number of > shared memory regions, their size, and shmid. > > This is useful when the frontend is unaware of > specific backend type and configuration, > for example, in the `vhost-user-device` case. > > Signed-off-by: Albert Esteve <aest...@redhat.com> > --- > docs/interop/vhost-user.rst | 31 +++++++++++++++++++++++ > hw/virtio/vhost-user.c | 42 +++++++++++++++++++++++++++++++ > include/hw/virtio/vhost-backend.h | 6 +++++ > include/hw/virtio/vhost-user.h | 1 + > 4 files changed, 80 insertions(+) > > diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst > index d52ba719d5..51f01d1d84 100644 > --- a/docs/interop/vhost-user.rst > +++ b/docs/interop/vhost-user.rst > @@ -348,6 +348,19 @@ Device state transfer parameters > In the future, additional phases might be added e.g. to allow > iterative migration while the device is running. > > +VIRTIO Shared Memory Region configuration > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > + > ++-------------+---------+------------+----+------------+ > +| num regions | padding | mem size 0 | .. | mem size 7 | > ++-------------+---------+------------+----+------------+ > + > +:num regions: a 32-bit number of regions > + > +:padding: 32-bit > + > +:mem size: 64-bit size of VIRTIO Shared Memory Region > + > C structure > ----------- > > @@ -369,6 +382,10 @@ In QEMU the vhost-user message is implemented with the > following struct: > VhostUserConfig config; > VhostUserVringArea area; > VhostUserInflight inflight; > + VhostUserShared object; > + VhostUserTransferDeviceState transfer_state; > + VhostUserMMap mmap; > + VhostUserShMemConfig shmem; > }; > } QEMU_PACKED VhostUserMsg; > > @@ -1051,6 +1068,7 @@ Protocol features > #define VHOST_USER_PROTOCOL_F_XEN_MMAP 17 > #define VHOST_USER_PROTOCOL_F_SHARED_OBJECT 18 > #define VHOST_USER_PROTOCOL_F_DEVICE_STATE 19 > + #define VHOST_USER_PROTOCOL_F_SHMEM 20 > > Front-end message types > ----------------------- > @@ -1725,6 +1743,19 @@ Front-end message types > Using this function requires prior negotiation of the > ``VHOST_USER_PROTOCOL_F_DEVICE_STATE`` feature. > > +``VHOST_USER_GET_SHMEM_CONFIG`` > + :id: 44 > + :equivalent ioctl: N/A > + :request payload: N/A > + :reply payload: ``struct VhostUserShMemConfig`` > + > + When the ``VHOST_USER_PROTOCOL_F_SHMEM`` protocol feature has been > + successfully negotiated, this message can be submitted by the front-end > + to gather the VIRTIO Shared Memory Region configuration. Back-end will > respond > + with the number of VIRTIO Shared Memory Regions it requires, and each > shared memory > + region size in an array. The shared memory IDs are represented by the index > + of the array.
Please add: - The Shared Memory Region size must be a multiple of the page size supported by mmap(2). - The size may be 0 if the region is unused. This can happen when the device does not support an optional feature but does support a feature that uses a higher shmid.
signature.asc
Description: PGP signature