Re: [PATCH virtio 0/8] virtio_pci_modern: allow parallel admin queue commands execution

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux