Message ID | 20191023100425.12168-7-stefanha@redhat.com |
---|---|
State | New |
Headers | show |
Series | libqos: add VIRTIO PCI 1.0 support | expand |
----- Original Message ----- > From: "Stefan Hajnoczi" <stefanha@redhat.com> > Sent: Wednesday, October 23, 2019 12:04:15 PM > > VIRTIO Device Initialization requires feature negotiation. The libqos > virtio-9p driver lacks feature negotiation and is therefore > non-compliant. > > libqos tests acknowledge all feature bits advertised by the device, > except VIRTIO_F_BAD_FEATURE (which devices use to detect broken > drivers!) and VIRTIO_RING_F_EVENT_IDX (which is not implemented in > libqos and accepting it would break notifications). > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > tests/libqos/virtio-9p.c | 6 ++++++ > 1 file changed, 6 insertions(+) Reviewed-by: Thomas Huth" <thuth@redhat.com>
diff --git a/tests/libqos/virtio-9p.c b/tests/libqos/virtio-9p.c index 8c9efce3e1..77dbfb62ad 100644 --- a/tests/libqos/virtio-9p.c +++ b/tests/libqos/virtio-9p.c @@ -32,6 +32,12 @@ static void virtio_9p_cleanup(QVirtio9P *interface) static void virtio_9p_setup(QVirtio9P *interface) { + uint64_t features; + + features = qvirtio_get_features(interface->vdev); + features &= ~(QVIRTIO_F_BAD_FEATURE | (1ull << VIRTIO_RING_F_EVENT_IDX)); + qvirtio_set_features(interface->vdev, features); + interface->vq = qvirtqueue_setup(interface->vdev, alloc, 0); qvirtio_set_driver_ok(interface->vdev); }
VIRTIO Device Initialization requires feature negotiation. The libqos virtio-9p driver lacks feature negotiation and is therefore non-compliant. libqos tests acknowledge all feature bits advertised by the device, except VIRTIO_F_BAD_FEATURE (which devices use to detect broken drivers!) and VIRTIO_RING_F_EVENT_IDX (which is not implemented in libqos and accepting it would break notifications). Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- tests/libqos/virtio-9p.c | 6 ++++++ 1 file changed, 6 insertions(+)