virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
* [PATCH virtio v2 00/13] virtio_pci_modern: allow parallel admin queue commands execution
@ 2024-07-10  6:35 Jiri Pirko
  2024-07-10  6:35 ` [PATCH virtio v2 01/13] virtio_pci: push out single vq find code to vp_find_one_vq_msix() Jiri Pirko
                   ` (12 more replies)
  0 siblings, 13 replies; 24+ messages in thread
From: Jiri Pirko @ 2024-07-10  6:35 UTC (permalink / raw)
  To: virtualization; +Cc: mst, jasowang, xuanzhuo, eperezma, parav, feliu, hengqi

From: Jiri Pirko <jiri@nvidia.com>

Currently the admin queue command execution is serialized by a lock.
This patchsets lifts this limitation allowing to execute admin queue
commands in parallel. To do that, admin queue processing needs to be
converted from polling to interrupt based completion. Note that admin
queue is treated as a slow path virtqueue. That means that under
circumstance there are not enough vectors available, the admin queue
will share config vector.

Patches #1-#11 are preparations, making things a bit smoother as well.
  Worth mentioning is Patch #5, which introduces another vector
  allocation fallback for slow path virtqueues.
Patch #12 implements interrupt based completion for admin queue.
Patch #13 finally removes the admin queue serialization lock.

Please note that this patchset prepares ground for control queue vector
implementation as well, treating it as a slow path virtqueue as well.

---
v1->v2:
- rebased
- added slow path vector allocation fallback
- fixed couple of bugs and issues
- see individual patches for detailed changelog

Jiri Pirko (13):
  virtio_pci: push out single vq find code to vp_find_one_vq_msix()
  virtio_pci: simplify vp_request_msix_vectors() call a bit
  virtio_pci: pass vector policy enum to vp_find_vqs_msix()
  virtio_pci: pass vector policy enum to vp_find_one_vq_msix()
  virtio_pci: introduce vector allocation fallback for slow path
    virtqueues
  virtio_pci_modern: treat vp_dev->admin_vq.info.vq pointer as static
  virtio: push out code to vp_avq_index()
  virtio_pci: pass vq info as an argument to vp_setup_vq()
  virtio: create admin queues alongside other virtqueues
  virtio_pci_modern: create admin queue of queried size
  virtio_pci_modern: pass cmd as an identification token
  virtio_pci_modern: use completion instead of busy loop to wait on
    admin cmd result
  virtio_pci_modern: remove admin queue serialization lock

 drivers/virtio/virtio.c            |  28 +----
 drivers/virtio/virtio_pci_common.c | 190 +++++++++++++++++++++++------
 drivers/virtio/virtio_pci_common.h |  16 ++-
 drivers/virtio/virtio_pci_modern.c | 159 +++++++++++-------------
 include/linux/virtio.h             |   3 +
 include/linux/virtio_config.h      |   2 -
 6 files changed, 239 insertions(+), 159 deletions(-)

-- 
2.45.2


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2024-07-15  9:03 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-10  6:35 [PATCH virtio v2 00/13] virtio_pci_modern: allow parallel admin queue commands execution Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 01/13] virtio_pci: push out single vq find code to vp_find_one_vq_msix() Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 02/13] virtio_pci: simplify vp_request_msix_vectors() call a bit Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 03/13] virtio_pci: pass vector policy enum to vp_find_vqs_msix() Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 04/13] virtio_pci: pass vector policy enum to vp_find_one_vq_msix() Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 05/13] virtio_pci: introduce vector allocation fallback for slow path virtqueues Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 06/13] virtio_pci_modern: treat vp_dev->admin_vq.info.vq pointer as static Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 07/13] virtio: push out code to vp_avq_index() Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 08/13] virtio_pci: pass vq info as an argument to vp_setup_vq() Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 09/13] virtio: create admin queues alongside other virtqueues Jiri Pirko
2024-07-10  6:35 ` [PATCH virtio v2 10/13] virtio_pci_modern: create admin queue of queried size Jiri Pirko
2024-07-14  7:55   ` Michael S. Tsirkin
2024-07-14 14:28     ` Parav Pandit
2024-07-15  7:57       ` Jiri Pirko
2024-07-15  9:03         ` Michael S. Tsirkin
2024-07-10  6:35 ` [PATCH virtio v2 11/13] virtio_pci_modern: pass cmd as an identification token Jiri Pirko
2024-07-10  6:36 ` [PATCH virtio v2 12/13] virtio_pci_modern: use completion instead of busy loop to wait on admin cmd result Jiri Pirko
2024-07-10 11:47   ` Michael S. Tsirkin
2024-07-10 13:03     ` Jiri Pirko
2024-07-10 13:06       ` Michael S. Tsirkin
2024-07-11  8:10         ` Jiri Pirko
2024-07-11  8:19           ` Michael S. Tsirkin
2024-07-11 12:46             ` Jiri Pirko
2024-07-10  6:36 ` [PATCH virtio v2 13/13] virtio_pci_modern: remove admin queue serialization lock Jiri Pirko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).