From nobody Tue Mar 3 04:51:30 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 1771370562533645.8786364928887; Tue, 17 Feb 2026 15:22:42 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 7EC0641893; Tue, 17 Feb 2026 18:22:41 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id F2B064196C; Tue, 17 Feb 2026 18:20:37 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id D8D4E3F3DD; Tue, 17 Feb 2026 18:20:28 -0500 (EST) Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11011060.outbound.protection.outlook.com [40.107.208.60]) (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 1FA0E3F37E for ; Tue, 17 Feb 2026 18:20:27 -0500 (EST) Received: from DS2PR12MB9567.namprd12.prod.outlook.com (2603:10b6:8:27c::8) by DS7PR12MB5839.namprd12.prod.outlook.com (2603:10b6:8:7a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 23:20:22 +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.9611.013; Tue, 17 Feb 2026 23:20:22 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-4.7 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=tnyBmgsSoiTJ20aeZCZDOsatHFsJ3c7Nz4265IH9MZLvoHTrBP+SwLse9LifQD+P1k0cFCBhXi5OCCOU2qG7u3sxEsEtAdsq/iCLvcJcsBkV3ozBloiYSLI4VJHhV39LOuxlMHkfwK4AuN28tp77Qgn/OF+5xYeyZKZbx2aMjXn2hVvIUmnscwJkyrc3uTM7zAv5n9Jm7qiny+jAMLqHGw6PmBixg6WBSzkw55l8NlUxaikX/tzbbaRKkYnwG45b18krl03+t+yP/wrb1DWVfXrKrmwdgQJ3rjX1ub2TCYj1hNsNgPeUBsP7EbyDAe1DRag/PO/mA5/SGGFGW+K7kg== 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=5VsBemKsxbR+veoiNSsz5x30kBykWZcSjf23DVgmp9Q=; b=bmjhB6AMUnJmxV/WVun8ZiFiCT10JfIupw8O6Kb57eITeZVnVEqkTSqlpsTbu4CSprEBZkps6UmCZS2SSUfJlUpZdawBagnqBT6ZOY5Q9jNq8lqzyEk1ENZKdVlpJzDzlVQCKB6XsprZ0eJIOont6ET2n1gbZY5HxH+zI23mVYsrAfmeR7+tdUVzKHZMlu7SNoca5WNMbZhdSoir+Us+N4yxq5JjEwtnlk6g549NZF8mGTFLXn583PWwA7LSt4BZ5zb2U3JxBE0hBl1/DD5PiGb4DLEmv3gWbPyj95cW7czoBufxr9vCcjTknn2a1b52B+hapCQnCdoTL2QTNemFog== 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=5VsBemKsxbR+veoiNSsz5x30kBykWZcSjf23DVgmp9Q=; b=pBihn/g1KKLeGHNtUB7DNCnM/ukCLBOAU+h0vcgq6zlD1h9YdBoibDxl+9/IexOeK4ox7aAKwUpswIOJziUc+Fnu3KtM5TgyFEkQtNPrUx5JXGehzlp6axVSo/zxJimUVo/6N1bSKBjdc/ZKHza6+zj0Bb/RrOWwY0AOUwbXNyXElByZ8MWz1/htMkKPA/6rvjes2bx8AfGDmfppgM572lxiwptxIBTm6I127D2f7ytUtd8VMBy1JDVyga//IW6qtoMpWVYZqO9RO3+pPEosnrMiCGF1hfKIbD7lJxbbDAhEpNFYIe8/xcgshFJpE1kFRd1oLMUjGfPvDCkZ9Nq8Nw== 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 1/3] qemu: Support NVIDIA Tegra241 CMDQV for SMMUv3 Date: Tue, 17 Feb 2026 15:20:18 -0800 Message-ID: <20260217232020.2565582-2-nathanc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260217232020.2565582-1-nathanc@nvidia.com> References: <20260217232020.2565582-1-nathanc@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR05CA0151.namprd05.prod.outlook.com (2603:10b6:a03:339::6) To DS2PR12MB9567.namprd12.prod.outlook.com (2603:10b6:8:27c::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PR12MB9567:EE_|DS7PR12MB5839:EE_ X-MS-Office365-Filtering-Correlation-Id: 957ea0f0-d0f3-40ac-787e-08de6e7b1faa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+hIbB7Fl27kkF+QcrtZfGXHX08aEfi82ODVH1VmYPn0n6HG80iF53VHQggWY?= =?us-ascii?Q?XgxRCoJfUCHFuTfeIwYMTJGtsryrHHuwHlys0geLkR5mww4n4ArheXCTEzPd?= =?us-ascii?Q?3IWKpfwZwIlrzNosL3ny1tiMnxVbJ+8pOPn16u8Qrfv68O4yZbCCLXWmTasR?= =?us-ascii?Q?3OR6H2PeK0PCWoX17vEMgjZzbalfVK24HyrMgi2wMuRnCEVvthJLEAnLyrLg?= =?us-ascii?Q?HxsOuqqrbN/RYGCiJdoaKlL3CDTHa5s5unV65GDPz9HLuwm/H/NeN9/hzrrD?= =?us-ascii?Q?WqelcZnuc8ku8j/dedxLcBa/hi2uSnippbVg9cITVKauG2WNweBU0PqJfzdv?= =?us-ascii?Q?62e9SPXPMBqcuwAHj54dkV9zjc6hqglLECY79+yV4wt5yegBSOkBOoBOyLGe?= =?us-ascii?Q?QuSafVevMxdoZhs7wrCnAkmR0pzJJTxTSml+VmxFBzqZasOQnxwfuuglM89W?= =?us-ascii?Q?AfEXkO39VLIcuspd/pHfBwti+c4las3wmsfr7naZYlFc6mKAWxxJvJoEFt25?= =?us-ascii?Q?TivplG5OCnyoo3brvxQ+VI6Ze+ECJWDXtR/4px0OT90a0MPjrVPqAMm1gvP6?= =?us-ascii?Q?fHMMHarfRhAwAMFfm7O8PYphwkrR596NsfoiIwI7pYxUslGwklk4xDwLHNIX?= =?us-ascii?Q?X+/wyoZF1sKZOh1RKnJuTPy8Ah51+uA+ybthRng1y5XVZDmV2lquJ9J4j07T?= =?us-ascii?Q?QhzkxCsVcjpcszwmjrx0T7PPm1GgGkoG9DrMllyzfErLVmn4WdRafBd7ViWO?= =?us-ascii?Q?xxBrb4x93drewREihfunl6dJ3XQQT39po7Q3+Dwbrp1aZNBdc4P/xR4LXCRv?= =?us-ascii?Q?BgfdH3IZvA8jdVukn/fCKv7SmS38Zqud8XnV1cvp/1FlUbP/1WBBGBJH6r39?= =?us-ascii?Q?jJNjXaYo5gLmel50gRR65cdmZjzQFcg3r7Z8abOYXukIVV36ek71LoWIlmiQ?= =?us-ascii?Q?hFFcfVqqPX4NfN2dFgwfPGEC62isltjFAA0ZQ2Ie6Cy/tqLsy2nJ/vDGJKvf?= =?us-ascii?Q?foBXaMYx6s3tWu9/u63Vx7+oPwtfSGWhxdy/wBPMzwN46AZHRXCGz5bOWDFz?= =?us-ascii?Q?Gc0ZIUVaJrTW231JzEaEOax+tCZopBhi9GO5YhZtMMMcRxeTwokSpJSyVeZI?= =?us-ascii?Q?McMw+rNrsbDluc/5/kdx4zNwopwO2tStX4ktydOmPbmfctEB16RwIQdkuu9X?= =?us-ascii?Q?jT44znKYtrD7zUAbNt4V/x5IOOC0YXacU4QA6WMBEi1d+ujzkhhJ3BFxCLdt?= =?us-ascii?Q?jjLC+WRn/fchWNf2Hkp6FWqalwiGq1WHJq2oU80W2g9dU/xlUtQaabWDEIbq?= =?us-ascii?Q?kmQbJyfLKq+Xx7nCs2p3zb1JMDGLeNPL9MJE6XsUd+wcUUDOwfNHY5jZEkPA?= =?us-ascii?Q?wEX1yMtl0o84oiUekRT22N/qpKkz6o6pb8kKVH6jgSbs2ak0rD0qN3P+2D5G?= =?us-ascii?Q?j8nCsW6ouWj2h7/vV/dUk0wsZsfIcVUjQMlcGvEnz0HUcq7M8qodxQdenMRh?= =?us-ascii?Q?fD8TghffJjBXaxdEeIlaBAuPFuOPT8itjTNaggm1p9UStWWzBG24KOnS25mB?= =?us-ascii?Q?EN80OJDwzjzmppQNa0w=3D?= 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)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4Ex+5StHoMQHu0Uwycj8TVukS7GYfi1GghTnAfHdeIvhFUtmdgN4qk+iGk2B?= =?us-ascii?Q?J/pGM9U6eMgs+hiIVRtrLNqseytVvyUe1eZSSS9WXB1hj9S6jgfveEHU4FCY?= =?us-ascii?Q?+ZtjXde7/Dp1Az4mOvia25Km2jeMyj4ir9ijpiSZj/+w8zn3BxYzzGiF4Fmp?= =?us-ascii?Q?0nAfRZ3hvpp5xE5xLTYEmrlh7idbFZe7TD5HVqdCEkrtu5GWR7Nyu6xb2AKI?= =?us-ascii?Q?qyujyG+tGvgLEjhlulnvY9SP/l5oi8/tCrNQOEQ7ORAP4j3YoVd+87QWjkcq?= =?us-ascii?Q?IwNfVCRXr5XY6PkeEz43X6hGt4WRmwCLURLIDYbdHui1/bPB/B0hNrJEN571?= =?us-ascii?Q?kAza92NnaXoq/D5owTCzpslJIF0lmey9xo5geK2larwm5tFpLTXVaIk8M0WQ?= =?us-ascii?Q?gml6MoZIHCYITsFPPS0PHoh+znEixWimvJBJbBBgz+TnXMWETIzMDdVdnMvZ?= =?us-ascii?Q?JNwnym0nmP0zM3cqQqItkAzFHcawkBLxj7s8eZHEuNPA9274X01++O66csze?= =?us-ascii?Q?D5cMGgq54byJHn3c+6FIluwJM8hgH+tldYMEumI8eWy+qc3QkI9XKgrxYyzR?= =?us-ascii?Q?7tID9G21G0cWVWL0Oyvz+KfiIPiLnHs+NzKyfbpzyeOkzdaa6vReSq2vSjdc?= =?us-ascii?Q?P+NsgzxS+ZqXcc54c+euo2PbB7i7lPi34etCfVxWAA1VqFemPeDGC1ZASGe7?= =?us-ascii?Q?M7AXO6HDdpqKSi5l1BIDuxEsZ2K3pEDS4mRTh5P5rYxUBC2ohXm4r2fFVctV?= =?us-ascii?Q?32UV70bE2zbZUzcOroRaqVcidPiyoBA7DByRIro1ENuPc6rVzzj6JVhuPvAy?= =?us-ascii?Q?kM0qrC1daRo/zDmr/JawT/pZIAptaHctP+8ROVux2J4YHIyQNS9BYkQX/VsF?= =?us-ascii?Q?pvL8NwAZkaoVO0+mzHI2Ry2XCXebdaBL5VTu2QUeVPL3gEW7LnZ+eMixE+4O?= =?us-ascii?Q?id4rA5zc3mwD76RsO2KYh41nZXAnUReCFCnU38h4EILlKwdKSFLBVs90L7ae?= =?us-ascii?Q?ZzCoDc5UqdKecp0LpkgC7FKBM3npVfugqnVcix+rOZi+ny3Dcb2ISFYm+/vN?= =?us-ascii?Q?qOjsn7G7N4nOx2AdiBW9qU1/9QQIgKAxxlD0ytwvKXfYqxodfP6KXFhxLrh+?= =?us-ascii?Q?bsd9wziFFwDkuxThhwV6Y9VtaulBocZVX4QzyCn20A9oCx3Lci1N6Es1ssoR?= =?us-ascii?Q?cq+WWiZnydLP+8MH8tBJElIgus+RCr+U2ir917vqXeuANhZdC79Hbu21yu2L?= =?us-ascii?Q?ZZrZsdk4fnlilKFzyUmamSBTNbKG/Sj+Tbg7irJa78Wb3hCPZRaL6F//6mQ8?= =?us-ascii?Q?EtXgdmB7uj7UCamNVLE/uLIAQPNiYsWKnILKo1W7H63/K+UQEaof/EE9h5/A?= =?us-ascii?Q?9DcukBwvMvEzWQz3paf5wOWmeml7LWqxMPubZb9q1jLbd6B537gnyNZs79P6?= =?us-ascii?Q?GzR5NrGYTWX+e7cRJEe5eruQSkfl1sO1g1Y6vCUqk/A+WCX4R2jCvne++0mB?= =?us-ascii?Q?he4kv3Tt+JOhUd9T0VW3qBYQrt9QwlRFnmVd/TcZ+oN40Gs4pGqlrUWwIWjM?= =?us-ascii?Q?cw33ZcD+w+hEwREA3Rqn6txxRUBsRruC1txQaAiR9WKylhGZjRnkfcISMVoG?= =?us-ascii?Q?3JbBiW/BzfbDyjBPidRLoX9Jrb+Fg8FKbsjgG2LW43en/pIcQp8ei1at3PEy?= =?us-ascii?Q?9fclkuysSb6pIjfJyA53Y+S068wxbZucti+H2MUbjpXMGhYKgo3vkqaFwWtv?= =?us-ascii?Q?q0u0fOuNlA=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 957ea0f0-d0f3-40ac-787e-08de6e7b1faa X-MS-Exchange-CrossTenant-AuthSource: DS2PR12MB9567.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 23:20:22.5348 (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: FlxgUgIqTlkcFySPegn5EIBCV2oncQ6A3jB4hBgeYZEOW4nT+w5pMPKMrIpLPjSJbbglNIzPh7lrdLvt84ho4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5839 Message-ID-Hash: EV5EP4LDWS7SOGBQSSP4Z5NYM5LWGNWA X-Message-ID-Hash: EV5EP4LDWS7SOGBQSSP4Z5NYM5LWGNWA 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: 1771370564015158500 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 82788c15a2..74431838ff 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -9341,6 +9341,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 453e301041..6385420c10 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -14680,6 +14680,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; @@ -16781,6 +16785,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 @@ -22537,6 +22542,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'"), @@ -28941,6 +28952,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 a13f6d79e9..41dba29a4f 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3075,6 +3075,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 1ad614935f..cac5dabf06 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -3208,7 +3208,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)); @@ -3231,6 +3232,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"), @@ -3243,6 +3245,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 dafbdc63e7..2677207ae4 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -6352,6 +6352,11 @@ + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a742998e4c..3735387ebd 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, + "B:tegra241-cmdqv", (iommu->cmdqv =3D=3D VIR= _TRISTATE_SWITCH_ON), NULL) < 0) return NULL; =20 --=20 2.43.0