All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cornelia.huck@de.ibm.com>
To: Jason Wang <jasowang@redhat.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: Fri, 6 Mar 2015 13:55:44 +0100	[thread overview]
Message-ID: <20150306135544.6049dac1.cornelia.huck@de.ibm.com> (raw)
In-Reply-To: <1425534531-6305-10-git-send-email-jasowang@redhat.com>

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

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

Or maybe I'm completely misunderstanding what vectors are doing on
pci :)

  reply	other threads:[~2015-03-06 12:55 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 [this message]
2015-03-09  7:41     ` Jason Wang
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=20150306135544.6049dac1.cornelia.huck@de.ibm.com \
    --to=cornelia.huck@de.ibm.com \
    --cc=aliguori@amazon.com \
    --cc=jasowang@redhat.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.