[Rust-vmm] Goals for this list

Liguori, Anthony aliguori at amazon.com
Mon Dec 17 23:30:58 UTC 2018


Very excited about this list and eager to begin discussions.  I wanted to start with what I see as the low hanging fruit and I what I see as the goal of this effort.

I'd like to build a set of crates, preferrably with a common name, that make it really easy to write VMMs in Rust.  I think Rust is an ideal language for building VMMs and that if the right primitives are there, a lot of interesting VMMs will emerge.

Some ideas I have for what would make good core creates:

1) KVM bindgen bindings.  Right now, there is an issue with bindgen misgenerating code when encountering empty trailing arrays which are used in KVM.  Both crosvm and Firecracker get around this by modifying the headers by hand and then committing the results of bindgen.  Dylan also mentioned that they were unhappy about bindgen performance but this seems like an eventual optimization to me.

As a side note, I think having OS X hypervisor framework bindings and whatever the new Windows thing is would be pretty cool.  Maybe there's room for a wrapper around the three but it's not something that interesting to me in the near term.

2) The crosvm data_model crate.  This one is super critical but easy to misunderstand as it allows for safe access to volatile memory.  Somewhat related is the mmap() bits from sys_util.  Not sure how the crosvm folks feel but I think there is some refactoring here that could be useful to build a memory crate.

3) Some traits for device model implementations.  It's easy to really bike shed here so I reckon it's best to start with a concrete device model like a UART, work through what is required for interfaces, and then iterate from there.

4) Common device models with only a single implementation (i.e. 16650A).  Not sure about virtio, maybe.

Curious what other people think here too.  I've got a couple weeks off coming up so I'd love to have some projects to have on here.


Anthony Liguori
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opendev.org/pipermail/rust-vmm/attachments/20181217/db916bf6/attachment.html>

More information about the Rust-vmm mailing list