From: Yui Washizu <yui.washidu@gmail.com>
To: "Akihiko Odaki" <akihiko.odaki@daynix.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Cédric Le Goater" <clg@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Jason Wang" <jasowang@redhat.com>,
"Sriram Yagnaraman" <sriram.yagnaraman@ericsson.com>,
"Keith Busch" <kbusch@kernel.org>,
"Klaus Jensen" <its@irrelevant.dk>,
"Pasha Tatashin" <pasha.tatashin@soleen.com>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org, devel@daynix.com
Subject: Re: [PATCH for-10.1 v9 0/9] virtio-net: add support for SR-IOV emulation
Date: Fri, 21 Mar 2025 13:34:37 +0900 [thread overview]
Message-ID: <b8a1565a-2adc-420b-aad3-d10efa2e2650@gmail.com> (raw)
In-Reply-To: <20250314-sriov-v9-0-57dae8ae3ab5@daynix.com>
I tested the following features with this patch series, and there were
not issues:
- Creation and deletion of VFs
- Communication with an external machine through VFs
Thank you.
Yui
On 2025/03/14 15:14, Akihiko Odaki wrote:
> Based-on:<20250104-reuse-v18-0-c349eafd8673@daynix.com>
> ("[PATCH v18 00/14] hw/pci: SR-IOV related fixes and improvements")
>
> Introduction
> ------------
>
> This series is based on the RFC series submitted by Yui Washizu[1].
> See also [2] for the context.
>
> This series enables SR-IOV emulation for virtio-net. It is useful
> to test SR-IOV support on the guest, or to expose several vDPA devices
> in a VM. vDPA devices can also provide L2 switching feature for
> offloading though it is out of scope to allow the guest to configure
> such a feature.
>
> The PF side code resides in virtio-pci. The VF side code resides in
> the PCI common infrastructure, but it is restricted to work only for
> virtio-net-pci because of lack of validation.
>
> User Interface
> --------------
>
> A user can configure a SR-IOV capable virtio-net device by adding
> virtio-net-pci functions to a bus. Below is a command line example:
> -netdev user,id=n -netdev user,id=o
> -netdev user,id=p -netdev user,id=q
> -device pcie-root-port,id=b
> -device virtio-net-pci,bus=b,addr=0x0.0x3,netdev=q,sriov-pf=f
> -device virtio-net-pci,bus=b,addr=0x0.0x2,netdev=p,sriov-pf=f
> -device virtio-net-pci,bus=b,addr=0x0.0x1,netdev=o,sriov-pf=f
> -device virtio-net-pci,bus=b,addr=0x0.0x0,netdev=n,id=f
>
> The VFs specify the paired PF with "sriov-pf" property. The PF must be
> added after all VFs. It is user's responsibility to ensure that VFs have
> function numbers larger than one of the PF, and the function numbers
> have a consistent stride.
>
> Keeping VF instances
> --------------------
>
> A problem with SR-IOV emulation is that it needs to hotplug the VFs as
> the guest requests. Previously, this behavior was implemented by
> realizing and unrealizing VFs at runtime. However, this strategy does
> not work well for the proposed virtio-net emulation; in this proposal,
> device options passed in the command line must be maintained as VFs
> are hotplugged, but they are consumed when the machine starts and not
> available after that, which makes realizing VFs at runtime impossible.
>
> As an strategy alternative to runtime realization/unrealization, this
> series proposes to reuse the code to power down PCI Express devices.
> When a PCI Express device is powered down, it will be hidden from the
> guest but will be kept realized. This effectively implements the
> behavior we need for the SR-IOV emulation.
>
> Summary
> -------
>
> Patch 1 disables ROM BAR, which virtio-net-pci enables by default, for
> VFs.
> Patch 2 makes zero stride valid for 1 VF configuration.
> Patch 3 and 4 adds validations.
> Patch 5 adds user-created SR-IOV VF infrastructure.
> Patch 6 makes virtio-pci work as SR-IOV PF for user-created VFs.
> Patch 7 allows user to create SR-IOV VFs with virtio-net-pci.
>
> [1]https://patchew.org/QEMU/1689731808-3009-1-git-send-email-yui.washidu@gmail.com/
> [2]https://lore.kernel.org/all/5d46f455-f530-4e5e-9ae7-13a2297d4bc5@daynix.com/
>
> Co-developed-by: Yui Washizu<yui.washidu@gmail.com>
> Signed-off-by: Akihiko Odaki<akihiko.odaki@daynix.com>
> ---
> Changes in v9:
> - Rebased.
> - Link to v8:https://lore.kernel.org/r/20250104-sriov-v8-0-56144cfdc7d9@daynix.com
>
> Changes in v8:
> - Rebased.
> - Link to v7:https://lore.kernel.org/r/20240813-sriov-v7-0-8515e3774df7@daynix.com
>
> Changes in v7:
> - Removed #include <error-report.h>, which is no longer needed.
> - Rebased.
> - Link to v6:https://lore.kernel.org/r/20240802-sriov-v6-0-0c8ff49c4276@daynix.com
>
> Changes in v6:
> - Added ARI extended capability.
> - Rebased.
> - Link to v5:https://lore.kernel.org/r/20240715-sriov-v5-0-3f5539093ffc@daynix.com
>
> Changes in v5:
> - Dropped the RFC tag.
> - Fixed device unrealization.
> - Rebased.
> - Link to v4:https://lore.kernel.org/r/20240428-sriov-v4-0-ac8ac6212982@daynix.com
>
> Changes in v4:
> - Added patch "hw/pci: Fix SR-IOV VF number calculation" to fix division
> by zero reported by Yui Washizu.
> - Rebased.
> - Link to v3:https://lore.kernel.org/r/20240305-sriov-v3-0-abdb75770372@daynix.com
>
> Changes in v3:
> - Rebased.
> - Link to v2:https://lore.kernel.org/r/20231210-sriov-v2-0-b959e8a6dfaf@daynix.com
>
> Changes in v2:
> - Changed to keep VF instances.
> - Link to v1:https://lore.kernel.org/r/20231202-sriov-v1-0-32b3570f7bd6@daynix.com
>
> ---
> Akihiko Odaki (9):
> hw/pci: Do not add ROM BAR for SR-IOV VF
> hw/pci: Fix SR-IOV VF number calculation
> pcie_sriov: Ensure PF and VF are mutually exclusive
> pcie_sriov: Check PCI Express for SR-IOV PF
> pcie_sriov: Allow user to create SR-IOV device
> virtio-pci: Implement SR-IOV PF
> virtio-net: Implement SR-IOV VF
> docs: Document composable SR-IOV device
> pcie_sriov: Make a PCI device with user-created VF ARI-capable
>
> MAINTAINERS | 1 +
> docs/system/index.rst | 1 +
> docs/system/sriov.rst | 37 ++++++
> include/hw/pci/pci_device.h | 6 +-
> include/hw/pci/pcie_sriov.h | 21 +++
> include/hw/virtio/virtio-pci.h | 1 +
> hw/pci/pci.c | 76 +++++++----
> hw/pci/pcie_sriov.c | 294 +++++++++++++++++++++++++++++++++--------
> hw/virtio/virtio-net-pci.c | 1 +
> hw/virtio/virtio-pci.c | 24 +++-
> 10 files changed, 378 insertions(+), 84 deletions(-)
> ---
> base-commit: 825b96dbcee23d134b691fc75618b59c5f53da32
> change-id: 20231202-sriov-9402fb262be8
>
> Best regards,
next prev parent reply other threads:[~2025-03-21 4:35 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-14 6:14 [PATCH for-10.1 v9 0/9] virtio-net: add support for SR-IOV emulation Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 1/9] hw/pci: Do not add ROM BAR for SR-IOV VF Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 2/9] hw/pci: Fix SR-IOV VF number calculation Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 3/9] pcie_sriov: Ensure PF and VF are mutually exclusive Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 4/9] pcie_sriov: Check PCI Express for SR-IOV PF Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 5/9] pcie_sriov: Allow user to create SR-IOV device Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 6/9] virtio-pci: Implement SR-IOV PF Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 7/9] virtio-net: Implement SR-IOV VF Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 8/9] docs: Document composable SR-IOV device Akihiko Odaki
2025-03-14 6:14 ` [PATCH for-10.1 v9 9/9] pcie_sriov: Make a PCI device with user-created VF ARI-capable Akihiko Odaki
2025-03-21 4:34 ` Yui Washizu [this message]
2025-03-21 5:18 ` [PATCH for-10.1 v9 0/9] virtio-net: add support for SR-IOV emulation Akihiko Odaki
2025-03-21 5:38 ` Yui Washizu
2025-04-02 18:34 ` Pasha Tatashin
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=b8a1565a-2adc-420b-aad3-d10efa2e2650@gmail.com \
--to=yui.washidu@gmail.com \
--cc=akihiko.odaki@daynix.com \
--cc=alex.williamson@redhat.com \
--cc=berrange@redhat.com \
--cc=clg@redhat.com \
--cc=devel@daynix.com \
--cc=eduardo@habkost.net \
--cc=its@irrelevant.dk \
--cc=jasowang@redhat.com \
--cc=kbusch@kernel.org \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pasha.tatashin@soleen.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sriram.yagnaraman@ericsson.com \
/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 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).