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: [virtio-comment] [PATCH v14 04/11] transport-pci: Avoid first vq index reference


> From: Halil Pasic <pasic@linux.ibm.com>
> Sent: Monday, April 24, 2023 9:29 AM
> 
> On Wed, 19 Apr 2023 04:46:32 +0300
> Parav Pandit <parav@nvidia.com> wrote:
> 
> > Drop reference to first virtqueue as it is already covered now by the
> > generic section in first patch.
> >
> 
> TL;DR:
> 
> Acked-by: Halil Pasic <pasic@linux.ibm.com>
> 
> Rationale:
> ---------
> I agree, what a virtqueue index is should be described in a single place instead
> all over the place. And further improvements can be done on top of this series.
> 
> Discussion:
> -----------
> Is it indeed covered now by the generic section in first patch?
> 
> In [1] you state the following: "There is nothing like a zero based index. A VQ
> can be any u16 _number_ in range of 0 to 65534.
> Number can also start from zero. So zero based index = zero based number."
> 
> I don't really understand what do you mean by this, 
Like you described the vq index range is device specific and it is already documented in each device type.

A driver can choose to enable its "first VQ" located at vq index 2 for a specific device type.
So, for device the first VQ is vq index 2 instead of 0.

PCI spec wrote "first queue is 0", this was little misleading how driver and device see it.

So vq index starts from 0 but it need not be the first VQ, that's what I meant by above line and range description.

> but I'm afraid it is not
> consistent with my understanding. Can not be any number in range of 0 to
> 65534.
> 
> Rather in general it depends on the device type, and on the device how many
> queues it support. Let us call this number dev_vq_max. And if dev_vq_max > N
> > 0 index is associated with a queue the N-1 index is also associated with a
> queue.
> 
> Let me also note that the number of queues supported/provided by the device
> is a matter of the device. For many devices the number of queues is a constant
> given in the specification. A Network Device tells its driver how may queues it
> supports via max_virtqueue_pairs, Crypto Device via max_dataqueues, and
> Console Device via max_dataqueues.
> The transports PCI also has num_queues which is documented as "The device
> specifies the maximum number of virtqueues supported here." while CCW and
> MMIO have no transport specific means to tell the driver about the number of
> queues supported by the device. In any case, if the number of queues provided
> by the device is N, each of those queues is uniquely identified by exactly one
> index from the range [0..N-1]. Furthermore the role a certain queue plays is
> determined by its index. E.g. for the Console Device virtqueue identified by the
> index 3 is the "control receiveq".
> 
Sure. All you wrote is correct.

Thanks.


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