David Woodhouse dwmw2@infradead.org writes:
[[S/MIME Signed Part:Undecided]] On Mon, 2021-09-13 at 13:44 +0100, Alex Bennée wrote:
Hi,
As we consider the next cycle for Project Stratos I would like to make some more progress on hypervisor agnosticism for our virtio backends. While we have implemented a number of virtio vhost-user backends using C we've rapidly switched to using rust-vmm based ones for virtio-i2c, virtio-rng and virtio-gpio. Given the interest in Rust for implementing backends does it make sense to do some enabling work in rust-vmm to support Xen?
I like this idea.
Somewhat separately, Alex Agache has already started some preliminary hacking on supporting Xen guests within rust-vmm (on top of Linux/KVM): https://github.com/alexandruag/vmm-reference/commits/xen
I'll be sending along a more detailed post once I've finished my work breakdown but I'm currently envisioning two parts. A xen-sys crate for the low level access that supports both ioctl and hypercall calls. This would be useful for other projects such as stubdomains (think a "bare-metal" RTOS with some sort of backend, uni-kernel style). It would also be the lowest layer that rust-vmm can use to interact with the hypervisor.
I'm aware the HyperV solution is to present a KVM-like ioctl interface via the host kernel. However if we want generality with type-1 hypervisors we can't assume all will get suitable translation layers in the kernel.
Fortunately for the time being our focus is on virtio backends so we don't need to get directly involved in the hypervisor run loop... for now.
Being able to run on *actual* Xen would be good too. And we should also aspire to do guest-transparent live migration between the two hosting environments.
Where relevant, it would be great to be able to share components (like emulation of the Xen PCI platform device, a completely single-tenant XenStore implementation dedicated to a single guest, perhaps PV netback/blkback and other things).
For Stratos portable virtio backends is one of our project goals.
[[End of S/MIME Signed Part]]