uhyve
uhyve copied to clipboard
Uhyve Interface V2
The old uhyve interface is based on the outb
instruction (on x86_64). This creates issues, when the physical memory of the guest is beyond the 32-Bit boundary, as the outb
instruction only accepts 32-bit parameters.
I think the best approach is to move to MMIO based hypercalls instead (as also suggested in the KVM docu). Drawback: They are slower than IO based hypercalls.
Whilst on it, I redefined the hypercall interface and added the definition for possible future hypercalls.
Summary:
- Adding serial read hypercalls.
- Adding shared memory hypercalls
- removing the cmdline/environment hypercalls (this should be a boot parameter instead: https://github.com/hermit-os/hermit-entry/pull/38)
- Removing the unused networking hypercalls (we can add network related hypercalls later)
- Adding
GetTime
andSleep
hypercalls
This is a non-breaking change, as the old hypercall interface can still be implemented in uhhve. However, Currently, the memory where the hypercalls are mapped is mapped as regular memory. However, this will be changed in https://github.com/hermit-os/uhyve/pull/725 The old interface can be marked deprecated and be removed in future versions.