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

Cédric Le Goater
2014-10-29T08:38:41Z

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.

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