Fix some FD leaks in the code, code refactor and improvements as
preparation for implementing hotplug support.

Add domain capability to report if IOMMUFD is supported.

Pavel Hrdina (24):
  qemu: Introduce QEMU_CAPS_OBJECT_IOMMUFD
  qemu: Move IOMMUFD validation to qemu_validate
  util: Move openning IOMMU device to viriommufd
  qemu_process: Refactor qemuProcessOpenIommuFd
  util: Move openning VFIO device to virpci
  qemu_process: Refactor qemuProcessOpenVfioDeviceFd
  util: Use virPCIDevice as argument in virPCIDeviceGetVfioPath
  conf: Introduce virHostdevIsPCIDeviceWithIOMMUFD
  conf: Introduce virDomainDefHasPCIHostdevWithIOMMUFD
  qemu_domain: Add missing IOMMUFD cleanup
  qemu_process: Fix FD leak with multiple host devices using IOMMUFD
  qemu_process: Refactor qemuProcessOpenVfioFds
  qemuxmlconftest: Refactor host device preparation
  qemuxmlconftest: Rename and refactor testSetupHostdevPrivateData
  qemuxmlconftest: Set fake FD for IOMMUFD
  qemu: Convert IOMMUFD to qemuFDPassDirect
  qemu: Convert vfioDeviceFd to qemuFDPassDirect
  qemu_command: Don't use host property if IOMMUFD is used
  qemu: Save IOMMUFD state into status XML
  qemu_hotplug: Remove iommufd object if no longer needed
  qemu_command: Extract building IOMMUFD props to function
  qemu_hotplug: Add support to hotplug host device with IOMMUFD
  conf: Introduce iommufd enum for domaincaps
  qemu: Fill iommufd domain capability

 docs/formatdomaincaps.rst                     |   7 ++
 src/conf/domain_capabilities.c                |   1 +
 src/conf/domain_capabilities.h                |   1 +
 src/conf/domain_conf.c                        |  29 +++++
 src/conf/domain_conf.h                        |   6 +
 src/libvirt_private.syms                      |   6 +-
 src/qemu/qemu_capabilities.c                  |  23 +++-
 src/qemu/qemu_capabilities.h                  |   1 +
 src/qemu/qemu_command.c                       |  86 ++++++--------
 src/qemu/qemu_command.h                       |   3 +
 src/qemu/qemu_domain.c                        |  14 ++-
 src/qemu/qemu_domain.h                        |   5 +-
 src/qemu/qemu_hotplug.c                       |  47 ++++++++
 src/qemu/qemu_process.c                       | 111 ++++++------------
 src/qemu/qemu_process.h                       |   3 +
 src/qemu/qemu_validate.c                      |  15 +++
 src/security/security_apparmor.c              |   2 +-
 src/security/security_dac.c                   |   4 +-
 src/security/security_selinux.c               |   4 +-
 src/util/viriommufd.c                         |  35 +++++-
 src/util/viriommufd.h                         |   4 +-
 src/util/virpci.c                             |  40 ++++++-
 src/util/virpci.h                             |   4 +-
 .../qemu_10.0.0-q35.x86_64+amdsev.xml         |   4 +
 .../domaincapsdata/qemu_10.0.0-q35.x86_64.xml |   4 +
 .../qemu_10.0.0-tcg.x86_64+amdsev.xml         |   4 +
 .../domaincapsdata/qemu_10.0.0-tcg.x86_64.xml |   4 +
 .../qemu_10.0.0-virt.aarch64.xml              |   4 +
 tests/domaincapsdata/qemu_10.0.0.aarch64.xml  |   4 +
 tests/domaincapsdata/qemu_10.0.0.ppc64.xml    |   3 +
 tests/domaincapsdata/qemu_10.0.0.s390x.xml    |   4 +
 .../qemu_10.0.0.x86_64+amdsev.xml             |   4 +
 tests/domaincapsdata/qemu_10.0.0.x86_64.xml   |   4 +
 .../qemu_10.1.0-q35.x86_64+inteltdx.xml       |   4 +
 .../domaincapsdata/qemu_10.1.0-q35.x86_64.xml |   4 +
 .../qemu_10.1.0-tcg.x86_64+inteltdx.xml       |   4 +
 .../domaincapsdata/qemu_10.1.0-tcg.x86_64.xml |   4 +
 tests/domaincapsdata/qemu_10.1.0.s390x.xml    |   4 +
 .../qemu_10.1.0.x86_64+inteltdx.xml           |   4 +
 tests/domaincapsdata/qemu_10.1.0.x86_64.xml   |   4 +
 .../qemu_10.2.0-q35.x86_64+mshv.xml           |   4 +
 .../domaincapsdata/qemu_10.2.0-q35.x86_64.xml |   4 +
 .../qemu_10.2.0-tcg.x86_64+mshv.xml           |   4 +
 .../domaincapsdata/qemu_10.2.0-tcg.x86_64.xml |   4 +
 .../qemu_10.2.0-virt.aarch64.xml              |   4 +
 tests/domaincapsdata/qemu_10.2.0.aarch64.xml  |   4 +
 .../qemu_10.2.0.x86_64+mshv.xml               |   4 +
 tests/domaincapsdata/qemu_10.2.0.x86_64.xml   |   4 +
 .../domaincapsdata/qemu_11.0.0-q35.x86_64.xml |   4 +
 .../domaincapsdata/qemu_11.0.0-tcg.x86_64.xml |   4 +
 .../qemu_11.0.0-virt.aarch64.xml              |   4 +
 tests/domaincapsdata/qemu_11.0.0.aarch64.xml  |   4 +
 tests/domaincapsdata/qemu_11.0.0.x86_64.xml   |   4 +
 .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml  |   3 +
 .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml  |   3 +
 tests/domaincapsdata/qemu_6.2.0.ppc64.xml     |   3 +
 tests/domaincapsdata/qemu_6.2.0.x86_64.xml    |   3 +
 .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml  |   3 +
 .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml  |   3 +
 tests/domaincapsdata/qemu_7.0.0.ppc64.xml     |   3 +
 tests/domaincapsdata/qemu_7.0.0.x86_64.xml    |   3 +
 .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml  |   3 +
 .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml  |   3 +
 tests/domaincapsdata/qemu_7.1.0.ppc64.xml     |   3 +
 tests/domaincapsdata/qemu_7.1.0.x86_64.xml    |   3 +
 .../qemu_7.2.0-hvf.x86_64+hvf.xml             |   3 +
 .../domaincapsdata/qemu_7.2.0-q35.x86_64.xml  |   3 +
 .../qemu_7.2.0-tcg.x86_64+hvf.xml             |   3 +
 .../domaincapsdata/qemu_7.2.0-tcg.x86_64.xml  |   3 +
 tests/domaincapsdata/qemu_7.2.0.ppc.xml       |   3 +
 tests/domaincapsdata/qemu_7.2.0.x86_64.xml    |   3 +
 .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml  |   3 +
 .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml  |   3 +
 tests/domaincapsdata/qemu_8.0.0.x86_64.xml    |   3 +
 .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml  |   3 +
 .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml  |   3 +
 tests/domaincapsdata/qemu_8.1.0.s390x.xml     |   3 +
 tests/domaincapsdata/qemu_8.1.0.x86_64.xml    |   3 +
 .../domaincapsdata/qemu_8.2.0-q35.x86_64.xml  |   3 +
 .../qemu_8.2.0-tcg-virt.loongarch64.xml       |   3 +
 .../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml  |   3 +
 .../qemu_8.2.0-virt.aarch64.xml               |   3 +
 .../qemu_8.2.0-virt.loongarch64.xml           |   3 +
 tests/domaincapsdata/qemu_8.2.0.aarch64.xml   |   3 +
 tests/domaincapsdata/qemu_8.2.0.armv7l.xml    |   3 +
 tests/domaincapsdata/qemu_8.2.0.s390x.xml     |   3 +
 tests/domaincapsdata/qemu_8.2.0.x86_64.xml    |   3 +
 .../domaincapsdata/qemu_9.0.0-q35.x86_64.xml  |   4 +
 .../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml  |   4 +
 tests/domaincapsdata/qemu_9.0.0.sparc.xml     |   3 +
 tests/domaincapsdata/qemu_9.0.0.x86_64.xml    |   4 +
 .../domaincapsdata/qemu_9.1.0-q35.x86_64.xml  |   4 +
 .../qemu_9.1.0-tcg-virt.riscv64.xml           |   3 +
 .../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml  |   4 +
 .../qemu_9.1.0-virt.riscv64.xml               |   3 +
 tests/domaincapsdata/qemu_9.1.0.s390x.xml     |   4 +
 tests/domaincapsdata/qemu_9.1.0.x86_64.xml    |   4 +
 .../qemu_9.2.0-hvf.aarch64+hvf.xml            |   3 +
 .../qemu_9.2.0-q35.x86_64+amdsev.xml          |   4 +
 .../domaincapsdata/qemu_9.2.0-q35.x86_64.xml  |   4 +
 .../qemu_9.2.0-tcg.x86_64+amdsev.xml          |   4 +
 .../domaincapsdata/qemu_9.2.0-tcg.x86_64.xml  |   4 +
 tests/domaincapsdata/qemu_9.2.0.s390x.xml     |   4 +
 .../qemu_9.2.0.x86_64+amdsev.xml              |   4 +
 tests/domaincapsdata/qemu_9.2.0.x86_64.xml    |   4 +
 tests/domaincapsmock.c                        |  17 ++-
 .../caps_10.0.0_aarch64.xml                   |   1 +
 .../caps_10.0.0_s390x.xml                     |   1 +
 .../caps_10.0.0_x86_64+amdsev.xml             |   1 +
 .../caps_10.0.0_x86_64.xml                    |   1 +
 .../caps_10.1.0_s390x.xml                     |   1 +
 .../caps_10.1.0_x86_64+inteltdx.xml           |   1 +
 .../caps_10.1.0_x86_64.xml                    |   1 +
 .../caps_10.2.0_aarch64.xml                   |   1 +
 .../caps_10.2.0_x86_64+mshv.xml               |   1 +
 .../caps_10.2.0_x86_64.xml                    |   1 +
 .../caps_11.0.0_aarch64.xml                   |   1 +
 .../caps_11.0.0_x86_64.xml                    |   1 +
 .../caps_9.0.0_x86_64.xml                     |   1 +
 .../qemucapabilitiesdata/caps_9.1.0_s390x.xml |   1 +
 .../caps_9.1.0_x86_64.xml                     |   1 +
 .../qemucapabilitiesdata/caps_9.2.0_s390x.xml |   1 +
 .../caps_9.2.0_x86_64+amdsev.xml              |   1 +
 .../caps_9.2.0_x86_64.xml                     |   1 +
 .../iommufd-q35.x86_64-latest.args            |   4 +-
 ...fd-virt-pci-bus-single.aarch64-latest.args |   4 +-
 .../iommufd-virt.aarch64-latest.args          |   6 +-
 .../iommufd.x86_64-latest.args                |   4 +-
 tests/qemuxmlconftest.c                       | 100 +++++++++-------
 129 files changed, 694 insertions(+), 199 deletions(-)

-- 
2.53.0

Reply via email to