Basic hypervisor interaction hypercalls

Description

These are the bare minimum hypercalls implemented as both ioctl and
direct calls. These allow for a very basic binary to:

  • console_io - output IO via the Xen console

  • domctl stub - basic stub for domain control (different API?)

  • sysctl stub - basic stub for system control (different API?)

The idea would be this provides enough hypercall interface to query the list of domains and output their status via the xen console.

Activity

Mathieu Poirier 
May 31, 2022 at 7:28 PM

Work on domctl and sysctl has been delivered. Work on console I/O is tracked via STR-89.

Mathieu Poirier 
March 25, 2022 at 9:27 PM

Putting this story on hold until more is known about what needs to be done about STR-78. The outcome of will likely impact the work done for STR-53.

Mathieu Poirier 
March 25, 2022 at 9:13 PM

  • The bounce buffer mechanic for multi-buffer transfers is now working properly, which completes the work allowing domains to be queried using the system control interface, i.e do_sysctl().

  • Domain control transactions via do_domctl() use the same bounce buffer mechanic as the system control interface.

Mathieu Poirier 
March 21, 2022 at 3:00 PM
(edited)

Implemented the bounce buffer mechanic needed to do ioctl() transactions that involve single and multiple memory buffers. The bounce buffer mechanic for single buffer works well but multi-buffer transactions are rejected by Xen.

Next steps:

  • Fix the bounce buffer mechanic for multi-buffer transfers.

  • Sync-up with Viresh about the ioctl() calls he is currently using in his vhost-master daemon work and make those available in the xen-sys crate.

Mathieu Poirier 
March 5, 2022 at 12:12 AM

 

  • Finished doing a serious reorganisation of the xen-sys package so that new crates can be added cleanly without needing to include the original xen and xen-sys crates. Also moved the oxerun unikernel to a new “examples” directory so that new examples can be added without needing to be a unikernel as well.

  • Laid out the foundation of a new xen-ioctls crate with structures and types needed to interact with Xen’s ioctl interface.

Next step:

  • Implement a bounce buffer heuristic to request memory from Xen, which will in turn use that memory to communicate information requested by the ioctl() call to user space.

  • Use libc’s ioctl() call from a Rust unsafe context to request system information from Xen.

Delivered

Details

Assignee

Reporter

Original estimate

Time tracking

2w 2d 4h logged3w 2d 4h remaining

Sprint

Priority

Checklist

Sentry

Created September 21, 2021 at 3:36 PM
Updated May 31, 2022 at 7:28 PM
Resolved May 31, 2022 at 7:28 PM