]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
vhost: cross-endian support for legacy devices
authorGreg Kurz <gkurz@linux.vnet.ibm.com>
Fri, 24 Apr 2015 12:27:24 +0000 (14:27 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 1 Jun 2015 13:48:55 +0000 (15:48 +0200)
commit2751c9882b947292fcfb084c4f604e01724af804
treea90f16c6a6b79835d5c6db04a46f6099d880d87a
parent7d82410950aa74adccf035c332e409af2bb93e92
vhost: cross-endian support for legacy devices

This patch brings cross-endian support to vhost when used to implement
legacy virtio devices. Since it is a relatively rare situation, the
feature availability is controlled by a kernel config option (not set
by default).

The vq->is_le boolean field is added to cache the endianness to be
used for ring accesses. It defaults to native endian, as expected
by legacy virtio devices. When the ring gets active, we force little
endian if the device is modern. When the ring is deactivated, we
revert to the native endian default.

If cross-endian was compiled in, a vq->user_be boolean field is added
so that userspace may request a specific endianness. This field is
used to override the default when activating the ring of a legacy
device. It has no effect on modern devices.

Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
drivers/vhost/Kconfig
drivers/vhost/vhost.c
drivers/vhost/vhost.h
include/uapi/linux/vhost.h