uhyve icon indicating copy to clipboard operation
uhyve copied to clipboard

Uhyve Interface V2

Open jounathaen opened this issue 5 months ago • 1 comments

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 and Sleep 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.

jounathaen avatar Sep 18 '24 17:09 jounathaen