From nobody Mon Mar 23 23:39:48 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 From nobody Mon Mar 23 23:39:48 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 1773256511468567.9684905845709; Wed, 11 Mar 2026 12:15:11 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9FCA83F943; Wed, 11 Mar 2026 15:15:10 -0400 (EDT) Received: from [172.19.199.12] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id EA22741B3B; Wed, 11 Mar 2026 15:12:32 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9646E41976; Wed, 11 Mar 2026 15:12:27 -0400 (EDT) Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012031.outbound.protection.outlook.com [52.101.48.31]) (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 BC9CD3F95E for ; Wed, 11 Mar 2026 15:12:20 -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:15 +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:14 +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=yG0q6zMSQ9bahhP4TyHhNqzxYVibIlk3Ruqgz2DJrfGxrWc1QpVDLjUqWNVxS0uF2blGd4oLISwpN973Wckg1BhhKRYirNB7giA/mVX9kn5xAvKLEzaaE71e+L/5Px9EN0zwENnb748/P2a2B+7QiZjbFpKxrgkwX3vr1Jw5kyFiLJKVpMAdu1uzpAWM4C8ddhRFUIZ4KEiN+GdCgG+O9xHMgeBGveO8uftQLdEG+NHEg1SH93aNUH3OF49fwkf3Iv8DaA8MImZeJgqjN2ZwJeAwBWjlR82l7mcQII+4u8EMCkpiDlZC37v53wPHOPfmB0pnHnHih+JOsb7OWs7yuA== 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=bg5SAluJkLzL+0+8MUqWrMdEOt/QQnsi3BSkorIQE2E=; b=UqsHGsJBjOJ4G5Gy8YHqpf2J7tfnXtR4Uyq3XDU7IsQxyBvKnm+rAckHs60XU5afN5qy6DuORn4MTWZ157kZ573RoYIsM01psvyDJvsj+BD4zH00Jt0JbUO64dzbS60u1MTHFGS4CWl6hhTyadN61brEbson2C+UjAUoyDZ3SvPFWppUVYfLkCOQpC9o4gD1p4gW/7ywCQSucV/YIvy6crnXUqksZpHEwZKrfZkR8NIbVI7/6A2VPZOYENNy9JwZni/mqUVl+HOy3A32sS4bm22KDthBfA83h6pSdj0p/MwVkVT+IDPcu0paIJlLBui8VjI1GvcXmmA7RYVIGbR6pQ== 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=bg5SAluJkLzL+0+8MUqWrMdEOt/QQnsi3BSkorIQE2E=; b=kmPqlSz5NAa9OMxm/5weqUkbqc+3QfOn+IYDqOGGfA/bA3XGyAmZeS0XdtPhiHeMEvAGSo+b3SkoBSbcFlrsuq06DMu39tXiQjGVREYPY8JAp/cyle8BgfOLe7BfoVN0wLmLnTenbTsUJTKhkyfyEmxIs0dsAPPGc8LCo3emf+qlDwIwSBAshphtSewVwgn+q95uZDWOZ/MaWG9oscQ8RYK+2aWeKTAy2JCbE1xSAMcj7yvqx//LExR+9jg4FCPwwN7+wFG8E3MuhbYgb984CjW5D3e7LaDvrd0xe/d8h6IkZb8UNE3MSx7PLUtUoFBGx8sWHFeiDrLdIiQudrJ3uA== 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 2/2] tests: qemuxmlconfdata: provide cmdqv sample XML and CLI args Date: Wed, 11 Mar 2026 12:12:10 -0700 Message-ID: <20260311191210.1657912-3-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: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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: 3e32b2f5-2953-40bc-d8e0-08de7fa21ad2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|20052099010|22082099003|56012099003|18002099003; X-Microsoft-Antispam-Message-Info: EwPxp/IYqbeEIPJFbKVT3dixdg0P7tjLxgwbgKJofDB7gzPOBRNhYAlg6SYi/Qk8MC90ub5Bys8Y6xPAnO6hWMyVEEvMyUYNlcLfsGbKXjkTdEhPOgik9XeqWsxZgcIbS4PhFEXl0MADNWBlP39CoaQowVSF8C44N06kSBlRPSmQASmLOMqj29Nm5e/J83ha3ME6Lm9nTv0ILTDoPF6I7eB0lrejo6/qACqChb9dJXbpLkydYmWBRKVFEpfYNtmCD//UJRTbhJDiPL7AxYRcPWEIEErbl6fh/Z10PiiVE1kYNy8G4V6F512hdLy3jKhae+UpGSEKsomp2cShwIzcNDJQWX0eQNQ2QJCNMAcCOb989mILJaaE7GJyAQctCLuoPugFjCCHARJsN9J385nkBC4uKJs1VbbczAvZk9GI8UVfN2EySmEUlo09wsgy1bCSY9sBIMw485sOimHZuZeTHVC3niQX1WKe2dgnCrkAAzhRNgp96fVJMjliv1mi7AP9E6DHge37YhR0tXP/YwLDEyIM5ek8EFhkowapMnI/gA320DcmYewx1rgiMmxihwAR/njNmhFwQcqfDiSAnBNUhYrhOmEtCQn3qDfKMbJtqELBI7RR3ll6VxHdIu88+wjfAtuUfiUWhrK91wTiBloCrPJruDvwRWEuGRcbI31oJsORmAVkKxTKTO+RJEq34YnBv0bXrKJl3i/mxADnBSGc8exqa88HAMRAlcvYQAhDZRY= 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)(20052099010)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tjysH3wV7OdGC/WmdcBhB4L/Uos7cSo3NM0a7jshWkan7F0qrKa/Of/8l7Ms?= =?us-ascii?Q?1/AXbGE7c8mU4NIqUwq0QNJqQ/426bI/veBeuy1QqxAcCXhm4DMNog2wv9Cx?= =?us-ascii?Q?/j0K/jacEwmpmPgKClI0Z9yfaVSPxW6AxTmZI/zMXOKsGn/vel5pBAmnVyY4?= =?us-ascii?Q?+kRoMpYkO55xvJubaUCCliOcSXDoU0OotlLbu8P+Dcnes1uZ12LSv3HebKRv?= =?us-ascii?Q?sggIR0Ak81273MHMmf7VWTawTNs7sT+s147pM+bOnSKMeusNm+BMyaNMMG+l?= =?us-ascii?Q?obo0HOe3BUb6Bv9I554eMWh6B1+Sm/24j3JhoC+sTchybsxwqUoGAukLRtOU?= =?us-ascii?Q?+F/ei0T1lnzLDFbbG5ASYOw8IymKXwkFMF+Ro1T2ffUSoLCr628SVUmmZdG4?= =?us-ascii?Q?q77VLra2S0jH44jSGwDowdpbiFLHJWs67P/2v9VuqvL+3wgKE9/Whh/hcjgs?= =?us-ascii?Q?K/0+7E24HUW9ZBHK/o/qm+OmRxUA6EIhAjmUHXwI7GRsM6qJ1Cqzr0dozSZ3?= =?us-ascii?Q?0dHqE6Uu+UhDuC6E4XzX0+GWKrdauOYU/4Zk37REF3PwOnNhWymlYZALVCO5?= =?us-ascii?Q?tZJU3Y3JnMFG5F8J7LhIEDR5GosiAPZyYvnp1X1u9qWVqaXcyhWxJRxS3sL+?= =?us-ascii?Q?oj+6jnvkCBogGvOepu60fKVH5dGuwDDlhNIIMO3EJLSs9TOMiBEDXyNgKJ47?= =?us-ascii?Q?jMlnuHytoVVvb1v50tnVvdQIKr58FBkeofogAua2lD2pFXVQRp+9Ce+5b/WM?= =?us-ascii?Q?hcwx8Fzs8dBxHQ1GcG3mjUZFvtixe/ijwHM8AXrkgLe/kAPX2WJFKcxXchyF?= =?us-ascii?Q?Z36TF6j2l7EMeVQh6Hymn+Rglp9Qv4BNKRkJBwkjQap/dFQd5x62vm3+Ml1N?= =?us-ascii?Q?PJqmHdxPBtPhrrJOboYsxMEATcZUUMx8huzYpllhn2JcXi1HEHzFct0VQLhm?= =?us-ascii?Q?CbSa5VxYm60XzwO+8Vb4D5QKpe11TW/CxlMOp2wPUfYN0W59TtAXb1N/SZHa?= =?us-ascii?Q?E7CHfiXOFfZcWtMEFY6fuJnN4pMIAOzyV4JWAi6mpwY4Ytl1hRrjk65PWfqj?= =?us-ascii?Q?ksJE6I3q4zJBW5CFDxQibJdWgYPMbGXk4zB3T1MrMeeHWu2ppw8OnpIEuvIC?= =?us-ascii?Q?GfZ5vs+6LGiPoyORrBAMDtRlscP+QHl2IJ2h2+fVVT0SMUa0F8raqJU9eOPO?= =?us-ascii?Q?WHaiWWt1eZ6T3xv3suDeAVK17XjUxPclRBDicq+H0zQEb7jpBIMkRO1xGaw8?= =?us-ascii?Q?ZPasZr8MNIw8qtxdFVrr05hWiE0nfCSbtZ/Rq8AeeXBZPfPpK4HJ2vpzinIJ?= =?us-ascii?Q?Y7NqZ8xo8nkAFsZGplAchBrfPDWNk8e0ywj2J+ubOXsr/dkFUgprO4PgV+E9?= =?us-ascii?Q?Vo3f3kkrEtvJfnmZXJCtxhDnLbQRzqN/5RTD6Z6f4DTB5bvWCg7TyTKGFYx/?= =?us-ascii?Q?bqvb+z4njawWjpMpakREERjIL407zM8up8gXlxDAXLFPR76rIgNDGYcF/emf?= =?us-ascii?Q?Yc5y4D5b4JnZcPzUSL3olTLyQVxdZtABH0q3L9HgwV4nayvVCWqGJWEP7XYV?= =?us-ascii?Q?aoeiBp1ClchoefF6EJQGW++1N+iqz54llp26mSzoqFsKWycv3jbgyX5c4yBx?= =?us-ascii?Q?tDPK7ujGIqSW5OldfxxHBdW7Qp6wlD1I0Wkvtko/6UoydsSKKBVeJxyt/8FA?= =?us-ascii?Q?gIYB03/d3qE4TtKhE8lDmGZlBaPtHLc8Pw2csqniMIH9OKjdOQdWXbdFdEfx?= =?us-ascii?Q?nnAcUlJdqg=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e32b2f5-2953-40bc-d8e0-08de7fa21ad2 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:14.5779 (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: v8r3wJB8NqxUftdhZrgAYkDb5Lp7eMaX6uLQRa7DbYLlrdubzqJiQR6UnLr7Hz+goXWvEbn9qD92pyqhQoN66g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8087 Message-ID-Hash: CUVJYBZUVXJLSNNH2XZBHXANY6N2JA6Q X-Message-ID-Hash: CUVJYBZUVXJLSNNH2XZBHXANY6N2JA6Q 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: 1773256513650158500 Content-Type: text/plain; charset="utf-8" From: Nathan Chen Provide sample XML and CLI args for the cmdqv XML schema. Signed-off-by: Nathan Chen --- ...u-smmuv3-pci-bus-cmdqv.aarch64-latest.args | 45 +++++++++++ ...mu-smmuv3-pci-bus-cmdqv.aarch64-latest.xml | 76 +++++++++++++++++++ .../iommu-smmuv3-pci-bus-cmdqv.xml | 66 ++++++++++++++++ tests/qemuxmlconftest.c | 1 + 4 files changed, 188 insertions(+) create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.aarch6= 4-latest.args create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.aarch6= 4-latest.xml create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.xml diff --git a/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.aarch64-lates= t.args b/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.aarch64-latest.ar= gs new file mode 100644 index 0000000000..af2e8eb3d9 --- /dev/null +++ b/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.aarch64-latest.args @@ -0,0 +1,45 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-guest \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-guest/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-guest/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-guest/.config \ +/usr/bin/qemu-system-aarch64 \ +-name guest=3Dguest,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \ +-machine virt,usb=3Doff,gic-version=3D2,dump-guest-core=3Doff,memory-backe= nd=3Dmach-virt.ram,acpi=3Doff \ +-accel tcg \ +-m size=3D1048576k \ +-object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073= 741824}' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"pxb-pcie","bus_nr":252,"id":"pci.1","bus":"pcie.0","ad= dr":"0x1"}' \ +-device '{"driver":"pxb-pcie","bus_nr":248,"id":"pci.2","bus":"pcie.0","ad= dr":"0x2"}' \ +-device '{"driver":"pxb-pcie","bus_nr":244,"id":"pci.3","bus":"pcie.0","ad= dr":"0x3"}' \ +-device '{"driver":"pcie-root-port","port":0,"chassis":21,"id":"pci.4","bu= s":"pci.1","addr":"0x0"}' \ +-device '{"driver":"pcie-root-port","port":168,"chassis":22,"id":"pci.5","= bus":"pci.2","addr":"0x0"}' \ +-device '{"driver":"pcie-root-port","port":169,"chassis":23,"id":"pci.6","= bus":"pci.3","addr":"0x0"}' \ +-device '{"driver":"arm-smmuv3","primary-bus":"pci.1","id":"iommu0","cmdqv= ":"on"}' \ +-device '{"driver":"arm-smmuv3","primary-bus":"pci.2","id":"iommu1","cmdqv= ":"off"}' \ +-device '{"driver":"arm-smmuv3","primary-bus":"pci.3","id":"iommu2"}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-object '{"qom-type":"rng-random","id":"objrng0","filename":"/dev/urandom"= }' \ +-device '{"driver":"virtio-rng-pci","rng":"objrng0","id":"rng0","bus":"pci= .4","addr":"0x0"}' \ +-object '{"qom-type":"rng-random","id":"objrng1","filename":"/dev/urandom"= }' \ +-device '{"driver":"virtio-rng-pci","rng":"objrng1","id":"rng1","bus":"pci= .5","addr":"0x0"}' \ +-object '{"qom-type":"rng-random","id":"objrng2","filename":"/dev/urandom"= }' \ +-device '{"driver":"virtio-rng-pci","rng":"objrng2","id":"rng2","bus":"pci= .6","addr":"0x0"}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.aarch64-lates= t.xml b/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.aarch64-latest.xml new file mode 100644 index 0000000000..2dee24f4c9 --- /dev/null +++ b/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-cmdqv.aarch64-latest.xml @@ -0,0 +1,76 @@ + + guest + 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 + 1048576 + 1048576 + 1 + + hvm + + + + + + + destroy + restart + destroy + + /usr/bin/qemu-system-aarch64 + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ +