[RFC PATCH 05/10] img/app: add support for testing virtio-gpu

Alyssa Ross
2022-09-30T12:50:01Z

crosvm sadly doesn't support socket activation or readiness
notification, hence the sleep loop here.

I've removed the tap device as it required privileges to set up, and
was difficult to actually test with since it wouldn't be set up
correctly on the host in the same way the Spectrum host would set it
up.

Signed-off-by: Alyssa Ross <alyssa.ross@unikie.com>
---
img/app/Makefile | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/img/app/Makefile b/img/app/Makefile
index a3fefc3..145001c 100644
--- a/img/app/Makefile
+++ b/img/app/Makefile
@@ -6,6 +6,8 @@
# QEMU_KVM = qemu-system-x86_64 -enable-kvm.
QEMU_KVM = qemu-kvm
CLOUD_HYPERVISOR = cloud-hypervisor
+CROSVM = crosvm
+CROSVM_DEVICE_GPU = $(CROSVM) device gpu

prefix = /usr/local
imgdir = $(prefix)/img
@@ -96,6 +98,17 @@ build/etc/s6-rc: $(VM_S6_RC_FILES)
s6-rc-compile $@ $$dir; \
exit=$$?; rm -r $$dir; exit $$exit

+start-vhost-user-gpu:
+ rm -f vhost-user-gpu.sock
+ $(CROSVM_DEVICE_GPU) \
+ --socket vhost-user-gpu.sock \
+ --wayland-sock "$$XDG_RUNTIME_DIR/$$WAYLAND_DISPLAY" \
+ --params '{"context-types":"cross-domain"}' &
+ while ! [ -S vhost-user-gpu.sock ]; do
+ sleep 1
+ done
+.PHONY: start-vhost-user-gpu
+
run-qemu: build/host/appvm/blk/root.img
$(QEMU_KVM) -m 128 -cpu host -machine q35,kernel=$(KERNEL) -vga none \
-drive file=build/host/appvm/blk/root.img,if=virtio,format=raw,readonly=on \
@@ -108,13 +121,14 @@ run-qemu: build/host/appvm/blk/root.img
-device virtconsole,chardev=virtiocon0
.PHONY: run-qemu

-run-cloud-hypervisor: build/host/appvm/blk/root.img
+run-cloud-hypervisor: build/host/appvm/blk/root.img start-vhost-user-gpu
$(CLOUD_HYPERVISOR) \
--api-socket path=vmm.sock \
- --memory size=128M \
+ --memory size=128M,shared=on \
--disk path=build/host/appvm/blk/root.img,readonly=on \
path=$(RUN_IMG),readonly=on \
--net tap=tap0,mac=0A:B3:EC:00:00:00 \
+ --gpu socket=vhost-user-gpu.sock \
--kernel $(KERNEL) \
--cmdline "console=ttyS0 root=PARTLABEL=root" \
--console tty \
--
2.37.1