From nobody Mon Feb 2 05:55: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 1769798375043673.8124040745978; Fri, 30 Jan 2026 10:39:35 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 341F2419E6; Fri, 30 Jan 2026 13:39:34 -0500 (EST) Received: from [172.19.199.6] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 9163141B42; Fri, 30 Jan 2026 13:37:22 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id EEF8441802; Fri, 30 Jan 2026 13:37:14 -0500 (EST) Received: from BL0PR03CU003.outbound.protection.outlook.com (mail-eastusazon11012037.outbound.protection.outlook.com [52.101.53.37]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (3072 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id F10C141826 for ; Fri, 30 Jan 2026 13:37:13 -0500 (EST) Received: from DS2PR12MB9567.namprd12.prod.outlook.com (2603:10b6:8:27c::8) by PH7PR12MB6764.namprd12.prod.outlook.com (2603:10b6:510:1ae::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.11; Fri, 30 Jan 2026 18:37:10 +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.9564.008; Fri, 30 Jan 2026 18:37:10 +0000 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=ARC_SIGNED,ARC_VALID,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 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QSNgZylLwXqIpo8YmZQWVZXMdxRH22R5XqaJubJ/caSF11qGws07eyJXAlOlfM2y0SwfiKC/Wi8NsUxwMjFFzWZNNLnAzw4SGKogP8LKHCL8rPY5sh6tbQqMiQTb39LEniq2pD14jp7QhR/muOHIoT3aeA7aI+FBAP+BqWxa2hKPkXdNW1Q9EX9ltp05tGBAZ3uvyCMas4+VENmE6fjev3p1NRcntysr2skQ5FOxptnaOGS91NCN5FJhdPYJvwbJUsDSLft9RRekZtVtZz8weQzVkrd+uDzjh+IycI5GzS4mSFtl0VQmZythpx9ncXqrrGOHI1E1RF6EBpjZrsrMQw== 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=UwMVafKZUKqclx738R3/4WiNxyRC6LxGJHCFxA1i01I=; b=WioVkU/eA60jXJXG21CLsXsyCLjz5znpEtkLtPUmkn/R/h3NMVSSh4LmLHSNxDrBCtIt2jnnXDJfI1MP3lSjE6QmfXbv5DrUqnm+Ys2tolCbtTl+S3eR0pcdKYAraANBYYWjAm1KpuKO7nX8S7F1vsRFs4sZnvc5ewl/zOtKwM7SS+0Pu/wkvHhGWn1GcYUxorlb4Nk4RbPkdZYdgCNG6NQHsiPTiUqdfA4WVh0/40XlmqY0O2E0z2uf8Ptt83TeBlmZCP6PUdZsRW40rFnusWLakgPhZP64ulyBFWfXBxr6+W+bjyGozGGS1RIr1nSwJ0lkP2DwF3e3qML9HZ/JhA== 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=UwMVafKZUKqclx738R3/4WiNxyRC6LxGJHCFxA1i01I=; b=iEZFeByf87Gx3hxS9OAyRc/fvL1ETXeZg6TL3HlbVcBaKL/YGtPAA+LF2teqeGziRlZaTwLr/ieBeR68XAzihDkUgyFQSxO18OLLotEkk5vMcFdwdU6CB+h1yvLzrOnKNX/HEhYiqJZPJMAr3mUlCSDb4FNgq0Vek6+WZishPrZ6L0qLrOAdkbLWeDcl6h9JCmQtYhjNbu1pZJke+FSv10/7q4Qs8DiJWMhbbF2shXyWHj3HWOMYSRHqQtVvlVjwbDRpJPJoz2V2IxGtFuGE+uwtiKqKCdkkIPvQiH7EXvHC6leMRPNSQZ1aVb1102L/0BaI4SDuc//UsMdkCa8VFg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; To: devel@lists.libvirt.org Subject: [PATCH v7 1/2] qemu: Add support for HW-accelerated nested SMMUv3 Date: Fri, 30 Jan 2026 10:37:06 -0800 Message-ID: <20260130183707.4148322-2-nathanc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260130183707.4148322-1-nathanc@nvidia.com> References: <20260130183707.4148322-1-nathanc@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0257.namprd03.prod.outlook.com (2603:10b6:a03:3a0::22) To DS2PR12MB9567.namprd12.prod.outlook.com (2603:10b6:8:27c::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PR12MB9567:EE_|PH7PR12MB6764:EE_ X-MS-Office365-Filtering-Correlation-Id: b7943e56-ca64-4987-f664-08de602e93fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RDpYYZmbbJJ0UhTHwdjfANWfp+kyrPqnA7pJt9Hx9EIPLA5E1ZajlElT/W1T?= =?us-ascii?Q?ktve3GXx/vQRvf399dyMLro37bR2YXFqCBVaW7UWaohKR+2qTFpJENVOD4Sb?= =?us-ascii?Q?Om2cknyzxC7VBoVxWy3CEbKr55KX84Najvm29J06LS802Cpbsj7qy2HeoHHq?= =?us-ascii?Q?ZB+bxjDpw5WB6M9A+njuajqeI03gHMn0uJlDffTw2oE6lUNQzPmGu7fJJDnS?= =?us-ascii?Q?y9o7+Ihyr26RfVTtgU6zMhFWQp7gHR73LPoZhdkEm8tpobV8FK7VEpUL/r/l?= =?us-ascii?Q?oaK6NBfKJa6BbKPSFiNAn5hoBguKyufL2AVKlW7bEymNNjcxPPscXFX8G+3E?= =?us-ascii?Q?8BWMwRm4xWIGDPW/+2eu/2/jmyjJ7iMyScLhsdKUG0vAlKH8bAeX4DAh++1M?= =?us-ascii?Q?YQPWAgLs6YNh9JYxgc9uGQzHtLIUBvw6bn+7dCh/r5ax+08aVub+70zMAkO5?= =?us-ascii?Q?MfJB6Up7QZe4frOjiK1Qd3KInRvHE6jBnO5Dntf4/u+FZt22lyRpOERccVo2?= =?us-ascii?Q?m3a7DTGF7cfkcAoNVe5upRczQJDa5yqmMgucBv2wWkek2dRUzV65V7u5x6Zc?= =?us-ascii?Q?QI+xlVfNwnt1lnOn1mKRPEBbfnS95kNMl8PlAX8DJED2NO2+GomVno2Tz7Lo?= =?us-ascii?Q?us20bdzQ1ckAkC/W1+ifThBdE6mR2irh2lCGdxFwZwXv0Hm7cMsrbbwR79gD?= =?us-ascii?Q?MXufxk673aHhfPsuYzhhg8ZJkVXvkTq3H6ATk/rxYYNbTz77qaMduQKXGiqf?= =?us-ascii?Q?yV9iOA9pkkSqGbEUP0SWqE2dLBTlkWvhD08c1huZR8DgvETrbRxMl6q1DFNh?= =?us-ascii?Q?roRXZ1O+A0OsiA9/DNyf3AmGksLsnN4qIlgyuOoh768f13JuKa+gA0rDImCE?= =?us-ascii?Q?in2vVBDcfmM89Sxt82uDCOxKIrKdfVuaSmYkjRqBtlgC7NBm3W28hWruhbD4?= =?us-ascii?Q?RI2K/iqI/7tySDk06N+jGPDS1xytB1gH1H9plSsnK+ufYvaNS5IGNrCkWvDz?= =?us-ascii?Q?9kIoD+LrZbMlgzo5Zz5BYm13iWlt4AqUAbghkYrkaZIMXppxxPMrSv/+m9wr?= =?us-ascii?Q?yhw55UDipno/5QMdSR7qGHO9k5VQb/3fjQJExb6ceiu7mDj1G67GQDlVtYVf?= =?us-ascii?Q?XuseOrepJdu+a/05jQTsVIhM7HQc2z2NpxgfCBReoG1U3wJ9w0hedmUiz0u9?= =?us-ascii?Q?U2G2zx7ovOdy09moQjCfAnQZfLH2YwiySKXtq6C8uKe69UYHiGr04E7WfWpe?= =?us-ascii?Q?RNgdJ40jDQXXM3bSmq1Ug5csuc0QekX6FuOwCmKpNnGWN0m/DBnUDto+eWRj?= =?us-ascii?Q?ZzEdyiGq+molFYTWA7Xkqcb/Pgx6I/l5I/TeocXyRgA74lccdGIl9AfnZX6W?= =?us-ascii?Q?DOye1NqFdb2IHT15kwIQH7spY0i9gPDNJAnIbcXo/ocAP7wezZKLZJ99hXgz?= =?us-ascii?Q?oJ+FfOexDytCd6rG3pUtIjJdDKxnFrUcWvWedz9A/gsMHvKiUoWLEg7GOucP?= =?us-ascii?Q?H9hV4NwCux1REE/gDtO303xSVdalVUp51g5NtthVn093M4LGZw7SJSTWyAlp?= =?us-ascii?Q?NBi5nXVJJa05d4HI2oA=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)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EI4bjIcXq5n3F3mSXB4iaImQkfw7DT0HjzX0i6kkZrM/2JeFGibkLuNLK+Cu?= =?us-ascii?Q?Nt67a1IoA2eiCvEp51gUv5nj3lBPPLv592pshQ9X6KW414bruVv39H7k8EhU?= =?us-ascii?Q?46XmiP5QX0Z0npdnjzYfItv/y0n/Aeoe8B4UgAI4FjG5TeIauQNsjHAlWJfn?= =?us-ascii?Q?Rju1Aj8oFQlKKDenjOQhbq0H4/H+dne6vROl2tnolqsWe/676rLFPJDRCyOa?= =?us-ascii?Q?scRpsFlkm+2IOR9nu2MPzZ/5++LDqEe6TdwGIpI6UogiYFUsFykK9CcpmGu7?= =?us-ascii?Q?N2cdDQwIVr4ZoUFr1ltDo+TyIEUVMg7HCCoOyXpApNcoH07IAPzIDfCu92cp?= =?us-ascii?Q?He70iBydxqJjtfalT97rHcnxSdTeHo7N2LSSh9Vt1htKi5kXThkg8v7BY0ZH?= =?us-ascii?Q?ojBjmdMOC2wZFv3EzhhPLyBL7yAtvYqzXossYMR8s3rzO86wNYlPF8OdNLrW?= =?us-ascii?Q?OxHRlPo6FHWanQwIrqaLjyJEaLE0yY6D3iHZMAsBIIs5GrbGltRHIZMVt89Q?= =?us-ascii?Q?SFEK7iVEbYgME5Cnu+eh+BqC0ckBwMTCvXThZpJJnw2R8UiMviP8dBSiFNxw?= =?us-ascii?Q?3R+Z7sBQryXzcy4zlpCXC16hcKFqVUTqjoWmf7YsgEG6T+OCoW7r2hZtcdTG?= =?us-ascii?Q?Z0SZ3udJ1g9tR7cdYrEuHz6bAUMpfzdZLxig6Y0UcwKUAjDy2arNcN7kTaqK?= =?us-ascii?Q?PpGw5BpuBA5893YvHfZfOzQVac+xhPaFzwd1ny138HPk7Zs4OovY+qB2P5nN?= =?us-ascii?Q?v0kl3NLheG2svKTJ47RPpeboP3CagMm98umQrpkNRZYsFO1HB5WBFMXsr6Ck?= =?us-ascii?Q?/mL6bLzyWYsFqMCnRqrROKSJvxZl0nebxne+GN6crjSRls6Xf3C1ufi9bsKh?= =?us-ascii?Q?JyyUTtWKb0ZCcagCbrNq73qSpRBtBgVU2iy6LKdqIvHuYy7KxXvPtzSv7qWq?= =?us-ascii?Q?mI6ln1/3KafH301d3x/CYp1weG9YkRUp63WLkYmVOOeGOHbQYPTq6oI6F1R/?= =?us-ascii?Q?7GsGBKFdiYajSek5OI4Ath+LoNUefKtK1Vk2WJdcKrjMD5KObMzat/TiZ6cH?= =?us-ascii?Q?y+uRf884poDtQprngmuKlfEmIXWBzBfsDP2F639WA4VeLlL9ml389NEtiR7T?= =?us-ascii?Q?gUELKBO59KzElMCh/r8+zM64Zfgt1QNG07vVnh4WWv+XxGquUrBNgzuNQWRr?= =?us-ascii?Q?eruloLW2T+C9uU7l4vgTLWspcBzTZ8cs8S/HbSXzyNVgoYIuLFqd+wpxYo8c?= =?us-ascii?Q?oWGo9O1Vkst2yU1qKSv10Dj90RoHc+bq4QcbIjJS/POxPDl5nBSpSfy8ccHC?= =?us-ascii?Q?2gebpnYIcv5HNtkjvxN6PBEJ99RUYXsgZaKlvmdzz0GBWaRqOXNAe3rmrAbD?= =?us-ascii?Q?8H5Iuz2QuOsHtaSX+XvEjmMnzeFDmlg0vwcU2hm6MzhI5g1xWmH/OsMNyn3B?= =?us-ascii?Q?RU9djziijHtgf4Um/udFIdOGm2J1Wfe8x6wxW05hNYwbHsco50PGdRAuHEbl?= =?us-ascii?Q?2aj0xWvbdqpjCqmsk9UsfTZZGmfMgnAF8Rk/eMEYz58WQeJIzt+eEkIuICtH?= =?us-ascii?Q?Zxt1Y1ToQICjgbDS4087OZtMJyJeV7XE+iDDk7Ldm6XuJcHc5OU2IgcLR6H2?= =?us-ascii?Q?OIlsZXy0rlTunh8MtJ1mR9esQMvtQl6Xx6nKIp96tDG9XeV/8TNPDZgmmghF?= =?us-ascii?Q?IV5ivSFYGDugL10t4C4ubtJTL+Chdq23migGCO11qjZKzjmJSzp4KCseOWSA?= =?us-ascii?Q?4M2W+Og1Ig=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7943e56-ca64-4987-f664-08de602e93fc X-MS-Exchange-CrossTenant-AuthSource: DS2PR12MB9567.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2026 18:37:10.2112 (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: KJM25xxrbJucAHSJirrNorn9At+kgYrVJi78h9DKR8BaQyDEaXY7pxYNgwbO42hQi7qcqMMI8Sb8e2vLm9idGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6764 Message-ID-Hash: J4J33S5CPG24YK5T5JZDKN2BEPHPKYQ4 X-Message-ID-Hash: J4J33S5CPG24YK5T5JZDKN2BEPHPKYQ4 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: 1769798378248158500 Content-Type: text/plain; charset="utf-8" From: Nathan Chen Add support for enabling HW-accelerated nested SMMUv3 via attribute and its additional attributes for ATS, SSID, RIL, and OAS configuration. Support element for specifying PCI hostdev PASID capability offset. Signed-off-by: Nathan Chen --- docs/formatdomain.rst | 36 +++++++++++ src/conf/domain_conf.c | 101 +++++++++++++++++++++++++++++- src/conf/domain_conf.h | 6 ++ src/conf/domain_validate.c | 36 ++++++++++- src/conf/schemas/domaincommon.rng | 32 ++++++++++ src/qemu/qemu_command.c | 23 +++++++ src/util/virpci.h | 4 ++ 7 files changed, 233 insertions(+), 5 deletions(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 04ef319a73..998d289ebf 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -4880,6 +4880,13 @@ or: device; if PCI ROM loading is disabled through this attribute, attempts= to tweak the loading process further using the ``bar`` or ``file`` attribu= tes will be rejected. :since:`Since 4.3.0 (QEMU and KVM only)`. +``vpasidCapOffset`` + The ``vpasidCapOffset`` element is used to change the offset at which a + PASID PCIe extended capability is placed in a vfio-pci device's PCIe + extended configuration space. If not specified or set to 0, the capabil= ity + is placed at the end of the extended configuration space when PASID is + supported. The offset must be 4-byte aligned and within the PCIe extend= ed + configuration space. ``address`` The ``address`` element for USB devices has a ``bus`` and ``device`` attribute to specify the USB bus and device number the device appears a= t on @@ -9264,6 +9271,35 @@ Example: The ``pciBus`` attribute notes the index of the controller that an IOMMU device is attached to. (QEMU/KVM and ``smmuv3`` model only) =20 + ``accel`` + The ``accel`` attribute with possible values ``on`` and ``off`` can = be used + to enable hardware acceleration support for smmuv3Dev IOMMU devices. + (QEMU/KVM and ``smmuv3`` model only) + + ``ats`` + The ``ats`` attribute with possible values ``on`` and ``off`` can be= used + to enable reporting Address Translation Services capability to the g= uest + for smmuv3Dev IOMMU devices with ``accel`` set to ``on``, if the host + SMMUv3 supports ATS and the associated passthrough device supports A= TS. + (QEMU/KVM and ``smmuv3`` model only) + + ``ril`` + The ``ril`` attribute with possible values ``on`` and ``off`` can be= used + to report whether Range Invalidation for smmuv3Dev IOMMU devices with + ``accel`` set to ``on`` is compatible with host SMMUv3 support. + (QEMU/KVM and ``smmuv3`` model only) + + ``ssidSize`` + The ``ssidSize`` attribute sets the number of bits used to represent + SubstreamIDs. A value of N allows SSIDs in the range [0 .. 2^N - 1]. + The valid range is 0-20, and a value greater than 0 is required for + enabling PASID support, as doing so advertises PASID capability to + the vIOMMU. (QEMU/KVM and ``smmuv3`` model only) + + ``oas`` + The ``oas`` attribute sets the output address size in units of bits. + (QEMU/KVM and ``smmuv3`` model only) + The ``virtio`` IOMMU devices can further have ``address`` element as descr= ibed in `Device addresses`_ (address has to by type of ``pci``). =20 diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 9672168df9..e64484a60d 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -13678,6 +13678,7 @@ virDomainHostdevDefParseXML(virDomainXMLOption *xml= opt, virDomainHostdevDef *def; VIR_XPATH_NODE_AUTORESTORE(ctxt) unsigned int type; + int rc; =20 ctxt->node =3D node; =20 @@ -13731,8 +13732,16 @@ virDomainHostdevDefParseXML(virDomainXMLOption *xm= lopt, def->shareable =3D true; break; =20 - case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: + rc =3D virXPathUIntBase("string(./vpasidCapOffset)", ctxt, + 0, &def->vpasidCapOffset); + if (rc =3D=3D -2) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("Invalid format for vpasidCapOffset")); + goto error; + } + break; + case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV: case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST: @@ -14514,6 +14523,26 @@ virDomainIOMMUDefParseXML(virDomainXMLOption *xmlo= pt, if (virXMLPropInt(driver, "pciBus", 10, VIR_XML_PROP_NONE, &iommu->pci_bus, -1) < 0) return NULL; + + if (virXMLPropTristateSwitch(driver, "accel", VIR_XML_PROP_NONE, + &iommu->accel) < 0) + return NULL; + + if (virXMLPropTristateSwitch(driver, "ats", VIR_XML_PROP_NONE, + &iommu->ats) < 0) + return NULL; + + if (virXMLPropTristateSwitch(driver, "ril", VIR_XML_PROP_NONE, + &iommu->ril) < 0) + return NULL; + + if (virXMLPropUInt(driver, "ssidSize", 10, VIR_XML_PROP_NONE, + &iommu->ssid_size) < 0) + return NULL; + + if (virXMLPropUInt(driver, "oas", 10, VIR_XML_PROP_NONE, + &iommu->oas) < 0) + return NULL; } =20 if (virDomainDeviceInfoParseXML(xmlopt, node, ctxt, @@ -16577,7 +16606,13 @@ virDomainIOMMUDefEquals(const virDomainIOMMUDef *a, a->eim !=3D b->eim || a->iotlb !=3D b->iotlb || a->aw_bits !=3D b->aw_bits || - a->dma_translation !=3D b->dma_translation) + a->dma_translation !=3D b->dma_translation || + a->pci_bus !=3D b->pci_bus || + a->accel !=3D b->accel || + a->ats !=3D b->ats || + a->ril !=3D b->ril || + a->ssid_size !=3D b->ssid_size || + a->oas !=3D b->oas) return false; =20 if (a->info.type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE && @@ -21349,6 +21384,14 @@ virDomainHostdevDefCheckABIStability(virDomainHost= devDef *src, } } =20 + if (src->vpasidCapOffset !=3D dst->vpasidCapOffset) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target host device vPASID capability offset %1$s= does not match source %2$s"), + virDomainHostdevModeTypeToString(dst->vpasidCapOffs= et), + virDomainHostdevModeTypeToString(src->vpasidCapOffs= et)); + return false; + } + if (!virDomainDeviceInfoCheckABIStability(src->info, dst->info)) return false; =20 @@ -22311,6 +22354,36 @@ virDomainIOMMUDefCheckABIStability(virDomainIOMMUD= ef *src, dst->pci_bus, src->pci_bus); return false; } + if (src->accel !=3D dst->accel) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target domain IOMMU device accel value '%1$d' do= es not match source '%2$d'"), + dst->accel, src->accel); + return false; + } + if (src->ats !=3D dst->ats) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target domain IOMMU device ATS value '%1$d' does= not match source '%2$d'"), + dst->ats, src->ats); + return false; + } + if (src->ril !=3D dst->ril) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target domain IOMMU device ril value '%1$d' does= not match source '%2$d'"), + dst->ril, src->ril); + return false; + } + if (src->ssid_size !=3D dst->ssid_size) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target domain IOMMU device ssid_size value '%1$d= ' does not match source '%2$d'"), + dst->ssid_size, src->ssid_size); + return false; + } + if (src->oas !=3D dst->oas) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target domain IOMMU device oas value '%1$d' does= not match source '%2$d'"), + dst->oas, src->oas); + 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'"), @@ -27732,6 +27805,10 @@ virDomainHostdevDefFormat(virBuffer *buf, if (def->shareable) virBufferAddLit(buf, "\n"); =20 + if (def->vpasidCapOffset) + virBufferAsprintf(buf, "0x%x\n", + def->vpasidCapOffset); + virDomainDeviceInfoFormat(buf, def->info, flags | VIR_DOMAIN_DEF_FORMA= T_ALLOW_BOOT | VIR_DOMAIN_DEF_FORMA= T_ALLOW_ROM); =20 @@ -28657,6 +28734,26 @@ virDomainIOMMUDefFormat(virBuffer *buf, virBufferAsprintf(&driverAttrBuf, " pciBus=3D'%d'", iommu->pci_bus); } + if (iommu->accel !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&driverAttrBuf, " accel=3D'%s'", + virTristateSwitchTypeToString(iommu->accel)); + } + if (iommu->ats !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&driverAttrBuf, " ats=3D'%s'", + virTristateSwitchTypeToString(iommu->ats)); + } + if (iommu->ril !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&driverAttrBuf, " ril=3D'%s'", + virTristateSwitchTypeToString(iommu->ril)); + } + if (iommu->ssid_size > 0) { + virBufferAsprintf(&driverAttrBuf, " ssidSize=3D'%d'", + iommu->ssid_size); + } + if (iommu->oas > 0) { + virBufferAsprintf(&driverAttrBuf, " oas=3D'%d'", + iommu->oas); + } =20 virXMLFormatElement(&childBuf, "driver", &driverAttrBuf, NULL); =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 83d49969d3..1396073678 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -370,6 +370,7 @@ struct _virDomainHostdevDef { bool missing; bool readonly; bool shareable; + unsigned int vpasidCapOffset; virTristateBool writeFiltering; union { virDomainHostdevSubsys subsys; @@ -3062,6 +3063,11 @@ struct _virDomainIOMMUDef { virTristateSwitch dma_translation; virTristateSwitch xtsup; virTristateSwitch pt; + virTristateSwitch accel; + virTristateSwitch ats; + virTristateSwitch ril; + unsigned int ssid_size; + unsigned int oas; }; =20 typedef enum { diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 4482203087..7b2c32395d 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -29,6 +29,7 @@ #include "virutil.h" #include "virstring.h" #include "virhostmem.h" +#include "virpci.h" =20 #define VIR_FROM_THIS VIR_FROM_DOMAIN =20 @@ -2432,6 +2433,20 @@ virDomainHostdevDefValidate(const virDomainHostdevDe= f *hostdev) _("PCI host devices must use 'pci' or 'unas= signed' address type")); return -1; } + if (hostdev->vpasidCapOffset) { + if (hostdev->vpasidCapOffset & 0x3) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("vpasidCapOffset must be 4-byte align= ed")); + return -1; + } + /* PASID ECAP size of 0x8 */ + if (hostdev->vpasidCapOffset < VIR_DOMAIN_PCI_CONFIG_SPACE= _SIZE || + hostdev->vpasidCapOffset > VIR_DOMAIN_PCIE_CONFIG_SPAC= E_SIZE - 0x8) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("vpasidCapOffset must be within PCIe = extended configuration space (0x100-0xFFF)")); + return -1; + } + } break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: if (hostdev->info->type !=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NO= NE && @@ -3208,7 +3223,12 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *i= ommu) iommu->iotlb !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->aw_bits !=3D 0 || iommu->dma_translation !=3D VIR_TRISTATE_SWITCH_ABSENT || - iommu->pci_bus >=3D 0) { + iommu->pci_bus >=3D 0 || + iommu->accel !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ats !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ril !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ssid_size !=3D 0 || + iommu->oas !=3D 0) { virReportError(VIR_ERR_XML_ERROR, _("iommu model '%1$s' doesn't support additiona= l attributes"), virDomainIOMMUModelTypeToString(iommu->model)); @@ -3221,7 +3241,12 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *i= ommu) iommu->eim !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->aw_bits !=3D 0 || iommu->dma_translation !=3D VIR_TRISTATE_SWITCH_ABSENT || - iommu->pci_bus >=3D 0) { + iommu->pci_bus >=3D 0 || + iommu->accel !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ats !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ril !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ssid_size !=3D 0 || + iommu->oas !=3D 0) { virReportError(VIR_ERR_XML_ERROR, _("iommu model '%1$s' doesn't support some addi= tional attributes"), virDomainIOMMUModelTypeToString(iommu->model)); @@ -3232,7 +3257,12 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *i= ommu) case VIR_DOMAIN_IOMMU_MODEL_INTEL: if (iommu->pt !=3D VIR_TRISTATE_SWITCH_ABSENT || iommu->xtsup !=3D VIR_TRISTATE_SWITCH_ABSENT || - iommu->pci_bus >=3D 0) { + iommu->pci_bus >=3D 0 || + iommu->accel !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ats !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ril !=3D VIR_TRISTATE_SWITCH_ABSENT || + iommu->ssid_size !=3D 0 || + iommu->oas !=3D 0) { virReportError(VIR_ERR_XML_ERROR, _("iommu model '%1$s' doesn't support some addi= tional attributes"), virDomainIOMMUModelTypeToString(iommu->model)); diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 114dd3f96f..234aae5459 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -6329,6 +6329,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6610,6 +6635,13 @@ + + + + (0x[0-9a-fA-F]+|[0-9]+) + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index e81efdfde7..aa5ee2a787 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4802,6 +4802,7 @@ qemuBuildPCIHostdevDevProps(const virDomainDef *def, "S:failover_pair_id", failover_pair_id, "S:display", qemuOnOffAuto(pcisrc->display), "B:ramfb", ramfb, + "p:x-vpasid-cap-offset", dev->vpasidCapOffse= t, NULL) < 0) return NULL; =20 @@ -6267,9 +6268,31 @@ qemuBuildPCINestedSmmuv3DevProps(const virDomainDef = *def, "s:driver", "arm-smmuv3", "s:primary-bus", bus, "s:id", iommu->info.alias, + "B:accel", (iommu->accel =3D=3D VIR_TRISTATE= _SWITCH_ON), + "B:ats", (iommu->ats =3D=3D VIR_TRISTATE_SWI= TCH_ON), NULL) < 0) return NULL; =20 + /* QEMU SMMUv3 has RIL support by default; only emit when explicitly d= isabling */ + if (iommu->ril =3D=3D VIR_TRISTATE_SWITCH_OFF) { + if (virJSONValueObjectAppendBoolean(props, "ril", false) < 0) + return NULL; + } + + if (iommu->ssid_size > 0) { + if (virJSONValueObjectAdd(&props, + "p:ssidsize", iommu->ssid_size, + NULL) < 0) + return NULL; + } + + if (iommu->oas > 0) { + if (virJSONValueObjectAdd(&props, + "p:oas", iommu->oas, + NULL) < 0) + return NULL; + } + return g_steal_pointer(&props); } =20 diff --git a/src/util/virpci.h b/src/util/virpci.h index fc538566e1..7e78cb267c 100644 --- a/src/util/virpci.h +++ b/src/util/virpci.h @@ -35,6 +35,10 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(virPCIDeviceList, virObjec= tUnref); =20 #define VIR_DOMAIN_DEVICE_ZPCI_MAX_UID UINT16_MAX #define VIR_DOMAIN_DEVICE_ZPCI_MAX_FID UINT32_MAX +/* Size of the standard PCI config space */ +#define VIR_DOMAIN_PCI_CONFIG_SPACE_SIZE 0x100 +/* Size of the standard PCIe config space: 4KB */ +#define VIR_DOMAIN_PCIE_CONFIG_SPACE_SIZE 0x1000 =20 typedef struct _virZPCIDeviceAddressID virZPCIDeviceAddressID; typedef struct _virZPCIDeviceAddress virZPCIDeviceAddress; --=20 2.43.0 From nobody Mon Feb 2 05:55: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 1769798447254217.5410111729941; Fri, 30 Jan 2026 10:40:47 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 5630D41825; Fri, 30 Jan 2026 13:40:46 -0500 (EST) Received: from [172.19.199.6] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 9F36441C10; Fri, 30 Jan 2026 13:37:24 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id AAB6D4182E; Fri, 30 Jan 2026 13:37:17 -0500 (EST) Received: from CH5PR02CU005.outbound.protection.outlook.com (mail-northcentralusazon11012065.outbound.protection.outlook.com [40.107.200.65]) (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 D772141802 for ; Fri, 30 Jan 2026 13:37:16 -0500 (EST) Received: from DS2PR12MB9567.namprd12.prod.outlook.com (2603:10b6:8:27c::8) by CH1PR12MB9621.namprd12.prod.outlook.com (2603:10b6:610:2b2::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9564.7; Fri, 30 Jan 2026 18:37:11 +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.9564.008; Fri, 30 Jan 2026 18:37:11 +0000 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=ARC_SIGNED,ARC_VALID,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 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QIOlQCtEsgmClkZhrWiUAp0cSaqKs7HHnZRLSuVfFh9zqOHZza15RDtE3j28Zdoy/pqIk1gkm0CDhGNN6LPcyxS/WHlDV28pT3+TMFQUfJ4Dlvc285y8vYCY704Dr7Jvz4RqbzP3BbQO1jr9qaNlxHLjJszMVabNofQPtO7KO+wBUf/L9zB1wY2tA3cj7EP6mbAK1zpZJS4P93NgxhB5jDZg3HFF7cgLW2tfuGXFWMviySD8m788ZIXLSzvjUKYhM0fH8fjz93gsrrvW0X5I6G8dOsBZBUooELj/BaSw1ZigmqW28AV7rPNFTv2Laz/wPB+ITPMCM/ftFhEkzKoY9A== 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=3QEMDZ/aDh+FXdVQxaVZR6+T6L9udhj+Ad4ln6Q9pPY=; b=g90VukysDieO3tg6moTmh4VNajtxCWxYYggHngmnClYi9xtbLSIc4aU+dXwwGEWy64Xe8WY2aa5/VfuT6zF2IFvUjbx2rjiIenfoSHz2C2/7ronUaiDaVWo04MZFOxeJDoAxB5GohwKdXafkd6xqrqe7kOHC1yYs5cOXYCnYqNRE6BjSK6dAw/0iofnsi47HYwdF6DGpMS7VbhszR21jveVa+D21CkHhbFTauLYGePD5bHz3UlafwP899W4waBLN2U4MdNeEKcThZNmqNUwe9HImGlMxc80NdWdZQjQlp4mm6OGaYY1PcMcAsAxaM6ZdgokKbUHvbEYpr5nEMysDNg== 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=3QEMDZ/aDh+FXdVQxaVZR6+T6L9udhj+Ad4ln6Q9pPY=; b=qUVVyqFt/k8oZxZ+WxxJBuF9Flv3/ZrfG6P3WnWpf1xvO87+zy+6Pna+lysSz06hSm1A3RGwyJp2uyv5NAFFJnyuFgDxF4Cm2scwuWm0WKAc+n0R1pbyJwnbgTz0zhvonr4Sl/H50NQ2xnf8fHTjdNkH9B4hUxZg+s3x/4YMXoVKDs7VOOk+wmyMcHz5SamM7qxDH0YAhvSQbYLMozjUN5ayIVokSRBajbyK5QenLBwluROQoy3rc8LpNYtTSJS0qPXJ9LocwmG2hxUuzDfVP+unYA3czFAOKLA6yaAKRXR5BQ4RB61TgtjQYeBGkfV3RIi3e5saDGoMWMEzQaFSzg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; To: devel@lists.libvirt.org Subject: [PATCH v7 2/2] tests: qemuxmlconfdata: provide HW-accel smmuv3 sample XML and CLI args Date: Fri, 30 Jan 2026 10:37:07 -0800 Message-ID: <20260130183707.4148322-3-nathanc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260130183707.4148322-1-nathanc@nvidia.com> References: <20260130183707.4148322-1-nathanc@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR03CA0029.namprd03.prod.outlook.com (2603:10b6:a03:1e0::39) To DS2PR12MB9567.namprd12.prod.outlook.com (2603:10b6:8:27c::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PR12MB9567:EE_|CH1PR12MB9621:EE_ X-MS-Office365-Filtering-Correlation-Id: 80e12786-459c-4057-f130-08de602e94ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SyTiBp3DAC9+5vhsA9EAyl6zfEoayzTx8Kq7SbGzRjJtgYGBRe4IsDEs/paE?= =?us-ascii?Q?GPwYHefUs/4iJdMOW0H3dq2u1maNcjJ7xSf0TJGGx3C0p/06v9MFD0RbBiB/?= =?us-ascii?Q?p3NCQKI/1xcgeVUPucM4Jz2aurnik6/tVM2d06FQHohQAX+y42dNYemzXiob?= =?us-ascii?Q?m6P4VyhUWsa4JV5lrurSgUYkLsWsL7KJJnkvRi47IwjLxdgjBRLyWglOA5Cq?= =?us-ascii?Q?RkpTCgKsyfwy+qjdzf3pFQrz4nxhgGQx8UX78acW0+pm8W0ND6NVCVqraoqh?= =?us-ascii?Q?W9uSRxd4QUuyWbbozNt6NU6tKe2dcV6UhWVrTZrpcWY7CRGgNnWRUvKyBVt7?= =?us-ascii?Q?6oBlkoF+0H9OlCp7K4XrHzB08UhMDzAmWJLNhACMKaHEaXrEO7Pz+4BkFQql?= =?us-ascii?Q?TSWRIz98aKFv1GXCvlKkpQYZ+RoWnXFew7AE/yLG+Ceio+ROJySLU5TNlXA5?= =?us-ascii?Q?SYUuAkTnmHKro/JajGTSJh90AVAr00qoGPTWkxvxHFsVlGz+QSQyLMOyOXFj?= =?us-ascii?Q?GKlfiLKWCIhH00sIZo01tzYUyBZLwCXm7xrTy/6XfT0w3oG/Zf/H14rqAm4J?= =?us-ascii?Q?0cgCMo4b7CkNNVWH+Ab+lVX5eI7ti0/RCyZ57CoBP5i4NIpbZKFkbzuOUeeD?= =?us-ascii?Q?bikuR/vzb9WWhqLQrtBddHLUbn8Qk+qVXGGYEHWrL3k53hQQ8G5OKfHoa16l?= =?us-ascii?Q?kfHaT/mJNaEeofMt61jXCvrktvfN003+zPqETYxYQXskQk9o3+Lk0auYmRbd?= =?us-ascii?Q?zIZgL7/7v2vTeC6rD8OK4YZvGMd9XLpUYQb6qGWpYPErTmFd6UBA76aoRYjb?= =?us-ascii?Q?WwtOpG9vKbGGF7CIm6gt5UIg2AtqFYlpxrznr2uaakY5TUiV1oD/5+rhLZZb?= =?us-ascii?Q?O/VeJnHCK0QKt9QlxhuvWTzvKCMVVxZYOT2ixodcF9F2V73ozIKaXPUSsz8o?= =?us-ascii?Q?FcG273TfxYXr1aSuFr4K+jKiFVyIAnuEIkYt1D9/+rFSC7Qg8SSu7W4pvaq9?= =?us-ascii?Q?++YiAPovguJ9aS59gASr/Cn5naOjoGwSFSh3WWMNaHX4rCYak2rB3i1kUP6B?= =?us-ascii?Q?CK5XboIziqMwwWoQnf86YcfzSYonUhaksACIN0c6PX0Tf3/QIKklsyncCs6K?= =?us-ascii?Q?puFPOvhXQF7MPCO6i+dd+Ioh72YRUCydB5AOCyKAdPNEzyQoqhioFkYzRtjK?= =?us-ascii?Q?Pgb+ERUU+uqlyyfPluOHJlNaXQsW4me3hd54B2WIYmj8f14cgLcdD0hRa45C?= =?us-ascii?Q?Tc0T4TqjEqzmVMshWmkj+19SkyZQDzsKKSVZjoGLWDLRuPpoGjf5BM+LvZkb?= =?us-ascii?Q?KJQnC8athS4B7zGh+g4LfScW65SXUhTxFEoiadYtkXKLFhPjxLjS98u3AByC?= =?us-ascii?Q?9v5g3uJv+TDlJT+/hS2hB01aLFIR3M7qVABtemAdv+mC9Lq7uNw+6S57x+jM?= =?us-ascii?Q?AVJKRR2+uVjClAtjDCdfXMtaXJFjybJ7+MDTHnlfsFhM1Ic0zoJFIfukZ67q?= =?us-ascii?Q?IyBBbf1Wn/47jsU0oZq2PR4qTPDm/8iRWFPaIsiQ4Pt9a6q3A/2cwS/0Lcnj?= =?us-ascii?Q?uNrXyf6JZ1O+VwUglu4=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)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uuSs6onCZ9VVAe94ftiYLDuuychmYObuEWzITrhWRmmlvnPw7rsuqN0qAb9C?= =?us-ascii?Q?17guLlINGheHVlYCh0TMZ/zY5V+8MI7owVUJAwpTCZ/VoWjvo8CwoLiNEgiP?= =?us-ascii?Q?xb0ApJdp93FpgkXZKhOwib+S3aBnGonvaXxobJ+c6Cb9hioaoxKyxyGrhM6g?= =?us-ascii?Q?0aAYcR+sgBe2mSGvwVXt+oeQRPUX6BfTOi3Bwm7sjxPewCsom1pjOBGTUdGa?= =?us-ascii?Q?ues9KfNrcFavtXroa9e5ZnmeqtNdcU65iboOico7Xk8ttOsefnPQuLI6cNTo?= =?us-ascii?Q?DxoRwFIze7FJFCf8ZBjMcor4dmDwvCJE/j+2Uttdt9hkhbG4Y6NbebNGlQek?= =?us-ascii?Q?NAWhWtMXqpiC9z1jVHM0jYtNNPB1lKirDHx6AZ6r1vYpiAUBqXD0u/1J/cjy?= =?us-ascii?Q?F0/B4rWQAGHF+G8fAbTd029zMp3C2FavMxwzK7TtfJ7lrUT4RB0rurr/jta0?= =?us-ascii?Q?ZNojbs/HuIQ/Mm/3H2HHyBkUOklGgnDlcskZd6DdKi2Kq3IrwVNWLwN4yXhd?= =?us-ascii?Q?K66J7+rOwmwfg+tg5XLwy3BIvZQULTy7pP/Agb8l16s8woMjQ8AxwyLAC2Nr?= =?us-ascii?Q?ZT9NlM5oApgUEp3HibYolb1hQMg585VJlxCFIkov2Ht+SzxRgCYVEkZrLbzb?= =?us-ascii?Q?TgA9NUv055xU20YpCcEEPyPQZfrWVmooDCHLhIsySuJllzI3hFrDjrvwkBET?= =?us-ascii?Q?jJFt76C3FUNhI7jbSAezVoN4/OZMO7DvyozZHPXRyWJww6emcOEIjbOS7ZKl?= =?us-ascii?Q?UgTZcBb+QnywN6wE1XaM3ox7oDvTy7qcaYAW6yOqwzrBfnlpHSYNtvrNPfcd?= =?us-ascii?Q?YCJQPPawHsKmloJ8MivLlqGhtn46Bap527HtlkW+9Hpq0nDwpDm5DeGhVc1P?= =?us-ascii?Q?PTw6IV/RkMzK2orRX50G8t4OfciBMOfmk+K+FR4it3NWLtNOTFkQTDINHIPF?= =?us-ascii?Q?HSLNAhm5YqezPz94P6QQTwwJoxkRXT5yiTBsXRJWpPhJK8EeaWL1twHGMMwv?= =?us-ascii?Q?Dp75TZIZARkRvPS3tUkuW/p1dPwXsLtAjXdmpKC5pRPbSDxOR/CN+wQfDn8h?= =?us-ascii?Q?n5vxX6VQiYSyRlolXDpszlIfuPc1i3KZ405HovYGtR1s1K7DgeNQceaLDCzB?= =?us-ascii?Q?eveRz1XvxTU9ABNrCdODIyzTkXAceN2vvqk2pUIZpDH2xz7dYY8PfftJ2s+8?= =?us-ascii?Q?Me5tv3qIBY18DhDvEt6VqZaSFnoAAPdIVE2RRuHmxBPMlSTqge9T4Sh4UMkh?= =?us-ascii?Q?9zQd4yanbsnlqTIE+++RPmkogDZb+zeFdKYoT6edwWGMXVvHBqC9OzoELChD?= =?us-ascii?Q?KiREPY+3H9RKbYJFGWO1lT8mxLRRrKd8npOp/F3kkQ3xmNdB+L4BIliPMP1u?= =?us-ascii?Q?48AwvxKwlLN0CWgGCAK12+yva6oG/gK/tKm7mhMFjQW9kzbUNRRQ/xoYawn8?= =?us-ascii?Q?cSiL0XXHJKUNPVz4L9EMY3lz+hPDYeiN/J2XQ2xK0kMyw68Ozi77I02d0gT/?= =?us-ascii?Q?SAybM2YqolaOlctDZpzvEKBHWwzuFfKb4JcdSFU9p9H66JnWVlhkZ59OQDjM?= =?us-ascii?Q?iP4xaMBwrfyv64n+15wc5TykMfUhUdt3QDTlb4ncysP/V5XBHHawOy/UlGtt?= =?us-ascii?Q?U7Hu7Df7+HcW7Vj/mFYJs0Jpx8ArRGIr30X4x/Zbg6oP9BmOMQl5JCpPGxBE?= =?us-ascii?Q?C7Zy3XX7FiNPTqdDMBmnnaIn09qr6o6uZwolZbC5RI//RsVcX6hclh7MoJsp?= =?us-ascii?Q?ezCFSXhUPA=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80e12786-459c-4057-f130-08de602e94ae X-MS-Exchange-CrossTenant-AuthSource: DS2PR12MB9567.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2026 18:37:11.3640 (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: JML2Lfb10+pA34Dz03oXtMjjsowlPezL5dViZSOMDUHEQwJB1Xwco5WbfbNH+2r0tz5pfnJf9vgl9TcYK4ijvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PR12MB9621 Message-ID-Hash: HULFJDWHHBOFSDFL2BTDIGYAM2BZZ4MJ X-Message-ID-Hash: HULFJDWHHBOFSDFL2BTDIGYAM2BZZ4MJ 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: 1769798449209158500 Content-Type: text/plain; charset="utf-8" From: Nathan Chen Provide sample XML and CLI args for the HW-accel smmuv3 XML schema for virt machine types. Signed-off-by: Nathan Chen --- ...u-smmuv3-pci-bus-accel.aarch64-latest.args | 38 +++++++++++ ...mu-smmuv3-pci-bus-accel.aarch64-latest.xml | 64 +++++++++++++++++++ .../iommu-smmuv3-pci-bus-accel.xml | 54 ++++++++++++++++ tests/qemuxmlconftest.c | 1 + 4 files changed, 157 insertions(+) create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-accel.aarch6= 4-latest.args create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-accel.aarch6= 4-latest.xml create mode 100644 tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-accel.xml diff --git a/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-accel.aarch64-lates= t.args b/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-accel.aarch64-latest.ar= gs new file mode 100644 index 0000000000..8af3fb41a9 --- /dev/null +++ b/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-accel.aarch64-latest.args @@ -0,0 +1,38 @@ +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":"pcie-root-port","port":0,"chassis":21,"id":"pci.3","bu= s":"pci.1","addr":"0x0"}' \ +-device '{"driver":"pcie-root-port","port":168,"chassis":22,"id":"pci.4","= bus":"pci.2","addr":"0x0"}' \ +-device '{"driver":"arm-smmuv3","primary-bus":"pci.1","id":"iommu0","accel= ":true,"ats":true,"ril":false,"ssidsize":20,"oas":44}' \ +-device '{"driver":"arm-smmuv3","primary-bus":"pci.2","id":"iommu1","accel= ":true,"ats":true,"ril":false,"ssidsize":20,"oas":44}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"vfio-pci","host":"0000:06:00.0","id":"hostdev0","x-vpa= sid-cap-offset":4088,"bus":"pci.3","addr":"0x0"}' \ +-device '{"driver":"vfio-pci","host":"0000:06:01.0","id":"hostdev1","bus":= "pci.4","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-accel.aarch64-lates= t.xml b/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-accel.aarch64-latest.xml new file mode 100644 index 0000000000..2132fb09b9 --- /dev/null +++ b/tests/qemuxmlconfdata/iommu-smmuv3-pci-bus-accel.aarch64-latest.xml @@ -0,0 +1,64 @@ + + guest + 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 + 1048576 + 1048576 + 1 + + hvm + + + + + + + destroy + restart + destroy + + /usr/bin/qemu-system-aarch64 + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ +