Add HIP 0001 ring buffer proposal for Hyperlight I/O - #1112
Conversation
jsturtevant
left a comment
There was a problem hiding this comment.
This looks great, thanks for such a detailed write up. Left a few minor comments but otherwise this seems like it would set up the project to work well for the future
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
2318367 to
25f5d22
Compare
There was a problem hiding this comment.
Pull request overview
This pull request adds HIP 0001, a comprehensive proposal document for implementing a virtio-inspired ring buffer mechanism for Hyperlight I/O. The proposal aims to replace the current stack-based communication model with a more efficient ring buffer approach to reduce VM exits and enable streaming communication patterns.
Changes:
- Adds a detailed technical proposal document describing the ring buffer design, API, and implementation plan
- Updates typos.toml to allow "readables" and "writables" as valid terms used in the proposal
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 10 comments.
| File | Description |
|---|---|
| proposals/0001-rng-buf/README.md | Comprehensive HIP document describing virtio-inspired ring buffer design with memory layout, API examples, and implementation plan |
| typos.toml | Adds exceptions for "readables" and "writables" terms used in the proposal document |
|
Really great work on this HIP, @andreiltd! Loved seeing the diagrams, extensive testing plan, code, and whatnot. A few thoughts: 1. Side-by-side comparison suggestion I think the HIP could benefit from a more explicit side-by-side comparison in the "Comparison with current implementation" section. Something like a table showing:
I feel like this would help readers quickly grasp the key difference in the two approaches. 2. Related work in Nanvix fork I've done some similar work in the Nanvix hyperlight fork that might be relevant: 76c9e7c There, I added a 3. Single-threaded vs multi-threaded phasing For the multi-threaded case (guest and host on separate threads), the host would need a way to interrupt the running guest when responses are ready--yes? For that, I've also done related work for that in Nanvix's Hyperlight fork: a897cad for KVM. My hardware interrupts work enables PIC/APIC interrupt injection which could support the ioeventfd-style notifications mentioned in the HIP. Happy to coordinate on this when the time comes :) The backward compatibility goal (current function call model portable without public API changes) is really cool to see--great for downstream consumers like Nanvix. Looking forward to seeing this land! |
Fix typos Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Tomasz Andrzejak <andreiltd@users.noreply.github.com>
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
a2a24cf to
934dee7
Compare
syntactically
left a comment
There was a problem hiding this comment.
I mostly really like this! Left a few minor nits, and a couple of bigger comments clarifying the question of where buffers get allocated.
I didn't review the Rust type design in detail, as I understand that is going to be updated shortly.
syntactically
left a comment
There was a problem hiding this comment.
I have some minor comments on the Rust definitions as well.
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
Rendered