From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245072; cv=none; d=zohomail.com; s=zohoarc; b=fb924+me2ABiVBMgrvakxDRXA3Z3ZmroFfYpIcqtge2qS2Nj88linosD0iLKZ9zq8cSG1wc7UeoiNE8N4UFiA7KqpN5AfpAUVnR7s7JYQ72/fzZ0//MbFzwiwBkZ8QFVVlQ28K7LFmgNHrUgclgiLixDz9Ck2K3aySbrUWF7b2A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245072; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=C5mAr71ffD//N6PTYBUayf0eIrqiuuS+T+wqMmzwO+k=; b=NadX8Ian/ox5VMOcXg9TYsZp+BO0EaqQJAc0hN+1sY+hGEay3fGthrdYuT15nUe6maNIY3/z3EgiOdAtQx7vhHsIaETzS/Xcols/zD2HslfaCMGOeWcAkde9XJSacHac6T4zLZODhQc6IbfwJ1A2sBo9yQiF6HktAAEQ6LhMAxg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245072615161.6836947147533; Mon, 16 Feb 2026 04:31:12 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id B18E341853; Mon, 16 Feb 2026 07:31:11 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id A7F1041882; Mon, 16 Feb 2026 07:28:31 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id E215F3F311; Mon, 16 Feb 2026 07:28:22 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 0E25B3F348 for ; Mon, 16 Feb 2026 07:28:22 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-529-6qRGvTevOjKcc90VkBZ43Q-1; Mon, 16 Feb 2026 07:28:20 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8D94F1955D7F for ; Mon, 16 Feb 2026 12:28:19 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E052230001A5 for ; Mon, 16 Feb 2026 12:28:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244901; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=C5mAr71ffD//N6PTYBUayf0eIrqiuuS+T+wqMmzwO+k=; b=D8aJFfI57AJwYlOLbxWrcYyn72eBH4D8AmXLsTcqsgh/W/1upneGvnGfTbT6/tGCjDRFUd AXc6M2aPpaORy84AiMZuMAVLOMVU1srJfas0NFFcxH8Z8h0xtBCot1672RHkw65PfwEaq3 LrfUIqDox0H+OobGFsrsjUPUolG3TxA= X-MC-Unique: 6qRGvTevOjKcc90VkBZ43Q-1 X-Mimecast-MFC-AGG-ID: 6qRGvTevOjKcc90VkBZ43Q_1771244899 To: devel@lists.libvirt.org Subject: [libvirt PATCH 01/24] qemu: Introduce QEMU_CAPS_OBJECT_IOMMUFD Date: Mon, 16 Feb 2026 13:27:53 +0100 Message-ID: <14e4b5d3994ee737d89b76c593cb0f94199980bc.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: SQWvsPgD-76v0Si5fliMHn6imsEimKzoJkc3kJ_AwyU_1771244899 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: IL2TCD522ZAOOJVBR7NBLIP6AZD65KBJ X-Message-ID-Hash: IL2TCD522ZAOOJVBR7NBLIP6AZD65KBJ X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245074057158500 Content-Type: text/plain; charset="utf-8"; x-default="true" Detect if QEMU was compiled with IOMMUFD. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_validate.c | 8 ++++++++ tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml | 1 + .../qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml | 1 + tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml | 1 + tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml | 1 + tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml | 1 + 21 files changed, 29 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 67c60a3912..5a1545c727 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -759,6 +759,7 @@ VIR_ENUM_IMPL(virQEMUCaps, =20 /* 490 */ "scsi-block.migrate-pr", /* QEMU_CAPS_DEVICE_SCSI_BLOCK_MIGR= ATE_PR */ + "iommufd", /* QEMU_CAPS_OBJECT_IOMMUFD */ ); =20 =20 @@ -1466,6 +1467,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[= ] =3D { { "tpm-emulator", QEMU_CAPS_DEVICE_TPM_EMULATOR }, { "tpm-passthrough", QEMU_CAPS_DEVICE_TPM_PASSTHROUGH }, { "acpi-generic-initiator", QEMU_CAPS_ACPI_GENERIC_INITIATOR }, + { "iommufd", QEMU_CAPS_OBJECT_IOMMUFD }, }; =20 =20 diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 86ebe16b50..8d5c5cc94c 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -734,6 +734,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ =20 /* 490 */ QEMU_CAPS_DEVICE_SCSI_BLOCK_MIGRATE_PR, /* persistent reservation migr= ation support */ + QEMU_CAPS_OBJECT_IOMMUFD, /* -object iommufd */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 2ca38db9f1..18700b5a9b 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -2722,6 +2722,14 @@ qemuValidateDomainDeviceDefHostdev(const virDomainHo= stdevDef *hostdev, _("VFIO PCI device assignment is not su= pported by this version of qemu")); return -1; } + + if (hostdev->source.subsys.u.pci.driver.iommufd =3D=3D VIR= _TRISTATE_BOOL_YES) { + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_IOMMUFD= )) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("IOMMUFD is not supported by this= version of qemu")); + return -1; + } + } } =20 if (hostdev->writeFiltering !=3D VIR_TRISTATE_BOOL_ABSENT) { diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml b/tests/qem= ucapabilitiesdata/caps_10.0.0_aarch64.xml index c2bffe88ad..e5f55f461a 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml @@ -164,6 +164,7 @@ + 10000000 61700285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml b/tests/qemuc= apabilitiesdata/caps_10.0.0_s390x.xml index 410f7c324c..96eadffcec 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml @@ -137,6 +137,7 @@ + 10000000 39100285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml b/tes= ts/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml index a7166aba44..74a68c8402 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml @@ -210,6 +210,7 @@ + 10000000 43100285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.0.0_x86_64.xml index 4177eb06b6..d593dd1ab8 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml @@ -210,6 +210,7 @@ + 10000000 43100285 v10.0.0 diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml b/tests/qemuc= apabilitiesdata/caps_10.1.0_s390x.xml index 9faa853da2..3e271824c6 100644 --- a/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_10.1.0_s390x.xml @@ -141,6 +141,7 @@ + 10001000 39100286 v10.1.0 diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml b/t= ests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml index d5566234a2..512186a341 100644 --- a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml +++ b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml @@ -193,6 +193,7 @@ + 10001000 43100286 v10.1.0 diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.1.0_x86_64.xml index 12d2b262a5..d6f1009c77 100644 --- a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml @@ -215,6 +215,7 @@ + 10001000 43100286 v10.1.0 diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml b/tests/qem= ucapabilitiesdata/caps_10.2.0_aarch64.xml index 7154cdb66c..54d10e1433 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_10.2.0_aarch64.xml @@ -183,6 +183,7 @@ + 10002000 61700287 v10.2.0 diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml b/tests= /qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml index 0d627136e8..38f6a0f6c3 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml +++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64+mshv.xml @@ -203,6 +203,7 @@ + 10002000 43100287 v10.2.0 diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.2.0_x86_64.xml index 5eae704512..1ed21b9bf7 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml @@ -216,6 +216,7 @@ + 10002000 43100287 v10.2.0 diff --git a/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml b/tests/qem= ucapabilitiesdata/caps_11.0.0_aarch64.xml index 89c02268e4..4e6edf8df9 100644 --- a/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_11.0.0_aarch64.xml @@ -184,6 +184,7 @@ + 10002050 61700286 v10.2.0-1114-gb3abdfa486 diff --git a/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_11.0.0_x86_64.xml index 89e45331f6..22eaff6545 100644 --- a/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_11.0.0_x86_64.xml @@ -217,6 +217,7 @@ + 10002050 43100286 v10.2.0-1114-gb3abdfa486 diff --git a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.0.0_x86_64.xml index 43c174e0e6..3b4aaa202c 100644 --- a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml @@ -205,6 +205,7 @@ + 9000000 43100245 v9.0.0 diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_9.1.0_s390x.xml index 78b7493b53..02c8e6f641 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml @@ -127,6 +127,7 @@ + 9001000 39100246 v9.1.0 diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.1.0_x86_64.xml index d68bb783e8..84972cba68 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml @@ -204,6 +204,7 @@ + 9001000 43100246 v9.1.0 diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_9.2.0_s390x.xml index 01fb50038d..135812b527 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml @@ -130,6 +130,7 @@ + 9002000 39100247 v9.2.0 diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml b/test= s/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml index ac936bc17b..5097fc3900 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml @@ -208,6 +208,7 @@ + 9002000 43100247 v9.2.0 diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.2.0_x86_64.xml index fd851d9201..b8bf0a3e9b 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml @@ -206,6 +206,7 @@ + 9002000 43100247 v9.2.0 --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245145; cv=none; d=zohomail.com; s=zohoarc; b=kr5PqpwUjm+YzXHJFATy0yA2z/zkCfKnzgWc2x7Y/uEZEZj0lwpRq8FHkjRMQKN9FtJY8AOoGxb9PT1Cqd0U1pd6utDqgvlbPt5oWjaZ1wMtcgXvMRgpEXzirKGByeEx6GJTW1qKZP3yPuJsdWYHhIkNLpkoBrToMISXde+H8SU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245145; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=LlKLw1ruAIFGZ35eePq4FnQy3Co/kmVB0vz9wMDBQ5k=; b=ndOhlZnNXkSdpgVsJtZPARQOxN6CkPPpocmFhEWtxcGRqDd9gOxWyS5aZmxo3+23iaxpWXPthfVrfBMJbaZfIZlv1vvP1EIzzILcTbqjDgmAfSp6gaJ+oy8dNkL4jWGZxdkYGiHlD/fJBSvj2RBt1AHaOnKCU1ZygrIy/jSJnP0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245145055345.9971568393855; Mon, 16 Feb 2026 04:32:25 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 0B91D418CD; Mon, 16 Feb 2026 07:32:24 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 6758741905; Mon, 16 Feb 2026 07:28:34 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id BA5843F343; Mon, 16 Feb 2026 07:28:23 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 3E65A3F311 for ; Mon, 16 Feb 2026 07:28:23 -0500 (EST) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-594-lOqGRWBjMr6mRvYAyepo2A-1; Mon, 16 Feb 2026 07:28:21 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9C1431956067 for ; Mon, 16 Feb 2026 12:28:20 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id EEB8430001A5 for ; Mon, 16 Feb 2026 12:28:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244902; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LlKLw1ruAIFGZ35eePq4FnQy3Co/kmVB0vz9wMDBQ5k=; b=gfoZ8OnfkqWkp1KuHmWuCU7FHYXVzYfGsPzUtY8ScG7gWOxzQswC29u1Ip8kbh0ZuIEDRa w+7T6f468A7BnwYGov8oLePas5JYe3Ggr3nBNW06lwlL3pwYpDMS+dAg/KLJwTyUfq1WlL WGaA2Pk/EiXSIPv45Fapta2uJhwLXsU= X-MC-Unique: lOqGRWBjMr6mRvYAyepo2A-1 X-Mimecast-MFC-AGG-ID: lOqGRWBjMr6mRvYAyepo2A_1771244900 To: devel@lists.libvirt.org Subject: [libvirt PATCH 02/24] qemu: Move IOMMUFD validation to qemu_validate Date: Mon, 16 Feb 2026 13:27:54 +0100 Message-ID: <470b6616ebdd99bfc9e1bbb1d1951ab029b44352.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: _KFXkmxDNl5lWDIjkTNm5D7kYW9Yo0wWcqX9ak8GMJA_1771244900 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: I5GZRVMSCFBQI4ZSHCU2ZMJ5E4AFLYUU X-Message-ID-Hash: I5GZRVMSCFBQI4ZSHCU2ZMJ5E4AFLYUU X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245146042158500 Content-Type: text/plain; charset="utf-8"; x-default="true" Fail early if kernel doesn't support IOMMUFD. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/libvirt_private.syms | 1 + src/qemu/qemu_process.c | 8 +------- src/qemu/qemu_validate.c | 7 +++++++ src/util/viriommufd.c | 13 +++++++++++++ src/util/viriommufd.h | 2 ++ 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 8554191503..2f9fdc04ad 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2649,6 +2649,7 @@ virInitctlSetRunLevel; =20 # util/viriommufd.h virIOMMUFDSetRLimitMode; +virIOMMUFDSupported; =20 # util/viriscsi.h virISCSIConnectionLogin; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index c3f681f1dd..fd400ae8a6 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7694,13 +7694,7 @@ qemuProcessOpenIommuFd(virDomainObj *vm) VIR_DEBUG("Opening IOMMU FD for domain %s", vm->def->name); =20 if ((fd =3D open(VIR_IOMMU_DEV_PATH, O_RDWR | O_CLOEXEC)) < 0) { - if (errno =3D=3D ENOENT) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("IOMMU FD support requires /dev/iommu device"= )); - } else { - virReportSystemError(errno, "%s", - _("cannot open /dev/iommu")); - } + virReportSystemError(errno, "%s", _("cannot open /dev/iommu")); return -1; } =20 diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 18700b5a9b..16dd5fef1a 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -27,6 +27,7 @@ #include "qemu_process.h" #include "domain_conf.h" #include "virbitmap.h" +#include "viriommufd.h" #include "virlog.h" #include "virutil.h" =20 @@ -2729,6 +2730,12 @@ qemuValidateDomainDeviceDefHostdev(const virDomainHo= stdevDef *hostdev, _("IOMMUFD is not supported by this= version of qemu")); return -1; } + + if (!virIOMMUFDSupported()) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("IOMMUFD is not supported by host= kernel")); + return -1; + } } } =20 diff --git a/src/util/viriommufd.c b/src/util/viriommufd.c index 5af097683d..44b30029a5 100644 --- a/src/util/viriommufd.c +++ b/src/util/viriommufd.c @@ -88,3 +88,16 @@ int virIOMMUFDSetRLimitMode(int fd G_GNUC_UNUSED, } =20 #endif + +/** + * virIOMMUFDSupported: + * + * Check the presence of IOMMU device. + * + * Retruns: true if it exists, false otherwise + */ +bool +virIOMMUFDSupported(void) +{ + return virFileExists(VIR_IOMMU_DEV_PATH); +} diff --git a/src/util/viriommufd.h b/src/util/viriommufd.h index ebecfe3633..ec6be9fa66 100644 --- a/src/util/viriommufd.h +++ b/src/util/viriommufd.h @@ -23,3 +23,5 @@ #define VIR_IOMMU_DEV_PATH "/dev/iommu" =20 int virIOMMUFDSetRLimitMode(int fd, bool processAccounting); + +bool virIOMMUFDSupported(void); --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245201; cv=none; d=zohomail.com; s=zohoarc; b=EZIOQFRJUJQ5zOdGXApeoM7adIturBUtRuCGBHj+Aex78o8ALiyYQfDgQjLjOoJ8I6Jl+V7L716gLvrwZ0BuWVT7Q0Q0VR3u0idt2k+Zcj+vtL6fIeWrN7oMqAC0DUZdTJERkHWDcya/NskWzg7QwDMjpK/skl6hlW8gYSgCYrc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245201; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=pIARDYrLEGX3FOrPISGfxHBymK07yf9fgsyRXdINK0k=; b=CDcaTo+rUC/sVhii2iNHCqoWJhTHxycVYyPpkLR9VhyrvZ5wZtE7uCSpgkdLZ8u9zm31moTN7kyQGWuCfMFTediLR9NsNsh8E96SBG8Wgy5VyvWAOLHO1MfyAb2yMhbuE3acP7NKP/yBLh07uZ/CP4+PCyGfcEDUs1wqO2BLXv4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245201118635.8950742001058; Mon, 16 Feb 2026 04:33:21 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 6A82241816; Mon, 16 Feb 2026 07:33:20 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id D1A293F950; Mon, 16 Feb 2026 07:28:36 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id C36063F311; Mon, 16 Feb 2026 07:28:24 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 402DD3F311 for ; Mon, 16 Feb 2026 07:28:24 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-635-9cBM0UIFMJqERVnyrlIC0g-1; Mon, 16 Feb 2026 07:28:22 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B6C9919560B2 for ; Mon, 16 Feb 2026 12:28:21 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 13E2830001A5 for ; Mon, 16 Feb 2026 12:28:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244903; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pIARDYrLEGX3FOrPISGfxHBymK07yf9fgsyRXdINK0k=; b=XRGPyUhSTr1j+NXBNRTKGQ9wNeGCBT+gAwB/ivll8uwTo7rL7yVko3mwJqy5GpnZhXoskY 0ntyjg4wSpYfqVrvn+3l35l5Oc+WTxZTGCQN/BTw1XUngcfPQ1whb25Eou4Ua5/0mR00If yrW7ViiQQQySc+wf69mEz2PEe+/1rzM= X-MC-Unique: 9cBM0UIFMJqERVnyrlIC0g-1 X-Mimecast-MFC-AGG-ID: 9cBM0UIFMJqERVnyrlIC0g_1771244901 To: devel@lists.libvirt.org Subject: [libvirt PATCH 03/24] util: Move openning IOMMU device to viriommufd Date: Mon, 16 Feb 2026 13:27:55 +0100 Message-ID: <877425a6556da7a793b666ec79b9e0b187acdbd8.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: KkbQddfCiSD2C2A0vOv1UHz4BBa16GqVJJ_882-qRoM_1771244901 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: TYHEJLAF5H62AMNF4NPFTNQLMTXRLRUX X-Message-ID-Hash: TYHEJLAF5H62AMNF4NPFTNQLMTXRLRUX X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245203490154100 Content-Type: text/plain; charset="utf-8"; x-default="true" Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/libvirt_private.syms | 2 +- src/qemu/qemu_process.c | 9 +-------- src/util/viriommufd.c | 22 +++++++++++++++++++--- src/util/viriommufd.h | 2 +- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 2f9fdc04ad..576b1f6595 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2648,7 +2648,7 @@ virInitctlFifos; virInitctlSetRunLevel; =20 # util/viriommufd.h -virIOMMUFDSetRLimitMode; +virIOMMUFDOpenDevice; virIOMMUFDSupported; =20 # util/viriscsi.h diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index fd400ae8a6..9b459f47ca 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7693,15 +7693,8 @@ qemuProcessOpenIommuFd(virDomainObj *vm) =20 VIR_DEBUG("Opening IOMMU FD for domain %s", vm->def->name); =20 - if ((fd =3D open(VIR_IOMMU_DEV_PATH, O_RDWR | O_CLOEXEC)) < 0) { - virReportSystemError(errno, "%s", _("cannot open /dev/iommu")); + if ((fd =3D virIOMMUFDOpenDevice()) < 0) return -1; - } - - if (virIOMMUFDSetRLimitMode(fd, true) < 0) { - VIR_FORCE_CLOSE(fd); - return -1; - } =20 VIR_DEBUG("Opened IOMMU FD %d for domain %s", fd, vm->def->name); return fd; diff --git a/src/util/viriommufd.c b/src/util/viriommufd.c index 44b30029a5..1f3353eab4 100644 --- a/src/util/viriommufd.c +++ b/src/util/viriommufd.c @@ -1,5 +1,7 @@ #include =20 +#include + #include "viriommufd.h" #include "virlog.h" #include "virerror.h" @@ -54,7 +56,7 @@ struct iommu_option { * * Returns: 0 on success, -1 on error */ -int +static int virIOMMUFDSetRLimitMode(int fd, bool processAccounting) { struct iommu_option option =3D { @@ -77,10 +79,24 @@ virIOMMUFDSetRLimitMode(int fd, bool processAccounting) return 0; } =20 +int +virIOMMUFDOpenDevice(void) +{ + int fd =3D -1; + + if ((fd =3D open(VIR_IOMMU_DEV_PATH, O_RDWR | O_CLOEXEC)) < 0) + virReportSystemError(errno, "%s", _("cannot open IOMMUFD device")); + + if (virIOMMUFDSetRLimitMode(fd, true) < 0) + return -1; + + return fd; +} + #else =20 -int virIOMMUFDSetRLimitMode(int fd G_GNUC_UNUSED, - bool processAccounting G_GNUC_UNUSED) +int +virIOMMUFDOpenDevice(void) { virReportError(VIR_ERR_NO_SUPPORT, "%s", _("IOMMUFD is not supported on this platform")); diff --git a/src/util/viriommufd.h b/src/util/viriommufd.h index ec6be9fa66..223f44eb5c 100644 --- a/src/util/viriommufd.h +++ b/src/util/viriommufd.h @@ -22,6 +22,6 @@ =20 #define VIR_IOMMU_DEV_PATH "/dev/iommu" =20 -int virIOMMUFDSetRLimitMode(int fd, bool processAccounting); +int virIOMMUFDOpenDevice(void); =20 bool virIOMMUFDSupported(void); --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245249; cv=none; d=zohomail.com; s=zohoarc; b=TaZXrl3Ya5sQYGP27uDgOfWm6187uMrjtICiCfUqi7/08u9IxSSAhbCNTFZpOGe54Q6mDO+yb2SmD9mexLgeSowAe53hnSPsmPOqG6sg0CcfbwMspG7BI9FbuCZuRIxL5+HlA7ofzj/SxrmMYcJYMZgPu6RzEdA6R/mFDYcSi84= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245249; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=+/7+U76q72IuptgbXv+4vSO3pGJ7VzFWHEZlP4LzAuU=; b=cuBPcee2GQsDS/cUC58+1Tnt39Ur3RW63rZ04xm63W8lAvBZp8XUw/Vgsyx8y/IBLetLeb1tnw9JIgpwqnkYUlG7f+8Wj1F5UJnyJZ0rH/nDb8gC1depAT6zLuUgyUMhVYdxH51bmFTmKYUE0IIpA8OpxS6tL9Igbvm035mfuf0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 177124524958918.82356985138142; Mon, 16 Feb 2026 04:34:09 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9BB5041902; Mon, 16 Feb 2026 07:34:08 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 581F1419D0; Mon, 16 Feb 2026 07:28:38 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id CB8EA3F880; Mon, 16 Feb 2026 07:28:25 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 3F7CD3F343 for ; Mon, 16 Feb 2026 07:28:25 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-665-PEnh30qJNZGrFvljlRy23Q-1; Mon, 16 Feb 2026 07:28:23 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DCC06180047F for ; Mon, 16 Feb 2026 12:28:22 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 32F4530001BE for ; Mon, 16 Feb 2026 12:28:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244904; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+/7+U76q72IuptgbXv+4vSO3pGJ7VzFWHEZlP4LzAuU=; b=RrMAH1p+JJFla58t8ub12mqlfYfpHovG9zatqTLy6+JNsq40NM2HgZBNhF/bdq8S0l1NS4 qmKkh51DNg8o0HZzvRjx1ocmI4/NezEfoJILd/2sOoa/BDq1V2qrL3X4R6xeHEnY7mRyfA CfBtQKJXFkGzMCQ5T8Q5bDsOK5FhMPw= X-MC-Unique: PEnh30qJNZGrFvljlRy23Q-1 X-Mimecast-MFC-AGG-ID: PEnh30qJNZGrFvljlRy23Q_1771244903 To: devel@lists.libvirt.org Subject: [libvirt PATCH 04/24] qemu_process: Refactor qemuProcessOpenIommuFd Date: Mon, 16 Feb 2026 13:27:56 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: AgBo0w8rU_GBy1DVPKaRUJeNN28lAhEAfBS4c_vlNuQ_1771244903 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: WKGBMSHJRYSDUVKTZ772TN4DHITC4GVT X-Message-ID-Hash: WKGBMSHJRYSDUVKTZ772TN4DHITC4GVT X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245250566158500 Content-Type: text/plain; charset="utf-8"; x-default="true" This will allow us reusing same code for hotplug. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_process.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 9b459f47ca..d21abb9eb6 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7680,24 +7680,23 @@ qemuProcessPrepareHostBackendChardevHotplug(virDoma= inObj *vm, /** * qemuProcessOpenIommuFd: * @vm: domain object - * @iommuFd: returned file descriptor * * Opens /dev/iommu file descriptor for the VM. * - * Returns: FD on success, -1 on failure + * Returns: 0 on success, -1 on failure */ static int qemuProcessOpenIommuFd(virDomainObj *vm) { - int fd =3D -1; + qemuDomainObjPrivate *priv =3D vm->privateData; =20 VIR_DEBUG("Opening IOMMU FD for domain %s", vm->def->name); =20 - if ((fd =3D virIOMMUFDOpenDevice()) < 0) + if ((priv->iommufd =3D virIOMMUFDOpenDevice()) < 0) return -1; =20 - VIR_DEBUG("Opened IOMMU FD %d for domain %s", fd, vm->def->name); - return fd; + VIR_DEBUG("Opened IOMMU FD %d for domain %s", priv->iommufd, vm->def->= name); + return 0; } =20 /** @@ -7754,7 +7753,6 @@ qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *host= dev) static int qemuProcessOpenVfioFds(virDomainObj *vm) { - qemuDomainObjPrivate *priv =3D vm->privateData; size_t i; =20 /* Check if we have any hostdevs that need VFIO FDs */ @@ -7772,8 +7770,7 @@ qemuProcessOpenVfioFds(virDomainObj *vm) return -1; =20 /* Open IOMMU FD */ - priv->iommufd =3D qemuProcessOpenIommuFd(vm); - if (priv->iommufd =3D=3D -1) + if (qemuProcessOpenIommuFd(vm) < 0) return -1; } } --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245311; cv=none; d=zohomail.com; s=zohoarc; b=g8njwa+PmHmmJEqemPcaVN/pLES7DXn2sVyAzvnJd3eh+z/O7OkAWa0r7iIEEvJrTE2QT4l/68iMwgpyenLCa+WZXF64CZvpdlV3+qYGVSk2GYSHGkQfLxgAL6xwn89TF5RZsSpNEoa2p+/g+k0t/UXN7pNhQ0cjP+BRrM4MB14= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245311; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=StWclDInuzK+2LS1Vf35KXjq+710M9ZgqLKRVVp6C9E=; b=QVtm8r6CLQ9WJ2uPsOu+SpB+wM3gI5MHExDcvCGPyysJMcRFFEZEYgNvZggXahLQAa6sY87Q4nWdMiN8lkOLgc2ygAEL3KD++hp7yS7Xt77FFwR1WgoZ4F9yYOKYklIQ8W74yvdI2rmg4PBHCy63CZpMiKhVjbLSM0l5w49YJes= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245311567314.70711104590987; Mon, 16 Feb 2026 04:35:11 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id AA1A0418B1; Mon, 16 Feb 2026 07:35:10 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 4576541A2C; Mon, 16 Feb 2026 07:28:44 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9D5133F956; Mon, 16 Feb 2026 07:28:39 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 586E03F8A4 for ; Mon, 16 Feb 2026 07:28:26 -0500 (EST) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-615-Imsbsl9JPDKB_6r6nNF3mQ-1; Mon, 16 Feb 2026 07:28:24 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id F207B1955DE7 for ; Mon, 16 Feb 2026 12:28:23 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4F27430001A5 for ; Mon, 16 Feb 2026 12:28:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=StWclDInuzK+2LS1Vf35KXjq+710M9ZgqLKRVVp6C9E=; b=Es+4orWJJR4azdjpPIQ6uvQkEtBuPhpxOe2qUOiLB0OAGcL/Jq7F/0dOxeHRnDBz1HEOZw HAyuDSkultw1ExZmCmb58THniBkuw93Ozj/zjOWhSjfrj7T0LJYGwYuJNTabnD2TTVbGaU eaMmC0XYJcI+VolAmlBx4Evi8PF5k0o= X-MC-Unique: Imsbsl9JPDKB_6r6nNF3mQ-1 X-Mimecast-MFC-AGG-ID: Imsbsl9JPDKB_6r6nNF3mQ_1771244904 To: devel@lists.libvirt.org Subject: [libvirt PATCH 05/24] util: Move openning VFIO device to virpci Date: Mon, 16 Feb 2026 13:27:57 +0100 Message-ID: <670328117ea92229756f0aad76d27a3c3dc49a7d.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: f-T0n0gQrgP8Wk9GPpT8qgc7Q8Ob2OJ2ViMbSpBWBQE_1771244904 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: KEGZ3QXD7ZCB2UGCOB54ITCLWPKD7WMM X-Message-ID-Hash: KEGZ3QXD7ZCB2UGCOB54ITCLWPKD7WMM X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245312949158500 Content-Type: text/plain; charset="utf-8"; x-default="true" Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/libvirt_private.syms | 1 + src/qemu/qemu_process.c | 23 +---------------------- src/util/virpci.c | 28 ++++++++++++++++++++++++++++ src/util/virpci.h | 2 ++ 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 576b1f6595..4d29512e0b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3175,6 +3175,7 @@ virPCIDeviceListNew; virPCIDeviceListSteal; virPCIDeviceListStealIndex; virPCIDeviceNew; +virPCIDeviceOpenVfioFd; virPCIDeviceReattach; virPCIDeviceRebind; virPCIDeviceReset; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d21abb9eb6..cc2a9c8abc 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7711,9 +7711,6 @@ qemuProcessOpenIommuFd(virDomainObj *vm) static int qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *hostdev) { - g_autofree char *vfioPath =3D NULL; - int fd =3D -1; - if (hostdev->mode !=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || hostdev->source.subsys.type !=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PC= I) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -7721,25 +7718,7 @@ qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *hos= tdev) return -1; } =20 - if (virPCIDeviceGetVfioPath(&hostdev->source.subsys.u.pci.addr, &vfioP= ath) < 0) - return -1; - - VIR_DEBUG("Opening VFIO device %s", vfioPath); - - if ((fd =3D open(vfioPath, O_RDWR | O_CLOEXEC)) < 0) { - if (errno =3D=3D ENOENT) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("VFIO device %1$s not found - ensure device i= s bound to vfio-pci driver"), - vfioPath); - } else { - virReportSystemError(errno, - _("cannot open VFIO device %1$s"), vfioPa= th); - } - return -1; - } - - VIR_DEBUG("Opened VFIO device FD %d for %s", fd, vfioPath); - return fd; + return virPCIDeviceOpenVfioFd(&hostdev->source.subsys.u.pci.addr); } =20 /** diff --git a/src/util/virpci.c b/src/util/virpci.c index 2348a98003..30feec6dae 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c @@ -3359,3 +3359,31 @@ virPCIDeviceGetVfioPath(virPCIDeviceAddress *addr, addrStr); return -1; } + +/** + * virPCIDeviceOpenVfioFd: + * @addr: + * + * Opens VFIO device and returns its FD. + * + * Returns: FD on success, -1 on failure + */ +int +virPCIDeviceOpenVfioFd(virPCIDeviceAddress *addr) +{ + g_autofree char *vfioPath =3D NULL; + int fd =3D -1; + + if (virPCIDeviceGetVfioPath(addr, &vfioPath) < 0) + return -1; + + VIR_DEBUG("Opening VFIO device %s", vfioPath); + + if ((fd =3D open(vfioPath, O_RDWR | O_CLOEXEC)) < 0) { + virReportSystemError(errno, _("cannot open VFIO device %1$s"), vfi= oPath); + return -1; + } + + VIR_DEBUG("Opened VFIO device FD %d for %s", fd, vfioPath); + return fd; +} diff --git a/src/util/virpci.h b/src/util/virpci.h index 24ede10755..7848567285 100644 --- a/src/util/virpci.h +++ b/src/util/virpci.h @@ -298,6 +298,8 @@ void virPCIDeviceAddressFree(virPCIDeviceAddress *addre= ss); =20 int virPCIDeviceGetVfioPath(virPCIDeviceAddress *addr, char **vfioPath); =20 +int virPCIDeviceOpenVfioFd(virPCIDeviceAddress *addr); + G_DEFINE_AUTOPTR_CLEANUP_FUNC(virPCIDevice, virPCIDeviceFree); G_DEFINE_AUTOPTR_CLEANUP_FUNC(virPCIDeviceAddress, virPCIDeviceAddressFree= ); G_DEFINE_AUTOPTR_CLEANUP_FUNC(virPCIEDeviceInfo, virPCIEDeviceInfoFree); --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245371; cv=none; d=zohomail.com; s=zohoarc; b=k9NmoLMfWP/5hsMmJwIVDB2P+/vKrtuw7iuBUE74PiIaA9J8kKa1mdCUDMk2JehcWJFS0VE6/LDF2nW0X8a3+dgQK0knTE7iWd+2zKpDp7PKdLzYs3DNvazvKZIAa8kzVPU80gYp9cRn/LYVHHg+NjqO3aNlT/qBonbsKxALAd4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245371; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=bcfz21P4JUInoO+/E4MBzZHvp3hdnSug4dQVGV5oZ+s=; b=FYGGsgkOxS97jcEO1FYgolHaFfQmcayp4PMKAGWw6Mmy49XvIWTkQp4rrpq6N29C6QkbsGOdDB3K/5NcciONbCaS1i34LYpez9jnlZO0jeC/XTOZ9SlHXOPRd/YAh/8VMQKMUJvlS7whOMNTdCIoBgSzcMQJ+378PeNsO7zEpKc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 177124537132945.94805208860373; Mon, 16 Feb 2026 04:36:11 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 8BEC53F8B3; Mon, 16 Feb 2026 07:36:10 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id ACE973F9B4; Mon, 16 Feb 2026 07:29:09 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id EBB583F8A8; Mon, 16 Feb 2026 07:29:03 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 70D933F9B4 for ; Mon, 16 Feb 2026 07:28:27 -0500 (EST) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-629-NpFJUzboO9mMXRt1ec7KtA-1; Mon, 16 Feb 2026 07:28:25 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0CED61956089 for ; Mon, 16 Feb 2026 12:28:25 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5E86F30001A5 for ; Mon, 16 Feb 2026 12:28:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244907; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bcfz21P4JUInoO+/E4MBzZHvp3hdnSug4dQVGV5oZ+s=; b=PZmQ+BR9T1cV7BnvOmyRCk2Mm2irSBl4dUIiDsP60wlhRNwqYeDQu7liAOCpCVbXl23Emr 4XJ6FIyFZ20jwj8/1MwOL8VMC7N1d8DzAYXHqi4wvz2JtIqgt5qJw+rK1j/yctnxaJhZLw jnk9Bz6ukS+1Knq7ORlHfURRCU6K2xs= X-MC-Unique: NpFJUzboO9mMXRt1ec7KtA-1 X-Mimecast-MFC-AGG-ID: NpFJUzboO9mMXRt1ec7KtA_1771244905 To: devel@lists.libvirt.org Subject: [libvirt PATCH 06/24] qemu_process: Refactor qemuProcessOpenVfioDeviceFd Date: Mon, 16 Feb 2026 13:27:58 +0100 Message-ID: <4ec32498a6a019abc36dfa954336f5325b3484fa.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: -_JLKkyi_Aum5atP5zQHF6yF6AptT5bZoL8yp2RgCfY_1771244905 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: OIMHH54AHHQFSG2LU7MEOPAIAFSNWLSN X-Message-ID-Hash: OIMHH54AHHQFSG2LU7MEOPAIAFSNWLSN X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245373187158500 Content-Type: text/plain; charset="utf-8"; x-default="true" This will allow us reusing same code for hotplug support. As part of refactor remove redundant checks. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_process.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index cc2a9c8abc..2bab46fca6 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7702,23 +7702,21 @@ qemuProcessOpenIommuFd(virDomainObj *vm) /** * qemuProcessOpenVfioDeviceFd: * @hostdev: host device definition - * @vfioFd: returned file descriptor * * Opens the VFIO device file descriptor for a hostdev. * - * Returns: FD on success, -1 on failure + * Returns: 0 on success, -1 on failure */ static int qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *hostdev) { - if (hostdev->mode !=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || - hostdev->source.subsys.type !=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PC= I) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("VFIO FD only supported for PCI hostdevs")); + qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIVATE(= hostdev); + virDomainHostdevSubsysPCI *pci =3D &hostdev->source.subsys.u.pci; + + if ((hostdevPriv->vfioDeviceFd =3D virPCIDeviceOpenVfioFd(&pci->addr))= < 0) return -1; - } =20 - return virPCIDeviceOpenVfioFd(&hostdev->source.subsys.u.pci.addr); + return 0; } =20 /** @@ -7737,16 +7735,14 @@ qemuProcessOpenVfioFds(virDomainObj *vm) /* Check if we have any hostdevs that need VFIO FDs */ for (i =3D 0; i < vm->def->nhostdevs; i++) { virDomainHostdevDef *hostdev =3D vm->def->hostdevs[i]; - qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIV= ATE(hostdev); =20 if (hostdev->mode =3D=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && hostdev->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_T= YPE_PCI && hostdev->source.subsys.u.pci.driver.name =3D=3D VIR_DEVICE_HOS= TDEV_PCI_DRIVER_NAME_VFIO && hostdev->source.subsys.u.pci.driver.iommufd =3D=3D VIR_TRISTAT= E_BOOL_YES) { /* Open VFIO device FD */ - hostdevPriv->vfioDeviceFd =3D qemuProcessOpenVfioDeviceFd(host= dev); - if (hostdevPriv->vfioDeviceFd =3D=3D -1) - return -1; + if (qemuProcessOpenVfioDeviceFd(hostdev) < 0) + return -1; =20 /* Open IOMMU FD */ if (qemuProcessOpenIommuFd(vm) < 0) --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245442; cv=none; d=zohomail.com; s=zohoarc; b=Gv5EKaBqvaZz48wGLB27IqPNj1moAaKV9MVIUzP/vUQh2j8zd69f6QkxT2LB1pLjCxOTs6QxBd5Vv2bcjRmCdClc5bvN+U2oFk+zYJz4hyhmOEU9cRqtfzIJx4v1t/Svmwoh12Ht5Wjgx+dc6Yp3tEeIfmyZXeo3HCO7JQCaCQ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245442; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=Ck9sSWP/Yw1F6giQxBLaU1BNRFuOClpDnJu0NaWBc1I=; b=nViX0/btcfmJpCaa/h+slDJwqkONNIXyZLbFuAFo4ZG0g+6OugHFKSiYFvNDph57mRKxjCcwQ1A5zAkUGryJouXaRw0soG2x2aYGgFcUE/+rpfJiMCsjOKcd91amoOp6xPjVuGWnq3bzhsGBNuCRPfkhfRSAdIOyXiGP00U2H3Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 177124544239056.77793131397016; Mon, 16 Feb 2026 04:37:22 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id AD8C6418A9; Mon, 16 Feb 2026 07:37:21 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 7A98941ABF; Mon, 16 Feb 2026 07:29:49 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 4B0883FBCB; Mon, 16 Feb 2026 07:29:45 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id D6BAF3F95B for ; Mon, 16 Feb 2026 07:28:28 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-652-hJQ-o3-gP3SeSn9BR9U_dQ-1; Mon, 16 Feb 2026 07:28:26 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1CDA51955D8C for ; Mon, 16 Feb 2026 12:28:26 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6EA7F30001B9 for ; Mon, 16 Feb 2026 12:28:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244908; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ck9sSWP/Yw1F6giQxBLaU1BNRFuOClpDnJu0NaWBc1I=; b=YEVSEK3OiaC34nArYRQLJAfedq/ECn7X6vGduoMbnIlxvJ6Np1cXqzxMpUftjT4Tb2lmqP rmB6pdlsdXbM+rxnZQjExz2qMD18NSZl4DoOiiheZBR6AT7foylIG+2QhSvOaVoLEN9559 gdnVqXbIy9uzb4l41o0+Oj+WjBUqAhc= X-MC-Unique: hJQ-o3-gP3SeSn9BR9U_dQ-1 X-Mimecast-MFC-AGG-ID: hJQ-o3-gP3SeSn9BR9U_dQ_1771244906 To: devel@lists.libvirt.org Subject: [libvirt PATCH 07/24] util: Use virPCIDevice as argument in virPCIDeviceGetVfioPath Date: Mon, 16 Feb 2026 13:27:59 +0100 Message-ID: <58969223656ed602f62bbe1d5ab9cf35ed003d8c.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: eMaMR8L6OeHknnd5Q0jJZM3Kl1_68PYAk5pdkDv01IY_1771244906 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 66C3TXICZRK2NNLO7T62GGYTOXH6TQTQ X-Message-ID-Hash: 66C3TXICZRK2NNLO7T62GGYTOXH6TQTQ X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245445189154100 Content-Type: text/plain; charset="utf-8"; x-default="true" Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/security/security_apparmor.c | 2 +- src/security/security_dac.c | 4 ++-- src/security/security_selinux.c | 4 ++-- src/util/virpci.c | 14 ++++++++------ src/util/virpci.h | 2 +- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/security/security_apparmor.c b/src/security/security_appar= mor.c index 934acfb461..6c5da2a650 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -860,7 +860,7 @@ AppArmorSetSecurityHostdevLabel(virSecurityManager *mgr, } else { g_autofree char *vfiofdDev =3D NULL; =20 - if (virPCIDeviceGetVfioPath(&dev->source.subsys.u.pci.addr= , &vfiofdDev) < 0) + if (virPCIDeviceGetVfioPath(pci, &vfiofdDev) < 0) goto done; =20 ret =3D AppArmorSetSecurityPCILabel(pci, vfiofdDev, ptr); diff --git a/src/security/security_dac.c b/src/security/security_dac.c index d0ed22db2d..704c8dbfec 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -1295,7 +1295,7 @@ virSecurityDACSetHostdevLabel(virSecurityManager *mgr, } else { g_autofree char *vfiofdDev =3D NULL; =20 - if (virPCIDeviceGetVfioPath(&dev->source.subsys.u.pci.addr= , &vfiofdDev) < 0) + if (virPCIDeviceGetVfioPath(pci, &vfiofdDev) < 0) return -1; =20 ret =3D virSecurityDACSetHostdevLabelHelper(vfiofdDev, fal= se, &cbdata); @@ -1468,7 +1468,7 @@ virSecurityDACRestoreHostdevLabel(virSecurityManager = *mgr, } else { g_autofree char *vfiofdDev =3D NULL; =20 - if (virPCIDeviceGetVfioPath(&dev->source.subsys.u.pci.addr= , &vfiofdDev) < 0) + if (virPCIDeviceGetVfioPath(pci, &vfiofdDev) < 0) return -1; =20 ret =3D virSecurityDACRestoreFileLabelInternal(mgr, NULL, diff --git a/src/security/security_selinux.c b/src/security/security_selinu= x.c index 834383a7de..4a5f61d16b 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -2269,7 +2269,7 @@ virSecuritySELinuxSetHostdevSubsysLabel(virSecurityMa= nager *mgr, } else { g_autofree char *vfiofdDev =3D NULL; =20 - if (virPCIDeviceGetVfioPath(&dev->source.subsys.u.pci.addr= , &vfiofdDev) < 0) + if (virPCIDeviceGetVfioPath(pci, &vfiofdDev) < 0) return -1; =20 ret =3D virSecuritySELinuxSetHostdevLabelHelper(vfiofdDev,= false, &data); @@ -2515,7 +2515,7 @@ virSecuritySELinuxRestoreHostdevSubsysLabel(virSecuri= tyManager *mgr, } else { g_autofree char *vfiofdDev =3D NULL; =20 - if (virPCIDeviceGetVfioPath(&dev->source.subsys.u.pci.addr= , &vfiofdDev) < 0) + if (virPCIDeviceGetVfioPath(pci, &vfiofdDev) < 0) return -1; =20 ret =3D virSecuritySELinuxRestoreFileLabel(mgr, vfiofdDev,= false, false); diff --git a/src/util/virpci.c b/src/util/virpci.c index 30feec6dae..78c47869ef 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c @@ -3331,19 +3331,17 @@ virPCIDeviceAddressFree(virPCIDeviceAddress *addres= s) * Returns: 0 on success, -1 on failure */ int -virPCIDeviceGetVfioPath(virPCIDeviceAddress *addr, +virPCIDeviceGetVfioPath(virPCIDevice *pci, char **vfioPath) { - g_autofree char *addrStr =3D NULL; g_autofree char *sysfsPath =3D NULL; g_autoptr(DIR) dir =3D NULL; struct dirent *entry =3D NULL; =20 *vfioPath =3D NULL; - addrStr =3D virPCIDeviceAddressAsString(addr); =20 /* Look in device's vfio-dev subdirectory */ - sysfsPath =3D g_strdup_printf("/sys/bus/pci/devices/%s/vfio-dev/", add= rStr); + sysfsPath =3D virPCIFile(pci->name, "vfio-dev"); =20 if (virDirOpen(&dir, sysfsPath) =3D=3D 1) { while (virDirRead(dir, &entry, sysfsPath) > 0) { @@ -3356,7 +3354,7 @@ virPCIDeviceGetVfioPath(virPCIDeviceAddress *addr, =20 virReportError(VIR_ERR_INTERNAL_ERROR, _("cannot find VFIO device for PCI device %1$s"), - addrStr); + pci->name); return -1; } =20 @@ -3371,10 +3369,14 @@ virPCIDeviceGetVfioPath(virPCIDeviceAddress *addr, int virPCIDeviceOpenVfioFd(virPCIDeviceAddress *addr) { + g_autoptr(virPCIDevice) pci =3D NULL; g_autofree char *vfioPath =3D NULL; int fd =3D -1; =20 - if (virPCIDeviceGetVfioPath(addr, &vfioPath) < 0) + if (!(pci =3D virPCIDeviceNew(addr))) + return -1; + + if (virPCIDeviceGetVfioPath(pci, &vfioPath) < 0) return -1; =20 VIR_DEBUG("Opening VFIO device %s", vfioPath); diff --git a/src/util/virpci.h b/src/util/virpci.h index 7848567285..933099da6c 100644 --- a/src/util/virpci.h +++ b/src/util/virpci.h @@ -296,7 +296,7 @@ void virPCIEDeviceInfoFree(virPCIEDeviceInfo *dev); =20 void virPCIDeviceAddressFree(virPCIDeviceAddress *address); =20 -int virPCIDeviceGetVfioPath(virPCIDeviceAddress *addr, char **vfioPath); +int virPCIDeviceGetVfioPath(virPCIDevice *pci, char **vfioPath); =20 int virPCIDeviceOpenVfioFd(virPCIDeviceAddress *addr); =20 --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245484; cv=none; d=zohomail.com; s=zohoarc; b=eOCvS/EY6dBKX4q84noha/nIk/ncAWu2eu3Ci0F41bUhgauptvAZ1SVeNY0zCJX61yfEPvaSgrIfC4X8DA2VjWcUwZZZyMZZ8qlvY6p1FSdNoUCHYDfcsyZSS3gXBexOMzp5FWKzgomL5ThOfySVJUcB9751bHblNQMkHvJYnsk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245484; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=oQiAnioPQxPiFOmQWysfFW+XWmhleaUo0vRIBOjKy2o=; b=ism1uz3iJkL1fJGKsJG5oThYmbltGBGirZa41dYLkvbf7nW9VjFFt9EPjUplijiYbqzH9JXqsqzYrNp9IZIVFizQdGnWAlYchwbpSlQzqhrAeCLAcqfiyjiuH1kkquKysC9J6khrD6rDDaieGNe7ZglA0cfbLhMP7RetWOgBHvE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245484025794.4589800409082; Mon, 16 Feb 2026 04:38:04 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 3C9913F361; Mon, 16 Feb 2026 07:38:04 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 1D4C441AD3; Mon, 16 Feb 2026 07:30:03 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id DA0D7418E9; Mon, 16 Feb 2026 07:29:58 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 76CDB4182E for ; Mon, 16 Feb 2026 07:28:29 -0500 (EST) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-683-nKhAJKtRNYWyXCIyA51ugA-1; Mon, 16 Feb 2026 07:28:27 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 34FAD180057E for ; Mon, 16 Feb 2026 12:28:27 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8957E3000218 for ; Mon, 16 Feb 2026 12:28:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244909; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oQiAnioPQxPiFOmQWysfFW+XWmhleaUo0vRIBOjKy2o=; b=Gqj1MsMQQ3tne2+GJms37KUm5FZgQwnhuIp2zQFd+1EPAfZvpRMJeMCT0vN2H4+sELAM18 Ocd3yLFVVJP+2IX/oRKeIkE3B7WL0lzoikPuC8aQLiIs8brfRR4ew8DalWagx8szfOznVR AOfajYDmv9P6kmlHq/MVpDK2B1ox/Jo= X-MC-Unique: nKhAJKtRNYWyXCIyA51ugA-1 X-Mimecast-MFC-AGG-ID: nKhAJKtRNYWyXCIyA51ugA_1771244907 To: devel@lists.libvirt.org Subject: [libvirt PATCH 08/24] conf: Introduce virHostdevIsPCIDeviceWithIOMMUFD Date: Mon, 16 Feb 2026 13:28:00 +0100 Message-ID: <5db8fffc31df8f9c368e4f6f92101d9e768ac8aa.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: olHh1lwOSERZ9bii5hvRM8D6XMCAzj8MzO08d_I31Yg_1771244907 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: I36WU4FGHFCL55K6X7CVECER5R7QYFNE X-Message-ID-Hash: I36WU4FGHFCL55K6X7CVECER5R7QYFNE X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245485907158500 Content-Type: text/plain; charset="utf-8"; x-default="true" Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/conf/domain_conf.c | 15 +++++++++++++++ src/conf/domain_conf.h | 3 +++ src/libvirt_private.syms | 1 + src/qemu/qemu_process.c | 5 +---- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index e3c69aee4d..98d34f408d 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -32939,6 +32939,21 @@ virHostdevIsPCIDevice(const virDomainHostdevDef *h= ostdev) } =20 =20 +/** + * virHostdevIsPCIDeviceWithIOMMUFD: + * @hostdev: host device to check + * + * Returns true if @hostdev is a PCI device with IOMMUFD enabled, false ot= herwise. + */ +bool +virHostdevIsPCIDeviceWithIOMMUFD(const virDomainHostdevDef *hostdev) +{ + return virHostdevIsPCIDevice(hostdev) && + hostdev->source.subsys.u.pci.driver.name =3D=3D VIR_DEVICE_HOSTDEV= _PCI_DRIVER_NAME_VFIO && + hostdev->source.subsys.u.pci.driver.iommufd =3D=3D VIR_TRISTATE_BO= OL_YES; +} + + static void virDomainObjGetMessagesIOErrorsSrc(virStorageSource *src, const char *diskdst, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index be96617981..f98fed650a 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -4720,6 +4720,9 @@ virHostdevIsMdevDevice(const virDomainHostdevDef *hos= tdev) bool virHostdevIsPCIDevice(const virDomainHostdevDef *hostdev) ATTRIBUTE_NONNULL(1); +bool +virHostdevIsPCIDeviceWithIOMMUFD(const virDomainHostdevDef *hostdev) + ATTRIBUTE_NONNULL(1); =20 void virDomainObjGetMessagesIOErrorsChain(virStorageSource *src, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 4d29512e0b..15a56a262a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -813,6 +813,7 @@ virDomainQemuMonitorEventNew; virDomainQemuMonitorEventStateRegisterID; virHostdevIsMdevDevice; virHostdevIsPCIDevice; +virHostdevIsPCIDeviceWithIOMMUFD; virHostdevIsSCSIDevice; =20 =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 2bab46fca6..cfc30dcbe4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7736,10 +7736,7 @@ qemuProcessOpenVfioFds(virDomainObj *vm) for (i =3D 0; i < vm->def->nhostdevs; i++) { virDomainHostdevDef *hostdev =3D vm->def->hostdevs[i]; =20 - if (hostdev->mode =3D=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && - hostdev->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_T= YPE_PCI && - hostdev->source.subsys.u.pci.driver.name =3D=3D VIR_DEVICE_HOS= TDEV_PCI_DRIVER_NAME_VFIO && - hostdev->source.subsys.u.pci.driver.iommufd =3D=3D VIR_TRISTAT= E_BOOL_YES) { + if (virHostdevIsPCIDeviceWithIOMMUFD(hostdev)) { /* Open VFIO device FD */ if (qemuProcessOpenVfioDeviceFd(hostdev) < 0) return -1; --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245525; cv=none; d=zohomail.com; s=zohoarc; b=K7Y6XVallrDofTr8+RlGgIWy7erF+xPxy2RxQP/g3ieUIYpV+EK1V9Wuf3Fy5LjU5PEO6mGfW+DealEA2mR1mELkTyxLSfdQVGUsETWW2AlrPy9EcQt3Cvm7/7Zu18FT7UN4ttJvMGaSGFrPvooudow11mdX4BYaZNSulswgsDE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245525; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=89+udoC1CZpL9wVJdZ0N68pjijBevyxPwz+pFFDsBZw=; b=dceZjY7rZAFH7pHtaUPl65f1TiqKxIS5RkQoJRHQC76o1FEUdPL2hy/azcv6kaAubUIZtHjK6UawCW5EEjAIcuHZomfAIh+3iAkA0f/OhphKRRRZtgOknc7lnSyp/qG9mCJXMLm3EuWabFDDM0fmPZ4D21CXpLFpAxWAyjh1Fiw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 177124552516670.83383118162715; Mon, 16 Feb 2026 04:38:45 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 62D534180F; Mon, 16 Feb 2026 07:38:44 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 1DCE541B5B; Mon, 16 Feb 2026 07:30:13 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id ACADE3F8AC; Mon, 16 Feb 2026 07:30:09 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id BBABC3F383 for ; Mon, 16 Feb 2026 07:28:30 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-bamcgI7KPDOJCVEV7O-5Aw-1; Mon, 16 Feb 2026 07:28:29 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6575A1800454 for ; Mon, 16 Feb 2026 12:28:28 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9E8E830001A5 for ; Mon, 16 Feb 2026 12:28:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244910; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=89+udoC1CZpL9wVJdZ0N68pjijBevyxPwz+pFFDsBZw=; b=gxQgS0JwUhU8WLS7qe/j9t2DZIvj7TBSFxXHU2xOcBCza/rLpDtJlzb9APHsL9BgUb1gv6 AjHv8ByACvPrfpVii/cC9WirxqDYePE8S6o4gIlxyC5H3yN+QyZ7wWnrFO+Z0/ecBA5myY FK6DyDkj3Kho0R8NKzyfeEpNA0bevxM= X-MC-Unique: bamcgI7KPDOJCVEV7O-5Aw-1 X-Mimecast-MFC-AGG-ID: bamcgI7KPDOJCVEV7O-5Aw_1771244908 To: devel@lists.libvirt.org Subject: [libvirt PATCH 09/24] conf: Introduce virDomainDefHasPCIHostdevWithIOMMUFD Date: Mon, 16 Feb 2026 13:28:01 +0100 Message-ID: <23428b3832d1b946141a74ea3d6997efb1ea9ba7.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 1leMv78nGeJSilmZTw7Fgnt8Q4PSoXRGqV7dje_kw3Q_1771244908 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: Q26THWN7RP4EPQNNJ3ZB5EG7VMSJNYCM X-Message-ID-Hash: Q26THWN7RP4EPQNNJ3ZB5EG7VMSJNYCM X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245526318154100 Content-Type: text/plain; charset="utf-8"; x-default="true" Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/conf/domain_conf.c | 14 ++++++++++++++ src/conf/domain_conf.h | 3 +++ src/libvirt_private.syms | 1 + src/qemu/qemu_command.c | 42 ++++++++++++---------------------------- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 98d34f408d..453e301041 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -32663,6 +32663,20 @@ virDomainDefHasPCIHostdev(const virDomainDef *def) } =20 =20 +bool +virDomainDefHasPCIHostdevWithIOMMUFD(const virDomainDef *def) +{ + size_t i; + + for (i =3D 0; i < def->nhostdevs; i++) { + if (virHostdevIsPCIDeviceWithIOMMUFD(def->hostdevs[i])) + return true; + } + + return false; +} + + bool virDomainDefHasMdevHostdev(const virDomainDef *def) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f98fed650a..a13f6d79e9 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -4662,6 +4662,9 @@ virDomainDefHasNVMeDisk(const virDomainDef *def); bool virDomainDefHasPCIHostdev(const virDomainDef *def); =20 +bool +virDomainDefHasPCIHostdevWithIOMMUFD(const virDomainDef *def); + bool virDomainDefHasMdevHostdev(const virDomainDef *def); =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 15a56a262a..d8ae4f46cd 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -348,6 +348,7 @@ virDomainDefHasNVMeDisk; virDomainDefHasOldStyleROUEFI; virDomainDefHasOldStyleUEFI; virDomainDefHasPCIHostdev; +virDomainDefHasPCIHostdevWithIOMMUFD; virDomainDefHasTimer; virDomainDefHasUSB; virDomainDefHasVcpusOffline; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index c09c883a28..f400835332 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5356,43 +5356,25 @@ qemuBuildIOMMUFDCommandLine(virCommand *cmd, const virDomainDef *def, virDomainObj *vm) { - size_t i; qemuDomainObjPrivate *priv =3D vm->privateData; g_autofree char *fdstr =3D g_strdup_printf("%d", priv->iommufd); + g_autoptr(virJSONValue) props =3D NULL; =20 + if (!virDomainDefHasPCIHostdevWithIOMMUFD(def)) + return 0; =20 - for (i =3D 0; i < def->nhostdevs; i++) { - virDomainHostdevDef *hostdev =3D def->hostdevs[i]; - virDomainHostdevSubsys *subsys =3D &hostdev->source.subsys; - g_autoptr(virJSONValue) props =3D NULL; + virCommandPassFD(cmd, priv->iommufd, VIR_COMMAND_PASS_FD_CLOSE_PARENT); =20 - if (hostdev->mode !=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) - continue; + priv->iommufd =3D -1; =20 - if (subsys->type !=3D VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) - continue; + if (qemuMonitorCreateObjectProps(&props, "iommufd", + "iommufd0", + "S:fd", fdstr, + NULL) < 0) + return -1; =20 - if (hostdev->info->type =3D=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_UNAS= SIGNED) - continue; - - if (subsys->u.pci.driver.iommufd !=3D VIR_TRISTATE_BOOL_YES) - continue; - - virCommandPassFD(cmd, priv->iommufd, VIR_COMMAND_PASS_FD_CLOSE_PAR= ENT); - - priv->iommufd =3D -1; - - if (qemuMonitorCreateObjectProps(&props, "iommufd", - "iommufd0", - "S:fd", fdstr, - NULL) < 0) - return -1; - - if (qemuBuildObjectCommandlineFromJSON(cmd, props) < 0) - return -1; - - break; - } + if (qemuBuildObjectCommandlineFromJSON(cmd, props) < 0) + return -1; =20 return 0; } --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245558; cv=none; d=zohomail.com; s=zohoarc; b=kZziC7yyIp3ZRebxT43qXbeDiF8WYUrEZ7Uu6bzmNtxB0kH7Y+AVdwvm0pqRm7cJ/lHHF3NqC1WjCKVQ6HCbPjJAGJ29fhVLsuM1bSXuhHq5LY8wsZMTPFp/DNOG8HVIJ7YA9pm1btfRYmtdWPT90hpRDSf6KJEGfzDPQQXaWJY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245558; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=uXeCpfpWgE6p0N/jvUtGZag9mbK2vfN0wVjr47hersw=; b=V05H7NEd61Bk9xhh/WzYJLJCNfjn9pvjcx+EH/99PshjN22Fx12T/onUSVog2C4B7R6qXwiD9nWnhJColCY3bdtc5zluMmBBIIhmFSFLu6kIUbXOarkSBiw8Th+oboCSb0nCAsMDwemzc3jMZHN11mvXlb5Fxw5zi5Gg1c20JIE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245558665358.07087961458296; Mon, 16 Feb 2026 04:39:18 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id DB5CD417DA; Mon, 16 Feb 2026 07:39:18 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 47C9D41B6D; Mon, 16 Feb 2026 07:31:35 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 70EA741869; Mon, 16 Feb 2026 07:31:30 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 33B6F41835 for ; Mon, 16 Feb 2026 07:28:32 -0500 (EST) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-643-naCMbVOMODqLv_Srh1Ugyg-1; Mon, 16 Feb 2026 07:28:30 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B48231800464 for ; Mon, 16 Feb 2026 12:28:29 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C914530001A5 for ; Mon, 16 Feb 2026 12:28:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244911; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uXeCpfpWgE6p0N/jvUtGZag9mbK2vfN0wVjr47hersw=; b=A4MVfqryoUd4h0Mg/KWVyPtq+n4hS4ZmT28tERG10ZDBG/cczzrIQnMMy3gvu6c62M0Dm6 rUWMUShkSUOqR7BbQY4NmjSkB9No/6fDTN075aV/oUBS98fIPrJyAhRYVyv1SgESbeMGqt uRyd0NDctOgVoHN3++/y5WCE3yoqo/U= X-MC-Unique: naCMbVOMODqLv_Srh1Ugyg-1 X-Mimecast-MFC-AGG-ID: naCMbVOMODqLv_Srh1Ugyg_1771244909 To: devel@lists.libvirt.org Subject: [libvirt PATCH 10/24] qemu_domain: Add missing IOMMUFD cleanup Date: Mon, 16 Feb 2026 13:28:02 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 8N1Sq90Xp-4KCNH5xSO3uiohqf6asc7IQhvvVzz8vV4_1771244909 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 4BOJV27GWILW4KIQXU4RD3SBXN42ZUIA X-Message-ID-Hash: 4BOJV27GWILW4KIQXU4RD3SBXN42ZUIA X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245560181158500 Content-Type: text/plain; charset="utf-8"; x-default="true" If starting VM fails we would leak the FD for IOMMU device. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_domain.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index bdab117e96..64b01e524f 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1975,6 +1975,8 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivate *p= riv) =20 priv->migrationRecoverSetup =3D false; =20 + VIR_FORCE_CLOSE(priv->iommufd); + g_clear_pointer(&priv->memoryBackingDir, g_free); } =20 --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245595; cv=none; d=zohomail.com; s=zohoarc; b=bEznFBkgsRUZH97GQv0b7runJpt4QOM5mfNIU2qGX64L/9tPCeV6C2ZMpdKwpq22w7fo/zuIy2ksTIXZWpmMyhe5K8XRtKS1tc+XANq52UsYhDR1El2Lzm86y1uxfaxprsVW38deaBBxbgDVDk+H+2yYU8Djzg8OBf6XOzSkr3A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245595; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=HJCtW/M23Hbu2Udt3glPRlTrZEhv1//1eZHYI7rwVHs=; b=BtOCZpcRi5R95FIG0ienZPNdKcCbJ6Vp+xyLFIZYmQdNsSNhyhYk4/bBNuxAjTYtwVhJwpY5jA8sBdoTo7+FZpO1keZxr4GnhrK6pqXaD+lKI5yW2aEQW/KYo5LDjFMULdBkRmQ/j8T9KPeybPikMmSB/PL2pDDUfv1px4ktxMI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245595188135.302061540816; Mon, 16 Feb 2026 04:39:55 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 4D6A83F9B4; Mon, 16 Feb 2026 07:39:54 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 6A5D441BAE; Mon, 16 Feb 2026 07:31:41 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 303943F94B; Mon, 16 Feb 2026 07:31:36 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 710B741878 for ; Mon, 16 Feb 2026 07:28:33 -0500 (EST) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-464-WMmWoCg_OgO2-9tCwc7PsA-1; Mon, 16 Feb 2026 07:28:31 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DE5461956089 for ; Mon, 16 Feb 2026 12:28:30 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 12F9830001A5 for ; Mon, 16 Feb 2026 12:28:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244913; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HJCtW/M23Hbu2Udt3glPRlTrZEhv1//1eZHYI7rwVHs=; b=ZZYYPm5ZHml49yp2VxZ5tsM5b5AFKM9/gHgVQF89n3M7psfelXMcnEp9xWPZjhQzEGfGFH PrVj+pp6D4gQ8RipgMA7XOVA3F1gBFN4WztkiWN5bYANeBuLXgbhU/UACPW1PzKBPtU9s7 AAEw00w6MAQGz6APp6Wdx3FFrHX9RvI= X-MC-Unique: WMmWoCg_OgO2-9tCwc7PsA-1 X-Mimecast-MFC-AGG-ID: WMmWoCg_OgO2-9tCwc7PsA_1771244911 To: devel@lists.libvirt.org Subject: [libvirt PATCH 11/24] qemu_process: Fix FD leak with multiple host devices using IOMMUFD Date: Mon, 16 Feb 2026 13:28:03 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: vPJKYUgPthnp1QQRfvO8zWH_dt7XYYj1mvhknxH6NFI_1771244911 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: RAALITJMRONZ7YSX2PVXORSD2DY2JMVX X-Message-ID-Hash: RAALITJMRONZ7YSX2PVXORSD2DY2JMVX X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245596364158500 Content-Type: text/plain; charset="utf-8"; x-default="true" We would open IOMMU device for each host device with IOMMUFD backend leaking FD except for the last one. Since we are adding only single iommufd object we need to open it only once. Fixes: 2f0999a161910e3992458902ce90d37f8b8f2642 Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_process.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index cfc30dcbe4..1ca0ed1b9b 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7740,13 +7740,15 @@ qemuProcessOpenVfioFds(virDomainObj *vm) /* Open VFIO device FD */ if (qemuProcessOpenVfioDeviceFd(hostdev) < 0) return -1; - - /* Open IOMMU FD */ - if (qemuProcessOpenIommuFd(vm) < 0) - return -1; } } =20 + /* Open IOMMU FD */ + if (virDomainDefHasPCIHostdevWithIOMMUFD(vm->def) && + qemuProcessOpenIommuFd(vm) < 0) { + return -1; + } + return 0; } =20 --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245641; cv=none; d=zohomail.com; s=zohoarc; b=dorQfPRgOOk7pF1T8uPy8ss95y8pGiKKGfPOyo5vk4FwCB8bRwne3F3oeJFsQMikG0kMMi/aqx4VdM5wPrHdbXTBMXP7IXFtUBrxLn0tw5K0C573VaaHD3vVpGpVpwstZK7CRsG08lza2IXxralSA6YYP+PFeR9/XJo/wQiYXNY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245641; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=M1tFCitlwCj0oRSYc7ep3aJcHX/B8s/MW9cSxDa5290=; b=MON/keDr82EY1nL+iHj/cpTS0RdhaerjA0mSU1QU+vAiSe2woWvBH64s7LZk5kesaqsA918gO4Vkrr8qLgdiI/QmWDP9Ol90CYvNS7ebXjDYR/ivfGvBTw4F7AnlPiRKqnJiZpOQWlYVB0lw+rhUc6hQeKwfRqM2q+3gQ3IDTI0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245641807124.19943419666242; Mon, 16 Feb 2026 04:40:41 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 478653FD39; Mon, 16 Feb 2026 07:40:41 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 01F1741BCF; Mon, 16 Feb 2026 07:32:32 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 338F03F8AD; Mon, 16 Feb 2026 07:32:27 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 78DCD4190C for ; Mon, 16 Feb 2026 07:28:34 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-672-dpWhk6xRPPu8PyiGvy-QQw-1; Mon, 16 Feb 2026 07:28:32 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0492B19560B2 for ; Mon, 16 Feb 2026 12:28:32 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 56A6430001A5 for ; Mon, 16 Feb 2026 12:28:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244914; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=M1tFCitlwCj0oRSYc7ep3aJcHX/B8s/MW9cSxDa5290=; b=cBYSbVwOUT1m5QvKO0kCXrgj+jkJMIlj24CoAGDQUouJANG4HidTZShfTQoA2ER0M4e1Kl h9hvTPzSGZyurYoz53y/EOXAlv14/d/ll5FbVhwh/Ng3bSk4UrdppZjtO58aU34POp6FZ/ DRtIXzbLDeJlrZ3CCZHP7HurlBU2PKc= X-MC-Unique: dpWhk6xRPPu8PyiGvy-QQw-1 X-Mimecast-MFC-AGG-ID: dpWhk6xRPPu8PyiGvy-QQw_1771244912 To: devel@lists.libvirt.org Subject: [libvirt PATCH 12/24] qemu_process: Refactor qemuProcessOpenVfioFds Date: Mon, 16 Feb 2026 13:28:04 +0100 Message-ID: <0df1bff9734df759fa21727a1f01eae0fe00541d.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 1uPPw5_qxv8x0snxBZOnzSeDuTXQYMFT7jSgjAQ6ZgQ_1771244912 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 4FUJPG6XALR4XFNVDEGVDBJKTONW7CXE X-Message-ID-Hash: 4FUJPG6XALR4XFNVDEGVDBJKTONW7CXE X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245643975154100 Content-Type: text/plain; charset="utf-8"; x-default="true" Follow our switch pattern to simplify the code logic and rename the function to follow our naming pattern. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- 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 1ca0ed1b9b..c5c1ef77ec 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7719,27 +7719,28 @@ qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *ho= stdev) return 0; } =20 -/** - * 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; =20 - /* Check if we have any hostdevs that need VFIO FDs */ for (i =3D 0; i < vm->def->nhostdevs; i++) { virDomainHostdevDef *hostdev =3D vm->def->hostdevs[i]; =20 - 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; } } =20 @@ -7807,7 +7808,7 @@ qemuProcessPrepareHost(virQEMUDriver *driver, hostdev_flags |=3D VIR_HOSTDEV_COLD_BOOT; if (qemuHostdevPrepareDomainDevices(driver, vm->def, hostdev_flags) < = 0) return -1; - if (qemuProcessOpenVfioFds(vm) < 0) + if (qemuProcessPrepareHostHostdev(vm) < 0) return -1; =20 VIR_DEBUG("Preparing chr device backends"); --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245683; cv=none; d=zohomail.com; s=zohoarc; b=Oh9+zmmO0w/6p420Y98BkG9vH+k5jrgBP9N0mQOVj+3mnxhP6MrTrg+MGAEkBUSoyOaczS3clC3sfXDJCJtdO6mtZ+I215bbJG1URl+NfrPtSQNpbW2fhGhOKnI/Dhg9BXhWUBbCckP9tUfCyics2STQV0VKmv+yaBpNyHeSbJA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245683; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=sCh5GscqLeMnqwzIahG4JKqXHkCtGLw6k3ctwinFjzk=; b=lIcRSBVaOlTtREPrPm/P3V6F1LEnhI26kw46otDJUgVygIu+XT3RzSevTo53XIY0MCF/gEp/QRB5ijP350Uq8naPHeXFKQjH7m3JpRQdhs/aMUFzeJtA0C+MrAIRKr5bIoQW7jm3o3PzvbeptzhomP+IaONNEzJCCTy8CIBxMTA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245683297974.9506302107769; Mon, 16 Feb 2026 04:41:23 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 7D8F83F9A4; Mon, 16 Feb 2026 07:41:22 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id A42D441BE2; Mon, 16 Feb 2026 07:33:01 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 09A613FCA9; Mon, 16 Feb 2026 07:32:58 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 7C10D41945 for ; Mon, 16 Feb 2026 07:28:35 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-83-hhllvNeMOCaPvunziGxvpQ-1; Mon, 16 Feb 2026 07:28:33 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 135A21956048 for ; Mon, 16 Feb 2026 12:28:33 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 66D6C30001A5 for ; Mon, 16 Feb 2026 12:28:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244915; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sCh5GscqLeMnqwzIahG4JKqXHkCtGLw6k3ctwinFjzk=; b=b1wZE9qlgzEn5Um2fNC1purIVBTJpbwkcn9Pt/MsSp8Ta0ZE8Dx0WruPhLm4d+bUXXopWW h43yzxq/73+u+Khjr52kvXfLNWstLr//Oss8dg0LNCXSsQhFtTj/1CYyNCr3TGgN3C/Exj LeBOB9wgxShRN6/Q21kCRR5wQ65k7WA= X-MC-Unique: hhllvNeMOCaPvunziGxvpQ-1 X-Mimecast-MFC-AGG-ID: hhllvNeMOCaPvunziGxvpQ_1771244913 To: devel@lists.libvirt.org Subject: [libvirt PATCH 13/24] qemuxmlconftest: Refactor host device preparation Date: Mon, 16 Feb 2026 13:28:05 +0100 Message-ID: <1aafb7b6819d67016b5326009ea70c7e4d7fa954.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: RNQtX5i8CG1UC0kXh20CCL6LaPGBzJErDmQJANwZVS4_1771244913 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: AEKSIQH4LIEHLH5SKOQQMNFK7G2IT6DF X-Message-ID-Hash: AEKSIQH4LIEHLH5SKOQQMNFK7G2IT6DF X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245684925158500 Content-Type: text/plain; charset="utf-8"; x-default="true" Create a single place for host device preparation code. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- tests/qemuxmlconftest.c | 71 ++++++++++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 5fddf3a523..321c444d77 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -378,6 +378,54 @@ testSetupHostdevPrivateData(virDomainDef *def) } =20 =20 +static void +testQemuPrepareHostdevUSB(virDomainHostdevDef *hostdev) +{ + virDomainHostdevSubsysUSB *usb =3D &hostdev->source.subsys.u.usb; + + if (!usb->device && !usb->bus) { + if (usb->vendor =3D=3D 0x1234 && usb->product =3D=3D 0x4321) { + usb->bus =3D 42; + usb->device =3D 0x1234; + } else { + g_assert_not_reached(); + } + } else if (!usb->device && !usb->vendor && !usb->product) { + if (usb->bus =3D=3D 2 && STREQ(usb->port, "3")) { + usb->device =3D 4; + } else { + g_assert_not_reached(); + } + } +} + + +static void +testQemuPrepareHostdev(virDomainObj *vm) +{ + size_t i; + + for (i =3D 0; i < vm->def->nhostdevs; i++) { + virDomainHostdevDef *hostdev =3D vm->def->hostdevs[i]; + + if (hostdev->mode !=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) + continue; + + switch (hostdev->source.subsys.type) { + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: + testQemuPrepareHostdevUSB(hostdev); + break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + 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; + } + } +} + + static virNetworkDriver fakeNetworkDriver =3D { .networkLookupByName =3D fakeNetworkLookupByName, .networkGetXMLDesc =3D fakeNetworkGetXMLDesc, @@ -524,28 +572,7 @@ testCompareXMLToArgvCreateArgs(virQEMUDriver *drv, } } =20 - for (i =3D 0; i < vm->def->nhostdevs; i++) { - virDomainHostdevDef *hostdev =3D vm->def->hostdevs[i]; - - if (hostdev->mode =3D=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && - hostdev->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_T= YPE_USB) { - virDomainHostdevSubsysUSB *usb =3D &hostdev->source.subsys.u.u= sb; - if (!usb->device && !usb->bus) { - if (usb->vendor =3D=3D 0x1234 && usb->product =3D=3D 0x432= 1) { - usb->bus =3D 42; - usb->device =3D 0x1234; - } else { - g_assert_not_reached(); - } - } else if (!usb->device && !usb->vendor && !usb->product) { - if (usb->bus =3D=3D 2 && STREQ(usb->port, "3")) { - usb->device =3D 4; - } else { - g_assert_not_reached(); - } - } - } - } + testQemuPrepareHostdev(vm); =20 if (flags & FLAG_SLIRP_HELPER) { for (i =3D 0; i < vm->def->nnets; i++) { --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245723; cv=none; d=zohomail.com; s=zohoarc; b=mUgOT+IjzFwrgXB7zOIfMg9+xpg/b0Vg5S9vPPq9HFz9H/C3Xjt8+fTRrQDW9LmssYqTmTj46ekAsFH5eDt6u6ChKXs21drr/8xMd+808Q+55/4O+N0pZ1uPUC734vFfl8t8WILgMIBl7UzvWPBAnFZ05+21fL7sBLSTggsv9Go= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245723; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=dHN2EYne6gfS+daRh4QjvyIFtZw0/m7A4ORT2uB/3V4=; b=MmXlnWrU0ZbkXGvv1OVKaZgkuhNFamlrdOnL5q0z+aUhQ22MU2pPIYzMbBISPgCh2cbbPAOjzmFgc5eQRRmAmLLk1ssgDqKntRnzaieoWbpu+6ltchT4Sue8OUWegkHihgY0+ISOteT7Hl5VJR9Oe5TDefd0pWrGfznGaGBMM28= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 177124572310755.89539098953753; Mon, 16 Feb 2026 04:42:03 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9953A3FAD0; Mon, 16 Feb 2026 07:42:02 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 8174C41BF5; Mon, 16 Feb 2026 07:33:17 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id C22AF41870; Mon, 16 Feb 2026 07:33:12 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 770BF4196B for ; Mon, 16 Feb 2026 07:28:36 -0500 (EST) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-688-BHMnkAdlNHivqbJVrZhxnQ-1; Mon, 16 Feb 2026 07:28:34 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 25B061956053 for ; Mon, 16 Feb 2026 12:28:34 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 76E0A30001A5 for ; Mon, 16 Feb 2026 12:28:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244916; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dHN2EYne6gfS+daRh4QjvyIFtZw0/m7A4ORT2uB/3V4=; b=CaIxafx8rIkV227w6U6KpznUnqNPh4HGyIqyinR6YuhsOJoJCw5A8PLKPLWvT57Dnbb8VA 0QwK45rNLU/OnDFzFWsrRv6QYLg1KB7UIzt48HpTbGrvNlSndPheso5gW1rhjUJRyIA+dg 22gg7ONh1dJ5ypD/eUosSVv8/Eh92Y4= X-MC-Unique: BHMnkAdlNHivqbJVrZhxnQ-1 X-Mimecast-MFC-AGG-ID: BHMnkAdlNHivqbJVrZhxnQ_1771244914 To: devel@lists.libvirt.org Subject: [libvirt PATCH 14/24] qemuxmlconftest: Rename and refactor testSetupHostdevPrivateData Date: Mon, 16 Feb 2026 13:28:06 +0100 Message-ID: <6316dcdad5930a49c633199cfc80a98d82050b11.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: To98A8k9ujUMfPRyCGURamvm_0elbGmW3jJoAhC1M98_1771244914 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: KXYYRGEB4E3OXIN76XKRIIMXPKMSXOHG X-Message-ID-Hash: KXYYRGEB4E3OXIN76XKRIIMXPKMSXOHG X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245725109154100 Content-Type: text/plain; charset="utf-8"; x-default="true" There is no need to call qemuDomainHostdevPrivateNew() because privateData is allocated on creation by virDomainHostdevDefNew(). Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- tests/qemuxmlconftest.c | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 321c444d77..a04311647e 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -352,28 +352,13 @@ fakeNetworkPortGetXMLDesc(virNetworkPortPtr port, =20 =20 static void -testSetupHostdevPrivateData(virDomainDef *def) +testQemuPrepareHostdevPCI(virDomainHostdevDef *hostdev) { - size_t i; + qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIVATE(= hostdev); =20 - for (i =3D 0; i < def->nhostdevs; i++) { - virDomainHostdevDef *hostdev =3D def->hostdevs[i]; - - if (hostdev->mode =3D=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && - hostdev->source.subsys.type =3D=3D VIR_DOMAIN_HOSTDEV_SUBSYS_T= YPE_PCI && - hostdev->source.subsys.u.pci.driver.name =3D=3D VIR_DEVICE_HOS= TDEV_PCI_DRIVER_NAME_VFIO && - hostdev->source.subsys.u.pci.driver.iommufd =3D=3D VIR_TRISTAT= E_BOOL_YES) { - - qemuDomainHostdevPrivate *priv; - - if (!hostdev->privateData) { - hostdev->privateData =3D qemuDomainHostdevPrivateNew(); - } - - priv =3D QEMU_DOMAIN_HOSTDEV_PRIVATE(hostdev); - /* Use a placeholder FD value for tests */ - priv->vfioDeviceFd =3D 0; - } + if (virHostdevIsPCIDeviceWithIOMMUFD(hostdev)) { + /* Use a placeholder FD value for tests */ + hostdevPriv->vfioDeviceFd =3D 0; } } =20 @@ -416,6 +401,8 @@ testQemuPrepareHostdev(virDomainObj *vm) testQemuPrepareHostdevUSB(hostdev); break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + testQemuPrepareHostdevPCI(hostdev); + break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: @@ -479,8 +466,6 @@ testCompareXMLToArgvCreateArgs(virQEMUDriver *drv, if (testQemuPrepareHostBackendChardevOne(NULL, priv->monConfig, vm) < = 0) return NULL; =20 - testSetupHostdevPrivateData(vm->def); - for (i =3D 0; i < vm->def->ndisks; i++) { virDomainDiskDef *disk =3D vm->def->disks[i]; virStorageSource *src; --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245772; cv=none; d=zohomail.com; s=zohoarc; b=V++qkObRm92m1ukFtjU6BqcR1IZkeDqPn9LWNLVsQRWH4ruMjXCb/8KUT5lB7h0qB2vGeXQs098egZHptkhTIok/T3XHOeEWG3yRu5lHdl5xUaWY9ZzvPeaYwq1z1WkIy+rABAEqwaQHfwuiO/7BOhQTEw0mPwx9zHuhrmi8fX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245772; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=JbBamuCHSz2c2RFFH1uC5cwNY9GaBHkTlxORDQZcwtA=; b=FKR/z5GvIYQL+W7UF2lAlo0X7SINI7UFYmeVwSbjIm3WtFyIwRxbDPsCHCfbgslnklidO77NqnooV9o4MuXAtnP8D7NRQNfjbqawoUmOCHkl28RmQdQBlOX5TReBsrL6uoFdHUAlDS+VCTBZzNPEGcsC7wE15GZkczfvgNRsQ5Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245772889193.27212898260996; Mon, 16 Feb 2026 04:42:52 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 552B53F363; Mon, 16 Feb 2026 07:42:52 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 7740341804; Mon, 16 Feb 2026 07:33:58 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 206BF41961; Mon, 16 Feb 2026 07:33:54 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id B8622419BE for ; Mon, 16 Feb 2026 07:28:37 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-YpoYRmFFNxGoZYCr7hA3Mw-1; Mon, 16 Feb 2026 07:28:36 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 35D381955D8F for ; Mon, 16 Feb 2026 12:28:35 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 87A3230001A5 for ; Mon, 16 Feb 2026 12:28:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244917; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JbBamuCHSz2c2RFFH1uC5cwNY9GaBHkTlxORDQZcwtA=; b=PhojI3+Otv7ZNZe/h+UQfVE7Nm8iq7DySdpr5Iuzye0Tl/CyhpBiPNQisXoAIkZDFc2tkE u4+L1voyN1trFo3ePiQwddTbR2DGijl7bdTKuWDNgy9negpbHuUxHumeWZolooRP6BgiFF ijvapHIIQA45xHZwl//iRqpUqqGaOVE= X-MC-Unique: YpoYRmFFNxGoZYCr7hA3Mw-1 X-Mimecast-MFC-AGG-ID: YpoYRmFFNxGoZYCr7hA3Mw_1771244915 To: devel@lists.libvirt.org Subject: [libvirt PATCH 15/24] qemuxmlconftest: Set fake FD for IOMMUFD Date: Mon, 16 Feb 2026 13:28:07 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: d3Nrcj04aLIMIvkS6Ok9ImVeqanuQNQYbwAvtU8ENE0_1771244915 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 7OUBLXB7C3SVJFPLX5UXNGYAVIOAXBOB X-Message-ID-Hash: 7OUBLXB7C3SVJFPLX5UXNGYAVIOAXBOB X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245773837154100 Content-Type: text/plain; charset="utf-8"; x-default="true" Same as for VFIO FD for host device. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args | 2 +- .../iommufd-virt-pci-bus-single.aarch64-latest.args | 2 +- tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args | 2 +- tests/qemuxmlconfdata/iommufd.x86_64-latest.args | 2 +- tests/qemuxmlconftest.c | 4 ++++ 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args b/tests/q= emuxmlconfdata/iommufd-q35.x86_64-latest.args index 7d819e141b..d5fe704021 100644 --- a/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args +++ b/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args @@ -35,7 +35,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-q35-tes= t/.config \ -device '{"driver":"qxl-vga","id":"video0","max_outputs":1,"ram_size":6710= 8864,"vram_size":33554432,"vram64_size_mb":0,"vgamem_mb":8,"bus":"pcie.0","= addr":"0x1"}' \ -global ICH9-LPC.noreboot=3Doff \ -watchdog-action reset \ --object '{"qom-type":"iommufd","id":"iommufd0","fd":"-1"}' \ +-object '{"qom-type":"iommufd","id":"iommufd0","fd":"0"}' \ -device '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommu= fd":"iommufd0","fd":"0","bus":"pcie.0","addr":"0x3"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/iommufd-virt-pci-bus-single.aarch64-late= st.args b/tests/qemuxmlconfdata/iommufd-virt-pci-bus-single.aarch64-latest.= args index 9a04e97351..303cfa922b 100644 --- a/tests/qemuxmlconfdata/iommufd-virt-pci-bus-single.aarch64-latest.args +++ b/tests/qemuxmlconfdata/iommufd-virt-pci-bus-single.aarch64-latest.args @@ -26,7 +26,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-foo/.co= nfig \ -no-shutdown \ -boot strict=3Don \ -audiodev '{"id":"audio1","driver":"none"}' \ --object '{"qom-type":"iommufd","id":"iommufd0","fd":"-1"}' \ +-object '{"qom-type":"iommufd","id":"iommufd0","fd":"0"}' \ -device '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommu= fd":"iommufd0","fd":"0","bus":"pcie.0","addr":"0x1"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args b/tests= /qemuxmlconfdata/iommufd-virt.aarch64-latest.args index 039ae4477c..6a62b08e8a 100644 --- a/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args +++ b/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args @@ -29,7 +29,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-foo/.co= nfig \ -device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus= ":"pcie.0","addr":"0x1.0x1"}' \ -device '{"driver":"pcie-root-port","port":10,"chassis":3,"id":"pci.3","bu= s":"pcie.0","addr":"0x1.0x2"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ --object '{"qom-type":"iommufd","id":"iommufd0","fd":"-1"}' \ +-object '{"qom-type":"iommufd","id":"iommufd0","fd":"0"}' \ -device '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommu= fd":"iommufd0","fd":"0","bus":"pci.1","addr":"0x0"}' \ -device '{"driver":"vfio-pci","host":"0000:07:12.5","id":"hostdev1","iommu= fd":"iommufd0","fd":"0","bus":"pci.2","addr":"0x0"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ diff --git a/tests/qemuxmlconfdata/iommufd.x86_64-latest.args b/tests/qemux= mlconfdata/iommufd.x86_64-latest.args index 3130ba2e3a..15dabe197c 100644 --- a/tests/qemuxmlconfdata/iommufd.x86_64-latest.args +++ b/tests/qemuxmlconfdata/iommufd.x86_64-latest.args @@ -28,7 +28,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-foo/.co= nfig \ -boot strict=3Don \ -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ --object '{"qom-type":"iommufd","id":"iommufd0","fd":"-1"}' \ +-object '{"qom-type":"iommufd","id":"iommufd0","fd":"0"}' \ -device '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommu= fd":"iommufd0","fd":"0","bus":"pci.0","addr":"0x3"}' \ -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","add= r":"0x2"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index a04311647e..4ab004a954 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -388,6 +388,7 @@ testQemuPrepareHostdevUSB(virDomainHostdevDef *hostdev) static void testQemuPrepareHostdev(virDomainObj *vm) { + qemuDomainObjPrivate *priv =3D QEMU_DOMAIN_PRIVATE(vm); size_t i; =20 for (i =3D 0; i < vm->def->nhostdevs; i++) { @@ -410,6 +411,9 @@ testQemuPrepareHostdev(virDomainObj *vm) break; } } + + if (virDomainDefHasPCIHostdevWithIOMMUFD(vm->def)) + priv->iommufd =3D 0; } =20 =20 --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771246124; cv=none; d=zohomail.com; s=zohoarc; b=VN+6A8nhMWzxjdn6KfOEZDH6D3SkONHxVgrgIJH/XG7Pc23qR2Vh8cBleaSmKaxmjnvj24l9adiom9cYj7TDsiFZqxcFMnvZwEwEl8hgIuCBryhdqlGX2Z48mFDomikFDWfRSCUHcjEXX+e+unYOCjtAOdYTscH+JCe5d+0l5D8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771246124; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=2tYG8oujScE4ZSITG08DWgkrIz9Waa8v2aQ0MrHlWHE=; b=VUHAqICt/1MfjZ/vlKK23J0Cuzm5Y/JIgRkU0ID4ldWT+n8Ub8ATZ/c1S6YaRv4LCMp10V4RV56D0X2i3TiiB0cunnfPytuRlP5HoiqCf1r0NFTEJ8276Qbf3gvT11hIxy/SHK8O4E1K8f3HLexFRziNhQPB29Votv1FOBMPVsY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771246124610745.8390535236704; Mon, 16 Feb 2026 04:48:44 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id BE5EF41813; Mon, 16 Feb 2026 07:48:43 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 0870D41E56; Mon, 16 Feb 2026 07:35:25 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 65C14417E6; Mon, 16 Feb 2026 07:35:15 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id CC49B417E6 for ; Mon, 16 Feb 2026 07:28:49 -0500 (EST) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-22-p-Af9HU4NXCCUpMWp60XgA-1; Mon, 16 Feb 2026 07:28:37 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4E2571800366 for ; Mon, 16 Feb 2026 12:28:36 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 96F2A30001A5 for ; Mon, 16 Feb 2026 12:28:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244929; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2tYG8oujScE4ZSITG08DWgkrIz9Waa8v2aQ0MrHlWHE=; b=CSKSA0yGmpjYY3HFgIDFdQFDOcXD6T6osqUTYH3UyRnyd6vkeZnz2qOMdzlNyWYqEyh/BN Y8XKXZw+B594geGMDFKf9RyORMDTlAxRWFQJ8uPQWYlb1L2Jl9DfhrqTdWex+WSO0c5m6e MfBNIP+Fv3ComMg560sIP52lsNC9VmI= X-MC-Unique: p-Af9HU4NXCCUpMWp60XgA-1 X-Mimecast-MFC-AGG-ID: p-Af9HU4NXCCUpMWp60XgA_1771244916 To: devel@lists.libvirt.org Subject: [libvirt PATCH 16/24] qemu: Convert IOMMUFD to qemuFDPassDirect Date: Mon, 16 Feb 2026 13:28:08 +0100 Message-ID: <29835da194b9610c1e8c60fcc298c8eecd0bb49b.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: LkXgmZVd3i7MgB8KM1RyFawzV2Ts8Uu2SPFUpce3FYs_1771244916 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 2ZBJUPETAGVSDYTPOG4ZOU6ZVW7DKGMA X-Message-ID-Hash: 2ZBJUPETAGVSDYTPOG4ZOU6ZVW7DKGMA X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771246124995158500 Content-Type: text/plain; charset="utf-8"; x-default="true" This cleans up creating QEMU command line and makes it easier when adding hotplug support. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_command.c | 7 ++----- src/qemu/qemu_domain.c | 4 ++-- src/qemu/qemu_domain.h | 2 +- src/qemu/qemu_process.c | 6 ++++-- tests/qemuxmlconftest.c | 6 ++++-- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f400835332..204fdf152b 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5357,19 +5357,16 @@ qemuBuildIOMMUFDCommandLine(virCommand *cmd, virDomainObj *vm) { qemuDomainObjPrivate *priv =3D vm->privateData; - g_autofree char *fdstr =3D g_strdup_printf("%d", priv->iommufd); g_autoptr(virJSONValue) props =3D NULL; =20 if (!virDomainDefHasPCIHostdevWithIOMMUFD(def)) return 0; =20 - virCommandPassFD(cmd, priv->iommufd, VIR_COMMAND_PASS_FD_CLOSE_PARENT); - - priv->iommufd =3D -1; + qemuFDPassDirectTransferCommand(priv->iommufd, cmd); =20 if (qemuMonitorCreateObjectProps(&props, "iommufd", "iommufd0", - "S:fd", fdstr, + "S:fd", qemuFDPassDirectGetPath(priv-= >iommufd), NULL) < 0) return -1; =20 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 64b01e524f..d9cd9324e0 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1975,7 +1975,7 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivate *p= riv) =20 priv->migrationRecoverSetup =3D false; =20 - VIR_FORCE_CLOSE(priv->iommufd); + g_clear_pointer(&priv->iommufd, qemuFDPassDirectFree); =20 g_clear_pointer(&priv->memoryBackingDir, g_free); } @@ -2044,7 +2044,7 @@ qemuDomainObjPrivateAlloc(void *opaque) priv->blockjobs =3D virHashNew(virObjectUnref); priv->fds =3D virHashNew(g_object_unref); =20 - priv->iommufd =3D -1; + priv->iommufd =3D NULL; priv->pidMonitored =3D -1; =20 /* agent commands block by default, user can choose different behavior= */ diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 510a8339b0..c6430b1bfb 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -264,7 +264,7 @@ struct _qemuDomainObjPrivate { /* named file descriptor groups associated with the VM */ GHashTable *fds; =20 - int iommufd; + qemuFDPassDirect *iommufd; =20 char *memoryBackingDir; }; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index c5c1ef77ec..c814f992bb 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7689,13 +7689,15 @@ static int qemuProcessOpenIommuFd(virDomainObj *vm) { qemuDomainObjPrivate *priv =3D vm->privateData; + int iommufd; =20 VIR_DEBUG("Opening IOMMU FD for domain %s", vm->def->name); =20 - if ((priv->iommufd =3D virIOMMUFDOpenDevice()) < 0) + if ((iommufd =3D virIOMMUFDOpenDevice()) < 0) return -1; =20 - VIR_DEBUG("Opened IOMMU FD %d for domain %s", priv->iommufd, vm->def->= name); + priv->iommufd =3D qemuFDPassDirectNew("iommufd", &iommufd); + return 0; } =20 diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 4ab004a954..13055eef84 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -412,8 +412,10 @@ testQemuPrepareHostdev(virDomainObj *vm) } } =20 - if (virDomainDefHasPCIHostdevWithIOMMUFD(vm->def)) - priv->iommufd =3D 0; + if (virDomainDefHasPCIHostdevWithIOMMUFD(vm->def)) { + int iommufd =3D 0; + priv->iommufd =3D qemuFDPassDirectNew("iommufd", &iommufd); + } } =20 =20 --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245815; cv=none; d=zohomail.com; s=zohoarc; b=P+DFgjLOiFr85YW3UbF+f84VSLoBlRT6oMs62crZDRD8/1M4b8I5b1rmLCHdUAzt/CfjvNvI79sVnxbx5PYBDBofGYKwalEljsYfrr//X/2N7aJQ0KoD7pqiRaOpVA7f12wJ6vII4sbl2CEJjeij2e7cCL5MhZhVZC9eS+KAIU4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245815; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=fVpMXbpHTK71YnqyEo+MzcAvlZzcy7gW9aQU/boGJAY=; b=HeKsNvvonn9Ze1a0oYcRiXNNhSRFbGvIEE1RA2Xu5Wz/iObhWXoi+5q1Ljl3pd/g2TVdYloRO1oczGoGTxKJ7LdmQkewh1OVLHuQwfrRQHatqzJ1w01wcwx28T3UdJ+2DDnIURSu2pprnJPGZt6M5e5/kOZec1TPwLeKFZTaU3U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245815977485.42263866227836; Mon, 16 Feb 2026 04:43:35 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 35CC43F93E; Mon, 16 Feb 2026 07:43:35 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id D9A0341C72; Mon, 16 Feb 2026 07:34:17 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id EAD033F881; Mon, 16 Feb 2026 07:34:12 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id A140E3F8A4 for ; Mon, 16 Feb 2026 07:28:39 -0500 (EST) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-676-IqgFc5xpN2yVRrUwwX5Tiw-1; Mon, 16 Feb 2026 07:28:38 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8572718005BC for ; Mon, 16 Feb 2026 12:28:37 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C055530001A5 for ; Mon, 16 Feb 2026 12:28:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244919; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fVpMXbpHTK71YnqyEo+MzcAvlZzcy7gW9aQU/boGJAY=; b=dEohSXUZcaGsr6mXqX9gfj2ataPPOS1jAMWHO/LGKw6pbBeajNv4ERbOF/vaHqWJjCPvP+ xt6JehYkwFVoKiPz3rMASK+fjNnvoe1vXpnJdBjfX+iB4pf9YAFe8BeIQBZkjd0tSie7o2 nAesNjr2LKN3M/wfBk6TdeQdddKdNMs= X-MC-Unique: IqgFc5xpN2yVRrUwwX5Tiw-1 X-Mimecast-MFC-AGG-ID: IqgFc5xpN2yVRrUwwX5Tiw_1771244917 To: devel@lists.libvirt.org Subject: [libvirt PATCH 17/24] qemu: Convert vfioDeviceFd to qemuFDPassDirect Date: Mon, 16 Feb 2026 13:28:09 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 6lRUXPWMg5BEcb0lJKsQ9y16wqnK5obq_2wrNXoj3KI_1771244917 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: U5GXL7NOKJP3D2JTG5L3FTMQL3T7FWDS X-Message-ID-Hash: U5GXL7NOKJP3D2JTG5L3FTMQL3T7FWDS X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245817379158500 Content-Type: text/plain; charset="utf-8"; x-default="true" This cleans up creating QEMU command line and makes it easier when adding hotplug support. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_command.c | 15 +++++---------- src/qemu/qemu_domain.c | 4 ++-- src/qemu/qemu_domain.h | 2 +- src/qemu/qemu_process.c | 6 +++++- tests/qemuxmlconftest.c | 4 +++- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 204fdf152b..91eb3cb27d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4818,12 +4818,10 @@ qemuBuildPCIHostdevDevProps(const virDomainDef *def, pcisrc->driver.iommufd =3D=3D VIR_TRISTATE_BOOL_YES) { qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIV= ATE(dev); =20 - if (hostdevPriv->vfioDeviceFd !=3D -1) { - g_autofree char *fdstr =3D g_strdup_printf("%d", hostdevPriv->= vfioDeviceFd); - if (virJSONValueObjectAdd(&props, "S:fd", fdstr, NULL) < 0) - return NULL; - hostdevPriv->vfioDeviceFd =3D -1; - } + if (virJSONValueObjectAdd(&props, + "S:fd", qemuFDPassDirectGetPath(hostdevP= riv->vfioDeviceFd), + NULL) < 0) + return NULL; } =20 if (qemuBuildDeviceAddressProps(props, def, dev->info) < 0) @@ -5273,10 +5271,7 @@ qemuBuildHostdevCommandLine(virCommand *cmd, if (subsys->u.pci.driver.iommufd =3D=3D VIR_TRISTATE_BOOL_YES)= { qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOST= DEV_PRIVATE(hostdev); =20 - if (hostdevPriv->vfioDeviceFd !=3D -1) { - virCommandPassFD(cmd, hostdevPriv->vfioDeviceFd, - VIR_COMMAND_PASS_FD_CLOSE_PARENT); - } + qemuFDPassDirectTransferCommand(hostdevPriv->vfioDeviceFd,= cmd); } =20 if (!(devprops =3D qemuBuildPCIHostdevDevProps(def, hostdev))) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index d9cd9324e0..ada9d3431c 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1245,7 +1245,7 @@ qemuDomainHostdevPrivateDispose(void *obj) { qemuDomainHostdevPrivate *priv =3D obj; =20 - VIR_FORCE_CLOSE(priv->vfioDeviceFd); + g_clear_pointer(&priv->vfioDeviceFd, qemuFDPassDirectFree); } =20 =20 @@ -1271,7 +1271,7 @@ qemuDomainHostdevPrivateNew(void) if (!(priv =3D virObjectNew(qemuDomainHostdevPrivateClass))) return NULL; =20 - priv->vfioDeviceFd =3D -1; + priv->vfioDeviceFd =3D NULL; =20 return (virObject *) priv; } diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index c6430b1bfb..fa7d4ab40f 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -463,7 +463,7 @@ struct _qemuDomainHostdevPrivate { virObject parent; =20 /* VFIO device file descriptor for iommufd passthrough */ - int vfioDeviceFd; + qemuFDPassDirect *vfioDeviceFd; }; =20 =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index c814f992bb..fc7e7bc980 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7714,10 +7714,14 @@ qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *ho= stdev) { qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIVATE(= hostdev); virDomainHostdevSubsysPCI *pci =3D &hostdev->source.subsys.u.pci; + g_autofree char *name =3D g_strdup_printf("hostdev-%s-fd", hostdev->in= fo->alias); + int vfioDeviceFd; =20 - if ((hostdevPriv->vfioDeviceFd =3D virPCIDeviceOpenVfioFd(&pci->addr))= < 0) + if ((vfioDeviceFd =3D virPCIDeviceOpenVfioFd(&pci->addr)) < 0) return -1; =20 + hostdevPriv->vfioDeviceFd =3D qemuFDPassDirectNew(name, &vfioDeviceFd); + return 0; } =20 diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 13055eef84..d2ab4a71b5 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -357,8 +357,10 @@ testQemuPrepareHostdevPCI(virDomainHostdevDef *hostdev) qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIVATE(= hostdev); =20 if (virHostdevIsPCIDeviceWithIOMMUFD(hostdev)) { + g_autofree char *name =3D g_strdup_printf("hostdev-%s-fd", hostdev= ->info->alias); /* Use a placeholder FD value for tests */ - hostdevPriv->vfioDeviceFd =3D 0; + int vfioDeviceFD =3D 0; + hostdevPriv->vfioDeviceFd =3D qemuFDPassDirectNew(name, &vfioDevic= eFD); } } =20 --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245865; cv=none; d=zohomail.com; s=zohoarc; b=lsJ+R49FLHkc3kwnPt2sYfEeVSJpttRytmHffhTLzb0RyDO7v20KfpsgOFq0zC+0e/WnwyW4IDzvJ9+2IdDbsox8BVXXHWuDqAXXKRo/U7FHjAmGx4uSQhYIBUd6OWD3hh9YPdR9Dbf+itvaaMhlTQHuteOxF5aYXNsPwW4Tjrg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245865; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=Jg2D7kk7gnEBxo9i27PG0tl7sGB00MWhlippWNBHf18=; b=SgUlJPex2pdVb3+lBB4oq81Jay+w6/DbV748TkRxg6r7KNzkfxiOODfamLLPsG9dQFvBd8HrtRB2Anf4YvFImp0OYB04t15efovlIgk4IgOgrhGQf+HtSHfiB3W776+4GczYxEH2By2XC/UuYB8ehVSRQV6pEN+Di9AgC0hWgCs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245865275620.1640221234682; Mon, 16 Feb 2026 04:44:25 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 81AC03FD29; Mon, 16 Feb 2026 07:44:24 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 5474141CB8; Mon, 16 Feb 2026 07:34:21 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 2ED7B3F881; Mon, 16 Feb 2026 07:34:13 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 2E757419D8 for ; Mon, 16 Feb 2026 07:28:41 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-353-qvmUjYr1MMCO7PRA5754eA-1; Mon, 16 Feb 2026 07:28:39 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 975B418002C2 for ; Mon, 16 Feb 2026 12:28:38 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id EB17130001A5 for ; Mon, 16 Feb 2026 12:28:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244920; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Jg2D7kk7gnEBxo9i27PG0tl7sGB00MWhlippWNBHf18=; b=IQRhjay4KKJ4axzKy/Cjoda//QtYOTLSf4FzKbTHVTN7ch6Z9yiO/vr2wNsN5IVymN2uQB 9lifW0agof6Oo28BsQVy+0/TbyMAhaK66HsyfPQd/HG0zUKP3gMKl80eMxA7TgoM1lmAok BHrDL/wfgTqvCwoixDGsxJNXOsKBTXM= X-MC-Unique: qvmUjYr1MMCO7PRA5754eA-1 X-Mimecast-MFC-AGG-ID: qvmUjYr1MMCO7PRA5754eA_1771244918 To: devel@lists.libvirt.org Subject: [libvirt PATCH 18/24] qemu_command: Don't use host property if IOMMUFD is used Date: Mon, 16 Feb 2026 13:28:10 +0100 Message-ID: <0c44d86aa292856a361e4b0ee010062ee744f318.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Lgx45mkDXj0PBS7KQKF-qnCBIiWXqk-PqeWM4fxoDx0_1771244918 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: YMMSONODMXZ2ST42RSSHPYMPJFN7NEI6 X-Message-ID-Hash: YMMSONODMXZ2ST42RSSHPYMPJFN7NEI6 X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245865808158500 Content-Type: text/plain; charset="utf-8"; x-default="true" They should not be used at the same time. Fixes: f6230804727df834da27370e835204672218ab23 Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_command.c | 24 +++++++++---------- .../iommufd-q35.x86_64-latest.args | 2 +- ...fd-virt-pci-bus-single.aarch64-latest.args | 2 +- .../iommufd-virt.aarch64-latest.args | 4 ++-- .../iommufd.x86_64-latest.args | 2 +- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 91eb3cb27d..724f0cd8eb 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4762,10 +4762,11 @@ qemuBuildPCIHostdevDevProps(const virDomainDef *def, g_autoptr(virJSONValue) props =3D NULL; virDomainHostdevSubsysPCI *pcisrc =3D &dev->source.subsys.u.pci; virDomainNetTeamingInfo *teaming; - g_autofree char *host =3D virPCIDeviceAddressAsString(&pcisrc->addr); + g_autofree char *host =3D NULL; const char *failover_pair_id =3D NULL; const char *driver =3D NULL; const char *iommufdId =3D NULL; + const char *fdstr =3D NULL; /* 'ramfb' property must be omitted unless it's to be enabled */ bool ramfb =3D pcisrc->ramfb =3D=3D VIR_TRISTATE_SWITCH_ON; =20 @@ -4799,31 +4800,28 @@ qemuBuildPCIHostdevDevProps(const virDomainDef *def, teaming->persistent) failover_pair_id =3D teaming->persistent; =20 - if (pcisrc->driver.iommufd =3D=3D VIR_TRISTATE_BOOL_YES) + if (virHostdevIsPCIDeviceWithIOMMUFD(dev)) { + qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIV= ATE(dev); + + fdstr =3D qemuFDPassDirectGetPath(hostdevPriv->vfioDeviceFd); iommufdId =3D "iommufd0"; + } else { + host =3D virPCIDeviceAddressAsString(&pcisrc->addr); + } =20 if (virJSONValueObjectAdd(&props, "s:driver", driver, - "s:host", host, + "S:host", host, "s:id", dev->info->alias, "p:bootindex", dev->info->effectiveBootIndex, "S:failover_pair_id", failover_pair_id, "S:display", qemuOnOffAuto(pcisrc->display), "B:ramfb", ramfb, "S:iommufd", iommufdId, + "S:fd", fdstr, NULL) < 0) return NULL; =20 - if (pcisrc->driver.name =3D=3D VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VFIO= && - pcisrc->driver.iommufd =3D=3D VIR_TRISTATE_BOOL_YES) { - qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIV= ATE(dev); - - if (virJSONValueObjectAdd(&props, - "S:fd", qemuFDPassDirectGetPath(hostdevP= riv->vfioDeviceFd), - NULL) < 0) - return NULL; - } - if (qemuBuildDeviceAddressProps(props, def, dev->info) < 0) return NULL; =20 diff --git a/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args b/tests/q= emuxmlconfdata/iommufd-q35.x86_64-latest.args index d5fe704021..f886c488e1 100644 --- a/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args +++ b/tests/qemuxmlconfdata/iommufd-q35.x86_64-latest.args @@ -36,6 +36,6 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-q35-tes= t/.config \ -global ICH9-LPC.noreboot=3Doff \ -watchdog-action reset \ -object '{"qom-type":"iommufd","id":"iommufd0","fd":"0"}' \ --device '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommu= fd":"iommufd0","fd":"0","bus":"pcie.0","addr":"0x3"}' \ +-device '{"driver":"vfio-pci","id":"hostdev0","iommufd":"iommufd0","fd":"0= ","bus":"pcie.0","addr":"0x3"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/iommufd-virt-pci-bus-single.aarch64-late= st.args b/tests/qemuxmlconfdata/iommufd-virt-pci-bus-single.aarch64-latest.= args index 303cfa922b..543e976c58 100644 --- a/tests/qemuxmlconfdata/iommufd-virt-pci-bus-single.aarch64-latest.args +++ b/tests/qemuxmlconfdata/iommufd-virt-pci-bus-single.aarch64-latest.args @@ -27,6 +27,6 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-foo/.co= nfig \ -boot strict=3Don \ -audiodev '{"id":"audio1","driver":"none"}' \ -object '{"qom-type":"iommufd","id":"iommufd0","fd":"0"}' \ --device '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommu= fd":"iommufd0","fd":"0","bus":"pcie.0","addr":"0x1"}' \ +-device '{"driver":"vfio-pci","id":"hostdev0","iommufd":"iommufd0","fd":"0= ","bus":"pcie.0","addr":"0x1"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args b/tests= /qemuxmlconfdata/iommufd-virt.aarch64-latest.args index 6a62b08e8a..e1a4c4bb9a 100644 --- a/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args +++ b/tests/qemuxmlconfdata/iommufd-virt.aarch64-latest.args @@ -30,7 +30,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-foo/.co= nfig \ -device '{"driver":"pcie-root-port","port":10,"chassis":3,"id":"pci.3","bu= s":"pcie.0","addr":"0x1.0x2"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -object '{"qom-type":"iommufd","id":"iommufd0","fd":"0"}' \ --device '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommu= fd":"iommufd0","fd":"0","bus":"pci.1","addr":"0x0"}' \ --device '{"driver":"vfio-pci","host":"0000:07:12.5","id":"hostdev1","iommu= fd":"iommufd0","fd":"0","bus":"pci.2","addr":"0x0"}' \ +-device '{"driver":"vfio-pci","id":"hostdev0","iommufd":"iommufd0","fd":"0= ","bus":"pci.1","addr":"0x0"}' \ +-device '{"driver":"vfio-pci","id":"hostdev1","iommufd":"iommufd0","fd":"0= ","bus":"pci.2","addr":"0x0"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/iommufd.x86_64-latest.args b/tests/qemux= mlconfdata/iommufd.x86_64-latest.args index 15dabe197c..b9aefda39d 100644 --- a/tests/qemuxmlconfdata/iommufd.x86_64-latest.args +++ b/tests/qemuxmlconfdata/iommufd.x86_64-latest.args @@ -29,7 +29,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-foo/.co= nfig \ -device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -object '{"qom-type":"iommufd","id":"iommufd0","fd":"0"}' \ --device '{"driver":"vfio-pci","host":"0000:06:12.5","id":"hostdev0","iommu= fd":"iommufd0","fd":"0","bus":"pci.0","addr":"0x3"}' \ +-device '{"driver":"vfio-pci","id":"hostdev0","iommufd":"iommufd0","fd":"0= ","bus":"pci.0","addr":"0x3"}' \ -device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","add= r":"0x2"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ -msg timestamp=3Don --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245903; cv=none; d=zohomail.com; s=zohoarc; b=TurEXZf6JlQnnNdPsFn1xypkQ+29NCOMDgpd563sXm+0R52wS7Myjz4eQb94N1XlvXRzv6Pild5KhmIG9dIbCxko4sRly/iJfg3aCN8jOhCn+yxqi+Ii17JE5sru5k1yZ1cIZFjcym3DJ5NqhHUA2zD0m9k8E3cJtGZLDO+Qid0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245903; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=kIWkcMSOLnN+PZvko0ucRRBVh381kJ5PvsFhhJYp/ss=; b=bu77Bx4ToYlMUhw8+ncIb2HQKeC7+MN0/TOCvuNVVmopIx64rPcxbT4dKQqTZujBhO8n8+rT3rEJD0CnlFkGzcnRbGR1ng5+eCGJ87Iiq4X5muQsqgVFNPO/IoaFzHnr99hitzCG0odYAfPbx/NJAK4tBKZUtxZoFFPj2VUKK4s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 17712459032561018.1786736764457; Mon, 16 Feb 2026 04:45:03 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id AE74541800; Mon, 16 Feb 2026 07:45:02 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 3477941CFD; Mon, 16 Feb 2026 07:34:23 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 2BA3E3F8C6; Mon, 16 Feb 2026 07:34:14 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5B83E419AC for ; Mon, 16 Feb 2026 07:28:42 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-180-jurcVJexNjGbx_PXmtDqZA-1; Mon, 16 Feb 2026 07:28:40 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B71261955D8F for ; Mon, 16 Feb 2026 12:28:39 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0A3FE30001A5 for ; Mon, 16 Feb 2026 12:28:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244922; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kIWkcMSOLnN+PZvko0ucRRBVh381kJ5PvsFhhJYp/ss=; b=WG4mcvKdiVfcMknkXrQyQIlKPCNkVJqSygT/no0dYoGaqbfkF3+ciWbjbu3BLCev2C8Z1u iz/TMzqQyVgCZVi93kYFmBa9wIyZAEQGn12QHH6riHcajjae+HGT5La+QAsQ/wobHQC4Ie 2k+bfLXP6oJYNmSZSa/4cXHIhqui6bs= X-MC-Unique: jurcVJexNjGbx_PXmtDqZA-1 X-Mimecast-MFC-AGG-ID: jurcVJexNjGbx_PXmtDqZA_1771244919 To: devel@lists.libvirt.org Subject: [libvirt PATCH 19/24] qemu: Save IOMMUFD state into status XML Date: Mon, 16 Feb 2026 13:28:11 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ebDazvaVyhotS_fl1ikMFmN7v6SjPSRRzxm9ra3XcZc_1771244919 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: GF7XSA7XV62TLKP56BBGFWKNNCRJZHZC X-Message-ID-Hash: GF7XSA7XV62TLKP56BBGFWKNNCRJZHZC X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245906203154100 Content-Type: text/plain; charset="utf-8"; x-default="true" We need to track if iommufd object was added to the VM when we add hotplug support. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_command.c | 2 ++ src/qemu/qemu_domain.c | 6 ++++++ src/qemu/qemu_domain.h | 1 + 3 files changed, 9 insertions(+) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 724f0cd8eb..cdf2f91ece 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5366,6 +5366,8 @@ qemuBuildIOMMUFDCommandLine(virCommand *cmd, if (qemuBuildObjectCommandlineFromJSON(cmd, props) < 0) return -1; =20 + priv->iommufdState =3D true; + return 0; } =20 diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index ada9d3431c..ccbfc8bac7 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1976,6 +1976,7 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivate *p= riv) priv->migrationRecoverSetup =3D false; =20 g_clear_pointer(&priv->iommufd, qemuFDPassDirectFree); + priv->iommufdState =3D false; =20 g_clear_pointer(&priv->memoryBackingDir, g_free); } @@ -2844,6 +2845,9 @@ qemuDomainObjPrivateXMLFormat(virBuffer *buf, priv->preMigrationMemlock); } =20 + if (priv->iommufdState) + virBufferAddLit(buf, "\n"); + return 0; } =20 @@ -3582,6 +3586,8 @@ qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, return -1; } =20 + priv->iommufdState =3D virXPathBoolean("boolean(./iommufd)", ctxt) =3D= =3D 1; + return 0; } =20 diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index fa7d4ab40f..5755d2adb0 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -265,6 +265,7 @@ struct _qemuDomainObjPrivate { GHashTable *fds; =20 qemuFDPassDirect *iommufd; + bool iommufdState; /* true if --object iommufd was added */ =20 char *memoryBackingDir; }; --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245949; cv=none; d=zohomail.com; s=zohoarc; b=LAtiNvZD1LSzl85ogfj/lvVV0CNy2nYlEaaR8Jkv7ybjED1sM2nC1MaCm6jglM1QMhCAlORQqZR58ehAyMqPmqm8+5EW3jg92UBNU7pebTeD30GRhpvGYjHgNteykkk1tVtbNr29ZRE9oQDUorn8RFzlL8sjB930UhmMVyx6g78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245949; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=e7IoNvi3BeWsLDQP0GbDOzDzhpfFgEQRE9VwVI8MtwY=; b=DvsNEGHpfjWjzFWhtDGS3KCHCRu7nwhRqns9t1fC2LB9LnmqcXFlQaeZCtGPzvy9L4mfd38jS6MwZ3uoplNQ1mUHPCLz1C8aaSqpnZXbV8XIi+4EmCoJ4Vlce8xTmsEOpfX+26hRIwHvjJMXf7XBgPBOV2HlzFUGaWQf9qHQeQg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245949326428.3181340538555; Mon, 16 Feb 2026 04:45:49 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 6C231417FE; Mon, 16 Feb 2026 07:45:48 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 99CC641D49; Mon, 16 Feb 2026 07:34:24 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 6689641C69; Mon, 16 Feb 2026 07:34:19 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 9FA34419E8 for ; Mon, 16 Feb 2026 07:28:43 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-685-wPFBp0dAMwS5-jO2C91Lrw-1; Mon, 16 Feb 2026 07:28:41 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id F282A1955D7A for ; Mon, 16 Feb 2026 12:28:40 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 3E39D30001B9 for ; Mon, 16 Feb 2026 12:28:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244923; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=e7IoNvi3BeWsLDQP0GbDOzDzhpfFgEQRE9VwVI8MtwY=; b=d8DeAu8BIRqaoKo8k9xP+hyvMih1jfLyono8O9zbzT+OQHSkf6Q/C47McXKN/ex0/pmZhc W1cRJ/KuXsRJfI7eqoM2WSeZHZm+OONOQoRW05FTlJ1pgbaWOU0mKygdZ1L5a14sym27Hs zOiZXtYTOm0naI/bhGRQJACAyI7zzbI= X-MC-Unique: wPFBp0dAMwS5-jO2C91Lrw-1 X-Mimecast-MFC-AGG-ID: wPFBp0dAMwS5-jO2C91Lrw_1771244921 To: devel@lists.libvirt.org Subject: [libvirt PATCH 20/24] qemu_hotplug: Remove iommufd object if no longer needed Date: Mon, 16 Feb 2026 13:28:12 +0100 Message-ID: <08e76ed6e4f0a7545b94020086e2c49fc526949d.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Ba8ny6lc0v_015yN93UeHNk9AwGiLzePiqNCjT4L2hM_1771244921 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: KBPDKTXOS425ITOWADLD7KUQK7JUJR2J X-Message-ID-Hash: KBPDKTXOS425ITOWADLD7KUQK7JUJR2J X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245952606154100 Content-Type: text/plain; charset="utf-8"; x-default="true" When removing last host device using IOMMUFD remove the iommufd object as well. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_hotplug.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index d17370b582..24fbccccf0 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4997,6 +4997,14 @@ qemuDomainRemoveHostDevice(virQEMUDriver *driver, } } =20 + if (priv->iommufdState && + !virDomainDefHasPCIHostdevWithIOMMUFD(vm->def)) { + qemuDomainObjEnterMonitor(vm); + ignore_value(qemuMonitorDelObject(priv->mon, "iommufd0", false)); + qemuDomainObjExitMonitor(vm); + priv->iommufdState =3D false; + } + virDomainAuditHostdev(vm, hostdev, "detach", true); =20 if (!virHostdevIsPCIDevice(hostdev) && --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771246038; cv=none; d=zohomail.com; s=zohoarc; b=Dxl7mq54MEeHC9ZJ3o1Xx+D3iSz23BzRpjIA0SLRz1OxoZuNVifJQH+z87N5en1HlM140gOBF466vE7lLSjpeZ6D/BLSfTzs9bsYXjKUPml4eKhBhzHDuDHZqZGURgL/R29kITsWThU8Dr2OWDZPh7snPXr+rBQ70DUqDoPtiDM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771246038; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=qKWJNKY0ngVLVKcgh3KnDjRSi7CfOU4c4KtJ7zxn/bA=; b=oKQiW1jhXdp/88JQ3aideLERFNZUk3uzDBNfpJAj4t075ny99PyYKmaajmtvvf02BgDt0CaGT+8p4RIjWb/AOehsf0q+KHnxUoeMCTsfOepHrOK0spLNtWqEFySHsJebrpAbeD+wsyiXERCvcJggR6mlV+e+K6J00NG/tvO5to4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771246038487884.5416282200225; Mon, 16 Feb 2026 04:47:18 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 086773F96E; Mon, 16 Feb 2026 07:47:18 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id DD6A641DB4; Mon, 16 Feb 2026 07:35:21 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9BF10418BC; Mon, 16 Feb 2026 07:35:14 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5498741A31 for ; Mon, 16 Feb 2026 07:28:44 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-497-bxa1jazyMYCf8jRQNlMDqg-1; Mon, 16 Feb 2026 07:28:42 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 18FFC1955BD9 for ; Mon, 16 Feb 2026 12:28:42 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6AB2530001A5 for ; Mon, 16 Feb 2026 12:28:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244924; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qKWJNKY0ngVLVKcgh3KnDjRSi7CfOU4c4KtJ7zxn/bA=; b=F0ww7VnOHXUhtGpO4QoRg8JkLGzSXLY580W0ABI/tavbG5sZgwnvjZ5SMdJxmaAkBhhZ0L 2GJqb5K1OZ66g5r3Dk/+dTffBcZ65ivUGkOnmBTiTRO2dO3MbvqIsvh+7yR/21eUMWIXAW B/M/xAiSJ9GL/dR4ITr/JrbYuIv66kY= X-MC-Unique: bxa1jazyMYCf8jRQNlMDqg-1 X-Mimecast-MFC-AGG-ID: bxa1jazyMYCf8jRQNlMDqg_1771244922 To: devel@lists.libvirt.org Subject: [libvirt PATCH 21/24] qemu_command: Extract building IOMMUFD props to function Date: Mon, 16 Feb 2026 13:28:13 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: aUBxdAu_VEOINvh3DcYVrn6Z2cwa4ktcAQq_wNn4Nq4_1771244922 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: PUPPZDYDYVYEJ5ZGI225Q32PY3MPM5GT X-Message-ID-Hash: PUPPZDYDYVYEJ5ZGI225Q32PY3MPM5GT X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771246042124154101 Content-Type: text/plain; charset="utf-8"; x-default="true" This will be reused by hotplug code. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_command.c | 20 ++++++++++++++++---- src/qemu/qemu_command.h | 3 +++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index cdf2f91ece..a742998e4c 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5344,6 +5344,21 @@ qemuBuildHostdevCommandLine(virCommand *cmd, } =20 =20 +virJSONValue * +qemuBuildIOMMUFDProps(qemuFDPassDirect *iommufd) +{ + g_autoptr(virJSONValue) props =3D NULL; + + if (qemuMonitorCreateObjectProps(&props, "iommufd", + "iommufd0", + "S:fd", qemuFDPassDirectGetPath(iommu= fd), + NULL) < 0) + return NULL; + + return g_steal_pointer(&props); +} + + static int qemuBuildIOMMUFDCommandLine(virCommand *cmd, const virDomainDef *def, @@ -5357,10 +5372,7 @@ qemuBuildIOMMUFDCommandLine(virCommand *cmd, =20 qemuFDPassDirectTransferCommand(priv->iommufd, cmd); =20 - if (qemuMonitorCreateObjectProps(&props, "iommufd", - "iommufd0", - "S:fd", qemuFDPassDirectGetPath(priv-= >iommufd), - NULL) < 0) + if (!(props =3D qemuBuildIOMMUFDProps(priv->iommufd))) return -1; =20 if (qemuBuildObjectCommandlineFromJSON(cmd, props) < 0) diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index ad068f1f16..028d002ef9 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -190,6 +190,9 @@ int qemuBuildRNGBackendProps(virDomainRNGDef *rng, virJSONValue **props); =20 +virJSONValue * +qemuBuildIOMMUFDProps(qemuFDPassDirect *iommufd); + /* Current, best practice */ virJSONValue * qemuBuildUSBHostdevDevProps(const virDomainDef *def, --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771245991; cv=none; d=zohomail.com; s=zohoarc; b=JWPeQDTkYgbofJ7Zy1F19d4cPoXsbb62ibNBE5EBfcmh6sUINCHam5KdY9Q30IyXMj9BnwjX6x+Js/K7IwXFngXDG9DB/P09At2Yy+NntLV2PQ5nO4+/BYf9QAVaWqqbf/iLHMLKQCjHZ/BPT2zvmabTOkr1dDaXDZZCiR7MsMs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771245991; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=OaQI+PP68u+69warvWvdbNv99GctrrQ1CIczyt5fwDM=; b=HH6WhyxwpdWtSwXwoNpUy1fOXZXDEvI4PqTTMjU7Zp2ynZQsLbrejMSJ0fObkU5YNZ2jsB0mKR33I9s//Rxkun1LsLreAQlhXkwZj0IcJrth+CG3kGS0zGnZl8tryIpzR+ISSbz50oUYRhZaqP/UlISjARp4mpn1FNS85y/LmJk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771245991836448.12826847040174; Mon, 16 Feb 2026 04:46:31 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id D73A53F8E5; Mon, 16 Feb 2026 07:46:30 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id B635641D5C; Mon, 16 Feb 2026 07:35:18 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 4E85F418B1; Mon, 16 Feb 2026 07:35:14 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 9AAD441A3B for ; Mon, 16 Feb 2026 07:28:45 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-198-1-zdsclPNFieBOelOocvrg-1; Mon, 16 Feb 2026 07:28:43 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2BEAD18004BB for ; Mon, 16 Feb 2026 12:28:43 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8052730001A5 for ; Mon, 16 Feb 2026 12:28:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OaQI+PP68u+69warvWvdbNv99GctrrQ1CIczyt5fwDM=; b=G0miQ6HDE0hmc1ZdF5vE7gePz/a3gCgavzk9Q2IaCNC+QmTFND5cAv6EEu4uPbS1VIWn2Q afcIJbRh/RYx5RW1Z0Fb/qBYyCEOjCOzBuEPtycaGrGHpZmGdCFsAoKpIf+SOPjWm8fLl4 4uFJmVtZq906pCNxHpbhqrjlsjpx7VI= X-MC-Unique: 1-zdsclPNFieBOelOocvrg-1 X-Mimecast-MFC-AGG-ID: 1-zdsclPNFieBOelOocvrg_1771244923 To: devel@lists.libvirt.org Subject: [libvirt PATCH 22/24] qemu_hotplug: Add support to hotplug host device with IOMMUFD Date: Mon, 16 Feb 2026 13:28:14 +0100 Message-ID: <8c77b689560484c0d3e51421be7d8c3b9ce92878.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 6gslXzPF_LeBHB3eIFOCJww6FZTrbaWiM1Ik6EmhVnc_1771244923 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ZDB6GBDEN6CRGYTS62OQLP3MCW77HSM2 X-Message-ID-Hash: ZDB6GBDEN6CRGYTS62OQLP3MCW77HSM2 X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771245992415158500 Content-Type: text/plain; charset="utf-8"; x-default="true" For first host device we need to add iommufd object as well. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_hotplug.c | 39 +++++++++++++++++++++++++++++++++++++++ src/qemu/qemu_process.c | 4 ++-- src/qemu/qemu_process.h | 3 +++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 24fbccccf0..bede4e3ccd 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1553,13 +1553,16 @@ qemuDomainAttachHostPCIDevice(virQEMUDriver *driver, virDomainDeviceDef dev =3D { VIR_DOMAIN_DEVICE_HOSTDEV, { .hostdev =3D hostdev } }; virDomainDeviceInfo *info =3D hostdev->info; + qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIVATE(= hostdev); int ret; g_autoptr(virJSONValue) devprops =3D NULL; + g_autoptr(virJSONValue) objprops =3D NULL; bool releaseaddr =3D false; bool teardowncgroup =3D false; bool teardownlabel =3D false; bool teardowndevice =3D false; bool teardownmemlock =3D false; + bool removeiommufd =3D false; g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); unsigned int flags =3D 0; =20 @@ -1609,11 +1612,38 @@ qemuDomainAttachHostPCIDevice(virQEMUDriver *driver, goto error; } =20 + if (virHostdevIsPCIDeviceWithIOMMUFD(hostdev)) { + if (qemuProcessOpenVfioDeviceFd(hostdev) < 0) + goto error; + + if (!priv->iommufdState) { + if (qemuProcessOpenIommuFd(vm) < 0) + goto error; + + if (!(objprops =3D qemuBuildIOMMUFDProps(priv->iommufd))) + goto error; + } + } + if (!(devprops =3D qemuBuildPCIHostdevDevProps(vm->def, hostdev))) goto error; =20 qemuDomainObjEnterMonitor(vm); =20 + if (objprops) { + if ((ret =3D qemuFDPassDirectTransferMonitor(priv->iommufd, priv->= mon)) < 0) + goto exit_monitor; + + if ((ret =3D qemuMonitorAddObject(priv->mon, &objprops, NULL)) < 0) + goto exit_monitor; + + priv->iommufdState =3D true; + removeiommufd =3D true; + } + + if ((ret =3D qemuFDPassDirectTransferMonitor(hostdevPriv->vfioDeviceFd= , priv->mon)) < 0) + goto exit_monitor; + if ((ret =3D qemuDomainAttachExtensionDevice(priv->mon, hostdev->info)= ) < 0) goto exit_monitor; =20 @@ -1644,6 +1674,15 @@ qemuDomainAttachHostPCIDevice(virQEMUDriver *driver, if (teardownmemlock && qemuDomainAdjustMaxMemLock(vm) < 0) VIR_WARN("Unable to reset maximum locked memory on hotplug fail"); =20 + if (removeiommufd) { + qemuDomainObjEnterMonitor(vm); + ignore_value(qemuMonitorDelObject(priv->mon, "iommufd0", false)); + qemuDomainObjExitMonitor(vm); + } + + qemuFDPassDirectTransferMonitorRollback(hostdevPriv->vfioDeviceFd, pri= v->mon); + qemuFDPassDirectTransferMonitorRollback(priv->iommufd, priv->mon); + if (releaseaddr) qemuDomainReleaseDeviceAddress(vm, info); =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index fc7e7bc980..371b64faac 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -7685,7 +7685,7 @@ qemuProcessPrepareHostBackendChardevHotplug(virDomain= Obj *vm, * * Returns: 0 on success, -1 on failure */ -static int +int qemuProcessOpenIommuFd(virDomainObj *vm) { qemuDomainObjPrivate *priv =3D vm->privateData; @@ -7709,7 +7709,7 @@ qemuProcessOpenIommuFd(virDomainObj *vm) * * Returns: 0 on success, -1 on failure */ -static int +int qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *hostdev) { qemuDomainHostdevPrivate *hostdevPriv =3D QEMU_DOMAIN_HOSTDEV_PRIVATE(= hostdev); diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index 6ba846b7b1..fccd41e1a6 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -134,6 +134,9 @@ int qemuProcessPrepareHostBackendChardevHotplug(virDoma= inObj *vm, virDomainDeviceDef *dev) ATTRIBUTE_MOCKABLE; =20 +int qemuProcessOpenIommuFd(virDomainObj *vm); + +int qemuProcessOpenVfioDeviceFd(virDomainHostdevDef *hostdev); =20 int qemuProcessPrepareHost(virQEMUDriver *driver, virDomainObj *vm, --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771246079; cv=none; d=zohomail.com; s=zohoarc; b=hQ+S8JkszHsfleAvnYlNDChi9duGhVVT1O/LkRZxz+RTpNtqK5G3d5kehltvLHRDjx8lBOEyvReElyHR5lepXTP/NA8XmPcNv8RYhmaAz3fzVKCpKWtQi9dMxBILhxvdGlbqcwG8FiCCDJm0UISyjUqWYHwBIZKNQnwnaDjpC5E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771246079; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=E8lboTkCXcmneue7E8OsfUIqY+faZ1WTKHFZOiltOn4=; b=fmdPfP9FdobHOGUTHCpbVjpxt4f52yzx2dF8lyuhYs+owgJOiO6wxaBu0ipwx6QCd2QejgJHW85tm0nqD1hxhTK8oIER8G+F25NUF4M1gwGPF04oPv2G41GLudZSNWItSeJ+vAz6ZpLsU7P6+pdAt19KEt3j43tge1uO6ribYSs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771246079352796.9995307537902; Mon, 16 Feb 2026 04:47:59 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id DF85C41869; Mon, 16 Feb 2026 07:47:58 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id C86D641DC6; Mon, 16 Feb 2026 07:35:23 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id C8A1B4196F; Mon, 16 Feb 2026 07:35:14 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id CE7E841A39 for ; Mon, 16 Feb 2026 07:28:46 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-530-Op3GT8TDOC-c87QM-Gveaw-1; Mon, 16 Feb 2026 07:28:45 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 69DD718004AD for ; Mon, 16 Feb 2026 12:28:44 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 90FD530001A5 for ; Mon, 16 Feb 2026 12:28:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244926; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E8lboTkCXcmneue7E8OsfUIqY+faZ1WTKHFZOiltOn4=; b=OiQ+izzoCXo33nQhR4wvHkoJyLGKqBcim+IIrGGkMexs+5mm1WkAcyhaKhzWlqiDZXh+zF OmNTRFEKy5pkMC91/jDfFoQFc+hQJMT6glkOA9uqjM0VtwV6XIkNx8Q7QI1x2iiv6t4H/x V+TZVJFgPJLceMeVUCIoa7XymabVdf8= X-MC-Unique: Op3GT8TDOC-c87QM-Gveaw-1 X-Mimecast-MFC-AGG-ID: Op3GT8TDOC-c87QM-Gveaw_1771244924 To: devel@lists.libvirt.org Subject: [libvirt PATCH 23/24] conf: Introduce iommufd enum for domaincaps Date: Mon, 16 Feb 2026 13:28:15 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ZBOi7ek2KmLZcSQyhNpl1HilZHb3IaWtJeA2XiIRvqI_1771244924 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 7T6DNHQWBOANM73RMMDCS6342TQPWFG4 X-Message-ID-Hash: 7T6DNHQWBOANM73RMMDCS6342TQPWFG4 X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771246080466154100 Content-Type: text/plain; charset="utf-8"; x-default="true" Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- docs/formatdomaincaps.rst | 7 +++++++ src/conf/domain_capabilities.c | 1 + src/conf/domain_capabilities.h | 1 + 3 files changed, 9 insertions(+) diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst index 8b4f0ecff3..6ba7f84f96 100644 --- a/docs/formatdomaincaps.rst +++ b/docs/formatdomaincaps.rst @@ -461,6 +461,10 @@ Well, only if the following is enabled: vfio xen + + yes + no + @@ -477,6 +481,9 @@ Well, only if the following is enabled: ``mode=3D"capabilities"``. ``pciBackend`` Options for the ``name`` attribute of the element. +``iommufd`` + Options for the ``iommufd`` attribute of the element. + :since:`Since 12.1.0` =20 RNG device ^^^^^^^^^^ diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index f843124695..49179b97ab 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -620,6 +620,7 @@ virDomainCapsDeviceHostdevFormat(virBuffer *buf, ENUM_PROCESS(hostdev, subsysType, virDomainHostdevSubsysTypeToString); ENUM_PROCESS(hostdev, capsType, virDomainHostdevCapsTypeToString); ENUM_PROCESS(hostdev, pciBackend, virDeviceHostdevPCIDriverNameTypeToS= tring); + ENUM_PROCESS(hostdev, iommufd, virTristateBoolTypeToString); =20 FORMAT_EPILOGUE(hostdev); } diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index 437981c711..b10370db8f 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -108,6 +108,7 @@ struct _virDomainCapsDeviceHostdev { virDomainCapsEnum subsysType; /* Info about virDomainHostdevSubs= ysType */ virDomainCapsEnum capsType; /* Info about virDomainHostdevCaps= Type */ virDomainCapsEnum pciBackend; /* Info about virDomainHostdevSubs= ysPCIBackendType */ + virDomainCapsEnum iommufd; /* Info about iommufd:virTristateB= ool */ /* add new fields here */ }; =20 --=20 2.53.0 From nobody Tue Mar 3 03:04:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1771246267; cv=none; d=zohomail.com; s=zohoarc; b=Arzq5nhvHfyi8NJuDloA/dWYdkoEFs6Xi0XtobuiW3L60XspS8agMLSLdSQWU+PjKrrfNqVIRanu8G8ZwsT09M7ZZVtmKU1QHGFCq9Jfe1XRc4bfka7czfG3sh90Oy5Y4MbpaQmg0/a7uB0TONylRmWYv92QZbCinncRdQjaxMM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771246267; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=KZWX2srx7556u6p0zZD3xCN4cyMx0/u9wTTCr+0HnL4=; b=EQ+GUjEU5wYx52mnt5cCdQeWD54UG/CtzVA0PeOaQX0y1xj70SuzXHohat1HRkJo3yCcFgBIusnKXtCTBxLLPn78SfBnd2BHi+y0YsFpmPOix6eeYuQexWxNOYSwXw8VLL/7vzhpGMnMuahQBcK4HsHfgTPsGZWgHt5pP8mUrCA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1771246267131850.9295847867525; Mon, 16 Feb 2026 04:51:07 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 8668A3F8A4; Mon, 16 Feb 2026 07:51:06 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 117D243DC3; Mon, 16 Feb 2026 07:35:28 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9538141A31; Mon, 16 Feb 2026 07:35:19 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 76120419BF for ; Mon, 16 Feb 2026 07:28:48 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-538-Zx9PkJvnNBy_WawFw7nRHQ-1; Mon, 16 Feb 2026 07:28:46 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id AD1A0195605A for ; Mon, 16 Feb 2026 12:28:45 +0000 (UTC) Received: from antique-laptop.rosnicka.net (unknown [10.45.242.10]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B7D5630001A5 for ; Mon, 16 Feb 2026 12:28:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1771244928; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KZWX2srx7556u6p0zZD3xCN4cyMx0/u9wTTCr+0HnL4=; b=SzqCDy0CXFzOFei3qQ6APvr2Y8u4Qk+1cnH/KF5LlYZ4k+JAyRhQDYL2qn1nWYUiC5Vx/w 75TfBIJntsI71fYfvgoCTdBKTE0ubR/OoCi8mLHZRL+AdKtgjxpKawjyCJBdKCpvaMaSbN jphKKHIv3PStN/cG+SuI2MZi7VecLVs= X-MC-Unique: Zx9PkJvnNBy_WawFw7nRHQ-1 X-Mimecast-MFC-AGG-ID: Zx9PkJvnNBy_WawFw7nRHQ_1771244925 To: devel@lists.libvirt.org Subject: [libvirt PATCH 24/24] qemu: Fill iommufd domain capability Date: Mon, 16 Feb 2026 13:28:16 +0100 Message-ID: <4d8b1367bedf1601524c53e8a752a836779a10e3.1771244723.git.phrdina@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: eujpme3nJe0MjVIHqISfeTSYOtmHBezjkDmliMuuNfk_1771244925 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: DWSTSRR6KRYGFWYUSHOMYJEASE74WPTN X-Message-ID-Hash: DWSTSRR6KRYGFWYUSHOMYJEASE74WPTN X-MailFrom: phrdina@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Pavel Hrdina via Devel Reply-To: Pavel Hrdina X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1771246269302154100 Content-Type: text/plain; charset="utf-8"; x-default="true" Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- src/qemu/qemu_capabilities.c | 21 ++++++++++++++----- .../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 ++++++++++++++- 84 files changed, 321 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 5a1545c727..f35c3e1903 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -45,6 +45,7 @@ #include "qemu_firmware.h" #include "virutil.h" #include "virtpm.h" +#include "viriommufd.h" =20 #include #include @@ -6779,6 +6780,7 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCaps *q= emuCaps, hostdev->subsysType.report =3D true; hostdev->capsType.report =3D true; hostdev->pciBackend.report =3D true; + hostdev->iommufd.report =3D true; =20 /* VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES is for containers only */ VIR_DOMAIN_CAPS_ENUM_SET(hostdev->mode, @@ -6810,11 +6812,20 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCaps = *qemuCaps, virDomainCapsEnumClear(&hostdev->capsType); =20 virDomainCapsEnumClear(&hostdev->pciBackend); - if (supportsPassthroughVFIO && - virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) { - VIR_DOMAIN_CAPS_ENUM_SET(hostdev->pciBackend, - VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_DEFAUL= T, - VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VFIO); + + VIR_DOMAIN_CAPS_ENUM_SET(hostdev->iommufd, VIR_TRISTATE_BOOL_NO); + + if (supportsPassthroughVFIO) { + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) { + VIR_DOMAIN_CAPS_ENUM_SET(hostdev->pciBackend, + VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_DE= FAULT, + VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VF= IO); + } + + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_IOMMUFD) && + virIOMMUFDSupported()) { + VIR_DOMAIN_CAPS_ENUM_SET(hostdev->iommufd, VIR_TRISTATE_BOOL_Y= ES); + } } } =20 diff --git a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml b/tests= /domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml index 8cb51d795c..aeccdf612d 100644 --- a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml @@ -856,6 +856,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml b/tests/domain= capsdata/qemu_10.0.0-q35.x86_64.xml index 56192354ac..86a740099b 100644 --- a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml @@ -1755,6 +1755,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml b/tests= /domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml index 4242f2fe9c..5d9ce948f8 100644 --- a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml @@ -1840,6 +1840,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml b/tests/domain= capsdata/qemu_10.0.0-tcg.x86_64.xml index 76d5fdd0d9..3915ec38cf 100644 --- a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml @@ -1840,6 +1840,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml b/tests/doma= incapsdata/qemu_10.0.0-virt.aarch64.xml index 30863d3d6b..058bd84a33 100644 --- a/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml @@ -154,6 +154,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.0.0.aarch64.xml b/tests/domaincap= sdata/qemu_10.0.0.aarch64.xml index 30863d3d6b..058bd84a33 100644 --- a/tests/domaincapsdata/qemu_10.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_10.0.0.aarch64.xml @@ -154,6 +154,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.0.0.ppc64.xml b/tests/domaincapsd= ata/qemu_10.0.0.ppc64.xml index 5136e7a20d..f3ff165aa1 100644 --- a/tests/domaincapsdata/qemu_10.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_10.0.0.ppc64.xml @@ -107,6 +107,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_10.0.0.s390x.xml b/tests/domaincapsd= ata/qemu_10.0.0.s390x.xml index 3bbdbd68d0..220afb9d7d 100644 --- a/tests/domaincapsdata/qemu_10.0.0.s390x.xml +++ b/tests/domaincapsdata/qemu_10.0.0.s390x.xml @@ -283,6 +283,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml b/tests/dom= aincapsdata/qemu_10.0.0.x86_64+amdsev.xml index 8b02db8802..9dcc7f2e44 100644 --- a/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml @@ -856,6 +856,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.0.0.x86_64.xml b/tests/domaincaps= data/qemu_10.0.0.x86_64.xml index 6dac17808c..c0c3a2e6db 100644 --- a/tests/domaincapsdata/qemu_10.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.0.0.x86_64.xml @@ -1755,6 +1755,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml b/tes= ts/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml index 31d4fab043..5f6ee44ac7 100644 --- a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml +++ b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml @@ -909,6 +909,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml b/tests/domain= capsdata/qemu_10.1.0-q35.x86_64.xml index 6213908152..fc82987630 100644 --- a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml @@ -2100,6 +2100,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml b/tes= ts/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml index cace9f109a..e30b20e31e 100644 --- a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml +++ b/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml @@ -2222,6 +2222,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml b/tests/domain= capsdata/qemu_10.1.0-tcg.x86_64.xml index 804848b8a7..34e5812613 100644 --- a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml @@ -2226,6 +2226,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.1.0.s390x.xml b/tests/domaincapsd= ata/qemu_10.1.0.s390x.xml index 9d773385c4..373b9f1f59 100644 --- a/tests/domaincapsdata/qemu_10.1.0.s390x.xml +++ b/tests/domaincapsdata/qemu_10.1.0.s390x.xml @@ -351,6 +351,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml b/tests/d= omaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml index 6320200c20..1d5a1b5404 100644 --- a/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml +++ b/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml @@ -909,6 +909,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.1.0.x86_64.xml b/tests/domaincaps= data/qemu_10.1.0.x86_64.xml index 35c9b8c6d3..3be5e34fe6 100644 --- a/tests/domaincapsdata/qemu_10.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.1.0.x86_64.xml @@ -2100,6 +2100,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml b/tests/d= omaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml index ebba8fd49f..6914726a8b 100644 --- a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml +++ b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml @@ -110,6 +110,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml b/tests/domain= capsdata/qemu_10.2.0-q35.x86_64.xml index 5ce911d62f..cfa51195ba 100644 --- a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml @@ -1206,6 +1206,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml b/tests/d= omaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml index 6c6f1e84c3..35331dc4d4 100644 --- a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml +++ b/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml @@ -2223,6 +2223,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml b/tests/domain= capsdata/qemu_10.2.0-tcg.x86_64.xml index 14e8e30f1c..7fba7f45f3 100644 --- a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml @@ -2226,6 +2226,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.2.0-virt.aarch64.xml b/tests/doma= incapsdata/qemu_10.2.0-virt.aarch64.xml index 84d3022006..1613b28b71 100644 --- a/tests/domaincapsdata/qemu_10.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_10.2.0-virt.aarch64.xml @@ -144,6 +144,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.2.0.aarch64.xml b/tests/domaincap= sdata/qemu_10.2.0.aarch64.xml index 84d3022006..1613b28b71 100644 --- a/tests/domaincapsdata/qemu_10.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_10.2.0.aarch64.xml @@ -144,6 +144,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.2.0.x86_64+mshv.xml b/tests/domai= ncapsdata/qemu_10.2.0.x86_64+mshv.xml index c8f2585d7d..faf9b15e0d 100644 --- a/tests/domaincapsdata/qemu_10.2.0.x86_64+mshv.xml +++ b/tests/domaincapsdata/qemu_10.2.0.x86_64+mshv.xml @@ -110,6 +110,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_10.2.0.x86_64.xml b/tests/domaincaps= data/qemu_10.2.0.x86_64.xml index 333bbaa698..811951cde5 100644 --- a/tests/domaincapsdata/qemu_10.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.2.0.x86_64.xml @@ -1206,6 +1206,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_11.0.0-q35.x86_64.xml b/tests/domain= capsdata/qemu_11.0.0-q35.x86_64.xml index be89b0a4f2..1e1b6b723e 100644 --- a/tests/domaincapsdata/qemu_11.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_11.0.0-q35.x86_64.xml @@ -1206,6 +1206,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_11.0.0-tcg.x86_64.xml b/tests/domain= capsdata/qemu_11.0.0-tcg.x86_64.xml index bb611142b3..d87c1277d3 100644 --- a/tests/domaincapsdata/qemu_11.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_11.0.0-tcg.x86_64.xml @@ -2226,6 +2226,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_11.0.0-virt.aarch64.xml b/tests/doma= incapsdata/qemu_11.0.0-virt.aarch64.xml index 906e3c1e68..d0245d0837 100644 --- a/tests/domaincapsdata/qemu_11.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_11.0.0-virt.aarch64.xml @@ -144,6 +144,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_11.0.0.aarch64.xml b/tests/domaincap= sdata/qemu_11.0.0.aarch64.xml index 906e3c1e68..d0245d0837 100644 --- a/tests/domaincapsdata/qemu_11.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_11.0.0.aarch64.xml @@ -144,6 +144,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_11.0.0.x86_64.xml b/tests/domaincaps= data/qemu_11.0.0.x86_64.xml index 956d59f877..58d5093886 100644 --- a/tests/domaincapsdata/qemu_11.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_11.0.0.x86_64.xml @@ -1206,6 +1206,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_6.2.0-q35.x86_64.xml index b14cbddc59..0b66b77e73 100644 --- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml @@ -1060,6 +1060,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_6.2.0-tcg.x86_64.xml index 51547bf505..ce4b14f28c 100644 --- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml @@ -1862,6 +1862,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml b/tests/domaincapsda= ta/qemu_6.2.0.ppc64.xml index 411925ad66..fb8361ae97 100644 --- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml @@ -108,6 +108,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsd= ata/qemu_6.2.0.x86_64.xml index ab387c862e..33b2e4905e 100644 --- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml @@ -1060,6 +1060,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_7.0.0-q35.x86_64.xml index 4bbcb516ec..2d7519ae94 100644 --- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml @@ -1089,6 +1089,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_7.0.0-tcg.x86_64.xml index 839f0600c2..01975a5e34 100644 --- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml @@ -1888,6 +1888,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml b/tests/domaincapsda= ta/qemu_7.0.0.ppc64.xml index 147d1bf7fb..03bbe16497 100644 --- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml @@ -110,6 +110,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml b/tests/domaincapsd= ata/qemu_7.0.0.x86_64.xml index 612b5a44cc..8fa3d3e0f4 100644 --- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml @@ -1089,6 +1089,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_7.1.0-q35.x86_64.xml index a031b673dd..1991133a62 100644 --- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml @@ -1056,6 +1056,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_7.1.0-tcg.x86_64.xml index 9360f8fadf..41bfdbecb6 100644 --- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml @@ -1836,6 +1836,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml b/tests/domaincapsda= ta/qemu_7.1.0.ppc64.xml index f3a2dfe6ff..03d6b23a45 100644 --- a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml @@ -103,6 +103,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml b/tests/domaincapsd= ata/qemu_7.1.0.x86_64.xml index 6738d8f852..54e8e9d87a 100644 --- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml @@ -1056,6 +1056,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml b/tests/dom= aincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml index b338bcc470..58ef1bde99 100644 --- a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml +++ b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml @@ -1061,6 +1061,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_7.2.0-q35.x86_64.xml index 39eb10dc7a..7c325b52aa 100644 --- a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml @@ -1061,6 +1061,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml b/tests/dom= aincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml index 77fce0eb95..27ecea6fe0 100644 --- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml +++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml @@ -1541,6 +1541,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_7.2.0-tcg.x86_64.xml index 77fce0eb95..27ecea6fe0 100644 --- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml @@ -1541,6 +1541,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.2.0.ppc.xml b/tests/domaincapsdata= /qemu_7.2.0.ppc.xml index 8bda6af431..7cbde763ef 100644 --- a/tests/domaincapsdata/qemu_7.2.0.ppc.xml +++ b/tests/domaincapsdata/qemu_7.2.0.ppc.xml @@ -102,6 +102,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml b/tests/domaincapsd= ata/qemu_7.2.0.x86_64.xml index 16708c3d85..b9a174368a 100644 --- a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml @@ -1061,6 +1061,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_8.0.0-q35.x86_64.xml index 4acd9b76b2..60893adebf 100644 --- a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml @@ -1143,6 +1143,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_8.0.0-tcg.x86_64.xml index c8efc8f183..23e41eb13c 100644 --- a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml @@ -1636,6 +1636,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsd= ata/qemu_8.0.0.x86_64.xml index cfa00f3150..daa91d428f 100644 --- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml @@ -1143,6 +1143,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_8.1.0-q35.x86_64.xml index 83a703da52..df003825ea 100644 --- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml @@ -1402,6 +1402,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_8.1.0-tcg.x86_64.xml index 725002966d..10330281bd 100644 --- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml @@ -1658,6 +1658,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.1.0.s390x.xml b/tests/domaincapsda= ta/qemu_8.1.0.s390x.xml index 0872931dd7..c86f0113f3 100644 --- a/tests/domaincapsdata/qemu_8.1.0.s390x.xml +++ b/tests/domaincapsdata/qemu_8.1.0.s390x.xml @@ -371,6 +371,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsd= ata/qemu_8.1.0.x86_64.xml index 6a3cb84342..205334e84b 100644 --- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml @@ -1402,6 +1402,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_8.2.0-q35.x86_64.xml index a25cf01799..bd9dbf8cba 100644 --- a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml @@ -1403,6 +1403,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml b/tes= ts/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml index eead5ff076..10e514dd45 100644 --- a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml @@ -106,6 +106,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_8.2.0-tcg.x86_64.xml index 3b986eb386..60e5cb8632 100644 --- a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml @@ -1624,6 +1624,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml b/tests/domai= ncapsdata/qemu_8.2.0-virt.aarch64.xml index bb563d6e6c..f67204a14c 100644 --- a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml @@ -154,6 +154,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml b/tests/d= omaincapsdata/qemu_8.2.0-virt.loongarch64.xml index 4d441289a4..6e05a09abb 100644 --- a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml @@ -110,6 +110,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml b/tests/domaincaps= data/qemu_8.2.0.aarch64.xml index bb563d6e6c..f67204a14c 100644 --- a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml @@ -154,6 +154,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml b/tests/domaincapsd= ata/qemu_8.2.0.armv7l.xml index 5c467d4a14..7a537a1abc 100644 --- a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml +++ b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml @@ -104,6 +104,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0.s390x.xml b/tests/domaincapsda= ta/qemu_8.2.0.s390x.xml index 5126dd4d00..ad80492e30 100644 --- a/tests/domaincapsdata/qemu_8.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_8.2.0.s390x.xml @@ -372,6 +372,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml b/tests/domaincapsd= ata/qemu_8.2.0.x86_64.xml index 57cd4d63de..c6558915c1 100644 --- a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml @@ -1403,6 +1403,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_9.0.0-q35.x86_64.xml index c7932014ad..930014727d 100644 --- a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml @@ -1403,6 +1403,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_9.0.0-tcg.x86_64.xml index 3593d70166..19adcfe249 100644 --- a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml @@ -1553,6 +1553,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.0.0.sparc.xml b/tests/domaincapsda= ta/qemu_9.0.0.sparc.xml index 6b4dd3c3b5..062e55718b 100644 --- a/tests/domaincapsdata/qemu_9.0.0.sparc.xml +++ b/tests/domaincapsdata/qemu_9.0.0.sparc.xml @@ -90,6 +90,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml b/tests/domaincapsd= ata/qemu_9.0.0.x86_64.xml index 96303a31cd..bc4e7fa1ee 100644 --- a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml @@ -1403,6 +1403,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_9.1.0-q35.x86_64.xml index 518a6811fe..927c1b4fab 100644 --- a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml @@ -1539,6 +1539,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml b/tests/d= omaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml index ce7fe71141..cb519f348c 100644 --- a/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml @@ -117,6 +117,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_9.1.0-tcg.x86_64.xml index 70928471b3..a8b1bfed73 100644 --- a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml @@ -1658,6 +1658,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml b/tests/domai= ncapsdata/qemu_9.1.0-virt.riscv64.xml index fabb09bf72..8e9bd3a15b 100644 --- a/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml @@ -106,6 +106,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_9.1.0.s390x.xml b/tests/domaincapsda= ta/qemu_9.1.0.s390x.xml index d4649de513..2854713ca3 100644 --- a/tests/domaincapsdata/qemu_9.1.0.s390x.xml +++ b/tests/domaincapsdata/qemu_9.1.0.s390x.xml @@ -235,6 +235,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml b/tests/domaincapsd= ata/qemu_9.1.0.x86_64.xml index ee101364cc..e4d36b95ac 100644 --- a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml @@ -1539,6 +1539,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml b/tests/do= maincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml index ae657c7f72..db51e7b120 100644 --- a/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml +++ b/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml @@ -151,6 +151,9 @@ default vfio + + no + diff --git a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml b/tests/= domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml index 35dc5785bc..39bdb2615b 100644 --- a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml @@ -736,6 +736,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_9.2.0-q35.x86_64.xml index baaaf4f91c..cc31c01dee 100644 --- a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml @@ -1597,6 +1597,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml b/tests/= domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml index 033004a1f4..d01e029394 100644 --- a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml @@ -1705,6 +1705,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_9.2.0-tcg.x86_64.xml index f20fe882c6..6088c4b905 100644 --- a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml @@ -1705,6 +1705,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.2.0.s390x.xml b/tests/domaincapsda= ta/qemu_9.2.0.s390x.xml index 21a1b4f5a9..ef379afe69 100644 --- a/tests/domaincapsdata/qemu_9.2.0.s390x.xml +++ b/tests/domaincapsdata/qemu_9.2.0.s390x.xml @@ -235,6 +235,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml b/tests/doma= incapsdata/qemu_9.2.0.x86_64+amdsev.xml index 39390d2ab6..c0485f8ffa 100644 --- a/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml @@ -736,6 +736,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsdata/qemu_9.2.0.x86_64.xml b/tests/domaincapsd= ata/qemu_9.2.0.x86_64.xml index c477a1d2c4..dcb78a93c6 100644 --- a/tests/domaincapsdata/qemu_9.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.2.0.x86_64.xml @@ -1597,6 +1597,10 @@ default vfio + + yes + no + diff --git a/tests/domaincapsmock.c b/tests/domaincapsmock.c index 7bece6c8c1..370ce35709 100644 --- a/tests/domaincapsmock.c +++ b/tests/domaincapsmock.c @@ -16,11 +16,13 @@ =20 #include =20 +#include "virfile.h" #include "virhostcpu.h" #include "virhostmem.h" +#include "viriommufd.h" +#include "virmock.h" =20 #if WITH_QEMU -# include "virmock.h" # include "qemu/qemu_capabilities.h" #endif =20 @@ -78,3 +80,16 @@ virHostMemGetTHPSize(unsigned long long *size) *size =3D 2048; return 0; } + +static bool (*real_virFileExists)(const char *path); + +bool +virFileExists(const char *path) +{ + VIR_MOCK_REAL_INIT(virFileExists); + + if (STREQ(path, VIR_IOMMU_DEV_PATH)) + return true; + + return real_virFileExists(path); +} --=20 2.53.0