@@ -70,7 +70,7 @@ in performance degradation. A ring buffer can mitigate this overhead by:
7070### Non-Goals
7171
7272- 100% virtio specification compliance
73- - Indirect descriptor table support (deffered to future work if needed)
73+ - Indirect descriptor table support (deferred to future work if needed)
7474- Immediate async/await integration (deferred to future work)
7575
7676## Proposal
@@ -140,7 +140,7 @@ in the picture below. The `addr` field contains an offset (or physical address,
140140implementation) pointing to where the actual buffer data lives in the shared memory region. The
141141descriptor itself only contains metadata about the buffer and is agnostic to where the address
142142points. The only requirements for the address is that both host and guest can translate it to
143- referencable pointer to the buffer memory. The ` addr ` field does not preserve Rust's notion of
143+ referenceable pointer to the buffer memory. The ` addr ` field does not preserve Rust's notion of
144144pointer provenance.
145145
146146Each descriptor is 16 bytes and has the following layout:
@@ -239,7 +239,7 @@ Popping from the stack mirrors this process. The guest reads stack pointer from
239239header. It then reads the 8-byte back-pointer located just before stack pointer to get last element
240240offset in the buffer. It treats the slice starting at that offset as the flatbuffer-serialized
241241payload. The last step is to deserialize the slice, rewind the stack pointer to just consumed
242- paylaod offset.
242+ payload offset.
243243
244244This model is a natural fit for synchronous, in-order communication, but the LIFO stack semantics
245245makes asynchronous constructs with out-of-order completion impossible to implement. This proposal
@@ -268,7 +268,7 @@ host needs to transfer data as stream to the guest and each stream chunk trigger
268268** 1. Notification Suppression**
269269
270270The virtio queue defines event suppression mechanism that allow both sides to control when they want
271- to be notified about the submissions or completions in the queue. Notification supression allow for
271+ to be notified about the submissions or completions in the queue. Notification suppression allow for
272272different batching strategies. For example:
273273
274274- A driver can queue multiple requests, suppress notifications, and only notify the device once when
@@ -325,15 +325,15 @@ When the `INLINE` flag is set, the `addr` is unused. This optimization, inspired
325325eliminates memory indirection for common small messages, improving both latency and cache behavior.
326326The tradeof is the increased size of descriptor table. Alternatively we could repurpose the ` addr `
327327and ` len ` as raw bytes providing 12 bytes of inline storage. We should asses if any of flatbuffer
328- schema serialized data can actualy fit into small inline data.
328+ schema serialized data can actually fit into small inline data.
329329
330330** 4. Descriptor Chaining - scatter gather list**
331331
332332Descriptors can be chained using the ` NEXT ` flag. This enables zero-copy scatter-gather I/O
333333patterns. Imagine again the stream running on the host. We want to gather few chunks before sending
334334it to the guest. For each incoming chunk we can grab the buffer from the buffer pool and write data
335335to it. After reaching some threshold we want to present all the buffers to guest. scatter-gather
336- list allow us to represent the chunks as descriptor chain without need to copy it to contigous
336+ list allow us to represent the chunks as descriptor chain without need to copy it to contiguous
337337memory.
338338
339339### Dynamic Response Sizing
@@ -357,7 +357,7 @@ attempt to snapshot a sandbox with such pending requests will result in a snapsh
357357
358358### Difference from spec
359359
360- - Do not support indirect descriptor table (can be deffered to future work if needed),
360+ - Do not support indirect descriptor table (can be deferred to future work if needed),
361361- Do not support feature negotiation, set of features is fixed for driver and device,
362362- Only support packed queue,
363363- Introduce inline data optimization in descriptor (only if benchmarks support the claim)
0 commit comments