Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932861AbbDNPWf (ORCPT ); Tue, 14 Apr 2015 11:22:35 -0400 Received: from e06smtp12.uk.ibm.com ([195.75.94.108]:47207 "EHLO e06smtp12.uk.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932795AbbDNPWS (ORCPT ); Tue, 14 Apr 2015 11:22:18 -0400 Date: Tue, 14 Apr 2015 17:22:07 +0200 From: Cornelia Huck To: Greg Kurz Cc: Rusty Russell , "Michael S. Tsirkin" , linux-api@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: Re: [PATCH v4 7/8] vhost: feature to set the vring endianness Message-ID: <20150414172207.4d872643.cornelia.huck@de.ibm.com> In-Reply-To: <20150414171352.105909ae@bahia.local> References: <20150410101500.31843.61248.stgit@bahia.local> <20150410101627.31843.21710.stgit@bahia.local> <20150414162023.2f8694fe.cornelia.huck@de.ibm.com> <20150414171352.105909ae@bahia.local> Organization: IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz =?UTF-8?B?R2VzY2jDpGZ0c2bDvGhydW5nOg==?= Dirk Wittkopp Sitz der Gesellschaft: =?UTF-8?B?QsO2Ymxpbmdlbg==?= Registergericht: Amtsgericht Stuttgart, HRB 243294 X-Mailer: Claws Mail 3.8.0 (GTK+ 2.24.10; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15041415-0009-0000-0000-000003CFCE98 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2224 Lines: 72 On Tue, 14 Apr 2015 17:13:52 +0200 Greg Kurz wrote: > On Tue, 14 Apr 2015 16:20:23 +0200 > Cornelia Huck wrote: > > > On Fri, 10 Apr 2015 12:19:16 +0200 > > Greg Kurz 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) > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/