[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [virtio] [OASIS Issue Tracker] Created: (VIRTIO-15) Simplify indirect descriptors
Rusty Russell <rusty@au1.ibm.com> writes:
> OASIS Issues Tracker <workgroup_mailer@lists.oasis-open.org> writes:
>> Simplify indirect descriptors
>> -----------------------------
>>
>> Key: VIRTIO-15
>> URL: http://tools.oasis-open.org/issues/browse/VIRTIO-15
>> Project: OASIS Virtual I/O Device (VIRTIO) TC
>> Issue Type: Improvement
>> Reporter: Rusty Russell
>>
>>
>> The current definition of VIRTIO_DESC_F_INDIRECT is that it stacks: you can set that bit and VIRTIO_DESC_F_NEXT and after processing the (only single level!) of indirect descriptors, the device then processes the next descriptor as normal (which may also be indirect). No implementation I am aware of generates such multi-part indirect descriptors, but they could be useful if we allow huge indirect descriptors as proposed.
>>
>> Perhaps we should make the bit chain, so if any descriptor has that set, we start traversing that descriptor as a new table, and never return. This is simpler to implement, and backwards compatible as well.
This just simplifies them. I'll add a new issue to discuss chaining.
commit 20af5684afde54a96060a94faf582756b9d911fa
Author: Rusty Russell <rusty@au1.ibm.com>
Date: Mon Sep 9 17:48:02 2013 +0930
Simplify indirect descriptors.
You get a single table, no multiple tables (noone does this, but it's
a PITA to support in devices).
As per issue virtio-15
Signed-off-by: Rusty Russell <rusty@au1.ibm.com>
diff --git a/virtio-v1.0-wd01-part1-specification.txt b/virtio-v1.0-wd01-part1-specification.txt
index 6f7d4d5..afdb833 100644
--- a/virtio-v1.0-wd01-part1-specification.txt
+++ b/virtio-v1.0-wd01-part1-specification.txt
@@ -351,8 +351,8 @@ which is a variable, so this code won't compile):
The first indirect descriptor is located at start of the indirect
descriptor table (index 0), additional indirect descriptors are
chained by next field. An indirect descriptor without next field
-(with flags&VRING_DESC_F_NEXT off) signals the end of the indirect descriptor
-table, and transfers control back to the main virtqueue. An
+(with flags&VRING_DESC_F_NEXT off) signals the end of the descriptor.
+An
indirect descriptor can not refer to another indirect descriptor
table (flags&VRING_DESC_F_INDIRECT must be off). A single indirect descriptor
table can include both read-only and write-only descriptors;
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]