Internships/ProjectIdeas/KaniProofsInRustVMM: Difference between revisions

From QEMU
Line 33: Line 33:


'''Details:'''
'''Details:'''
* Project size: 350 hours
* Project size: 175 or 350 hours, depending on how many proofs you tackle
* Skill level: intermediate
* Skill level: intermediate
* Language: Rust
* Language: Rust
* Mentor: Matias Ezequiel Vara Larsen (mvaralar@redhat.com)
* Mentor: Matias Ezequiel Vara Larsen (mvaralar@redhat.com)

Revision as of 13:40, 10 February 2025

Adding Kani proofs for Virtqueues in Rust-vmm

Summary: Verify conformance of the virtqueue implementation in rust-vmm to the VirtIO specification.

In the rust-vmm project, devices rely on the virtqueue implementation provided by the `vm-virtio` crate. This implementation is based on the VirtIO specification, which defines the behavior and requirements for virtqueues. To ensure that the implementation meets these specifications, we have been relying on unit tests that check the output of the code given specific inputs.

However, writing unit tests can be incomplete, as it's challenging to cover all possible scenarios and edge cases. During this internship, we propose a more comprehensive approach: using Kani proofs to verify that the virtqueue implementation conforms to the VirtIO specification.

Kani allows us to write exhaustive checks for all possible values, going beyond what unit tests can achieve. By writing Kani proofs, we can confirm that our implementation meets the requirements of the VirtIO specification. If a proof passes, it provides strong evidence that the virtqueue implementation is correct and conformant.

During the internship, we propose the following tasks:

Links:

Details:

  • Project size: 175 or 350 hours, depending on how many proofs you tackle
  • Skill level: intermediate
  • Language: Rust
  • Mentor: Matias Ezequiel Vara Larsen (mvaralar@redhat.com)