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

Cedric Le Goater
2014-11-04T08:07:47Z

On 11/03/2014 05:23 PM, Michael S. Tsirkin wrote:
> 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.

Yes but it should be possible to #ifdef most of the routines to
make them transparent for x86.

> 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.

ok. I will rework the patchset on top of it then.

> I'll try to remember to Cc you.

Thanks.

C.

>> 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
>