Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How does Unikraft support Xen's PV, PVH and HVM interfaces? #69

Closed
rianquinn opened this issue Nov 15, 2020 · 3 comments
Closed

How does Unikraft support Xen's PV, PVH and HVM interfaces? #69

rianquinn opened this issue Nov 15, 2020 · 3 comments

Comments

@rianquinn
Copy link

Currently working on implementing the Xen PVH/HVM interfaces in MicroV:
https://github.com/Bareflank/MicroV

The issue is, the Xen PVH/HVM interfaces heavily rely on PV and as a result, are not compatible with technologies like AMD's SEV/ES/SNP or Intel's MKTME/TDX. To fix this, I am working @andyhhp who has plans for on an HVM ABI v2 which will hopefully address the above issues, but requires a fair amount of work to implement and prove out.

Which Xen interfaces does Unikraft currently implement? PV, PVH or HVM? If Unikraft uses the Xen PVH interfaces instead of PV/HVM, it might be a good place to start WRT to implementing the PVH component of the HVM ABI v2 interfaces before moving onto Linux support.

@skuenzer
Copy link
Member

On Xen, we currently support only the PV interface. We based our boot code on Mini-OS. In principle, I think it should not be too hard to add support for PVH or HVM code today. @marmarek had started a PVH port for Unikraft a while ago (https://events19.linuxfoundation.org/events/xensummit-2019/program/schedule/). If you are interested, we could try to figure out what the last state is. Alternatively, we have a quite progressed KVM port. Maybe this one could be a base for HVM support.

However, I think it could also be an valuable option to add native support for your MicroV hypervisor. Our idea is to specialize the full software stack including the target execution environment. For this purpose you would implement a platform library for MicroV that covers boot strapping, console output, and hypervisor interaction. Drivers, like the Xen frontends or virtio, could even be re-used.

What do you think? MicroV looks definitely interesting to us.

@marmarek
Copy link

Regarding my attempts at PVM in Unikraft, the main goal was to get MirageOS to support PVH. In the end, this was achieved via Solo5 instead of Unikraft, and my Unikraft+PVH work was basically abandoned. You can find some pieces here: https://github.com/marmarek/unikraft/tree/xen-on-freestanding-pvh

@rianquinn
Copy link
Author

@skuenzer For now, MicroV's goal is to provide an alternative implementation of the Xen hypervisor (just the ring -1 part), using the HVM ABI v2 (which includes PVH, but specifically excludes PV). HVM ABI v2 is in very, very early development and attempts to address a number of issues with the existing interface that not only make the PVH/HVM interface a nightmare to work with, but also prevent certain technologies from being supported like SEV/ES/SNP and TDX.

For now, MicroV does not have a plan to implement it's own interface. With that said, I am still very interested in working to get Unikraft support in the future, so we should work together to ensure that Unikraft has support for the new interface (might be a good candidate for a GSoC project next year).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done!
Development

No branches or pull requests

3 participants