- qemu: Introduce QEMU_CAPS_OBJECT_IOMMUFD (RHEL-150353) - qemu: Move IOMMUFD validation to qemu_validate (RHEL-150353) - util: Move openning IOMMU device to viriommufd (RHEL-150353) - qemu_process: Refactor qemuProcessOpenIommuFd (RHEL-150353) - util: Move openning VFIO device to virpci (RHEL-150353) - qemu_process: Refactor qemuProcessOpenVfioDeviceFd (RHEL-150353) - util: Use virPCIDevice as argument in virPCIDeviceGetVfioPath (RHEL-150353) - conf: Introduce virHostdevIsPCIDeviceWithIOMMUFD (RHEL-150353) - conf: Introduce virDomainDefHasPCIHostdevWithIOMMUFD (RHEL-150353) - qemu_domain: Add missing IOMMUFD cleanup (RHEL-150353) - qemu_process: Fix FD leak with multiple host devices using IOMMUFD (RHEL-150353) - qemu_process: Refactor qemuProcessOpenVfioFds (RHEL-150353) - qemuxmlconftest: Refactor host device preparation (RHEL-150353) - qemuxmlconftest: Rename and refactor testSetupHostdevPrivateData (RHEL-150353) - qemuxmlconftest: Set fake FD for IOMMUFD (RHEL-150353) - qemu: Convert IOMMUFD to qemuFDPassDirect (RHEL-150353) - qemu: Convert vfioDeviceFd to qemuFDPassDirect (RHEL-150353) - qemu_command: Don't use host property if IOMMUFD is used (RHEL-150353) - qemu: Save IOMMUFD state into status XML (RHEL-150353) - qemu_hotplug: Remove iommufd object if no longer needed (RHEL-150353) - qemu_command: Extract building IOMMUFD props to function (RHEL-150353) - qemu_hotplug: Add support to hotplug host device with IOMMUFD (RHEL-150353) - conf: Introduce iommufd enum for domaincaps (RHEL-138544) - qemu: Fill iommufd domain capability (RHEL-138544) - tests: properly mock VFIO and IOMMU checks (RHEL-138544) - iommufd: fix FD leak in case of error (RHEL-150353) Resolves: RHEL-138544, RHEL-150353
78 lines
2.7 KiB
Diff
78 lines
2.7 KiB
Diff
From eb555cecb3894ddc890c9f0fc099d2210b2bfb62 Mon Sep 17 00:00:00 2001
|
|
Message-ID: <eb555cecb3894ddc890c9f0fc099d2210b2bfb62.1771423832.git.jdenemar@redhat.com>
|
|
From: Pavel Hrdina <phrdina@redhat.com>
|
|
Date: Sun, 15 Feb 2026 19:15:52 +0100
|
|
Subject: [PATCH] qemu_process: Refactor qemuProcessOpenVfioFds
|
|
|
|
Follow our switch pattern to simplify the code logic
|
|
and rename the function to follow our naming pattern.
|
|
|
|
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
(cherry picked from commit c83b4f367f23868793fc6b071771d0e641b7a546)
|
|
|
|
Resolves: https://issues.redhat.com/browse/RHEL-150353
|
|
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
---
|
|
src/qemu/qemu_process.c | 31 ++++++++++++++++---------------
|
|
1 file changed, 16 insertions(+), 15 deletions(-)
|
|
|
|
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
|
index da7a9fc11f..3729edcd7e 100644
|
|
--- a/src/qemu/qemu_process.c
|
|
+++ b/src/qemu/qemu_process.c
|
|
@@ -7715,27 +7715,28 @@ qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *hostdev)
|
|
return 0;
|
|
}
|
|
|
|
-/**
|
|
- * qemuProcessOpenVfioFds:
|
|
- * @vm: domain object
|
|
- *
|
|
- * Opens all necessary VFIO file descriptors for the domain.
|
|
- *
|
|
- * Returns: 0 on success, -1 on failure
|
|
- */
|
|
static int
|
|
-qemuProcessOpenVfioFds(virDomainObj *vm)
|
|
+qemuProcessPrepareHostHostdev(virDomainObj *vm)
|
|
{
|
|
size_t i;
|
|
|
|
- /* Check if we have any hostdevs that need VFIO FDs */
|
|
for (i = 0; i < vm->def->nhostdevs; i++) {
|
|
virDomainHostdevDef *hostdev = vm->def->hostdevs[i];
|
|
|
|
- if (virHostdevIsPCIDeviceWithIOMMUFD(hostdev)) {
|
|
- /* Open VFIO device FD */
|
|
- if (qemuProcessOpenVfioDeviceFd(hostdev) < 0)
|
|
- return -1;
|
|
+ switch (hostdev->source.subsys.type) {
|
|
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
|
|
+ if (virHostdevIsPCIDeviceWithIOMMUFD(hostdev)) {
|
|
+ /* Open VFIO device FD */
|
|
+ if (qemuProcessOpenVfioDeviceFd(hostdev) < 0)
|
|
+ return -1;
|
|
+ }
|
|
+ break;
|
|
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
|
|
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI:
|
|
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
|
|
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
|
|
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
|
+ break;
|
|
}
|
|
}
|
|
|
|
@@ -7803,7 +7804,7 @@ qemuProcessPrepareHost(virQEMUDriver *driver,
|
|
hostdev_flags |= VIR_HOSTDEV_COLD_BOOT;
|
|
if (qemuHostdevPrepareDomainDevices(driver, vm->def, hostdev_flags) < 0)
|
|
return -1;
|
|
- if (qemuProcessOpenVfioFds(vm) < 0)
|
|
+ if (qemuProcessPrepareHostHostdev(vm) < 0)
|
|
return -1;
|
|
|
|
VIR_DEBUG("Preparing chr device backends");
|
|
--
|
|
2.53.0
|