The following changes since commit bd00730ec0f621706d0179768436f82c39048499:
Open 9.0 development tree (2023-12-19 09:46:22 -0500) are available in the Git repository at: https://github.com/legoater/qemu/ tags/pull-vfio-20231219 for you to fetch changes up to 4278df9d1d2383b738338c857406357660f11e42: hw/ppc/Kconfig: Imply VFIO_PCI (2023-12-19 19:03:38 +0100) ---------------------------------------------------------------- vfio queue: * Introduce an IOMMU interface backend for VFIO devices * Convert IOMMU type1 and sPAPR IOMMU to respective backends * Introduce a new IOMMUFD backend for ARM, x86_64 and s390x platforms ---------------------------------------------------------------- Cédric Le Goater (4): hw/arm: Activate IOMMUFD for virt machines kconfig: Activate IOMMUFD for s390x machines hw/i386: Activate IOMMUFD for q35 machines hw/ppc/Kconfig: Imply VFIO_PCI Eric Auger (11): vfio/container: Switch to dma_map|unmap API vfio/common: Move giommu_list in base container vfio/container: Move space field to base container vfio/container: Switch to IOMMU BE set_dirty_page_tracking/query_dirty_bitmap API vfio/container: Convert functions to base container vfio/container: Move pgsizes and dma_max_mappings to base container vfio/container: Move listener to base container vfio/container: Move dirty_pgsizes and max_dirty_bitmap_size to base container vfio/container: Implement attach/detach_device backends/iommufd: Introduce the iommufd object vfio/pci: Allow the selection of a given iommu backend Yi Liu (2): util/char_dev: Add open_cdev() vfio/iommufd: Implement the iommufd backend Zhenzhong Duan (30): vfio: Introduce base object for VFIOContainer and targeted interface vfio/container: Introduce a empty VFIOIOMMUOps vfio/common: Introduce vfio_container_init/destroy helper vfio/container: Move per container device list in base container vfio/container: Move vrdl_list to base container vfio/container: Move iova_ranges to base container vfio/spapr: Introduce spapr backend and target interface vfio/spapr: switch to spapr IOMMU BE add/del_section_window vfio/spapr: Move prereg_listener into spapr container vfio/spapr: Move hostwin_list into spapr container vfio/common: return early if space isn't empty vfio/iommufd: Relax assert check for iommufd backend vfio/iommufd: Add support for iova_ranges and pgsizes vfio/pci: Extract out a helper vfio_pci_get_pci_hot_reset_info vfio/pci: Introduce a vfio pci hot reset interface vfio/iommufd: Enable pci hot reset through iommufd cdev interface vfio/pci: Make vfio cdev pre-openable by passing a file handle vfio/platform: Allow the selection of a given iommu backend vfio/platform: Make vfio cdev pre-openable by passing a file handle vfio/ap: Allow the selection of a given iommu backend vfio/ap: Make vfio cdev pre-openable by passing a file handle vfio/ccw: Allow the selection of a given iommu backend vfio/ccw: Make vfio cdev pre-openable by passing a file handle vfio: Make VFIOContainerBase poiner parameter const in VFIOIOMMUOps callbacks vfio/pci: Move VFIODevice initializations in vfio_instance_init vfio/platform: Move VFIODevice initializations in vfio_platform_instance_init vfio/ap: Move VFIODevice initializations in vfio_ap_instance_init vfio/ccw: Move VFIODevice initializations in vfio_ccw_instance_init vfio: Introduce a helper function to initialize VFIODevice docs/devel: Add VFIO iommufd backend documentation MAINTAINERS | 11 + docs/devel/index-internals.rst | 1 + docs/devel/vfio-iommufd.rst | 166 +++++++++ qapi/qom.json | 19 + hw/vfio/pci.h | 6 + include/hw/vfio/vfio-common.h | 96 ++---- include/hw/vfio/vfio-container-base.h | 121 +++++++ include/qemu/chardev_open.h | 16 + include/sysemu/iommufd.h | 38 ++ backends/iommufd.c | 245 +++++++++++++ hw/ppc/spapr_pci_vfio.c | 46 ++- hw/vfio/ap.c | 47 ++- hw/vfio/ccw.c | 53 ++- hw/vfio/common.c | 261 ++++++++------ hw/vfio/container-base.c | 101 ++++++ hw/vfio/container.c | 329 +++++++++++++----- hw/vfio/helpers.c | 54 +++ hw/vfio/iommufd.c | 630 ++++++++++++++++++++++++++++++++++ hw/vfio/pci.c | 218 +++--------- hw/vfio/platform.c | 44 ++- hw/vfio/spapr.c | 108 ++++-- util/chardev_open.c | 81 +++++ backends/Kconfig | 4 + backends/meson.build | 1 + backends/trace-events | 10 + hw/arm/Kconfig | 1 + hw/i386/Kconfig | 1 + hw/ppc/Kconfig | 2 +- hw/s390x/Kconfig | 1 + hw/vfio/meson.build | 4 + hw/vfio/trace-events | 15 +- qemu-options.hx | 12 + util/meson.build | 1 + 33 files changed, 2229 insertions(+), 514 deletions(-) create mode 100644 docs/devel/vfio-iommufd.rst create mode 100644 include/hw/vfio/vfio-container-base.h create mode 100644 include/qemu/chardev_open.h create mode 100644 include/sysemu/iommufd.h create mode 100644 backends/iommufd.c create mode 100644 hw/vfio/container-base.c create mode 100644 hw/vfio/iommufd.c create mode 100644 util/chardev_open.c