All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: qemu-devel@nongnu.org, Anthony Liguori <aliguori@amazon.com>,
	"Michael	S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH V3 09/14] virtio: introduce vector to virtqueues mapping
Date: Mon, 09 Mar 2015 15:41:44 +0800	[thread overview]
Message-ID: <1425886904.29447.3@smtp.corp.redhat.com> (raw)
In-Reply-To: <20150306135544.6049dac1.cornelia.huck@de.ibm.com>



On Fri, Mar 6, 2015 at 8:55 PM, Cornelia Huck 
<cornelia.huck@de.ibm.com> wrote:
> On Thu,  5 Mar 2015 13:48:46 +0800
> Jason Wang <jasowang@redhat.com> wrote:
> 
>>  Currently we will try to traverse all virtqueues to find a subset 
>> that
>>  using a specific vector. This is sub optimal when we will support
>>  hundreds or even thousands of virtqueues. So this patch introduces a
>>  method which could be used by transport to get all virtqueues that
>>  using a same vector. This is done through QLISTs and the number of
>>  QLISTs was queried through a transport specific method. When guest
>>  setting vectors, the virtqueue will be linked and helpers for 
>> traverse
>>  the list was also introduced.
>>  
>>  The first user will be virtio pci which will use this to speed up
>>  MSI-X masking and unmasking handling.
> 
> Will there be any users beyond virtio-pci, though?

Currently not. But if the vector could be shared in another transport, 
this is still useful.
>  For virtio-ccw, at
> least, "vectors" are an identity mapping of the queue index. I'm not
> sure if introducing (memory) overhead for everyone is worth it.

I see. Another reason I make it generic is because I believe we try 
hard to not expose the internals of VirtQueue to transport specific 
code. 
> 
> 
>>  
>>  Cc: Anthony Liguori <aliguori@amazon.com>
>>  Cc: Michael S. Tsirkin <mst@redhat.com>
>>  Signed-off-by: Jason Wang <jasowang@redhat.com>
>>  ---
>>   hw/virtio/virtio-pci.c         |  8 ++++++++
>>   hw/virtio/virtio.c             | 32 
>> ++++++++++++++++++++++++++++++--
>>   include/hw/virtio/virtio-bus.h |  1 +
>>   include/hw/virtio/virtio.h     |  3 +++
>>   4 files changed, 42 insertions(+), 2 deletions(-)
>>  
> 
>>   void virtio_queue_set_vector(VirtIODevice *vdev, int n, uint16_t 
>> vector)
>>   {
>>  -    if (n < virtio_get_queue_max(vdev))
>>  +    VirtQueue *vq = &vdev->vq[n];
>>  +
>>  +    if (n < virtio_get_queue_max(vdev)) {
>>  +        if (vdev->vq[n].vector != VIRTIO_NO_VECTOR) {
>>  +            QLIST_REMOVE(vq, node);
>>  +        }
>>           vdev->vq[n].vector = vector;
>>  +        if (vector != VIRTIO_NO_VECTOR) {
>>  +            QLIST_INSERT_HEAD(&vdev->vector_queues[vector], vq, 
>> node);
>>  +        }
>>  +    }
>>   }
> 
> Is there any way to remove an entry?

Yes, e.g setting the vector to VIRTIO_NO_VECTOR (e.g during reset or 
driver exit).
>  E.g., if the guest unassociates
> virtqueues. (I just noticed I probably need to use VIRTIO_NO_VECTOR
> instead of 0 for that case in ccw.)

Yes, I see 0 is used in virtio_ccw_set_vqs() when addr is zero. If 
there's no special consideration here, need to use VIRITO_NO_VECTOR.
> 
> 
> Or maybe I'm completely misunderstanding what vectors are doing on
> pci :)

  reply	other threads:[~2015-03-09  7:42 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-05  5:48 [Qemu-devel] [PATCH V3 00/14] Support more virtio queues Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 01/14] virtio-net: validate backend queue numbers against bus limitation Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 02/14] virtio-net: fix the upper bound when trying to delete queues Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 03/14] virito: introduce bus specific queue limit Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 04/14] virtio-ccw: introduce ccw " Jason Wang
2015-03-06 12:13   ` Cornelia Huck
2015-03-09  7:13     ` Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 05/14] virtio-s390: switch to bus " Jason Wang
2015-03-06 12:18   ` Cornelia Huck
2015-03-09  7:17     ` Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 06/14] virtio-serial-bus: " Jason Wang
2015-03-06 12:27   ` Cornelia Huck
2015-03-09  7:26     ` Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 07/14] virtio-mmio: " Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 08/14] virtio-pci: switch to use " Jason Wang
2015-03-06 12:28   ` Cornelia Huck
2015-03-09  7:32     ` Jason Wang
2015-03-09  8:04       ` Cornelia Huck
2015-03-09  8:58         ` Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 09/14] virtio: introduce vector to virtqueues mapping Jason Wang
2015-03-06 12:55   ` Cornelia Huck
2015-03-09  7:41     ` Jason Wang [this message]
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 10/14] virtio: introduce virtio_queue_get_index() Jason Wang
2015-03-05  6:12   ` Fam Zheng
2015-03-06  2:49     ` Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 11/14] virtio-pci: speedup MSI-X masking and unmasking Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 12/14] virtio-pci: increase the maximum number of virtqueues to 513 Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 13/14] pci: remove hard-coded bar size in msix_init_exclusive_bar() Jason Wang
2015-03-05  5:48 ` [Qemu-devel] [PATCH V3 14/14] virtio-pci: introduce auto_msix_bar_size property Jason Wang
2015-03-12  9:28 ` [Qemu-devel] [PATCH V3 00/14] Support more virtio queues Michael S. Tsirkin
2015-03-12  9:33   ` Jason Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1425886904.29447.3@smtp.corp.redhat.com \
    --to=jasowang@redhat.com \
    --cc=aliguori@amazon.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.