oxidecomputer / oxidecomputer/propolis

viona: would be nice to test I/O!

Open
#1,174 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

testing
Dominant language
Rust
Stars
270
Forks
42
Avg merge
4d 5h
Merged PRs (30d)
6

Description

the stub "VirtioNetDriver" for the in-Propolis virtio-net tests really only covers the control interface for a NIC. it sets up some rings and then does not use them at all.

I punted on figuring out moving data on the rings because I wasn't sure how we'd observe device interrupts in this context - there's technically a VM, so it could receive interrupts, but the plumbing for a VM to get an interrupt and then poke an I/O port or something for the test harness to be told about the interrupt.. seems bad.

instead of doing .. whatever that would be .. we can probably just pretend it's a poll-mode driver and have a Rust thread that spins looking at rings to tell when progress happens. that at least lets us write tests covering device I/O, and if we switch out how we find out about activity in the future the tests might not need to change!

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the VirtioNetDriver stub in lib/propolis/src/hw/virtio/viona.rs, especially the linked lines, and inspect how its rings are set up in the existing in-Propolis virtio-net tests. Define the ring activity and polling behavior needed to observe progress, then add device-I/O coverage whose tests demonstrate data moving through the rings.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking, testing
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.