On Sun, Sep 24, 2023 at 1:05 AM Cindy Lu <lulu@xxxxxxxxxx> wrote: > > Hi All > Really apologize for the delay, this is the draft RFC for > iommufd support for vdpa, This code provides the basic function > for iommufd support > > The code was tested and passed in device vdpa_sim_net > The qemu code is > https://gitlab.com/lulu6/gitlabqemutmp/-/tree/iommufdRFC > The kernel code is > https://gitlab.com/lulu6/vhost/-/tree/iommufdRFC > > ToDo > 1. this code is out of date and needs to clean and rebase on the latest code > 2. this code has some workaround, I Skip the check for > iommu_group and CACHE_COHERENCY, also some misc issues like need to add > mutex for iommfd operations > 3. only test in emulated device, other modes not tested yet > > After addressed these problems I will send out a new version for RFC. I will > provide the code in 3 weeks Something more needs to be done after a quick glance at the codes. 1) The support for device with platform IOMMU support 2) The support for multiple ASes per device ... Thanks > > Thanks > Cindy > Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx> > The test step is > 1. create vdpa_sim device > ... > vdpa dev add name vdpa15 mgmtdev vdpasim_net > ... > 2. load the VM with the command > -object iommufd,id=iommufd0 \ > -device virtio-net-pci,netdev=vhost-vdpa1,disable-legacy=on,disable-modern=off\ > -netdev type=vhost-vdpa,vhostdev=/dev/vhost-vdpa-0,id=vhost-vdpa1,iommufd=iommufd0\ > > 3. in guest VM you can find the vdpa_sim port works well. > [root@ubuntunew ~]# ifconfig eth0 > eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 > inet6 fe80::5054:ff:fe12:3456 prefixlen 64 scopeid 0x20<link> > ether 52:54:00:12:34:56 txqueuelen 1000 (Ethernet) > RX packets 53 bytes 9108 (8.8 KiB) > RX errors 0 dropped 0 overruns 0 frame 0 > TX packets 53 bytes 9108 (8.8 KiB) > TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 > > [root@ubuntunew ~]# ./test.sh eth0 > [ 172.815279] pktgen: Packet Generator for packet performance testing. Version: 2.75 > Adding queue 0 of eth0 > Configuring devices eth0@0 > Running... ctrl^C to stop > > [root@ubuntunew ~]# ifconfig eth0 > eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 > inet6 fe80::5054:ff:fe12:3456 prefixlen 64 scopeid 0x20<link> > ether 52:54:00:12:34:56 txqueuelen 1000 (Ethernet) > RX packets 183455 bytes 11748533 (11.2 MiB) > RX errors 0 dropped 0 overruns 0 frame 0 > TX packets 183473 bytes 11749685 (11.2 MiB) > TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 > > Cindy Lu (7): > vhost/iommufd: Add the functions support iommufd > Kconfig: Add the new file vhost/iommufd > vhost: Add 3 new uapi to support iommufd > vdpa: change the map/unmap process to support iommufd > vdpa: Add new vdpa_config_ops > vdpa_sim :Add support for iommufd > iommufd: Skip the CACHE_COHERENCY and iommu group check > > drivers/iommu/iommufd/device.c | 6 +- > drivers/vdpa/vdpa_sim/vdpa_sim.c | 8 ++ > drivers/vhost/Kconfig | 1 + > drivers/vhost/Makefile | 1 + > drivers/vhost/iommufd.c | 151 +++++++++++++++++++++++ > drivers/vhost/vdpa.c | 201 +++++++++++++++++++++++++++++++ > drivers/vhost/vhost.h | 21 ++++ > include/linux/vdpa.h | 34 +++++- > include/uapi/linux/vhost.h | 71 +++++++++++ > 9 files changed, 490 insertions(+), 4 deletions(-) > create mode 100644 drivers/vhost/iommufd.c > > -- > 2.34.3 > _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization