mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
vhost-user: add new vhost user messages to support virtio config space
Add VHOST_USER_GET_CONFIG/VHOST_USER_SET_CONFIG messages which can be used for live migration of vhost user devices, also vhost user devices can benefit from the messages to get/set virtio config space from/to the I/O target. For the purpose to support virtio config space change, VHOST_USER_SLAVE_CONFIG_CHANGE_MSG message is added as the event notifier in case virtio config space change in the slave I/O target. Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
1bcf209154
commit
4c3e257b5e
5 changed files with 232 additions and 0 deletions
|
@ -119,6 +119,19 @@ Depending on the request type, payload can be:
|
|||
- 3: IOTLB invalidate
|
||||
- 4: IOTLB access fail
|
||||
|
||||
* Virtio device config space
|
||||
-----------------------------------
|
||||
| offset | size | flags | payload |
|
||||
-----------------------------------
|
||||
|
||||
Offset: a 32-bit offset of virtio device's configuration space
|
||||
Size: a 32-bit configuration space access size in bytes
|
||||
Flags: a 32-bit value:
|
||||
- 0: Vhost master messages used for writeable fields
|
||||
- 1: Vhost master messages used for live migration
|
||||
Payload: Size bytes array holding the contents of the virtio
|
||||
device's configuration space
|
||||
|
||||
In QEMU the vhost-user message is implemented with the following struct:
|
||||
|
||||
typedef struct VhostUserMsg {
|
||||
|
@ -132,6 +145,7 @@ typedef struct VhostUserMsg {
|
|||
VhostUserMemory memory;
|
||||
VhostUserLog log;
|
||||
struct vhost_iotlb_msg iotlb;
|
||||
VhostUserConfig config;
|
||||
};
|
||||
} QEMU_PACKED VhostUserMsg;
|
||||
|
||||
|
@ -623,6 +637,32 @@ Master message types
|
|||
and expect this message once (per VQ) during device configuration
|
||||
(ie. before the master starts the VQ).
|
||||
|
||||
* VHOST_USER_GET_CONFIG
|
||||
|
||||
Id: 24
|
||||
Equivalent ioctl: N/A
|
||||
Master payload: virtio device config space
|
||||
Slave payload: virtio device config space
|
||||
|
||||
Submitted by the vhost-user master to fetch the contents of the virtio
|
||||
device configuration space, vhost-user slave's payload size MUST match
|
||||
master's request, vhost-user slave uses zero length of payload to
|
||||
indicate an error to vhost-user master. The vhost-user master may
|
||||
cache the contents to avoid repeated VHOST_USER_GET_CONFIG calls.
|
||||
|
||||
* VHOST_USER_SET_CONFIG
|
||||
|
||||
Id: 25
|
||||
Equivalent ioctl: N/A
|
||||
Master payload: virtio device config space
|
||||
Slave payload: N/A
|
||||
|
||||
Submitted by the vhost-user master when the Guest changes the virtio
|
||||
device configuration space and also can be used for live migration
|
||||
on the destination host. The vhost-user slave must check the flags
|
||||
field, and slaves MUST NOT accept SET_CONFIG for read-only
|
||||
configuration space fields unless the live migration bit is set.
|
||||
|
||||
Slave message types
|
||||
-------------------
|
||||
|
||||
|
@ -641,6 +681,21 @@ Slave message types
|
|||
This request should be send only when VIRTIO_F_IOMMU_PLATFORM feature
|
||||
has been successfully negotiated.
|
||||
|
||||
* VHOST_USER_SLAVE_CONFIG_CHANGE_MSG
|
||||
|
||||
Id: 2
|
||||
Equivalent ioctl: N/A
|
||||
Slave payload: N/A
|
||||
Master payload: N/A
|
||||
|
||||
Vhost-user slave sends such messages to notify that the virtio device's
|
||||
configuration space has changed, for those host devices which can support
|
||||
such feature, host driver can send VHOST_USER_GET_CONFIG message to slave
|
||||
to get the latest content. If VHOST_USER_PROTOCOL_F_REPLY_ACK is
|
||||
negotiated, and slave set the VHOST_USER_NEED_REPLY flag, master must
|
||||
respond with zero when operation is successfully completed, or non-zero
|
||||
otherwise.
|
||||
|
||||
VHOST_USER_PROTOCOL_F_REPLY_ACK:
|
||||
-------------------------------
|
||||
The original vhost-user specification only demands replies for certain
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue