Message ID | 20190614093121.5580-3-xieyongji@baidu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | virtio: fix some issues of "started" and "start_on_kick" flag | expand |
On Fri, 14 Jun 2019 17:31:18 +0800 elohimes@gmail.com wrote: > From: Xie Yongji <xieyongji@baidu.com> > > Besides virtio 1.0 transitional devices, we should also > set "start_on_kick" flag for legacy devices (virtio 0.9). > > Signed-off-by: Xie Yongji <xieyongji@baidu.com> > --- Reviewed-by: Greg Kurz <groug@kaod.org> > hw/virtio/virtio.c | 6 ++---- > include/hw/virtio/virtio.h | 2 +- > 2 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index 19062fbb96..473881e9ec 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -1212,8 +1212,7 @@ void virtio_reset(void *opaque) > k->reset(vdev); > } > > - vdev->start_on_kick = (virtio_host_has_feature(vdev, VIRTIO_F_VERSION_1) && > - !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)); > + vdev->start_on_kick = !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1); > vdev->started = false; > vdev->broken = false; > vdev->guest_features = 0; > @@ -2325,8 +2324,7 @@ void virtio_init(VirtIODevice *vdev, const char *name, > g_malloc0(sizeof(*vdev->vector_queues) * nvectors); > } > > - vdev->start_on_kick = (virtio_host_has_feature(vdev, VIRTIO_F_VERSION_1) && > - !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)); > + vdev->start_on_kick = !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1); > vdev->started = false; > vdev->device_id = device_id; > vdev->status = 0; > diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h > index 15d5366939..b189788cb2 100644 > --- a/include/hw/virtio/virtio.h > +++ b/include/hw/virtio/virtio.h > @@ -107,7 +107,7 @@ struct VirtIODevice > bool broken; /* device in invalid state, needs reset */ > bool use_started; > bool started; > - bool start_on_kick; /* virtio 1.0 transitional devices support that */ > + bool start_on_kick; /* when virtio 1.0 feature has not been negotiated */ > VMChangeStateEntry *vmstate; > char *bus_name; > uint8_t device_endian;
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 19062fbb96..473881e9ec 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1212,8 +1212,7 @@ void virtio_reset(void *opaque) k->reset(vdev); } - vdev->start_on_kick = (virtio_host_has_feature(vdev, VIRTIO_F_VERSION_1) && - !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)); + vdev->start_on_kick = !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1); vdev->started = false; vdev->broken = false; vdev->guest_features = 0; @@ -2325,8 +2324,7 @@ void virtio_init(VirtIODevice *vdev, const char *name, g_malloc0(sizeof(*vdev->vector_queues) * nvectors); } - vdev->start_on_kick = (virtio_host_has_feature(vdev, VIRTIO_F_VERSION_1) && - !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)); + vdev->start_on_kick = !virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1); vdev->started = false; vdev->device_id = device_id; vdev->status = 0; diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index 15d5366939..b189788cb2 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -107,7 +107,7 @@ struct VirtIODevice bool broken; /* device in invalid state, needs reset */ bool use_started; bool started; - bool start_on_kick; /* virtio 1.0 transitional devices support that */ + bool start_on_kick; /* when virtio 1.0 feature has not been negotiated */ VMChangeStateEntry *vmstate; char *bus_name; uint8_t device_endian;