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

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-dev message

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


Subject: Re: [PATCH] virtio-ccw: split descriptor/available/used rings (alternate)


On Thu, 10 Oct 2013 08:26:13 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Wed, Oct 09, 2013 at 05:59:36PM +0200, Cornelia Huck wrote:
> > Extend vq_info_block so that the addresses for descriptor table,
> > available ring and used ring may be transmitted independently.
> > 
> > Depending upon the selected revision, post a command reject instead
> > of a channel program check if the driver uses the legacy format
> > and length checks are suppressed.
> > 
> > VIRTIO-23
> > 
> > Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> > 
> > ---
> > 
> > This is an alternate approach, extending the exiting structure instead
> > of creating a different layout. I'm not 100% sure whether doing a
> > command reject instead of a channel program check in case of a short
> > buffer is the right approach, though. Doing a channel program check
> > would probably cover that error just as well, and we could resolve
> > VIRTIO-23 independently of VIRTIO-42.
> > ---
> >  virtio-v1.0-wd01-part1-specification.txt |   32 +++++++++++++++++++++++++++---
> >  1 file changed, 29 insertions(+), 3 deletions(-)
> > 
> > diff --git a/virtio-v1.0-wd01-part1-specification.txt b/virtio-v1.0-wd01-part1-specification.txt
> > index ae646db..baff12f 100644
> > --- a/virtio-v1.0-wd01-part1-specification.txt
> > +++ b/virtio-v1.0-wd01-part1-specification.txt
> > @@ -1642,15 +1642,41 @@ host about the location used for its queue. The transmitted
> >  structure is
> >  
> >  struct vq_info_block {
> > +	__u64 desc;
> > +	__u32 res0;
> > +	__u16 index;
> > +	__u16 num;
> > +	__u64 avail;
> > +	__u64 used;
> > +} __attribute__ ((packed));
> > +
> > +desc, avail and used contain the guest addresses for the descriptor table,
> > +available ring and used ring for queue index, respectively. The actual
> > +virtqueue size (number of allocated buffers) is transmitted in num.
> > +res0 is reserved and must contain 0; otherwise, the device MUST post a
> > +unit check with command reject.
> > +
> > +If the revision selected by the driver is at least 1,
> 
> Where's the revision field and how does driver select it?
> I don't see it anywhere in spec?

This one is depending on VIRTIO-42; sorry about not being clear on it.

(If we ditch the revision check, the dependency goes away.)

> 
> > the device MUST
> > +post a unit check with command reject if the transmitted data is between
> > +16 and 31 bytes if the driver suppressed incorrect length indication
> > +for the channel command. Otherwise, the normal conditions for handling
> > +incorrect data lenghts apply.
> > +
> > +2.3.3.2.2.1. Legacy Interface: A Note on Configuring a Virtqueue
> > +----------------------------------------------------------------
> > +
> > +For a legacy driver or for a driver that selected revision 0,
> > +CCW_CMD_SET_VQ uses the following communication block:
> > +
> > +struct vq_info_block_legacy {
> >  	__u64 queue;
> >  	__u32 align;
> >  	__u16 index;
> >  	__u16 num;
> >  } __attribute__ ((packed));
> >  
> > -queue contains the guest address for queue index. The actual
> > -number of allocated buffers is transmitted in num and their
> > -alignment in align.
> > +queue contains the guest address for queue index, num the number of buffers
> > +and align the alignment.
> >  
> >  100.3.3.2.2.  Virtqueue Layout
> >  ------------------------------
> > -- 
> > 1.7.9.5
> 



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