Message ID | 20160107113226.10897.23886.stgit@bahia.huguette.org |
---|---|
State | New |
Headers | show |
On 07/01/2016 12:32, Greg Kurz wrote: > Indeed vhost doesn't need to ask for vring endian fixing if the device is > virtio 1.0, since it is already handled by the in-kernel vhost driver. This > patch simply consolidates the logic into the existing helper. > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> > --- > hw/virtio/vhost.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c > index 2e1e792d599e..aef750df22ad 100644 > --- a/hw/virtio/vhost.c > +++ b/hw/virtio/vhost.c > @@ -750,6 +750,9 @@ static void vhost_log_stop(MemoryListener *listener, > > static inline bool vhost_needs_vring_endian(VirtIODevice *vdev) > { > + if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { > + return false; > + } > #ifdef TARGET_IS_BIENDIAN > #ifdef HOST_WORDS_BIGENDIAN > return !virtio_is_big_endian(vdev); > @@ -811,8 +814,7 @@ static int vhost_virtqueue_start(struct vhost_dev *dev, > return -errno; > } > > - if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) && > - vhost_needs_vring_endian(vdev)) { > + if (vhost_needs_vring_endian(vdev)) { > r = vhost_virtqueue_set_vring_endian_legacy(dev, > virtio_is_big_endian(vdev), > vhost_vq_index); > @@ -908,8 +910,7 @@ static void vhost_virtqueue_stop(struct vhost_dev *dev, > /* In the cross-endian case, we need to reset the vring endianness to > * native as legacy devices expect so by default. > */ > - if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) && > - vhost_needs_vring_endian(vdev)) { > + if (vhost_needs_vring_endian(vdev)) { > r = vhost_virtqueue_set_vring_endian_legacy(dev, > !virtio_is_big_endian(vdev), > vhost_vq_index); > > IMHO, I think 4/6 and 5/6 can be merged as there is no change in the behavior and they are only consolidating code.
On Thu, 7 Jan 2016 21:07:26 +0100 Laurent Vivier <lvivier@redhat.com> wrote: > > > On 07/01/2016 12:32, Greg Kurz wrote: > > Indeed vhost doesn't need to ask for vring endian fixing if the device is > > virtio 1.0, since it is already handled by the in-kernel vhost driver. This > > patch simply consolidates the logic into the existing helper. > > > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > > Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> > > --- > > hw/virtio/vhost.c | 9 +++++---- > > 1 file changed, 5 insertions(+), 4 deletions(-) > > > > diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c > > index 2e1e792d599e..aef750df22ad 100644 > > --- a/hw/virtio/vhost.c > > +++ b/hw/virtio/vhost.c > > @@ -750,6 +750,9 @@ static void vhost_log_stop(MemoryListener *listener, > > > > static inline bool vhost_needs_vring_endian(VirtIODevice *vdev) > > { > > + if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { > > + return false; > > + } > > #ifdef TARGET_IS_BIENDIAN > > #ifdef HOST_WORDS_BIGENDIAN > > return !virtio_is_big_endian(vdev); > > @@ -811,8 +814,7 @@ static int vhost_virtqueue_start(struct vhost_dev *dev, > > return -errno; > > } > > > > - if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) && > > - vhost_needs_vring_endian(vdev)) { > > + if (vhost_needs_vring_endian(vdev)) { > > r = vhost_virtqueue_set_vring_endian_legacy(dev, > > virtio_is_big_endian(vdev), > > vhost_vq_index); > > @@ -908,8 +910,7 @@ static void vhost_virtqueue_stop(struct vhost_dev *dev, > > /* In the cross-endian case, we need to reset the vring endianness to > > * native as legacy devices expect so by default. > > */ > > - if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) && > > - vhost_needs_vring_endian(vdev)) { > > + if (vhost_needs_vring_endian(vdev)) { > > r = vhost_virtqueue_set_vring_endian_legacy(dev, > > !virtio_is_big_endian(vdev), > > vhost_vq_index); > > > > > > IMHO, I think 4/6 and 5/6 can be merged as there is no change in the > behavior and they are only consolidating code. > Maybe but I'm not sure it is really needed to help acceptance. FWIW Cornelia already reviewed both patches.
On Fri, 8 Jan 2016 10:21:40 +0100 Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > On Thu, 7 Jan 2016 21:07:26 +0100 > Laurent Vivier <lvivier@redhat.com> wrote: > > IMHO, I think 4/6 and 5/6 can be merged as there is no change in the > > behavior and they are only consolidating code. > > > > Maybe but I'm not sure it is really needed to help acceptance. > FWIW Cornelia already reviewed both patches. I'd keep the two patches separate, as each is easier to understand on its own IMO.
On 08/01/2016 11:07, Cornelia Huck wrote: > On Fri, 8 Jan 2016 10:21:40 +0100 > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > >> On Thu, 7 Jan 2016 21:07:26 +0100 >> Laurent Vivier <lvivier@redhat.com> wrote: > >>> IMHO, I think 4/6 and 5/6 can be merged as there is no change in the >>> behavior and they are only consolidating code. >>> >> >> Maybe but I'm not sure it is really needed to help acceptance. >> FWIW Cornelia already reviewed both patches. > > I'd keep the two patches separate, as each is easier to understand on > its own IMO. > Ok, no problem. Laurent
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 2e1e792d599e..aef750df22ad 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -750,6 +750,9 @@ static void vhost_log_stop(MemoryListener *listener, static inline bool vhost_needs_vring_endian(VirtIODevice *vdev) { + if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { + return false; + } #ifdef TARGET_IS_BIENDIAN #ifdef HOST_WORDS_BIGENDIAN return !virtio_is_big_endian(vdev); @@ -811,8 +814,7 @@ static int vhost_virtqueue_start(struct vhost_dev *dev, return -errno; } - if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) && - vhost_needs_vring_endian(vdev)) { + if (vhost_needs_vring_endian(vdev)) { r = vhost_virtqueue_set_vring_endian_legacy(dev, virtio_is_big_endian(vdev), vhost_vq_index); @@ -908,8 +910,7 @@ static void vhost_virtqueue_stop(struct vhost_dev *dev, /* In the cross-endian case, we need to reset the vring endianness to * native as legacy devices expect so by default. */ - if (!virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1) && - vhost_needs_vring_endian(vdev)) { + if (vhost_needs_vring_endian(vdev)) { r = vhost_virtqueue_set_vring_endian_legacy(dev, !virtio_is_big_endian(vdev), vhost_vq_index);