Incorrect warnings when using vhost without numa
Host environment
-
Operating system: Ubuntu 22.04
-
OS/kernel version: Linux 6.0.5+ #3 SMP PREEMPT_DYNAMIC x86_64 GNU/Linux
-
Architecture: x86_64
-
QEMU flavor: qemu-system-mips, qemu-system-x86_64
-
QEMU version: QEMU emulator version 7.1.92 (v7.1.0-1922-g7c09a7f6)
-
QEMU command line (MIPS):
qemu-system-mips \
-M malta \
-nographic \
-kernel vmlinux-5.16-malta-vsock \
-append "quiet" \
-object memory-backend-file,id=mem0,mem-path=/tmp/mem,size=128M,share=on \
-chardev socket,id=char0,reconnect=0,path=/tmp/vhost4.socket \
-device vhost-user-vsock-pci,chardev=char0
- QEMU command line (x86_64):
qemu-system-x86_64 \
-nographic \
-kernel linux5.16_vsock \
-object memory-backend-file,id=mem0,mem-path=/tmp/mem,size=128M,share=on \
-append "quiet" \
-chardev socket,id=char0,reconnect=0,path=/tmp/vhost4.socket \
-device vhost-user-vsock-pci,chardev=char0
Emulated/Virtualized environment
- Operating system: Linux - built with vsock support (
CONFIG_VSOCKETS) - OS/kernel version: 5.16
- Architecture: mips or x86_64
- MIPS kernel available at https://panda.re/qcows/linux/mips/generic/vmlinux-5.16-malta-vsock
- X86_64 kernel available at https://panda.re/qcows/linux/x86_64/generic/linux5.16_vsock
Description of problem
Part A: Misleading error message. Running the above command for any architecture fails to initialize vhost, and prints the following, incorrect advice
qemu-system-mips: Failed initializing vhost-user memory map, consider using -object memory-backend-file share=on
qemu-system-mips: vhost_set_mem_table failed: Invalid argument (22)
qemu-system-mips: Error starting vhost: 22
Since the command line already contains -object memory-backend-file,id=mem1,mem-path=/tmp/mem,size=256M,share=on this error message should not be printed. For x86_64, this can be resolved by adding -numa node,memdev=mem0 to the command line. As such, I think this error message should instead guide a user to adding that argument.
Part B: No documented configuration to run vhost-user for machines that don't support numa.
The mips malta machine does not support the -numa flag. It is unclear if this means that vhost cannot be used with this platform or if a non-numa configuration with a memory-backend-file can be used.
Steps to reproduce
- Run
vhost-user-vsock --socket=/tmp/vhost4.socket --uds-path=/tmp/foofrom https://github.com/rust-vmm/vhost-device. - Run the above QEMU command