From nobody Tue Mar 24 01:35:29 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; arc=fail (Bad Signature); dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1773256446784653.102662667457; Wed, 11 Mar 2026 12:14:06 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id DE5743FD25; Wed, 11 Mar 2026 15:14:05 -0400 (EDT) Received: from [172.19.199.12] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 6B01541ABD; Wed, 11 Mar 2026 15:12:24 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id DBEBC3F30D; Wed, 11 Mar 2026 15:12:17 -0400 (EDT) Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012025.outbound.protection.outlook.com [52.101.48.25]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5476F3F941 for ; Wed, 11 Mar 2026 15:12:16 -0400 (EDT) Received: from DS2PR12MB9567.namprd12.prod.outlook.com (2603:10b6:8:27c::8) by IA0PR12MB8087.namprd12.prod.outlook.com (2603:10b6:208:401::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.11; Wed, 11 Mar 2026 19:12:13 +0000 Received: from DS2PR12MB9567.namprd12.prod.outlook.com ([fe80::636:1b52:24ca:d7e5]) by DS2PR12MB9567.namprd12.prod.outlook.com ([fe80::636:1b52:24ca:d7e5%3]) with mapi id 15.20.9700.010; Wed, 11 Mar 2026 19:12:13 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_INVALID,DKIM_SIGNED,HELO_MISC_IP,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 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RXgFNEB76KTCvF9yoyMmcAw8TDY4gUt1gyRPEZUarHSZwT7ukRpqpblRojTZCNKaM8FSZx2HJPwW9kSYFJYQIAeRomfeLBsTIw9P/XZ7s5YmPGCwW8fIVdNtHu1UO8mSBTR091jtqyoiJDwgG7TkhV0NDeif3xFWutwW41oCY3B8WCsphsJS1bskS/3D1+oTNAm8oL9CNXQUx0ebnMwqJ5jwXkx0a7rDb/+FAn3feutgU+D07wf7S0PrmE8cYPR60IVVSFNYzGE1Dea8JKQZsbr3NLtPUdCAcLK4K7/ZYOnfSh6xNh/erUK9JiNKKWtSNCEp/PyvwGqzkHi6ILh3pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6I3WpJTUvSqJV+HjjYo9vBwXdKXvGfEotisGX6D2CEY=; b=XdFvmjIrvNnLEASXkY8BiZCWQjcK89EFYtLhGxC4wERjTrpv07LNArG21XX3uT+i7YKljOms5ESTQmTHf/+2MQrhwYqaJXGqx8mnaKqzJC67aL4Eec0gxXmYb9sjIj2IjyoEfe5tQS2pQE9waq0kdLUqMqhxrVp99SYGNJOHKmaaxUb2jZJ1OLJBtNOjO27Sz751IRihUiEvGblG9bQwx7C+5OwAJNtrPc3tJirYDAnoYTC/Spia9g8eXoqZoUFwe8vmoqQHc+uuUB7Zvn8kaX6yyEeW/RnAZ5nXrh288rKhuq/ol+4VB+4LnzPzAqUP7u7L1DWIBA6/KfbgbAQf8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6I3WpJTUvSqJV+HjjYo9vBwXdKXvGfEotisGX6D2CEY=; b=S8kOA8SwF4q7idevKSomigQ+SF+5VuW840wiZVVTJLMoshEnJAyDfv+1zyRbR5oTj9V5Df9Wly6y3oD1tR8J4Evda3wsthAuRw1sXfu+/G5Dwykg5lVWs+I+ydWQRh8zsM3eqIDenwfgW2hwv/3XwQGIjlvVtjljZjsFUHbPhFlVMKyeW3rzCL4ZxMOkjobh3ZuJKEG0N5R6IK8N6tBPe92eRmlcZuhvdQYbcnjAPVTIP6ZAeC26ne2Q1rczpm+n1b86OFkaOAMpBDbxWBZuSPT49yyHMTy8V+L0/NUm6OHdeNTMk28V2fR1dwBr0V5pNixTxcHtcTDZNAsNGNZVhA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; To: devel@lists.libvirt.org Subject: [RFC PATCH v2 1/2] qemu: Support NVIDIA Tegra241 CMDQV for SMMUv3 Date: Wed, 11 Mar 2026 12:12:09 -0700 Message-ID: <20260311191210.1657912-2-nathanc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260311191210.1657912-1-nathanc@nvidia.com> References: <20260311191210.1657912-1-nathanc@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0146.namprd03.prod.outlook.com (2603:10b6:a03:33c::31) To DS2PR12MB9567.namprd12.prod.outlook.com (2603:10b6:8:27c::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PR12MB9567:EE_|IA0PR12MB8087:EE_ X-MS-Office365-Filtering-Correlation-Id: c756a847-fb92-46e9-298e-08de7fa219fe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: DJos1JC6orzbG381M7Dz4FXA0yGmYoBXicRJjeHv+x19WjDl4DKsxNBrTlytqrLxH/YMozQ7AQQOAoATJ6aba1SauudEoFCG3nR4synxkeDX86FsRVAAOwbrjPcjOPHHb2aFvHGgI1HW8MJXTG/hAo3/PwxJCS2pI2U4E8LfZxlErcmN6bKMxKsroVbdHWiKiCDyYKa6kvIS6VKMcYocc5S9+jQKnf0Wm80ZQ05m7vDcUeJIAvq/EyHHqTym5vIl6wMnwdyEA44phDDOMK8VOud3eMBFSHHGGhlfLtgrlT0I2R2Zh3QJlRW2Xz8xa9EcS5p4V3cDNfay6YGXzoG9MSmSsLxsBTyGtrMgDR2t/cn0bS8D7JN8egIPjyS0Amf0UOp6MGRNkFRiSa79VHmD0QxnYCV29G8MJnbQSyCqLTIhy7SYSp0suEJ9dE5cS84nmXb1wgt1S7c9U+VraMUBeqKhNTMq+CQCGVJa5OuNmqrA+ua/WSdBQ1ZPkZx7ZpzhOFJsLgtLGgiEOzcfJ61T5ZsdGRTWYOnvr4xzzk4N3DJgTLRGKEw/6YoOeUZ3z6ADkSuKJm4mBXievEt66tRsi4m/PJd50QnfGUlwiSJ+/Mj84AXCH3Yfom8kCfdigjbp0sRcXZ3fQUOsfeiQEOv4uprZKAbVeMvVy8TyGKCHbcXetGxFqhba1db6Dk+AoMSFoThjZstdmqfBekVpU8IiyZXrwd7Bfark2q/fEQkUSbQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS2PR12MB9567.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bRH8cpy+83qBJBgg9MzpHHxnLIyFV8WTofIXvNO7zmeBU/9TmS7GFadDnFNd?= =?us-ascii?Q?hvwWmNW/aw7ZIkinC+c0P8fzJnUD3hJGGnH/eGrTHwOWudfixIAW0VfDYDFF?= =?us-ascii?Q?86C1DKJFXszuNHxWytCZiPUZMVUGFzZCJuTuKgpXpl4cLoZV8S907Bg3uZgt?= =?us-ascii?Q?d01e6P+5BX6lRq7VN342wlMfkMq/Uk2wRVmSCJrD0hEamrMwuD60Sa11Mz3y?= =?us-ascii?Q?Dc9slUaWdjyRKAyt9n3oUKgOJtoHlXdWAONe3t0j4Vy0xmwoF3dUgk91zVLK?= =?us-ascii?Q?eWOUPKI90spAvDJcclj3MgF4pHjgGUc/HuW5Ua1OtL/M0Bt9A/sFRasPRIGo?= =?us-ascii?Q?Io3qy9xwyU79mQGRY2AczEMw+PwIcAHDCEpaBTq0q46tp7rtzsKA1QlIPIP4?= =?us-ascii?Q?LdW80aBoevt0DdztJF6k8c/5Cp7DQFUf7hOT4cjuw1n2IwRs7134/NwtX4+B?= =?us-ascii?Q?US38idIxMNvgcBLPnrEdnvodJK3Jf9qiWvLT55qnYmeigEYALcAiwdNe/ztN?= =?us-ascii?Q?ufAlPprO6pRHM0pRoeEuV1n2QR+XW6DpFWMpxttoMdL1Itc6m70Y1MtQFex3?= =?us-ascii?Q?XCbhx8jGQ4oRLLwVmJnnlWisZukeN7GUxFhvx8Fh3SblHK4i9+dJDBqwZnM8?= =?us-ascii?Q?yFK+dAl6dKVOJ4a1VimGuxKabhgbGRqZXLSQ9FWwhH+nWaJJvPvHpnp+bDXd?= =?us-ascii?Q?E2WszjcTigiwreOfWvK8nI9L8qEqJDoQyrSBxAMuEUC4dRQskUGLzk3q1hy2?= =?us-ascii?Q?Bc7jgh5zv7QGrb61ARhgOSgHPkL0p8X2Wqs6gCXQd8ewftE9YY1BKLvTc0o+?= =?us-ascii?Q?Ard3HlgtWWRovyStgU4dCqNGqet4iFHTRkmm14uLWch/PdoMYIs8s8oZwA4R?= =?us-ascii?Q?AOhxftpsZL1uPEuIEC1hvF7dzl2gsE3sKE7iP2qze+Xp9srC0Cpm0j2yX6Wi?= =?us-ascii?Q?WTKpZdxvOjpdZtuvevAX/VYuNdbD90KUJ3muWSjHOblCQvG5dNoWzwwdT8//?= =?us-ascii?Q?P6WBUrRocNXjZJCI4rJSG1dMx/HPYG1+fr+/J3qYGTD8pu/uyBDxthDgPHzZ?= =?us-ascii?Q?vuwYdn0UHM6J+zbuTCeu3JjqyumJg8bNeo2SH0dwQOZS8hzGBi08UDn79Y2c?= =?us-ascii?Q?21YbvG3bzhfeqbgb2ql1zbDJVzifhGxCrDqT5Ny9gdaV0fGIH3lL9JPNi7kN?= =?us-ascii?Q?/MY50QL6uwRc5WP/dRKHtHXad0EgIUY0sb5TpGiOHB0QwfHTAdXVBPvW63Pn?= =?us-ascii?Q?EJ7LV+b3UQJr180eMeMcddzfD2jiN5ZzDQmpFtojLLsm4uF4lsBEPjWo3dZ0?= =?us-ascii?Q?QcswMH3++6udimTGMnNLD9/QLvzHRhMJ1Cg6uGoi9zz5dS1wrBVVf1/DC2Vu?= =?us-ascii?Q?zfBivByQfezPbEsmvg8MCNdeyPXoQIdcDlje0eJamO4i86WwEfjIsy9KiKsO?= =?us-ascii?Q?aPFbJf+QY4B1LJz/G0NTAnVcHEpO+p5VCwCWqYALkJIM5i29p47CCgQY3SCL?= =?us-ascii?Q?YX5D8JYvDaPSkbFYW6cSwItsGfZ001yTngI9k2G33+E5K6kyfxSiCnKY/cnv?= =?us-ascii?Q?rbElldKTlMyuT/nlaYSwX+nuTA6Mqpa0Yw7dDFGV+sWX5vaxSWAyCXJ/N8BB?= =?us-ascii?Q?jzGC0cTN9Lpe94LUqqSYaZ3xs9VYsJ2Te8ws8e513XyPt4k726y/84Qbp55s?= =?us-ascii?Q?fc929+Dhvg6r4EwWS6DJlxAts3fVU5TAtPBUQ0/sx3IM01oCngLbQyRluPPh?= =?us-ascii?Q?lelTLAEy5Q=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c756a847-fb92-46e9-298e-08de7fa219fe X-MS-Exchange-CrossTenant-AuthSource: DS2PR12MB9567.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2026 19:12:13.1818 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gNeBUccbVSvbZ9e6OIGsvZEONLNJWXVoII2DafIiIfsh7PIsbw5U0eZpXJRVn4adfQmdw2pnOkwOMUuw2v5YaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8087 Message-ID-Hash: W7IGKO5R54DEZGR73WPVTKPMQQWIJEX7 X-Message-ID-Hash: W7IGKO5R54DEZGR73WPVTKPMQQWIJEX7 X-MailFrom: nathanc@nvidia.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 CC: skolothumtho@nvidia.com, nicolinc@nvidia.com, nathanc@nvidia.com, mochs@nvidia.com 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: Nathan Chen via Devel Reply-To: Nathan Chen X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1773256449379158500 Content-Type: text/plain; charset="utf-8" From: Nathan Chen Introduce support for a "cmdqv" IOMMU attribute which enables NVIDIA Tegra241 CMDQV, an extension for ARM SMMUv3. This supports passthrough of physical SMMU-CMDQ linked command queue from host space to a VM. Signed-off-by: Nathan Chen --- docs/formatdomain.rst | 6 ++++++ src/conf/domain_conf.c | 15 +++++++++++++++ src/conf/domain_conf.h | 1 + src/conf/domain_validate.c | 5 ++++- src/conf/schemas/domaincommon.rng | 5 +++++ src/qemu/qemu_command.c | 1 + 6 files changed, 32 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 9f245293e6..5e0c7a8ea4 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -9366,6 +9366,12 @@ Examples: The ``pciBus`` attribute notes the index of the controller that an IOMMU device is attached to. (QEMU/KVM and ``smmuv3`` model only) =20 + ``cmdqv`` + The ``cmdqv`` attribute with possible values ``on`` and ``off`` can = be used + to enable NVIDIA Tegra241 CMDQV, an extension for ARM SMMUv3 that su= pports + passthrough of physical SMMU-CMDQ linked command queue from host spa= ce to VM. + :since:`Since 12.1.0` (QEMU/KVM and ``smmuv3`` model only) + In case of ``virtio`` IOMMU device, the ``driver`` element can optionally contain ``granule`` subelement that allows to choose which granule will be used by default. It is useful when running guests with different page size diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8090becdcf..693af1b518 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -14721,6 +14721,10 @@ virDomainIOMMUDefParseXML(virDomainXMLOption *xmlo= pt, &iommu->pci_bus, -1) < 0) return NULL; =20 + if (virXMLPropTristateSwitch(driver, "cmdqv", VIR_XML_PROP_NONE, + &iommu->cmdqv) < 0) + return NULL; + if ((granule =3D virXPathNode("./driver/granule", ctxt))) { g_autofree char *mode =3D virXMLPropString(granule, "mode"); unsigned long long size; @@ -16824,6 +16828,7 @@ virDomainIOMMUDefEquals(const virDomainIOMMUDef *a, a->iotlb !=3D b->iotlb || a->aw_bits !=3D b->aw_bits || a->dma_translation !=3D b->dma_translation || + a->cmdqv !=3D b->cmdqv || a->granule !=3D b->granule) return false; =20 @@ -22604,6 +22609,12 @@ virDomainIOMMUDefCheckABIStability(virDomainIOMMUD= ef *src, dst->pci_bus, src->pci_bus); return false; } + if (src->cmdqv !=3D dst->cmdqv) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target domain IOMMU device cmdqv value '%1$d' do= es not match source '%2$d'"), + dst->cmdqv, src->cmdqv); + return false; + } if (src->dma_translation !=3D dst->dma_translation) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Target domain IOMMU device dma translation '%1$s= ' does not match source '%2$s'"), @@ -29022,6 +29033,10 @@ virDomainIOMMUDefFormat(virBuffer *buf, virBufferAsprintf(&driverAttrBuf, " pciBus=3D'%d'", iommu->pci_bus); } + if (iommu->cmdqv !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&driverAttrBuf, " cmdqv=3D'%s'", + virTristateSwitchTypeToString(iommu->cmdqv)); + } if (iommu->granule !=3D 0) { if (iommu->granule =3D=3D -1) { virBufferAddLit(&driverChildBuf, "\n"); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index e63230beec..d796d17947 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3084,6 +3084,7 @@ struct _virDomainIOMMUDef { virTristateSwitch xtsup; virTristateSwitch pt; int granule; /* -1 means 'host', 0 unset, page size in KiB otherwise */ + virTristateSwitch cmdqv; }; =20 typedef enum { diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 7e3da84767..bcd12bb705 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -3186,7 +3186,8 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *io= mmu) iommu->eim !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->iotlb !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->dma_translation !=3D VIR_TRISTATE_SWITCH_ABSENT || - iommu->pci_bus >=3D 0) { + iommu->pci_bus >=3D 0 || + iommu->cmdqv !=3D VIR_TRISTATE_SWITCH_ABSENT) { virReportError(VIR_ERR_XML_ERROR, _("iommu model '%1$s' doesn't support some addi= tional attributes"), virDomainIOMMUModelTypeToString(iommu->model)); @@ -3209,6 +3210,7 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *io= mmu) iommu->aw_bits !=3D 0 || iommu->dma_translation !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->pci_bus >=3D 0 || + iommu->cmdqv !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->granule !=3D 0) { virReportError(VIR_ERR_XML_ERROR, _("iommu model '%1$s' doesn't support some addi= tional attributes"), @@ -3221,6 +3223,7 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *io= mmu) if (iommu->pt !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->xtsup !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->pci_bus >=3D 0 || + iommu->cmdqv !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->granule !=3D 0) { virReportError(VIR_ERR_XML_ERROR, _("iommu model '%1$s' doesn't support some addi= tional attributes"), diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 376218118d..5540ed7b5b 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -6376,6 +6376,11 @@ + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index d0df7b7826..57370153ce 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6330,6 +6330,7 @@ qemuBuildPCINestedSmmuv3DevProps(const virDomainDef *= def, "s:driver", "arm-smmuv3", "s:primary-bus", bus, "s:id", iommu->info.alias, + "S:cmdqv", qemuOnOffAuto(iommu->cmdqv), NULL) < 0) return NULL; =20 --=20 2.43.0