[PATCH v3 06/16] libqos: add missing virtio-9p feature negotiation

Stefan Hajnoczi posted 16 patches 6 years ago
Maintainers: Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Fam Zheng <fam@euphon.net>, Paolo Bonzini <pbonzini@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>
There is a newer version of this series
[PATCH v3 06/16] libqos: add missing virtio-9p feature negotiation
Posted by Stefan Hajnoczi 6 years ago
VIRTIO Device Initialization requires feature negotiation.  The libqos
virtio-9p driver lacks feature negotiation and is therefore
non-compliant.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/libqos/virtio-9p.c | 6 ++++++
 1 file changed, 6 insertions(+)

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);
 }
-- 
2.21.0


Re: [PATCH v3 06/16] libqos: add missing virtio-9p feature negotiation
Posted by Thomas Huth 6 years ago
On 19/10/2019 08.38, Stefan Hajnoczi wrote:
> VIRTIO Device Initialization requires feature negotiation.  The libqos
> virtio-9p driver lacks feature negotiation and is therefore
> non-compliant.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  tests/libqos/virtio-9p.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> 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);

Same question as with patch 4: Why just disabling these two bits and not
rather set the bits we know about?

 Thomas