[RFC PATCH 00/10] Initial support for VM Wayland

Alyssa Ross
2022-09-30T12:49:56Z

IMPORTANT NOTE: this series should be applied on top of my previous
series "Introduce a shared base for application VMs" [1]. This is a
bit inconvenient I know, but I haven't committed the other series yet
due to wanting to take a second pass at it.

This series adds the Spectrum-side support for running VMs that can
display Wayland windows on the host compositor, using virtio-gpu.
There are various small things still to be resolved, but it's ready
for other people to try out and test.

The easiest way to test this out is to run "vm-start hello-wayland" on
the Spectrum host. If everything goes well, a small window with a
picture of a cat (hello-wayland) should appear. This window is
running in a VM.

One particular known issue is that on one run of the new
appvm-hello-wayland, I got this error:

[12:11:52.107] libwayland: error in client communication (pid 863)

I'm not yet aware of what would cause such an error. It went away
after I rebooted and tried again. There are some other known issues
with my cloud-hypervisor patch too. See the other thread for
information on those.

[1]: https://spectrum-os.org/lists/archives/spectrum-devel/20220919073659.1703271-1-hi@alyssa.is/
[2]: https://spectrum-os.org/lists/archives/spectrum-devel/20220928170128.1583791-1-alyssa.ross@unikie.com/

Alyssa Ross (10):
host/start-vm: use MAP_SHARED memory for VMs
img/app: don't block app startup on network online
img/app: add Wayland over virtio-gpu support to kernel
vm-lib: add mesa drivers to VM
img/app: add support for testing virtio-gpu
img/app: add support for testing in crosvm
host/start-vm: factor out VM definition path
host: add support for Wayland in VMs
vm/app: add hello-wayland demo VM
host/start-vm: disable cloud-hypervisor sandbox

Documentation/creating-vms.adoc | 5 +++
host/initramfs/extfs.nix | 3 ++
host/rootfs/Makefile | 4 +++
host/rootfs/default.nix | 4 +--
host/rootfs/etc/s6-rc/ext-rc-init/up | 8 +++++
host/rootfs/etc/template/gpu/data/check | 5 +++
host/rootfs/etc/template/gpu/notification-fd | 1 +
.../etc/template/gpu/notification-fd.license | 2 ++
host/rootfs/etc/template/gpu/run | 9 ++++++
host/rootfs/etc/template/gpu/type | 1 +
host/rootfs/etc/template/gpu/type.license | 2 ++
host/start-vm/start-vm.rs | 26 +++++++++------
img/app/Makefile | 32 +++++++++++++++++--
img/app/default.nix | 3 +-
img/app/etc/mdev/iface | 2 +-
img/app/etc/mdev/listen | 12 +++++++
img/app/etc/mdev/wait | 15 +++++++++
img/app/etc/s6-rc/ok-all/contents | 1 +
img/app/shell.nix | 2 +-
vm-lib/make-vm.nix | 14 ++++++--
vm/app/catgirl.nix | 1 +
vm/app/hello-wayland.nix | 25 +++++++++++++++
vm/app/lynx.nix | 1 +
23 files changed, 159 insertions(+), 19 deletions(-)
create mode 100755 host/rootfs/etc/template/gpu/data/check
create mode 100644 host/rootfs/etc/template/gpu/notification-fd
create mode 100644 host/rootfs/etc/template/gpu/notification-fd.license
create mode 100755 host/rootfs/etc/template/gpu/run
create mode 100644 host/rootfs/etc/template/gpu/type
create mode 100644 host/rootfs/etc/template/gpu/type.license
create mode 100755 img/app/etc/mdev/listen
create mode 100755 img/app/etc/mdev/wait
create mode 100644 vm/app/hello-wayland.nix

--
2.37.1