Re: [RFC PATCH 0/4] vhost_net: support for cross endian guests

Michael S. Tsirkin
2014-11-03T16:23:49Z

On Wed, Oct 29, 2014 at 09:38:41AM +0100, Cédric Le Goater wrote:
> This patchset adds a VHOST_VRING_F_BYTESWAP flag to inform the host
> to byteswap data of the vring when the guest and the host have a
> different endian order. The flag is stored at initialization in an
> attribute of the virtio queues. It is then used to byteswap, or not,
> the vring indexes and descriptors shared with the guest OS.
>
> The last patch adds the byteswapping of the virtio_net header as it
> is done in qemu.

Hi Cedric,

Thanks for submitting this.
One general problem with this approach, is that
it adds overhead e.g. for x86 on x86 unconditionally.

I will in a couple of days post a patch adding virtio 1.0
support for vhost.

This will serve as a better basis for cross-endian support in
vhost, on top.

I'll try to remember to Cc you.

> The patches apply on linux-3.18-rc2 and the tests were done on PowerPC
> using the following hosts :
>
> fedora21/ppc64, utopic/ppc64le
>
> with various guests :
>
> trusty/ppc64le, utopic/ppc64le, debian/ppc64le,
> rhel6.5/ppc64, fedora21/ppc64, debian/ppc64
>
> Regressions tests for x86_64 were done a debian host using rhel6.6,
> fedora20 and debian guests.
>
>
> Cédric Le Goater (4):
> vhost: add VHOST_VRING_F_BYTESWAP flag
> vhost: add byteswap routines
> vhost: byteswap virtqueue attributes
> vhost_net: byteswap virtio_net header
>
> drivers/vhost/net.c | 39 +++++++++---
> drivers/vhost/vhost.c | 150 ++++++++++++++++++++++++++++++++++++++++----
> drivers/vhost/vhost.h | 1 +
> include/uapi/linux/vhost.h | 3 +
> 4 files changed, 171 insertions(+), 22 deletions(-)
>
> --
> 1.7.10.4