On Mon, Jul 24, 2023 at 10:32 AM Yui Washizu <yui.wash...@gmail.com> wrote:
>
>
> On 2023/07/20 11:20, Jason Wang wrote:
> > On Wed, Jul 19, 2023 at 9:59 AM Yui Washizu <yui.wash...@gmail.com> wrote:
> >> This patch series is the first step towards enabling
> >> hardware offloading of the L2 packet switching feature on virtio-net 
> >> device to host machine.
> >> We are considering that this hardware offloading enables
> >> the use of high-performance networks in virtual infrastructures,
> >> such as container infrastructures on VMs.
> >>
> >> To enable L2 packet switching by SR-IOV VFs, we are considering the 
> >> following:
> >> - making the guest recognize virtio-net devices as SR-IOV PF devices
> >>    (archived with this patch series)
> >> - allowing virtio-net devices to connect SR-IOV VFs to the backend 
> >> networks,
> >>    leaving the L2 packet switching feature to the management layer like 
> >> libvirt
> > Could you please show the qemu command line you want to propose here?
>
>
> I am considering how to specify the properties of VFs to connect SR-IOV
> VFs to the backend networks.
>
>
> For example:
>
>
> qemu-system-x86_64 -device
> pcie-root-port,port=8,chassis=8,id=pci.8,bus=pcie.0,multifunction=on
>                     -netdev tap,id=hostnet0,vhost=on
>                     -netdev tap,id=vfnet1,vhost=on # backend network for
> SR-IOV VF 1
>                     -netdev tap,id=vfnet2,vhost=on # backend network for
> SR-IOV VF 2
>                     -device
> virtio-net-pci,netdev=hostnet0,sriov_max_vfs=2,sriov_netdev=vfnet1:vfnet2,...
>
>
> In this example, we can specify multiple backend networks to the VFs
> by adding "sriov_netdev" and separating them with ":".

This seems what is in my mind as well, more below

> Additionally, when passing properties like "rx_queue_size" to VFs, we
> can utilize new properties,
> such as "sriov_rx_queue_size_per_vfs," to ensure that the same value is
> passed to all VFs.

Or we can introduce new device like:

-netdev tap,id=hn0 \
-device virtio-net-pci,netdev=hn0,id=vnet_pf \
-netdev tap,netdev=hn1 \
-device virtio-net-pci-vf,netdev=hn1,id=vf0,pf=vnet_pf,rx_queue_size=XYZ ... \

This allows us to reuse the codes for configuring vf parameters. But
note that rx_queue_size doesn't make too much sense to vhost-vDPA, as
qemu can perform nothing more than a simple sanity test.

Thanks

>
> I'm still considering about how to specify it, so please give me any
> comments if you have any.
>
>
> >>    - This makes hardware offloading of L2 packet switching possible.
> >>      For example, when using vDPA devices, it allows the guest
> >>      to utilize SR-IOV NIC embedded switch of hosts.
> > This would be interesting.
> >
> > Thanks
> >
> >> This patch series aims to enable SR-IOV emulation on virtio-net devices.
> >> With this series, the guest can identify the virtio-net device as an 
> >> SR-IOV PF device.
> >> The newly added property 'sriov_max_vfs' allows us to enable the SR-IOV 
> >> feature
> >> on the virtio-net device.
> >> Currently, we are unable to specify the properties of a VF created from 
> >> the guest.
> >> The properties are set to their default values.
> >> In the future, we plan to allow users to set the properties.
> >>
> >> qemu-system-x86_64 --device virtio-net,sriov_max_vfs=<num>
> >> # when 'sriov_max_vfs' is present, the SR-IOV feature will be 
> >> automatically enabled
> >> # <num> means the max number of VF on guest
> >>
> >> Example commands to create VFs in virtio-net device from the guest:
> >>
> >> guest% readlink -f /sys/class/net/eth1/device
> >>   /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/virtio1
> >> guest% echo "2" > 
> >> /sys/devices/pci0000:00/0000:00:02.0/0000:01:00.0/sriov_numvfs
> >> guest% ip link show
> >>   eth0: ....
> >>   eth1: ....
> >>   eth2: .... #virtual VF created
> >>   eth3: .... #virtual VF created
> >>
> >> Please note that communication between VF and PF/VF is not possible by 
> >> this patch series itself.
> >>
> >> Yui Washizu (1):
> >>    virtio-pci: add SR-IOV capability
> >>
> >>   hw/pci/msix.c                  |  8 +++--
> >>   hw/pci/pci.c                   |  4 +++
> >>   hw/virtio/virtio-pci.c         | 62 ++++++++++++++++++++++++++++++----
> >>   include/hw/virtio/virtio-pci.h |  1 +
> >>   4 files changed, 66 insertions(+), 9 deletions(-)
> >>
> >> --
> >> 2.39.3
> >>
>


Reply via email to