Hello Zhenzhong
On 11/21/23 09:43, Zhenzhong Duan wrote:
Hi,
Thanks all for giving guides and comments on previous series, this is
the remaining part of the iommufd support.
Besides suggested changes in v6, I'd like to highlight two changes
for final review:
1. Instantiate can_be_deleted callback to fix race where iommufd object
can be deleted before vfio device
2. After careful re-thinking, I'd like to follow Nicolin's suggestion in v5,
remove is_ioas check which indeed looks heavy just for tracepoint.
In fact we can get corresponding info by looking over trace context.
PATCH 1: Introduce iommufd object
PATCH 2-9: add IOMMUFD container and cdev support
PATCH 10-17: fd passing for cdev and linking to IOMMUFD
PATCH 18: make VFIOContainerBase parameter const
PATCH 19-21: Compile out for IOMMUFD for arm, s390x and x86
PATCH 22-26: vfio device init code cleanup
PATCH 27: add iommufd doc
We have done wide test with different combinations, e.g:
- PCI device were tested
- FD passing and hot reset with some trick.
- device hotplug test with legacy and iommufd backends
- with or without vIOMMU for legacy and iommufd backends
- divices linked to different iommufds
- VFIO migration with a E800 net card(no dirty sync support) passthrough
- platform, ccw and ap were only compile-tested due to environment limit
- test mdev pass through with mtty and mix with real device and different BE
- test iommufd object hotplug/unplug and mix with vfio device plug/unplug
Given some iommufd kernel limitations, the iommufd backend is
not yet fully on par with the legacy backend w.r.t. features like:
- p2p mappings (you will see related error traces)
- dirty page sync
- and etc.
qemu code: https://github.com/yiliu1765/qemu/commits/zhenzhong/iommufd_cdev_v7
Based on vfio-next, commit id: c487fb8a50
The series is pushed on top of vfio-next in the vfio-8.2 tree :
https://github.com/legoater/qemu/commits/vfio-8.2
with a little extra to deal with a PPC build failure.
Thanks,
C.