On 19/10/2019 08.38, Stefan Hajnoczi wrote: > According to VIRTIO 1.1 "3.1.1 Driver Requirements: Device > Initialization", configuration space and virtqueues cannot be accessed > before features have been negotiated. Enforce this requirement. > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > tests/libqos/virtio.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/tests/libqos/virtio.c b/tests/libqos/virtio.c > index 4f7e6bb8a1..2593996c98 100644 > --- a/tests/libqos/virtio.c > +++ b/tests/libqos/virtio.c > @@ -13,23 +13,33 @@ > #include "standard-headers/linux/virtio_config.h" > #include "standard-headers/linux/virtio_ring.h" > > +/* Features must be negotiated before config space or virtqueue access */ > +static void check_features_negotiated(QVirtioDevice *d) > +{ > + g_assert_cmphex(d->features, !=, 0); > +}
Isn't it "legal" to negotiate 0 feature bits, too (for legacy devices)? Thomas