OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: Chained VIRTQ_DESC_F_INDIRECT (again!)


"Michael S. Tsirkin" <mst@redhat.com> writes:
> On Thu, Feb 12, 2015 at 12:14:52PM +1030, Rusty Russell wrote:
>> Hi all,
>> 
>>         I was reading through the spec, and realized that it doesn't
>> explicitly ban chaining of indirect descriptors.  After virtio-15, it
>> says:
>> 
>>    An indirect descriptor without next field
>>    (with flags&VRING_DESC_F_NEXT off) signals the end of the descriptor.
>> 
>> This *implies* that there can't be a "next" after an indirect, but
>> doesn't explicitly say that a driver shouldn't do that.  That was the
>> intent, so I suggest adding to 2.4.5.3.1 Driver Requirements: Indirect
>> Descriptors:
>> 
>>         The driver MUST NOT set the VIRTQ_DESC_F_NEXT flag on a
>>         descriptor with the VIRTQ_DESC_F_INDIRECT flag set.
>
> I agree, explicit is good.
> Will you open an issue for that?

Yep, I'll post a patch and then open an issue linking to it.

>> Also, the spec allows this combination of direct and indirect descs:
>> 
>>         [direct desc]->[direct desc]->[indirect desc]
>> 
>> Whereas lguest assumes the indirect desc comes first.  Nobody does this,
>> but we should either specify that the device MUST handle it, or that
>> the driver MUST NOT do it...
>> 
>> Cheers,
>> Rusty.
>
> It does not look very useful, but from a quick look at qemu
> code it does seem to support it, so are we sure no one does it?

Linux and FreeBSD don't use it: it's hard to see why you would.
Virtualbox doesn't support indirect AFAICT.

But qemu and bhyve both support the "indirect in chain" case, so perhaps
there's not any gain in banning it.  I fixed lguest to support it; was
trivial.

So I'll prepare a MUST for this too.

Cheers,
Rusty.



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]