Internships/ProjectIdeas/RustVMMReferenceAarch64
Extend aarch64 support in rust-vmm/vmm-reference
Summary: Flesh out aarch64 (ARM) support in vmm-reference to make its features comparable to x86_64
The vmm-reference is a reference implementation of a Rust VMM based on rust-vmm crates. This is currently used for testing the integration of rust-vmm components, with plans of extending it such that it becomes a starting point for custom Rust VMMs.
The vmm-reference currently has support for x86_64 and proof-of-concept level support for aarch64. On aarch64, it just supports booting a dummy VM with no devices, while on x86_64 it has support for the virtio-net and virtio-blk devices. The purpose of this project is to extend the existing functionality getting it closer to what is already available on x86_64, and consume the readily available crates (for example vm-allocator) that would make the integration easier.
Goals:
- Set up interrupt controller.
- Add a real-time clock device.
- Add a serial port.
- Add flattened device tree (FDT) so guest has a machine description.
(See below for a full list of tasks)
Links:
- about the vmm-reference: https://github.com/rust-vmm/vmm-reference
- about the rust-vmm project: https://github.com/rust-vmm/community
- task breakdown for adding arm support: https://github.com/rust-vmm/vmm-reference/issues?q=is%3Aissue+is%3Aopen+label%3Aaarch64
Details:
- Project size: 350 hours
- Difficulty: intermediate to advanced
- Required skills: Rust programming
- Desired skills: Python programming for integration tests
- Mentors: Andreea Florescu <fandree@amazon.com>, Sergey Glushchenko <gsserge@amazon.com> (rust-vmm Slack chat)