On Mon, Oct 21, 2019 at 02:15:53PM +0200, Thomas Huth wrote: > 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)?
Yes, it's possible for Legacy devices. If someone ever does that they'll need to extend this code, but it's unlikely so I'd rather not complicate this. Stefan
signature.asc
Description: PGP signature