• Greg Kurz's avatar
    vhost: cross-endian support for legacy devices · 2751c988
    Greg Kurz authored
    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: default avatarGreg Kurz <gkurz@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Reviewed-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
    Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    2751c988
vhost.c 41.8 KB