[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]