From nobody Tue Mar 3 04:51: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 1771370621833993.5682016286951; Tue, 17 Feb 2026 15:23:41 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id E8A77418D3; Tue, 17 Feb 2026 18:23:40 -0500 (EST) Received: from [172.19.199.9] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 9F2B8419C2; Tue, 17 Feb 2026 18:20:39 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 791333F377; Tue, 17 Feb 2026 18:20:29 -0500 (EST) Received: from PH0PR06CU001.outbound.protection.outlook.com (mail-westus3azon11011024.outbound.protection.outlook.com [40.107.208.24]) (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 A30293F375 for ; Tue, 17 Feb 2026 18:20:28 -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:24 +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:23 +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=Rkx1j1kuy2IGsjXudyghS9uwC5+nZo4Js7MzE3BexPOgr+0KtCEgvATnFO3NPjfkhjlWyvAAieWUQXaYiCYKbzE6yo/6joCkla75WugH3URh0wJFIUhjSz9lwBkGrvV6HF8XgoR420TOTPeAbThxcB2LYB68dnfiA5/nop+hooIeANttKMFRmhrNWtJnNcCkiFfLmYmAOV1EIBqQ7P0U4QKlQbFC2ETIgv1wxEcDJP5ZYkd3P/9Z4WFyBIisKiMB15RqSYlIJToOFxsW/McHVLb/2VNlsWpWN9QJpmQ5mK/raqHaoDF09oCdx47q7Wm7KR5/XBCTJ0SBnbHpXjcTjg== 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=HZQuwdA3bMwClhtKMuKZUnNnCn+CLDj7p+Aup+wCw08=; b=J6vviylMryJyw2KpLZI8L/hurM3Rktu2VcDEwgs38tMfXHypWwrWVhChBZIr5XAUn+kgTIT8bIxVX94OR4oGOmmAbPQ7HWBNnol+mnZX70AnXxyz7Grce3eD9N+C402qWs/3mbq9af7/bvmUkOLdK6DvqvWUvAnxl6zHi/W5KNN0Z+vqZ7OS6OmgXSXHI2CX10VBj8045AzLlF5DgCTyG51z14n2uTAm78iTfMi2GCGLd2wV0qT2ZN9A4Py/zUJRblF0snOiwYZwyspuGMqFOqihgIPkjhnB58zvsn6fQMAL/vNKL/9c7DsObFkzuHMSBQVejVtniFcMyrsdpHwKMA== 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=HZQuwdA3bMwClhtKMuKZUnNnCn+CLDj7p+Aup+wCw08=; b=mul7N+Wjr9gh7Vln1jle6QK8L6TI79j27G0kn2gVYr1bDTvbUE6wp4+F0adIN3gxZrYui5vCOKFMzE8FYJLbluuQaF8/Fq1GmAG3gqC1dNtuG6Y1oeYV+r34KCWjw9sIZfJ/IpVKek/GXlSvuCJnzDkahl63f5PEoyTFNmC/xZ8p485lqvgFURYM04jl/Wao6PuBH2Y62vCiWfSXdyBQ5zltHc42sra1I9mIZ+pQdpXVYuNjTNzBGU3fmvBNjRpk+uD8ML0reu/Y1xbElGQoHXDJK6Cl4yP29ctk5NFo2ziC0LK8gYIYBkRs2Z0RCdr44g68gmGTY44PPAo4c0VOOA== 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 2/3] qemu: Support enumeration-independent SMMUv3 identifier Date: Tue, 17 Feb 2026 15:20:19 -0800 Message-ID: <20260217232020.2565582-3-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: SJ0PR03CA0238.namprd03.prod.outlook.com (2603:10b6:a03:39f::33) 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: b2fd9891-b0ab-4568-2f65-08de6e7b207c 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?Ik8gwL2HMnWm5vd4Ag6jp6eVJx6Wz8tWrN85sdoMXMJVylVPOi/AhL3T5AqX?= =?us-ascii?Q?tvx9dr+kYMi18xMUXBmaE1gSxTngYjKwACrHQVhual68UpTSj6H630oqoko7?= =?us-ascii?Q?Ctyov473NYWw+dNkGt8MIlL7yBvOYiDKC5ffu81YpnBLhhnMmPn+Ct4o+cD6?= =?us-ascii?Q?xGsfBHSzUCkQWddY6yBd8unHojrVXc02tF7dFKAkDAwV1BMSOY5t88g72/Xi?= =?us-ascii?Q?n5SzObs1URnoQ8pVfTlY0YvJb6vUSaRyIA6U2GFMAjmHkNNTR2yZ7bjn9xOf?= =?us-ascii?Q?YRXZBEF+Rgq+TTQxstdr37XBerh9pwNMc4RlJT99NZohVe9QvrF4sQmMtmN5?= =?us-ascii?Q?74Ev3lbvnA4bznWrndKl7kpnwGsV9NsanjmONfBFyvqnhViE63+PNruq3V2D?= =?us-ascii?Q?KYHGbP7IAbeSSk+9MJVKJYXNKSpe7bN/JaxbCmbF3LzWVM6RTj2r9tCRLuz/?= =?us-ascii?Q?AvHo9KfJctvWLl3lVvGKlPp6Jzx9Cj70id4VWNe61nutRPELFiIqgcBymyST?= =?us-ascii?Q?x78dUP1Mv9HVIjxksmCscHJTuawjGTARUq6rx8Xauya0hNLZMYtG2RV2Ypx+?= =?us-ascii?Q?TzTlaCg7MRmatYA2lBOBqnPgiUjkllCURLUoVHRiVd9tsZpq1GcDo4jR8hqp?= =?us-ascii?Q?K2iNCaEQ8xeHomCfUnRtbNpS5zZuttcZq2VcCmMYOit4yeB39fqU6uXNLUAy?= =?us-ascii?Q?FRsqhSwgMcr5TCT+oyQ7j3cHm2vYdbEeDICKXHadjpI5ePLP4TWZUlupu01h?= =?us-ascii?Q?SY3rCAWniTQHltc8I5VgaGnSqTAJrsSTmKrSmRNkS/ylnH34I1AizTeBIMGX?= =?us-ascii?Q?ld4LsZ0jKmbISmg1ypS85YlHbz3HbSrbnJtZMcajfQcMxVl4dJYNNMbGvRSu?= =?us-ascii?Q?xghfyERFGc05U379FfmbTtHZkcUWhdqDkJuJUmv3JvYRjStwcYw6bdwpFs3q?= =?us-ascii?Q?3/w7Fri0nBgrh8aBlNC+sltf1UogBGWnjNyOXFr4OLwmn0sSnigJWaAvxgNF?= =?us-ascii?Q?HVOgH6nAMVj4EDUkN4tFeOUmz/jZlZ1ka3SpIMrNSSEvFofp3Oh34f00QR9C?= =?us-ascii?Q?+ckSwBAXBsjpwL59JhkUuAv9VX4jgV6riDcw0ONCDwl72lTu0wuC+/Uk7y15?= =?us-ascii?Q?8q2vPD4q54o2p851a4NslojLIiFILcPmbFk309u3106TeHZ68YVHMta+Z5zn?= =?us-ascii?Q?DchFmuSyDDozBmnuhcdw8dfM7fztH9UgWLVnfdKO/HKRbdoE7sQunYoq6Qnb?= =?us-ascii?Q?Ktaz3KuEOXmVjWbvZ9tr7yixXQECRNCrAjo/dDvSMKCP1EkAgp2o52mx2D3b?= =?us-ascii?Q?ZZQy9i9YFAz0B1YVfSCLamT4cUnEQHWgSgykpEjKM0RGzIWON2Hk0Fv3UoxU?= =?us-ascii?Q?mX4rijpBS2Wx/mSX/OurSkv38NDnyrvM9f6VTsESqUCEZhKaNUx10AC89/4v?= =?us-ascii?Q?Hwzi3ZqJWmZ5RpTudnHidwvpdHgoysBHMsPK7jBSVREJW9QY4vBUezwSicIz?= =?us-ascii?Q?+V9jazhWbQXAXqS3Xbrv5QG6Oh8eh/BN2Zi4maowUFSanEbMqrTz56takH90?= =?us-ascii?Q?9peWTahEUK6RflV1TDg=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?/bkQV59A4VzRGmsGIjKBT4LKsG12y6krB2qbtJg5NePo2xYD4N83Pj5Wg4ID?= =?us-ascii?Q?HhfwU8a32qmiQU/ySwJiKtuAceCm+qAfgh5gFwPrqZ+jSuL0rjA6KZV8bvqk?= =?us-ascii?Q?TvIB4FHRlxrpmInEeojqJaJAmpZZRBreyWa8DGHCHhjXdlB/DoTe+EN3ZVy7?= =?us-ascii?Q?+kMw60XyCOlQxq2jXcLU1Aeq/rPk2DDHUJirgxuY9iJgCJnvkkjOF9LAVgNU?= =?us-ascii?Q?0raLAVMfVZ0xZFkirIfUAtofQZ8pVB0US1CogLxiHg9LmBxtePoWODHtZoLc?= =?us-ascii?Q?1Hxy6VbAPAj8aUEIe6lCytzWa7ZcoH7zp0oRkcKBIVvzt5jST5zppZk8cwUy?= =?us-ascii?Q?AGXAlQePZ1yTiv1KpZtWG8lbqlJbCAeCTcayhiakyDV9dj2Z4yioNAhXRCAq?= =?us-ascii?Q?thd/eCeJUqGXcUvDmveBt1h8Prtux331qS6hy3ix9BhCS2cwYfGW8+4VN/zy?= =?us-ascii?Q?DKesFJsb7fMMk0wLEQhnhQcD7iqB4iJi/UlnpfwYY3NXc6u7JJxjUqHg4K7b?= =?us-ascii?Q?8Bp1OI3iAvJT7qDFAQr5BOnBWaM984whTdLGMZFQA/nj75WWh/akDUTf94uY?= =?us-ascii?Q?5SskbHVM2y+ZXQhzAWapjNeFUk8vxOEFU6rvn96zHt8UrIVfClb9ZGhx62yA?= =?us-ascii?Q?a7bmjTuXvEDmOAxw/x2I4TmAqMYBNfgU/AY7xkitH91gS6js3l5H+M6nxden?= =?us-ascii?Q?TI0NrPVk8WOoQNUNXh+j67HxoL8SZWszNd0ZQNUiAjrYCNAL6YVsrKlVZ1JE?= =?us-ascii?Q?aGbs6Ha0V+LmSiyX/owHBE9S9kD275mUy52yVMDSIlmsXeDAq1weedwws85a?= =?us-ascii?Q?zGALVlpVUH9B0Ck9EfWraHdVR5tpjZJTy6leBzzjh26gvyYXXjk2Ly8jkb4E?= =?us-ascii?Q?43pxYlvpdUCMRmiIWEqPZcitbWgoZzp64shQ4+l4WaJ7IoYESR3ysA8skd9H?= =?us-ascii?Q?gDw8pUqebH0mi8KR8rlOjuIB1nKBygDN91KzgYBMZicUFnjxfJ+SBlqzgMHw?= =?us-ascii?Q?mLkyY97f4JGEc7QcBT1fKaatkrTlXXMdIQTiF+ompqM5kK2kPbvnXqn46P68?= =?us-ascii?Q?R0YuHw1vbwfMvWcz/7O2I7taZqVX38bginvPv15vBbopzrx6Xyq7UtgXX6qn?= =?us-ascii?Q?mnpzTz28EPHNS149DwmtjpZYc5JKA7rD1yCmsk/gssKHFKndlIZ0iCK+vWqB?= =?us-ascii?Q?LAYjrXJi3y1os/ZSjHzQPNkbYkJvMon1RuySaO2wn9XsPVuiGslMLYHsyYTZ?= =?us-ascii?Q?76zQvIhr6xte3FZ6AufdhAxE+C2jcuLuFJuSdqg9NjHmyIvMmKcgm6nXjGQg?= =?us-ascii?Q?ED82q/Te+riqaQJJKwqjGlJ2VgRHdNr0IponeDulh9qdf7txAL1l68P/5cUM?= =?us-ascii?Q?ELSrLmC6q99BbHpIEi8yprNuNrKq07ifx1KvV68u7czJqUy4RYKP35U4pEDt?= =?us-ascii?Q?qkPeM+WSXnnkjFpqIVqz2depXNjfOJrIAL6Ql3QN3Sd4bCI3Vp+Wlk/+qdBW?= =?us-ascii?Q?2Le2u60Et63Gdzx6XuHe7WBKk+mN6rFhlTBlCuAlCYWB+HxAjKLHUPbY6XI1?= =?us-ascii?Q?T0YOeczirdOKI0zrpu+LSNpY0rp2mGvncaYXkyimp5hh60x18wto+rg+NHpz?= =?us-ascii?Q?wCvyKTQDR9X8EL4Au5MUI9qJeHKl7IToJT2sNRQXNvhtFNQOySayOboYmU7j?= =?us-ascii?Q?0KcEiQFzXWRvX6TP20NxD5I43HCR2N3nEIyv1hnnni5A1eR31npF+HCpp7NV?= =?us-ascii?Q?g9s06VXpVg=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: b2fd9891-b0ab-4568-2f65-08de6e7b207c 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:23.9119 (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: 4GnIjBAIxj2Vq8UakNrzIm9mkziSTWZFq2mwejy1+3GHsNivTW+tpRuG/7X49w4o+k6WGSzIW1sEYXqro13ONA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5839 Message-ID-Hash: ZBNJ5FXUPZBMJYIQLSKYWH62RWUCDGRI X-Message-ID-Hash: ZBNJ5FXUPZBMJYIQLSKYWH62RWUCDGRI 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: 1771370622323158500 Content-Type: text/plain; charset="utf-8" From: Nathan Chen Introduce support for an "identifier" IOMMU attribute that allows the CMDQV DSDT device to be correctly associated with its SMMU. Signed-off-by: Nathan Chen --- docs/formatdomain.rst | 7 +++++++ src/conf/domain_conf.c | 17 +++++++++++++++++ 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, 35 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 74431838ff..c5eb4ac886 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -9347,6 +9347,13 @@ Examples: 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) =20 + ``identifier`` + The ``identifier`` attribute can be used to provide a stable per-dev= ice + identifier independent of enumeration order. This attribute is requi= red for + supporting NVIDIA Tegra241 CMDQV, and is used to correctly associate= the + CMDQV DSDT device with its SMMU. + :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 6385420c10..0c11a3e2bc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2852,6 +2852,8 @@ virDomainIOMMUDefNew(void) =20 iommu->pci_bus =3D -1; =20 + iommu->identifier =3D -1; + return g_steal_pointer(&iommu); } =20 @@ -14684,6 +14686,10 @@ virDomainIOMMUDefParseXML(virDomainXMLOption *xmlo= pt, &iommu->cmdqv) < 0) return NULL; =20 + if (virXMLPropInt(driver, "identifier", 10, VIR_XML_PROP_NONE, + &iommu->identifier, -1) < 0) + return NULL; + if ((granule =3D virXPathNode("./driver/granule", ctxt))) { g_autofree char *mode =3D virXMLPropString(granule, "mode"); unsigned long long size; @@ -16786,6 +16792,7 @@ virDomainIOMMUDefEquals(const virDomainIOMMUDef *a, a->aw_bits !=3D b->aw_bits || a->dma_translation !=3D b->dma_translation || a->cmdqv !=3D b->cmdqv || + a->identifier !=3D b->identifier || a->granule !=3D b->granule) return false; =20 @@ -22548,6 +22555,12 @@ virDomainIOMMUDefCheckABIStability(virDomainIOMMUD= ef *src, dst->cmdqv, src->cmdqv); return false; } + if (src->identifier !=3D dst->identifier) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target domain IOMMU device identifier '%1$d' doe= s not match source '%2$d'"), + dst->identifier, + src->identifier); + } 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'"), @@ -28956,6 +28969,10 @@ virDomainIOMMUDefFormat(virBuffer *buf, virBufferAsprintf(&driverAttrBuf, " cmdqv=3D'%s'", virTristateSwitchTypeToString(iommu->cmdqv)); } + if (iommu->identifier >=3D 0) { + virBufferAsprintf(&driverAttrBuf, " identifier=3D'%d'", + iommu->identifier); + } 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 41dba29a4f..2cf414d307 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3076,6 +3076,7 @@ struct _virDomainIOMMUDef { virTristateSwitch pt; int granule; /* -1 means 'host', 0 unset, page size in KiB otherwise */ virTristateSwitch cmdqv; + int identifier; }; =20 typedef enum { diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index cac5dabf06..9cd8efae52 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -3209,7 +3209,8 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *io= mmu) iommu->iotlb !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->dma_translation !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->pci_bus >=3D 0 || - iommu->cmdqv !=3D VIR_TRISTATE_SWITCH_ABSENT) { + iommu->cmdqv !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->identifier >=3D 0) { virReportError(VIR_ERR_XML_ERROR, _("iommu model '%1$s' doesn't support some addi= tional attributes"), virDomainIOMMUModelTypeToString(iommu->model)); @@ -3233,6 +3234,7 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *io= mmu) iommu->dma_translation !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->pci_bus >=3D 0 || iommu->cmdqv !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->identifier >=3D 0 || iommu->granule !=3D 0) { virReportError(VIR_ERR_XML_ERROR, _("iommu model '%1$s' doesn't support some addi= tional attributes"), @@ -3246,6 +3248,7 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *io= mmu) iommu->xtsup !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->pci_bus >=3D 0 || iommu->cmdqv !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->identifier >=3D 0 || 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 2677207ae4..ab142502e7 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -6357,6 +6357,11 @@ + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3735387ebd..37bb876b66 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6331,6 +6331,7 @@ qemuBuildPCINestedSmmuv3DevProps(const virDomainDef *= def, "s:primary-bus", bus, "s:id", iommu->info.alias, "B:tegra241-cmdqv", (iommu->cmdqv =3D=3D VIR= _TRISTATE_SWITCH_ON), + "k:identifier", iommu->identifier, NULL) < 0) return NULL; =20 --=20 2.43.0