Hi Cédric, On 10/4/23 21:58, Cédric Le Goater wrote: > On 10/4/23 17:43, Eric Auger wrote: >> Hi All, >> >> With the agreement of Zhenzhong, here is a v3 respin of the IOMMUFD >> prerequisite series. This applies on top of vfio-next: >> https://github.com/legoater/qemu/, branch vfio-next. >> >> Per Cédric's suggestion, the IOMMUFD patchset v1[1] is now split >> into two series, this prerequisite series and the new IOMMUFD backend >> introduction support series. Hopefully this will ease the review. >> >> The main purpose of this series is to make "common.c" group agnostic: >> all group related code are moved into container.c. Then we are prepared >> for next series, abstract base container, adding new backend, etc. >> >> This series can be found at >> https://github.com/eauger/qemu/tree/prereq_v4 >> >> Test done: >> - PCI device were tested >> - device hotplug test >> - with or without vIOMMU >> - VFIO migration with a E800 net card(no dirty sync support) passthrough >> - platform and ccw were only compile-tested due to environment limit >> >> Zhenzhong, Yi, Eric > > LGTM, I did a small adjustment in vfio_detach_device() in patches 13+15. > > Applied to vfio-next.
Thanks! Eric > > Thanks, > > C. > > >> [1] >> https://lore.kernel.org/all/20230830103754.36461-1-zhenzhong.d...@intel.com/t/#u >> >> Changelog: >> >> v4: >> - include qemu/error-report.h in helpers.c >> - in ap.c, fix the wrongly added >> vfio_detach_device(vbasedev) and g_free(vbasedev->name); >> also added error_prepend >> - simplified vbasedev setting in ccw.c >> - vfio_detach_device: dropped check on >> !vbasedev->container >> - container.c: restore dropped comment >> >> v3: >> - rebased on vfio-next as suggested by Cedric >> - added vfio/common: Propagate KVM_SET_DEVICE_ATTR error if any >> - collected Cedric's R-b >> - Fix some error paths in vfio/cpi which now properly detach the device >> and also free the vbasedev->name >> - Fix vfio/ccw migration (hopefully) [Matthew inputs] >> - Split [PATCH v2 11/12] vfio/common: Introduce two kinds of VFIO >> device lists >> into 3 patches >> >> v2: >> - Refine patch description per Eric >> - return errno and errp in vfio_kvm_device_[add/del]_fd per Eric >> - make memory listener register/deregister in seperate patch per Eric >> - Include the .h file first per Cédric >> - Add trace event in vfio_attach_device per Cédric >> - drop the change to vfio_viommu_preset by refactor per Cédric >> - Introduce global VFIO device list and per container list per Alex >> >> Note changelog below are from full IOMMUFD series: >> >> v1: >> - Alloc hwpt instead of using auto hwpt >> - elaborate iommufd code per Nicolin >> - consolidate two patches and drop as.c >> - typo error fix and function rename >> >> rfcv4: >> - rebase on top of v8.0.3 >> - Add one patch from Yi which is about vfio device add in kvm >> - Remove IOAS_COPY optimization and focus on functions in this patchset >> - Fix wrong name issue reported and fix suggested by Matthew >> - Fix compilation issue reported and fix sugggsted by Nicolin >> - Use query_dirty_bitmap callback to replace get_dirty_bitmap for better >> granularity >> - Add dev_iter_next() callback to avoid adding so many callback >> at container scope, add VFIODevice.hwpt to support that >> - Restore all functions back to common from container whenever possible, >> mainly migration and reset related functions >> - Add --enable/disable-iommufd config option, enabled by default in >> linux >> - Remove VFIODevice.hwpt_next as it's redundant with VFIODevice.next >> - Adapt new VFIO_DEVICE_PCI_HOT_RESET uAPI for IOMMUFD backed device >> - vfio_kvm_device_add/del_group call vfio_kvm_device_add/del_fd to >> remove >> redundant code >> - Add FD passing support for vfio device backed by IOMMUFD >> - Fix hot unplug resource leak issue in vfio_legacy_detach_device() >> - Fix FD leak in vfio_get_devicefd() >> >> rfcv3: >> - rebase on top of v7.2.0 >> - Fix the compilation with CONFIG_IOMMUFD unset by using true classes >> for >> VFIO backends >> - Fix use after free in error path, reported by Alister >> - Split common.c in several steps to ease the review >> >> rfcv2: >> - remove the first three patches of rfcv1 >> - add open cdev helper suggested by Jason >> - remove the QOMification of the VFIOContainer and simply use >> standard ops >> (David) >> - add "-object iommufd" suggested by Alex >> >> Thanks >> Zhenzhong >> >> >> Eric Auger (7): >> scripts/update-linux-headers: Add iommufd.h >> vfio/common: Propagate KVM_SET_DEVICE_ATTR error if any >> vfio/common: Introduce vfio_container_add|del_section_window() >> vfio/pci: Introduce vfio_[attach/detach]_device >> vfio/platform: Use vfio_[attach/detach]_device >> vfio/ap: Use vfio_[attach/detach]_device >> vfio/ccw: Use vfio_[attach/detach]_device >> >> Yi Liu (2): >> vfio/common: Move IOMMU agnostic helpers to a separate file >> vfio/common: Move legacy VFIO backend code into separate container.c >> >> Zhenzhong Duan (6): >> linux-headers: Add iommufd.h >> vfio/common: Extract out vfio_kvm_device_[add/del]_fd >> vfio/common: Move VFIO reset handler registration to a group agnostic >> function >> vfio/common: Introduce a per container device list >> vfio/common: Store the parent container in VFIODevice >> vfio/common: Introduce a global VFIODevice list >> >> include/hw/vfio/vfio-common.h | 60 +- >> linux-headers/linux/iommufd.h | 444 ++++++++ >> hw/vfio/ap.c | 69 +- >> hw/vfio/ccw.c | 122 +- >> hw/vfio/common.c | 1851 ++----------------------------- >> hw/vfio/container.c | 1157 +++++++++++++++++++ >> hw/vfio/helpers.c | 612 ++++++++++ >> hw/vfio/pci.c | 67 +- >> hw/vfio/platform.c | 43 +- >> hw/vfio/meson.build | 2 + >> hw/vfio/trace-events | 4 +- >> scripts/update-linux-headers.sh | 3 +- >> 12 files changed, 2458 insertions(+), 1976 deletions(-) >> create mode 100644 linux-headers/linux/iommufd.h >> create mode 100644 hw/vfio/container.c >> create mode 100644 hw/vfio/helpers.c >> >