oxidecomputer / oxidecomputer/propolis
viona: would be nice to test I/O!
Nobody has claimed this yet.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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