This RFC is about enabling virtio-fs on s390x. For that we need + some shim code (first patch), and we need + libvhost-user to deal with virtio endiannes as mandated by the spec. The second part is trickier, because unlike QEMU we are not certain about the guest's native endianness, which is needed to handle the legacy-interface appropriately. In fact, this is the reason why just RFC.
One of the open questions is whether to build separate versions, one for guest little endian and one for guest big endian, or do we want something like a command line option? (Digression on the libvirt modeling) A third option would be to refuse legacy altogether. libvhost-access.h is based on hw/virtio/virtio-access.h. How to use? For general instructions how to use virtio-fs (on x86) please have a look at https://virtio-fs.gitlab.io/howto-qemu.html. Most of the instructions can also be applied on s390x. In short: 1. Install self-compiled QEMU with this patch series applied 2. Prepare host and guest kernel so they support virtio-fs Start virtiofsd on the host $ virtiofsd -f --socket-path=/tmp/vhostqemu -o source=/tmp/shared Now you can start QEMU in a separate shell on the host: $ qemu-system-s390x -machine type=s390-ccw-virtio,accel=kvm,memory-backend=mem \ -object memory-backend-file,id=mem,size=2G,mem-path=/dev/shm/virtiofs,share=on,prealloc=on,prealloc-threads=1 \ -chardev socket,id=char0,path=/tmp/vhostqemu -device vhost-user-fs-ccw,queue-size=1024,chardev=char0,tag=myfs \ -drive if=virtio,file=disk.qcow2 \ -m 2G -smp 2 -nographic Log into the guest and mount it $ mount -t virtiofs myfs /mnt Halil Pasic (1): virtio: add vhost-user-fs-ccw device Marc Hartmayer (3): libvhost-user: print invalid address on vu_panic libvhost-user: handle endianness as mandated by the spec HACK: Hard-code the libvhost-user.o-cflags for s390x Makefile.objs | 1 + contrib/libvhost-user/libvhost-access.h | 87 +++++++++++++++++ contrib/libvhost-user/libvhost-user.c | 124 ++++++++++++------------ hw/s390x/Makefile.objs | 1 + hw/s390x/vhost-user-fs-ccw.c | 74 ++++++++++++++ 5 files changed, 227 insertions(+), 60 deletions(-) create mode 100644 contrib/libvhost-user/libvhost-access.h create mode 100644 hw/s390x/vhost-user-fs-ccw.c -- 2.25.4