mirror of https://gitee.com/openkylin/qemu.git
libvhost-user: advertise vring features
libvhost-user implements several vring features without advertising them. There is no way for the vhost-user master to detect support for these features. Things more or less work today because QEMU assumes the vhost-user backend always implements certain feature bits like VIRTIO_RING_F_EVENT_IDX. This is not documented anywhere. This patch explicitly advertises features implemented in libvhost-user so that the vhost-user master does not need to make undocumented assumptions. Feature bits that libvhost-user now advertises can be removed from vhost-user-blk.c. Devices should not be responsible for advertising vring feature bits, that is libvhost-user's job. Cc: Marc-André Lureau <marcandre.lureau@redhat.com> Cc: Jason Wang <jasowang@redhat.com> Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20200529161338.456017-1-stefanha@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
b650d5f4b1
commit
a9a5c473d2
|
@ -498,6 +498,16 @@ static bool
|
|||
vu_get_features_exec(VuDev *dev, VhostUserMsg *vmsg)
|
||||
{
|
||||
vmsg->payload.u64 =
|
||||
/*
|
||||
* The following VIRTIO feature bits are supported by our virtqueue
|
||||
* implementation:
|
||||
*/
|
||||
1ULL << VIRTIO_F_NOTIFY_ON_EMPTY |
|
||||
1ULL << VIRTIO_RING_F_INDIRECT_DESC |
|
||||
1ULL << VIRTIO_RING_F_EVENT_IDX |
|
||||
1ULL << VIRTIO_F_VERSION_1 |
|
||||
|
||||
/* vhost-user feature bits */
|
||||
1ULL << VHOST_F_LOG_ALL |
|
||||
1ULL << VHOST_USER_F_PROTOCOL_FEATURES;
|
||||
|
||||
|
|
|
@ -382,9 +382,7 @@ vub_get_features(VuDev *dev)
|
|||
1ull << VIRTIO_BLK_F_DISCARD |
|
||||
1ull << VIRTIO_BLK_F_WRITE_ZEROES |
|
||||
#endif
|
||||
1ull << VIRTIO_BLK_F_CONFIG_WCE |
|
||||
1ull << VIRTIO_F_VERSION_1 |
|
||||
1ull << VHOST_USER_F_PROTOCOL_FEATURES;
|
||||
1ull << VIRTIO_BLK_F_CONFIG_WCE;
|
||||
|
||||
if (vdev_blk->enable_ro) {
|
||||
features |= 1ull << VIRTIO_BLK_F_RO;
|
||||
|
|
Loading…
Reference in New Issue