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 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?

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