On Tue, 14 Apr 2015 17:13:52 +0200 Greg Kurz <gkurz@xxxxxxxxxxxxxxxxxx> wrote: > On Tue, 14 Apr 2015 16:20:23 +0200 > Cornelia Huck <cornelia.huck@xxxxxxxxxx> wrote: > > > On Fri, 10 Apr 2015 12:19:16 +0200 > > Greg Kurz <gkurz@xxxxxxxxxxxxxxxxxx> wrote: > > > > > +#ifdef CONFIG_VHOST_SET_ENDIAN_LEGACY > > > +static void vhost_init_is_le(struct vhost_virtqueue *vq) > > > +{ > > > + vq->is_le = vhost_has_feature(vq, VIRTIO_F_VERSION_1) || !vq->user_be; > > > > So if the endianness is not explicitly set to BE, it will be forced to > > LE (instead of native endian)? Won't that break userspace that does not > > yet use the new interface when CONFIG_VHOST_SET_ENDIAN_LEGACY is set? > > > > If userspace doesn't use the new interface, then vq->user_be will retain its > default value that was set in vhost_vq_reset(), i.e. : > > vq->user_be = !virtio_legacy_is_little_endian(); > > This means default is native endian. > > What about adding this comment ? > > static void vhost_init_is_le(struct vhost_virtqueue *vq) > { > /* Note for legacy virtio: user_be is initialized in vhost_vq_reset() > * according to the host endianness. If userspace does not set an > * explicit endianness, the default behavior is native endian, as > * expected by legacy virtio. > */ Good idea, as this is easy to miss. > vq->is_le = vhost_has_feature(vq, VIRTIO_F_VERSION_1) || !vq->user_be; > } > > > > +} > > > +#else > > > +static void vhost_init_is_le(struct vhost_virtqueue *vq) > > > +{ > > > + if (vhost_has_feature(vq, VIRTIO_F_VERSION_1)) > > > + vq->is_le = true; > > > +} > > > +#endif > > > + > > > int vhost_init_used(struct vhost_virtqueue *vq) > > > { > > > __virtio16 last_used_idx; > > > int r; > > > - if (!vq->private_data) > > > + if (!vq->private_data) { > > > + vq->is_le = virtio_legacy_is_little_endian(); > > > return 0; > > > + } > > > + > > > + vhost_init_is_le(vq); > > > > > > r = vhost_update_used_flags(vq); > > > if (r) > _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization