Message ID | 20191023100425.12168-5-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:13 PM > > VIRTIO Device Initialization requires feature negotiation. Currently > virtio-scsi-test.c is 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/virtio-scsi-test.c | 8 ++++++++ > 1 file changed, 8 insertions(+) Reviewed-by: Thomas Huth" <thuth@redhat.com>
diff --git a/tests/virtio-scsi-test.c b/tests/virtio-scsi-test.c index 7c8f9b27f8..0415e75876 100644 --- a/tests/virtio-scsi-test.c +++ b/tests/virtio-scsi-test.c @@ -123,10 +123,16 @@ static QVirtioSCSIQueues *qvirtio_scsi_init(QVirtioDevice *dev) QVirtioSCSIQueues *vs; const uint8_t test_unit_ready_cdb[VIRTIO_SCSI_CDB_SIZE] = {}; struct virtio_scsi_cmd_resp resp; + uint64_t features; int i; vs = g_new0(QVirtioSCSIQueues, 1); vs->dev = dev; + + features = qvirtio_get_features(dev); + features &= ~(QVIRTIO_F_BAD_FEATURE | (1ull << VIRTIO_RING_F_EVENT_IDX)); + qvirtio_set_features(dev, features); + vs->num_queues = qvirtio_config_readl(dev, 0); g_assert_cmpint(vs->num_queues, <, MAX_NUM_QUEUES); @@ -135,6 +141,8 @@ static QVirtioSCSIQueues *qvirtio_scsi_init(QVirtioDevice *dev) vs->vq[i] = qvirtqueue_setup(dev, alloc, i); } + qvirtio_set_driver_ok(dev); + /* Clear the POWER ON OCCURRED unit attention */ g_assert_cmpint(virtio_scsi_do_command(vs, test_unit_ready_cdb, NULL, 0, NULL, 0, &resp),
VIRTIO Device Initialization requires feature negotiation. Currently virtio-scsi-test.c is 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/virtio-scsi-test.c | 8 ++++++++ 1 file changed, 8 insertions(+)