From: Pavel Hrdina Date: Thu, 26 Mar 2026 13:32:36 +0000 (+0100) Subject: hypervisor: Call virWaitForDevices() after detaching host devices X-Git-Tag: v12.2.0-rc2~1 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=b96ea4db3aabac4790d6e1d53e2f309f5e73efae;p=thirdparty%2Flibvirt.git hypervisor: Call virWaitForDevices() after detaching host devices On systems with selinux enabled starting a VM with managed host device using IOMMUFD backend can run into race-condition where both libvirt and udev are setting selinux label on /dev/vfio/devices/vfioX device. If udev is the last one to set selinux label starting VM fails with: error: internal error: QEMU unexpectedly closed the monitor (vm='test'): 2026-03-26T15:47:36.620422Z qemu-kvm: -device {"driver":"vfio-pci","id":"hostdev0","iommufd":"iommufd0","fd":"20","bus":"pci.7","addr":"0x0"}: vfio hostdev0: Failed to add fd 20 to KVM VFIO device: Invalid argument We need to wait for udev to finish processing all events. Signed-off-by: Pavel Hrdina Reviewed-by: Ján Tomko --- diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c index f4d2176204..b063a44f62 100644 --- a/src/hypervisor/virhostdev.c +++ b/src/hypervisor/virhostdev.c @@ -782,6 +782,9 @@ virHostdevPreparePCIDevicesImpl(virHostdevManager *mgr, } } + /* Step 2.5: Wait for udev to handle all events for devices. */ + virWaitForDevices(); + /* At this point, all devices are attached to the stub driver and have * been marked as inactive */