Mon, Jun 24, 2024 at 03:16:06PM CEST, mst@xxxxxxxxxx wrote: >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 mean probe of multiple VFs that belong under one PF. >I am guessing you mean something else like legacy access commands. Yes. For transitional VF, the legacy bar0 access is translated by virtio vfio driver to admin commands. See virtiovf_pci_bar0_rw(). >> >> > >> > >> >> 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 >> > >