On Mon, Jun 24, 2024 at 03:09:20PM +0200, Jiri Pirko wrote: > Mon, Jun 24, 2024 at 01:07:23PM CEST, mst@xxxxxxxxxx wrote: > >On Mon, Jun 24, 2024 at 11:04:43AM +0200, Jiri Pirko wrote: > >> From: Jiri Pirko <jiri@xxxxxxxxxx> > >> > >> 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. > >> > >> Patches #1-#6 are preparations, making things a bit smoother as well. > >> Patch #7 implements interrupt based completion for admin queue. > >> Patch #8 finally removes the admin queue serialization lock. > > > >Okay ... I assume this is infrastructure for some other need? > >I'll review, but I'd like to see this actually used. > > No other need. The currently, admin queue cmds are serialized. Note that > admin queue is currently created for PF. If you have for example > multiple VFs in legacy mode reading and writing pci bar, that virtio > vfio driver translates it into admin queue commands. So for example > probe on multiple VFs gets serialized. This patchset makes it possible > to run in parallel. Well probe is mostly serialized but I think I get what you mean - I am guessing you mean something else like legacy access commands. > > > > > > >> Jiri Pirko (8): > >> virtio_pci: push out single vq find code to vp_find_one_vq_msix() > >> virtio_pci_modern: treat vp_dev->admin_vq.info.vq pointer as static > >> virtio: push out code to vp_avq_index() > >> 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 | 109 ++++++++++++++------ > >> drivers/virtio/virtio_pci_common.h | 9 +- > >> drivers/virtio/virtio_pci_modern.c | 160 ++++++++++++----------------- > >> include/linux/virtio.h | 2 + > >> include/linux/virtio_config.h | 2 - > >> 6 files changed, 150 insertions(+), 160 deletions(-) > >> > >> -- > >> 2.45.1 > >