Hi, This serie introduces helpers to enable virtio devices in a cross-endian environment. As of today, we only have legacy virtio but hopefully this helpers will be reused when we implement virtio 1.0.
Some assumptions are made for the legacy implementation: - all guest cpus have the same endianness - all virtio devices have the same endianness - endianness does not change while the device is in use The decision to byteswap or not is hence controlled by a global variable that gets initialized on the virtio reset path for each device. This is slightly suboptimal, but since reset is not a critical path, it is a viable solution. Of course, this patchset needs some arch specific enablement to be fully functionnal (PPC patches have already been posted to support KVM and TCG). The changes since the last post are: - fixed SoB lines and subjects, as suggested by Andreas - fixed missing virtio_ in patch 2/8, spotted by Cornelia - relicensed virtio-access.h to GPLv2+ in patch 1/8, as requested by Rusty Thanks for your comments. Best Regards. -- Greg --- Greg Kurz (1): virtio-9p: use virtio wrappers to access headers Rusty Russell (7): virtio_get_byteswap: function for endian-ambivalent targets using virtio virtio: allow byte swapping for vring and config access virtio-net: use virtio wrappers to access headers virtio-balloon: use virtio wrappers to access page frame numbers virtio-blk: use virtio wrappers to access headers virtio-scsi: use virtio wrappers to access headers virtio-serial-bus: use virtio wrappers to access headers hw/9pfs/virtio-9p-device.c | 3 + hw/block/virtio-blk.c | 35 +++++----- hw/char/virtio-serial-bus.c | 34 +++++---- hw/net/virtio-net.c | 15 ++-- hw/scsi/virtio-scsi.c | 33 +++++---- hw/virtio/virtio-balloon.c | 3 + hw/virtio/virtio.c | 38 ++++++---- include/hw/virtio/virtio-access.h | 134 +++++++++++++++++++++++++++++++++++++ include/hw/virtio/virtio.h | 2 + stubs/Makefile.objs | 1 stubs/virtio_get_byteswap.c | 6 ++ 11 files changed, 230 insertions(+), 74 deletions(-) create mode 100644 include/hw/virtio/virtio-access.h create mode 100644 stubs/virtio_get_byteswap.c