On Thu, 29 Sep 2022 12:14:21 +0200 Tu Dinh Ngoc <dinhngoc.tu@xxxxxxx> wrote: Hi, thanks for the quick change! > VIRTIO_RING_F_EVENT_IDX is a bit position value, but > virtio_init_device_vq populates vq->use_event_idx by ANDing this value > directly to vdev->features. > > Fix the check for this flag in virtio_init_device_vq. I am afraid you need a Signed-off-by: line here, but for the code: Reviewed-by: Andre Przywara <andre.przywara@xxxxxxx> Cheers, Andre > --- > virtio/core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/virtio/core.c b/virtio/core.c > index f432421..ea0e5b6 100644 > --- a/virtio/core.c > +++ b/virtio/core.c > @@ -165,7 +165,7 @@ void virtio_init_device_vq(struct kvm *kvm, struct virtio_device *vdev, > struct vring_addr *addr = &vq->vring_addr; > > vq->endian = vdev->endian; > - vq->use_event_idx = (vdev->features & VIRTIO_RING_F_EVENT_IDX); > + vq->use_event_idx = (vdev->features & (1UL << VIRTIO_RING_F_EVENT_IDX)); > vq->enabled = true; > > if (addr->legacy) {