This allows it to test if the guest has aknowledge an invalid transport feature for SVQ. This will include packed vq layout or event_idx, where VirtIO device needs help from SVQ.
There is not needed at this moment, but since SVQ will not re-negotiate features again with the guest, a failure in acknowledge them is fatal for SVQ. Signed-off-by: Eugenio Pérez <epere...@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.h | 1 + hw/virtio/vhost-shadow-virtqueue.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-virtqueue.h index 946b2c6295..ac55588009 100644 --- a/hw/virtio/vhost-shadow-virtqueue.h +++ b/hw/virtio/vhost-shadow-virtqueue.h @@ -16,6 +16,7 @@ typedef struct VhostShadowVirtqueue VhostShadowVirtqueue; bool vhost_svq_valid_device_features(uint64_t *features); +bool vhost_svq_valid_guest_features(uint64_t *features); void vhost_svq_set_svq_kick_fd(VhostShadowVirtqueue *svq, int svq_kick_fd); void vhost_svq_set_guest_call_notifier(VhostShadowVirtqueue *svq, int call_fd); diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c index 6e0508a231..cb9ffcb015 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -62,6 +62,12 @@ bool vhost_svq_valid_device_features(uint64_t *dev_features) return true; } +/* If the guest is using some of these, SVQ cannot communicate */ +bool vhost_svq_valid_guest_features(uint64_t *guest_features) +{ + return true; +} + /* Forward guest notifications */ static void vhost_handle_guest_kick(EventNotifier *n) { -- 2.27.0