Internships/ProjectIdeas/RustVMMReferenceAarch64: Difference between revisions

From QEMU
(Created page with "=== 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-re...")
 
No edit summary
 
Line 26: Line 26:
* about the vmm-reference: https://github.com/rust-vmm/vmm-reference
* about the vmm-reference: https://github.com/rust-vmm/vmm-reference
* about the rust-vmm project: https://github.com/rust-vmm/community
* about the rust-vmm project: https://github.com/rust-vmm/community
* task breakdown for adding arm support:
* task breakdown for adding arm support: https://github.com/rust-vmm/vmm-reference/issues?q=is%3Aissue+is%3Aopen+label%3Aaarch64
https://github.com/rust-vmm/vmm-reference/issues?q=is%3Aissue+is%3Aopen+label%3Aaarch64


'''Details:'''
'''Details:'''

Latest revision as of 12:53, 25 February 2022

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:

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)