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