From nobody Mon Dec 15 11:29:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591534; cv=pass; d=zohomail.com; s=zohoarc; b=cBpUr9nO7IJJ/iEkX+kiCkxRzttW74FK3srGMcy8i+wfwCBhHeTS4uT2Ly3jgC/qd8ef+KhLyQC492W68VNdIzxKOdxDjgg/+iYhJjIbInBwTyLUwwNi85XlY0sIbBBRZIa+d0h4j2oLiUBBif/7Vd2SIrwT3oLGDw1jRksiXiI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591534; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8UM1qtAcBbUUXfA0PSZHA3rf9UWzJXGhA0wCTFpz1jc=; b=YOACawRXHFyT2doPr1GvrEDd9AfI3NUP93ZjizgyRHoqawnSwj20/BAa9LoZBioG68MpDfvMKBnSPE/Xsnb2jp2PlSbaqYkj1n4nA1eVczOdzCeE/L4/guNmXLSFHVEQWrw5K3Btmx/eW/m2AEKGRsAG63qkDF4MfJmj6QyU0Yc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591534126602.0855948607406; Thu, 7 Aug 2025 11:32:14 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073327.1436297 (Exim 4.92) (envelope-from ) id 1uk5Ox-0000eO-J0; Thu, 07 Aug 2025 18:31:43 +0000 Received: by outflank-mailman (output) from mailman id 1073327.1436297; Thu, 07 Aug 2025 18:31:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5Ox-0000dv-CR; Thu, 07 Aug 2025 18:31:43 +0000 Received: by outflank-mailman (input) for mailman id 1073327; Thu, 07 Aug 2025 16:57:21 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3vd-00075A-6t for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:57:21 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 94a8af35-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:57:20 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:57:18 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:57:18 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 94a8af35-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aiu/W6u4v+RMGD6E3wI9Cg5Wodnq5NTBJBi5iG2J1vv2YuELzlA29SDC81GXv1tFUd/znF/Gby00IKqldtQz0d2lrze3hSePR18RCE/lvy3fbk+4Ck+MXZWl8X40nY0Lo5ZDcwWbylUn9bi2fv58EHDmez2rgpC8vR4BnELA0MwgP28QwXAwg7trtEAhb6LZg6qfh5PPTYUSfXIo+mKgzXPv5xYHhmK0LF/Y4Juj6SxCuUgYmJkpxn5U4fJV7Fwqwbk6ToZbW2a+vCzYtfmJHEsI0ELzmx5YH1tNRSvgxG5V44TNuNvptHzfxP2fX9D/AxTZV2gcIs4ufZnsFmQ+PA== 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=8UM1qtAcBbUUXfA0PSZHA3rf9UWzJXGhA0wCTFpz1jc=; b=pwKIE2Bms5tv8T+pZu0/ETWoYux9TY/G5vE79Mwj7w47diwCCKOwmSsYVMHXg56ZFr3oYrdVZvhj3DfL5oUka8jD+FSBm5xGmsfjcoGr0qtzuik+ut10iUbzVyMbmbk+rdrfxW8TZVG8WXRHsPrlv27ZHpVDxKwKtB9MuccT6ruNQvJ6nsB7qPmBdktbP64ReuFJCdxegPJJh6JXHQWfxaz3r39JuW6vpLDNYZPxJbe1dDSoiMvkO40GNMgtdPGoOEFV9vE6b68gxuA5CVtFVly3D7yf7Jb9lK2K46Sb0g1SmvZj1mzbUqlA/IqzAjWoyKwhecicWsJTxz5ckByKVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8UM1qtAcBbUUXfA0PSZHA3rf9UWzJXGhA0wCTFpz1jc=; b=plqXWDIL4egukZpdFDz/IdqiEea4t0EoOcSK1OVLX0U1oHOniXqsG9wb93cQS1rMVvlR85r3TMkntdyZKZPjLAo8t7PZKyPeHH0NgbkXe/ZQ2R0xFArFUu2RMU4CFkn9TALnUHT7SOk/EsB28xX3F+axqUCXOUzCh0pbO1zUQNGAVs8Qfmxd6U6eVVz5b7vo2E0lPFSpRoI49YDbfm3o0Jc+Fku+2jT/ZAMpCRQPz9I+6tk1bZaxuNnLU/LcGdFzPKT8GnqwKKyevjd2hHUwMAIDh/bPKxe06wctZd9IUujakJC2WHAZXVeW0odaDB4jedkkMfu4+R289Y/quiJDIw== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Jean-Philippe Brucker , Bertrand Marquis , Rahul Singh , Stefano Stabellini , Julien Grall , Michal Orzel , Volodymyr Babchuk , Jonathan Cameron , Eric Auger , Keqian Zhu , Will Deacon , Joerg Roedel Subject: [PATCH 01/20] xen/arm: smmuv3: Maintain a SID->device structure Thread-Topic: [PATCH 01/20] xen/arm: smmuv3: Maintain a SID->device structure Thread-Index: AQHcB7xVBFFhVx5ypUmf6S+XKba4xQ== Date: Thu, 7 Aug 2025 16:57:18 +0000 Message-ID: <1b9f56697cec0380c7bd1591405beed7d2bbddab.1754580687.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 6381b6d9-1233-4c20-8540-08ddd5d377e5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?upCwRgjqt5d15yoIXoUeHh8jEIkYoQc28U5TyUKIkFUAcIY7fRhgfOuJZB?= =?iso-8859-1?Q?7D8TNW9GA0f9XFXKauPgLhHZmXDuxvKda8IvCNqha3MX2a3RyUrd3wAYrI?= =?iso-8859-1?Q?d9Q91put0uFFLbtOO0+Llcio2T9vKvl4qKUSzqLA0tkp+hHqZNnYOacj0j?= =?iso-8859-1?Q?od88NrqcVQk7vqhMjYpg2+woSmEYK/C/tSvCcKGNKl+Is8THPlqUn3kIgJ?= =?iso-8859-1?Q?Fanuhi0QBa7P/fBAjnzJPJ3ZwuhF3zzLnanL0ri3WgTP2bqUmoTfRwM6eq?= =?iso-8859-1?Q?9Wa/cipUwPU84Du4VY4s60kIrwMzsgZ0i7Xo9AJ9a8/SOOUnapWJOC8xuA?= =?iso-8859-1?Q?KKPfUe04BXQNtxNbv2J8bgfhDucvLtvC/PmWbIp7HvHvv0/sdSYmfxMWU9?= =?iso-8859-1?Q?6sMnLGDHxc80B9QPTAJk5nT8/pyTURvNChfnltlvdGU9vQjlZvLIeggbQw?= =?iso-8859-1?Q?hSOBlPrWfxF4euaEMRr3HT1SXXb5xfL0XUy6gjLJHGZUnYDQQXD5mwO7hp?= =?iso-8859-1?Q?pEesbMIqBas1gUiwQh6SV55BFFmwXEDnC5lSri8NqgFJN8HWAfok9J6fwC?= =?iso-8859-1?Q?LXdOYaoEeSJCC1YGGdLAznNIEAJoLBMA+RsZRN1rRtV2s2ca1JfhC01iVv?= =?iso-8859-1?Q?5eDXqr05d+/6vcM1egX+O8vZJiXgv1ZxWr9lpLM+UWB+gK3UYTk4odCAP9?= =?iso-8859-1?Q?5TqbCVzk20C+SrcRk+RGLQUbtKiecN7ZonGlw+4TNvqClCz2NEHwXRypNo?= =?iso-8859-1?Q?oGHfTgeudLS94tw+sOKLhGIRjmTHKGiNnNCNUcVSsR/Evks0pcJn1unMmb?= =?iso-8859-1?Q?Ry8oWy0Marhgu5ZW5j2gI7fgziJEAHW2spRqDy+m1Fx+i4vziYA7k2GaA5?= =?iso-8859-1?Q?scjaTSSw7p32g/lfxkl+9A7P+BJPyPdslUr5w5DOe8fmFhKVD5sjY7RHOH?= =?iso-8859-1?Q?KExpBU//2afe4+ETLQagC3A6H6DzLqTk7D8X1UqEoIluiUNyC2N/LCk5LE?= =?iso-8859-1?Q?T6mF4m87D7nSusH6HKN6eSzRMXCtpY7dX0O3PNQwkv/QSLL/QkEC91zUI0?= =?iso-8859-1?Q?OJFCD0DtlVKw+MBHp7oikbM7PwRSIX4mWH6x2gmM1fsXXqfiYRTrtxtDHZ?= =?iso-8859-1?Q?VUeCrLSJBZIBsBg0vs9ZahH24FH+Ou1bHWG57/LkW7D8ihaSsQnSqoK+B7?= =?iso-8859-1?Q?bTVFzEVgFkgl8c3IqUbl84jgH1FCjhuz8FT5x2CArrd98/95iLLJ/WZrb2?= =?iso-8859-1?Q?XL3wchxpzyKOUm/YwyZppZwI7MgjiQWnov1mMi/5ijVVvgfVDYsRVPlNFA?= =?iso-8859-1?Q?VBDSA7UkHadejqtvWeZxiNZQdjjrp/8/WXPTwsXgu8FyirPal9PMIv3sEa?= =?iso-8859-1?Q?oCBk77JAtd4mcjCQHz5GUo/+tqeAbXI6yh1rNtirfVgg5xORvmWuqe56KQ?= =?iso-8859-1?Q?zDqSW763YRSdhuk1/FKToURf3MDF+ay6BU8VtNpJP3riTRQG8bCEs/JODY?= =?iso-8859-1?Q?5dAeHjjYlZstbapXKPn2E4x7JQOoyBoD5hOcp0Q7cO5emz4cEnWSyF9N0f?= =?iso-8859-1?Q?VpM1/Dg=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?uh2Yoo12Yn++fdeYFNeTaiu9AkkqEBmxA8WEiL1UHX9QQ3ERVOhVF3s5+E?= =?iso-8859-1?Q?fV3RYOIHjmvp3Uk7IusfUMmNNet/NcKIPw4kxMQDLxPMTJUBoN1j5QXOJS?= =?iso-8859-1?Q?tHoBWwmPF4zBVKgh1j9VIOVxpGlMhSDQhncU3GdKPQttrM8viFcA2cvoik?= =?iso-8859-1?Q?ERVqYJpweFi5joJ5MVsjGp9aIfTkTdiXxzGC6COcA2ggYOkJo28EueCY2f?= =?iso-8859-1?Q?/48+nRtXvx7bT9WuJCMjvhmRqfuwzfVgIKL+E8kvAt5J5gldjFgt42gba8?= =?iso-8859-1?Q?zagJKGMridb2UbKGiGD8UDoqcIZLDODRHy9KYuqIdLinApCSsnpeEP5IPH?= =?iso-8859-1?Q?q/F85Y8EtYzUDVG6oMm7atM7b3MD/IBWpVXvaPyeASvboF+FSAEESpSs/3?= =?iso-8859-1?Q?fbyt9y1P/t0ysPeMGldJ8gDAkylX3t7qo5GpL3cA35G0L/zxfkoVQ6F/0u?= =?iso-8859-1?Q?qV+VkyQ6KJGTddGBuOK/vES+ZHGr1Fk5t3xjAPknskBBZTtmmTGiSDPFzc?= =?iso-8859-1?Q?o9w6/uA1CQjrNspiVQcCLGutqiA+Ty/Ik/RqNdrHow5Z8T2Yi6wF00ekMx?= =?iso-8859-1?Q?qbObvaUWXl/9oKGia7PIODkz6fhkB1b+reth8XYPBtf5/bwzs0YfXJIir9?= =?iso-8859-1?Q?Vx38eh8ju8GXnkb4Bq4uGpPHhNp09Y1PdDFuQ2gSadMivIS2pzs3BFR24e?= =?iso-8859-1?Q?x2QzNM+xqGPRpNnKw3T65DQML+Dw90rx80+ep07IQ0Sk9c2jbVvJD5u0CY?= =?iso-8859-1?Q?tcjXASBNQDEVhQm/yHg+7Fb6XZSDek75QiAMl+8H0IDFeeDX3l/Bc85M2/?= =?iso-8859-1?Q?3CaGzz4rLSiTv4f5OxasPl2zpdQJEeAWdLAzRJ5wIG8k7mKsm7Xs5ImU4p?= =?iso-8859-1?Q?mdFn2VKqRMf06azbyHmTNX59aENYvSpJyDeRczwg2ijhJ/zXfmYMZUJEbJ?= =?iso-8859-1?Q?6AxkdG21LbywetFh6oQv+86AVTJ/Sj0UcwVOuS68n5SZIh7THhgzdoRx8+?= =?iso-8859-1?Q?DiuGmgQS79XNb4u5fBfnujutiGuaVZkmLKo3SnbtGz1Cl/w/JqjfEI+XVW?= =?iso-8859-1?Q?lfYpyHNJNM/Bhl9PvRP9FzwwpkvL8eS1JhUt6qO/+ShUmkNt8Y+L7H21/A?= =?iso-8859-1?Q?N7DmAWJyMrQuuk1GVWcDrazZIOHkLmhgWEBPXiw1ojgm5kLXZQJEG3f/eF?= =?iso-8859-1?Q?rjrcwM8hRYDPxfPy1oTJgx6GCe+Mtl9DM+8qIHfPAlWduCA+5vIX7ifIJA?= =?iso-8859-1?Q?asBKe3ZDuB4KhSBDf1ds3MnmKOrCHQ+CIUFWtMk4yB7Efd4t/iClnuTm3V?= =?iso-8859-1?Q?EO1suVZV4LqNIqviStVdG9sDVeh1YXlLM3AeXcepc0Sq8Z9wbXNKuDI9ab?= =?iso-8859-1?Q?s68QyDaKP/uwbQfUzWtAnrp0qEasvPAZnEQC+K4VBj+nX39nNMIyiT02/b?= =?iso-8859-1?Q?3d+c+qwMJQWE693DisHlqgi3OQh5PrfrKRbAEWbQbgSQ2xKFM8PRAuVYE5?= =?iso-8859-1?Q?q3wstTzlHf3DqabTPCQYhHtqb09DhPh+9GvTz2Rlpi93bJL8aGfnIBPMgQ?= =?iso-8859-1?Q?QX1b+Mu4srC5D/qEviI4XJrQszvQD1D/LJLkSsaOIHx25G78/1o+QZxQ7v?= =?iso-8859-1?Q?+6vJudfrVCSyMif09nVG0Ps44/QYpUhC8O?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6381b6d9-1233-4c20-8540-08ddd5d377e5 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:57:18.2614 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0HZ7JWChDPkC/eJbAkw+KGTR1Fx4/s+OtEpCGdXiJ/kFYK6JMKgtq2y9YRKFPhGz5nG/0Wenc9al/lPGlIBPzw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591535487116600 Content-Type: text/plain; charset="utf-8" From: Jean-Philippe Brucker Backport Linux commit cdf315f907d4. This is the clean backport without any changes. When handling faults from the event or PRI queue, we need to find the struct device associated with a SID. Add a rb_tree to keep track of SIDs. Acked-by: Jonathan Cameron Reviewed-by: Eric Auger Reviewed-by: Keqian Zhu Signed-off-by: Jean-Philippe Brucker Acked-by: Will Deacon Link: https://lore.kernel.org/r/20210401154718.307519-8-jean-philippe@linar= o.org Signed-off-by: Joerg Roedel Origin: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git cd= f315f907d4 Signed-off-by: Rahul Singh --- xen/drivers/passthrough/arm/smmu-v3.c | 131 +++++++++++++++++++++----- xen/drivers/passthrough/arm/smmu-v3.h | 13 ++- 2 files changed, 118 insertions(+), 26 deletions(-) diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index 5e9e3e048e..307057ad8a 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -793,6 +793,27 @@ static int arm_smmu_init_l2_strtab(struct arm_smmu_dev= ice *smmu, u32 sid) return 0; } =20 +__maybe_unused +static struct arm_smmu_master * +arm_smmu_find_master(struct arm_smmu_device *smmu, u32 sid) +{ + struct rb_node *node; + struct arm_smmu_stream *stream; + + node =3D smmu->streams.rb_node; + while (node) { + stream =3D rb_entry(node, struct arm_smmu_stream, node); + if (stream->id < sid) + node =3D node->rb_right; + else if (stream->id > sid) + node =3D node->rb_left; + else + return stream->master; + } + + return NULL; +} + /* IRQ and event handlers */ static void arm_smmu_evtq_tasklet(void *dev) { @@ -1026,8 +1047,8 @@ static int arm_smmu_atc_inv_master(struct arm_smmu_ma= ster *master, if (!master->ats_enabled) return 0; =20 - for (i =3D 0; i < master->num_sids; i++) { - cmd->atc.sid =3D master->sids[i]; + for (i =3D 0; i < master->num_streams; i++) { + cmd->atc.sid =3D master->streams[i].id; arm_smmu_cmdq_issue_cmd(master->smmu, cmd); } =20 @@ -1255,13 +1276,13 @@ static void arm_smmu_install_ste_for_dev(struct arm= _smmu_master *master) int i, j; struct arm_smmu_device *smmu =3D master->smmu; =20 - for (i =3D 0; i < master->num_sids; ++i) { - u32 sid =3D master->sids[i]; + for (i =3D 0; i < master->num_streams; ++i) { + u32 sid =3D master->streams[i].id; __le64 *step =3D arm_smmu_get_step_for_sid(smmu, sid); =20 /* Bridged PCI devices may end up with duplicated IDs */ for (j =3D 0; j < i; j++) - if (master->sids[j] =3D=3D sid) + if (master->streams[j].id =3D=3D sid) break; if (j < i) continue; @@ -1470,6 +1491,80 @@ static bool arm_smmu_sid_in_range(struct arm_smmu_de= vice *smmu, u32 sid) =20 return sid < limit; } + +static int arm_smmu_insert_master(struct arm_smmu_device *smmu, + struct arm_smmu_master *master) +{ + int i; + int ret =3D 0; + struct arm_smmu_stream *new_stream, *cur_stream; + struct rb_node **new_node, *parent_node =3D NULL; + struct iommu_fwspec *fwspec =3D dev_iommu_fwspec_get(master->dev); + + master->streams =3D _xzalloc_array(sizeof(*master->streams), sizeof(void = *), + fwspec->num_ids); + if (!master->streams) + return -ENOMEM; + master->num_streams =3D fwspec->num_ids; + + mutex_lock(&smmu->streams_mutex); + for (i =3D 0; i < fwspec->num_ids; i++) { + u32 sid =3D fwspec->ids[i]; + + new_stream =3D &master->streams[i]; + new_stream->id =3D sid; + new_stream->master =3D master; + + /* + * Check the SIDs are in range of the SMMU and our stream table + */ + if (!arm_smmu_sid_in_range(smmu, sid)) { + ret =3D -ERANGE; + break; + } + + /* Ensure l2 strtab is initialised */ + if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) { + ret =3D arm_smmu_init_l2_strtab(smmu, sid); + if (ret) + break; + } + + /* Insert into SID tree */ + new_node =3D &(smmu->streams.rb_node); + while (*new_node) { + cur_stream =3D rb_entry(*new_node, struct arm_smmu_stream, + node); + parent_node =3D *new_node; + if (cur_stream->id > new_stream->id) { + new_node =3D &((*new_node)->rb_left); + } else if (cur_stream->id < new_stream->id) { + new_node =3D &((*new_node)->rb_right); + } else { + dev_warn(master->dev, + "stream %u already in tree\n", + cur_stream->id); + ret =3D -EINVAL; + break; + } + } + if (ret) + break; + + rb_link_node(&new_stream->node, parent_node, new_node); + rb_insert_color(&new_stream->node, &smmu->streams); + } + + if (ret) { + for (i--; i >=3D 0; i--) + rb_erase(&master->streams[i].node, &smmu->streams); + xfree(master->streams); + } + mutex_unlock(&smmu->streams_mutex); + + return ret; +} + /* Forward declaration */ static struct arm_smmu_device *arm_smmu_get_by_dev(const struct device *de= v); static int arm_smmu_assign_dev(struct domain *d, u8 devfn, struct device *= dev, @@ -1479,7 +1574,7 @@ static int arm_smmu_deassign_dev(struct domain *d, ui= nt8_t devfn, =20 static int arm_smmu_add_device(u8 devfn, struct device *dev) { - int i, ret; + int ret; struct arm_smmu_device *smmu; struct arm_smmu_master *master; struct iommu_fwspec *fwspec; @@ -1516,26 +1611,11 @@ static int arm_smmu_add_device(u8 devfn, struct dev= ice *dev) =20 master->dev =3D dev; master->smmu =3D smmu; - master->sids =3D fwspec->ids; - master->num_sids =3D fwspec->num_ids; dev_iommu_priv_set(dev, master); =20 - /* Check the SIDs are in range of the SMMU and our stream table */ - for (i =3D 0; i < master->num_sids; i++) { - u32 sid =3D master->sids[i]; - - if (!arm_smmu_sid_in_range(smmu, sid)) { - ret =3D -ERANGE; - goto err_free_master; - } - - /* Ensure l2 strtab is initialised */ - if (smmu->features & ARM_SMMU_FEAT_2_LVL_STRTAB) { - ret =3D arm_smmu_init_l2_strtab(smmu, sid); - if (ret) - goto err_free_master; - } - } + ret =3D arm_smmu_insert_master(smmu, master); + if (ret) + goto err_free_master; =20 /* * Note that PASID must be enabled before, and disabled after ATS: @@ -1777,6 +1857,9 @@ static int __init arm_smmu_init_structures(struct arm= _smmu_device *smmu) { int ret; =20 + mutex_init(&smmu->streams_mutex); + smmu->streams =3D RB_ROOT; + ret =3D arm_smmu_init_queues(smmu); if (ret) return ret; diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug= h/arm/smmu-v3.h index f09048812c..fe651ca5a7 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.h +++ b/xen/drivers/passthrough/arm/smmu-v3.h @@ -636,6 +636,15 @@ struct arm_smmu_device { struct tasklet evtq_irq_tasklet; struct tasklet priq_irq_tasklet; struct tasklet combined_irq_tasklet; + + struct rb_root streams; + struct mutex streams_mutex; +}; + +struct arm_smmu_stream { + u32 id; + struct arm_smmu_master *master; + struct rb_node node; }; =20 /* SMMU private data for each master */ @@ -644,8 +653,8 @@ struct arm_smmu_master { struct device *dev; struct arm_smmu_domain *domain; struct list_head domain_head; - u32 *sids; - unsigned int num_sids; + struct arm_smmu_stream *streams; + unsigned int num_streams; bool ats_enabled; }; =20 --=20 2.43.0 From nobody Mon Dec 15 11:29:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591532; cv=pass; d=zohomail.com; s=zohoarc; b=VfkDVnuatkbBYtHTjo/R1LHsBthB79Sib6Nug5/W9OyajXAMaUHa/4AbZtLUGRktngh9fe2+EGeN0kUxmp72au11HRVQRP27oz9imVf9kgT60VONKQfTgilnc7lyle3Amau/2r7lZT2tgCDdCMknARgcRfSLf2oBWbYfM/T4KJY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591532; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HKB6igQTiBvBVZ+hzzVtYJ9jrTpGh6BG/26CnOmMYXo=; b=dKAv+o4EOWoCYJmwUcO1d3YEOONk8Rx5Qst6ACKuXMUgZ8Fd8HpY8pebU1Clc92n/gqziTjvPE3ztNSfaObpCsb8nj+sEdUW1fsAr8Bx5zIeAnMtrEt8dxnRRfwU0oyQbPKqzAoyS4ggU5Y6T8yJbgmPYB/rycuV+baHtfQhVAg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591532793231.5847346284503; Thu, 7 Aug 2025 11:32:12 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073330.1436303 (Exim 4.92) (envelope-from ) id 1uk5Ox-0000jL-Sy; Thu, 07 Aug 2025 18:31:43 +0000 Received: by outflank-mailman (output) from mailman id 1073330.1436303; Thu, 07 Aug 2025 18:31:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5Ox-0000hz-LF; Thu, 07 Aug 2025 18:31:43 +0000 Received: by outflank-mailman (input) for mailman id 1073330; Thu, 07 Aug 2025 16:59:17 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xV-00076W-Qz for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:17 +0000 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazlp170100001.outbound.protection.outlook.com [2a01:111:f403:c201::1]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id da5fcbae-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:16 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:13 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:13 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: da5fcbae-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vSsuP7Kb8wnc4OTDoozQ0EEvPH0YLgWx8LXPdgrbgE7OPUcvX5KkyU+/Y1j0acUkgvq9OOEQToiukQSPbMvUd0aQ+Y60pqryIjheC+G1InSptzSUIy29M4JXGo/SClLCL26LAsPIfvjg7OX223RauW/xuOMnJdrWGokosDedIOxFKy430/c7VbMOc5+1YfA30tZ/vJdARdk7Db33aC9aFi43cIGepprHr5fNnuiftC99riaDVSlDcTfgrrxAkoD5ITD6yfTghLR54YH7AKslKZ9q6TYHRBUpsxRNneViVec+58wiyWRxt23BfymwPU1N76zQJ7RbH+36HLIm3EVaSw== 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=HKB6igQTiBvBVZ+hzzVtYJ9jrTpGh6BG/26CnOmMYXo=; b=TbLChE4/gYiD5JdI20frrr7JZc0wMAyY3frR2nYun6ZBvcNq8NGS8zdW90h22xAKV90bfCShCp85XgMEUXResHl/vvRK9EUfUQjcfa1sEIMUHsqd8z3fSSa1nMFvsIsXHFLWpfjzmfUmK8/PLCIdKLRJa9NqFpHCuHnSBRZyKwGTSjNm8nOg9z6EAM3mu68oQLKAId9Gc93wuEh5b+uXs1OsOP0u06W+HJpzCxc5wQwsgbtlJnBFLJATqdwdZg2Xy1ketTRHmMCxj7UUaU0zwnQVG6wpdSbYnoRfe+UPHJS6iMlvN70dxD/9y33jW5qjdBAKuIgSa7G7AhTpS+Lh4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HKB6igQTiBvBVZ+hzzVtYJ9jrTpGh6BG/26CnOmMYXo=; b=BQUVNO3QlAQ+FXnOyk31bKg30Xk+uWc+oKFaOzEz7QmZPvs/VjzJOZRf3R9843Vb2dbLcV00KYTZVFdPi2cp4z+OLjvQx901tMPb5i0xdE447DTLscpNGgJbXLYTQ2KFHb27aGacQ1ht4Xuns7QFLiiCjidENXoRPAL8lHILdP0SO84xg42nRJJGGst11IRbHto8shUzubgl88gQZT39KajaUP0tclNmU32IT/aObovUGqRxEbCU/PqIfbbk2Ie8fQT76f8zNP0xGqHZERDMOp0ppK26w3vIpCSisA7N8iqS0UcTu68kV/FyNDHnxo5HcjemLnMhb1YJszGV4HengQ== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Bertrand Marquis , Stefano Stabellini , Julien Grall , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 02/20] xen/arm: smmuv3: Add support for stage-1 and nested stage translation Thread-Topic: [PATCH 02/20] xen/arm: smmuv3: Add support for stage-1 and nested stage translation Thread-Index: AQHcB7ya52I2vrwap0uCF6HUjZseiA== Date: Thu, 7 Aug 2025 16:59:13 +0000 Message-ID: <8989630dd0c2b88e045a5af6fe11bb3aeb76e5b5.1754580687.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: f60fd54e-12bd-4134-c1f5-08ddd5d3bcb1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?UVP1aFdKspMvtDimbjLwiTP8xsmwYU03pVA7RHV90Mp9oVM9gcIDIl6zad?= =?iso-8859-1?Q?VjnmPLp8rBxdZa8V4xIElpo6gQK4FxfDRWBWRZR+MfssQfrKfp4NfA2jzH?= =?iso-8859-1?Q?xl4O5kUbJ71U61lYt2AG+046JaBSFRm3fzGSMO/ELwvi57RKmO8rfoKf7P?= =?iso-8859-1?Q?xB0u+r9FemA+pV1OO3zX4kV7nhmd/TlBukRe157F7SRkmQzKCL5D2Owqpy?= =?iso-8859-1?Q?8EiA06V1ON/ruIAU4U/EpFffh8p84hflgfmlDi3FF8nptBld+F/nbZltur?= =?iso-8859-1?Q?LfCmZpiV5Dk7dhE4rFtS01urifsAvw+kviLXW+Gxe+lCDZUDYczthKS+rY?= =?iso-8859-1?Q?V6sQGwr7/rWRQrci9a5yhuZicMFIeOAVQg5kUPJtd9oFSN+Nq4Ch0b+TMh?= =?iso-8859-1?Q?03RfAaylv5gZuhSO5qtyFj9VJbBfwR5mA/gl78ruKNZETadiFlNKyqEr50?= =?iso-8859-1?Q?/R6O40GoJ3aM7f/FNvXaLGwDX9pj8YrXibbQCBfDHjQjfb5W7XtelsvqqH?= =?iso-8859-1?Q?l1ZwYtghqZtxx4CBuIVm/DkVH3uuJse1gmufKolDNhzzblP0xsUFzD/Zuv?= =?iso-8859-1?Q?wVZncvrWAVbge0hEPt4k4C32siCcRswum1WXzoPLmpSgltgKTbV3b2FfNU?= =?iso-8859-1?Q?A0mZffv7B0W0ZfPegloBjYfDV5+8d/JmZjou0ad0qC31m+PNdVI5ooFTKp?= =?iso-8859-1?Q?QLWF1HysFPFA7jB/j2Xdy9ZaN9U8va/gBGtg2kv3kZUz97u9uMn1iSpAcC?= =?iso-8859-1?Q?2PZGjUjaaBd1BH5NXqQ0oQ5HlC5K27we7HQX6OpzcWfxV/bO80em7u2LEg?= =?iso-8859-1?Q?68+MmGjWATtUf8mVj7IHYO6z6Ijn9SutPGCNvgVLj6AlcnYykUstoEiJqe?= =?iso-8859-1?Q?yy2ErcgQ10WBgFEGQzBMrAoKnF9bqpZqjMv7hjkQs3qZdMariER6tUmWbD?= =?iso-8859-1?Q?dz7Qo/onEIogABfP1pF0ndGilzz2CioRz7qYErPA+GItsQk/xZPphlAf9B?= =?iso-8859-1?Q?0WkLFPnCXBgDkQVQ4A/JAB5G8M4+OAK0O6STNe0nPpCUmSqzUfyHqeY3TP?= =?iso-8859-1?Q?hfnqaEpinGJvU6r0pnThy9k4cU/PwY0x5n1dhS5Y0itkg9l4h6KibmhrDM?= =?iso-8859-1?Q?04819gIMWvNesnhyxxwWgfQJ6Zd2hEY9dtb8qfXO4n39QcQ3L91tF2vSIa?= =?iso-8859-1?Q?gHVVdjOBxSdNQOw5jDOCrXP4hWtRPa5pdR0HUrGqLiuKBw/436obX/MHRE?= =?iso-8859-1?Q?WKyZv4GK+dFlH14O7vaOGfN/htdtZnUCLOw/v+KLPNIS9Td30h0nEFASfa?= =?iso-8859-1?Q?IXV/7uIKYUska5jFsK/t6J0GxflSu0U6b81+dv5izgMZCtr8pv+tg6BueM?= =?iso-8859-1?Q?moFvRdL7MbZlYY0HMwXOc0oAlymlW/UjYGN1wSsmfRHOhUJ5mqK5PXVcHg?= =?iso-8859-1?Q?Ms/8ljmbQ3N6FFugmDzkGNiH+f5t/S5gcSpBmVyT3/x4XRazeoJW1S/Sq/?= =?iso-8859-1?Q?l9jka3pJXLBPCD4qBZxQBxbH6qKKXF3Wohhxz6N77WrA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?ADgXfQjLrefROdtgAYCbgT9cYifrnBdLbQcZ4+vluWApVUTxwRHdwhQMuo?= =?iso-8859-1?Q?1rHvqRpEeTgjlDL5yQdKOjLPeD9IXEj0CcYSRK61dciKM0WaZ1epLJCKNV?= =?iso-8859-1?Q?KamBsm5bqFmY8QbjaRDF2RHfE164WSGT/mLeNYsN9YZYYzeG7WXwA5VISU?= =?iso-8859-1?Q?Cc32qL/Zfu2GgwUgzvOaIqqmj6YW7LusqvDhWdtoFKBM8sLGrxxK3qRNZu?= =?iso-8859-1?Q?lLJxq9dTdBY51Fy0Ez/bTMH6TB3xc4y15ZRed0+E4/q/IBxELlMPmiA/Pd?= =?iso-8859-1?Q?ABrhFJ+YF6oRs3Kdw0m9bqm8ATrBQk2PgO42EKcyv6OgL6XCwoFtKY+uZr?= =?iso-8859-1?Q?EipjP3jXBmzgvSnJASszMYaGFQciwuApiwd18ry5txI2u+sz9UOKUJ703D?= =?iso-8859-1?Q?Et8KcZEm/XCW6gCF7zvpMZHrTgergXeSHiSqHVrWa95guty/n9waa3sBLH?= =?iso-8859-1?Q?YTEtp1gpHQ1ULgMnbYbWxbOUJebLCPvXZ4+3v2+YT3FvbY7cXRO+H6lkmU?= =?iso-8859-1?Q?9RXoWzRnunioLz+eifv88YWFTcoiN4PFW0alyQUScXBZzUnRPj6Z/QzVxp?= =?iso-8859-1?Q?aSw5hBdh9AvIlE7I3hd7ZxsIcBioPrNMYORfj7+6FX9onUlvilfjIrox3C?= =?iso-8859-1?Q?3s/OXgro1Ov3AgMKiVijALoKrFiNjfsn89+mFE1jpMpufm4BWpBVo26b2B?= =?iso-8859-1?Q?vAwkYDTNIV6BCcRTCdxMOAyMiYpnTEfJ63o1jUXK3Ajo8bIKgkQaLj7LZC?= =?iso-8859-1?Q?6s4ai3izyYpHnNN7f48htZLCcHiGwAqgi4aBRqCYxP/R1NXFHHWq3god+2?= =?iso-8859-1?Q?EiLPwSz6I37MQAMMjyEHx59iqLR0YyFEgeF9EcMPpacR3D68GnQirEa6GE?= =?iso-8859-1?Q?JNoHzDiC5HwnJqVyzAIpHMu72/Bl5quPrrC/8kOZ0XiTe0Z25v93xzzYOC?= =?iso-8859-1?Q?ALrDA4+7WLfkAM50y+vM8Nsg+vZ1XmQUIjgbJn9WikCnd3oOpAa/fm3soW?= =?iso-8859-1?Q?sTFgfJ/SUn/Keps8v8CGIcGyWze9s4MpiR5GOdxem33u+7gh8pos8kDAA9?= =?iso-8859-1?Q?hurFo59altcKTyx+5haac1ut91yCR5qJGhZ8IVH3POAIHMZSJPq6kFtwDg?= =?iso-8859-1?Q?hWyDIDs+Io4U3VrREaK0snESekmPRCQkkhVri70d9J4qWt7EaJ7ekib921?= =?iso-8859-1?Q?Q1WQ3blL5RijBF7k63lePnNa1AvKUaZrGIY4CN0DW3L7O23GjkzJT8stQz?= =?iso-8859-1?Q?KAZELAI1hDIC5baLRRVwtGKZwEFMN70K7PaGrLmYBeWqsXb1SKRW98fx5X?= =?iso-8859-1?Q?YNL25SArSgoGy1loDGCexrUhp7lXHdSoRZqaZ685fjWHK+GpBMPzhoREsm?= =?iso-8859-1?Q?W4TsggxPLcmGtdOYiNNyXoEQa6r/vF1MabdQkxAnbgxp7xh6gLgFZ8SJ8C?= =?iso-8859-1?Q?jZtXfRHyXYHqomCYM6z7gD/kc9ijxjX4EF2zrhdXi6FMshakfHrRnU34Tx?= =?iso-8859-1?Q?QgGEITMlsBDKNa3/fdY5cXAjRjAd1dhPZG36E6JP/8HoVdiTCNdsdKaVj6?= =?iso-8859-1?Q?r00UQvugEbDlygNRckPFuSd/QOm7VqxELZghdRXRJW1DtOpaEI2Q13v5QM?= =?iso-8859-1?Q?QyaKcgv9J9zbdmWrN5zpZYNF9+ImSqmeTK?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f60fd54e-12bd-4134-c1f5-08ddd5d3bcb1 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:13.6435 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pcvE8iWNxNKyrqDah8COG4Q4hA+0Er5BibYNOXpAdfr9+Ns2qCQsAWIMK89YhnaZ8f+x/aC9ZxoT91t9LRhevQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591553167124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Xen SMMUv3 driver only supports stage-2 translation. Add support for Stage-1 translation that is required to support nested stage translation. In true nested mode, both s1_cfg and s2_cfg will coexist. Let's remove the union. When nested stage translation is setup, both s1_cfg and s2_cfg are valid. We introduce a new smmu_domain abort field that will be set upon guest stage-1 configuration passing. If no guest stage-1 config has been attached, it is ignored when writing the STE. arm_smmu_write_strtab_ent() is modified to write both stage fields in the STE and deal with the abort field. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/drivers/passthrough/arm/smmu-v3.c | 93 +++++++++++++++++++++++---- xen/drivers/passthrough/arm/smmu-v3.h | 9 +++ 2 files changed, 91 insertions(+), 11 deletions(-) diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index 307057ad8a..5c96e8ec7c 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -667,8 +667,10 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_= master *master, u32 sid, * 3. Update Config, sync */ u64 val =3D le64_to_cpu(dst[0]); - bool ste_live =3D false; + bool s1_live =3D false, s2_live =3D false, ste_live =3D false; + bool abort, translate =3D false; struct arm_smmu_device *smmu =3D NULL; + struct arm_smmu_s1_cfg *s1_cfg =3D NULL; struct arm_smmu_s2_cfg *s2_cfg =3D NULL; struct arm_smmu_domain *smmu_domain =3D NULL; struct arm_smmu_cmdq_ent prefetch_cmd =3D { @@ -683,30 +685,54 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu= _master *master, u32 sid, smmu =3D master->smmu; } =20 - if (smmu_domain) - s2_cfg =3D &smmu_domain->s2_cfg; + if (smmu_domain) { + switch (smmu_domain->stage) { + case ARM_SMMU_DOMAIN_NESTED: + s1_cfg =3D &smmu_domain->s1_cfg; + fallthrough; + case ARM_SMMU_DOMAIN_S2: + s2_cfg =3D &smmu_domain->s2_cfg; + break; + default: + break; + } + translate =3D !!s1_cfg || !!s2_cfg; + } =20 if (val & STRTAB_STE_0_V) { switch (FIELD_GET(STRTAB_STE_0_CFG, val)) { case STRTAB_STE_0_CFG_BYPASS: break; + case STRTAB_STE_0_CFG_S1_TRANS: + s1_live =3D true; + break; case STRTAB_STE_0_CFG_S2_TRANS: - ste_live =3D true; + s2_live =3D true; + break; + case STRTAB_STE_0_CFG_NESTED: + s1_live =3D true; + s2_live =3D true; break; case STRTAB_STE_0_CFG_ABORT: - BUG_ON(!disable_bypass); break; default: BUG(); /* STE corruption */ } } =20 + ste_live =3D s1_live || s2_live; + /* Nuke the existing STE_0 value, as we're going to rewrite it */ val =3D STRTAB_STE_0_V; =20 /* Bypass/fault */ - if (!smmu_domain || !(s2_cfg)) { - if (!smmu_domain && disable_bypass) + if (!smmu_domain) + abort =3D disable_bypass; + else + abort =3D smmu_domain->abort; + + if (abort || !translate) { + if (abort) val |=3D FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_ABORT); else val |=3D FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_BYPASS); @@ -724,7 +750,33 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_= master *master, u32 sid, return; } =20 + if (ste_live) { + /* First invalidate the live STE */ + dst[0] =3D cpu_to_le64(STRTAB_STE_0_CFG_ABORT); + arm_smmu_sync_ste_for_sid(smmu, sid); + } + + if (s1_cfg) { + BUG_ON(s1_live); + dst[1] =3D cpu_to_le64( + FIELD_PREP(STRTAB_STE_1_S1DSS, STRTAB_STE_1_S1DSS_SSID0) | + FIELD_PREP(STRTAB_STE_1_S1CIR, STRTAB_STE_1_S1C_CACHE_WBRA) | + FIELD_PREP(STRTAB_STE_1_S1COR, STRTAB_STE_1_S1C_CACHE_WBRA) | + FIELD_PREP(STRTAB_STE_1_S1CSH, ARM_SMMU_SH_ISH) | + FIELD_PREP(STRTAB_STE_1_STRW, STRTAB_STE_1_STRW_NSEL1)); + + if (smmu->features & ARM_SMMU_FEAT_STALLS && + !(smmu->features & ARM_SMMU_FEAT_STALL_FORCE)) + dst[1] |=3D cpu_to_le64(STRTAB_STE_1_S1STALLD); + + val |=3D (s1_cfg->s1ctxptr & STRTAB_STE_0_S1CTXPTR_MASK) | + FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_S1_TRANS) | + FIELD_PREP(STRTAB_STE_0_S1CDMAX, s1_cfg->s1cdmax) | + FIELD_PREP(STRTAB_STE_0_S1FMT, s1_cfg->s1fmt); + } + if (s2_cfg) { + u64 vttbr =3D s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK; u64 strtab =3D FIELD_PREP(STRTAB_STE_2_S2VMID, s2_cfg->vmid) | FIELD_PREP(STRTAB_STE_2_VTCR, s2_cfg->vtcr) | @@ -734,12 +786,19 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu= _master *master, u32 sid, STRTAB_STE_2_S2PTW | STRTAB_STE_2_S2AA64 | STRTAB_STE_2_S2R; =20 - BUG_ON(ste_live); + if (s2_live) { + u64 s2ttb =3D le64_to_cpu(dst[3]) & STRTAB_STE_3_S2TTB_MASK; + BUG_ON(s2ttb !=3D vttbr); + } + dst[2] =3D cpu_to_le64(strtab); =20 - dst[3] =3D cpu_to_le64(s2_cfg->vttbr & STRTAB_STE_3_S2TTB_MASK); + dst[3] =3D cpu_to_le64(vttbr); =20 val |=3D FIELD_PREP(STRTAB_STE_0_CFG, STRTAB_STE_0_CFG_S2_TRANS); + } else { + dst[2] =3D 0; + dst[3] =3D 0; } =20 if (master->ats_enabled) @@ -1238,6 +1297,15 @@ static int arm_smmu_domain_finalise(struct iommu_dom= ain *domain, { int ret; struct arm_smmu_domain *smmu_domain =3D to_smmu_domain(domain); + struct arm_smmu_device *smmu =3D smmu_domain->smmu; + + if (smmu_domain->stage =3D=3D ARM_SMMU_DOMAIN_NESTED && + (!(smmu->features & ARM_SMMU_FEAT_TRANS_S1) || + !(smmu->features & ARM_SMMU_FEAT_TRANS_S2))) { + dev_info(smmu_domain->smmu->dev, + "does not implement two stages\n"); + return -EINVAL; + } =20 /* Restrict the stage to what we can actually support */ smmu_domain->stage =3D ARM_SMMU_DOMAIN_S2; @@ -2334,11 +2402,14 @@ static int arm_smmu_device_hw_probe(struct arm_smmu= _device *smmu) break; } =20 + if (reg & IDR0_S1P) + smmu->features |=3D ARM_SMMU_FEAT_TRANS_S1; + if (reg & IDR0_S2P) smmu->features |=3D ARM_SMMU_FEAT_TRANS_S2; =20 - if (!(reg & IDR0_S2P)) { - dev_err(smmu->dev, "no stage-2 translation support!\n"); + if (!(reg & (IDR0_S1P | IDR0_S2P))) { + dev_err(smmu->dev, "no translation support!\n"); return -ENXIO; } =20 diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug= h/arm/smmu-v3.h index fe651ca5a7..3411edc47f 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.h +++ b/xen/drivers/passthrough/arm/smmu-v3.h @@ -197,6 +197,7 @@ #define STRTAB_STE_0_CFG_BYPASS 4 #define STRTAB_STE_0_CFG_S1_TRANS 5 #define STRTAB_STE_0_CFG_S2_TRANS 6 +#define STRTAB_STE_0_CFG_NESTED 7 =20 #define STRTAB_STE_0_S1FMT GENMASK_ULL(5, 4) #define STRTAB_STE_0_S1FMT_LINEAR 0 @@ -546,6 +547,12 @@ struct arm_smmu_strtab_l1_desc { dma_addr_t l2ptr_dma; }; =20 +struct arm_smmu_s1_cfg { + u64 s1ctxptr; + u8 s1fmt; + u8 s1cdmax; +}; + struct arm_smmu_s2_cfg { u16 vmid; u64 vttbr; @@ -666,7 +673,9 @@ struct arm_smmu_domain { atomic_t nr_ats_masters; =20 enum arm_smmu_domain_stage stage; + struct arm_smmu_s1_cfg s1_cfg; struct arm_smmu_s2_cfg s2_cfg; + bool abort; =20 /* Xen domain associated with this SMMU domain */ struct domain *d; --=20 2.43.0 From nobody Mon Dec 15 11:29:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591533; cv=pass; d=zohomail.com; s=zohoarc; b=FK5Tz6SXmqFvY7AWF0+/JuYo5OclVll9jcnr389r729Mtb2Cn0mlABC2F/Idx5rLhppWGCmz8Mmo/ga4Muk6XYuUSJjc+yziLbH2bpN8R2RCDf/Ie+u+7u2PbLjZkygYukKGlCBJjgLsZHmgpmM8wprC8rEqJa7lF6RxUzbj+8g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591533; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xL00tNSF5yd9RoAGLx4Uq/x2+XNJeFpfg252zO6C4CE=; b=HosSHGqMoDv9Vm8d6QKyTiDUD0yuk+LrWv5ZJRo1AEhNJ9sZ0H8FKB1s1X2nbaNH+Jb6oC4wKp+e1DqfIH6/jnibS1KqQy1a6beuw5OZvRedbJyI8W/evmTFl0DekS3YVBlBAzshnmWBRHTDVUUPsK80eE/7fnZUerjZDAuV24k= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591533372450.14600458885695; Thu, 7 Aug 2025 11:32:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073331.1436309 (Exim 4.92) (envelope-from ) id 1uk5Oy-0000pT-8v; Thu, 07 Aug 2025 18:31:44 +0000 Received: by outflank-mailman (output) from mailman id 1073331.1436309; Thu, 07 Aug 2025 18:31:44 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5Ox-0000mk-W9; Thu, 07 Aug 2025 18:31:43 +0000 Received: by outflank-mailman (input) for mailman id 1073331; Thu, 07 Aug 2025 16:59:20 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xY-000773-I7 for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:20 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id db45dece-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:18 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:17 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:16 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: db45dece-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mjccd5ex3iHvEOrOc83veBjvKOmxBGUITWDSvCTHbQqMOyt5fgaNNaBo6nhTf8bRYrVXL5Qi6tgQeoPzt4dv/MZf8J1R2Y9lfiv0IpsSTvmIc+RCE38IPo0rDdkw+s4QtPNFJEdcCMu7fssFFLynNXUUX7gclXTY08+fDvFpeazdUMezk7ucvKhqlFWoxEg2wXgHQzz04GOjqra+5YJusLkZiaMooAlp6T0+8BYx/Uztc3cqt6rorgmV08rAu7UOZUQp0H+sJljk6sR/OsVFWT69a/2b6hMaq9Ag+yHF9b9XgqdWPl8XUhOJHSS4617bjwHK4lJCqm1CVhBgUG98zQ== 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=xL00tNSF5yd9RoAGLx4Uq/x2+XNJeFpfg252zO6C4CE=; b=kXPM8uYcF8eKZNmUIOP2ub02mP5Sk1RDCRg/EmRjcdmhgrw76OfDIjl/VsI2QVBVvCwPAqre8LWLFqZOXAAYnQJp340cfjUa2mngJ3PIHD7SByTHB/GCEA7xaerE+BmiJlHDzpuDC+dcJ2ESwtFkE3cBZJhTJalSBN0vfnBwPU9aCgE6YDOk2Otbh7IvLsQF/FISksfCO83Vq11k7BEyKYAcqOjRXXZnszt4jGA0w7Fr1sMXSbJ3SqxL3vNk7f52XsPVVuJyg3esxfvClS3egdETmRDOKxUPcLvtzFq3WLZo2372SakMPLZ3CMalxvDu8RSJ0jrzsWxdQyPVzMSrBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xL00tNSF5yd9RoAGLx4Uq/x2+XNJeFpfg252zO6C4CE=; b=V6PmL7wNiwNIGljrVkqKqykoydvlrozb6qqyXVulM90womosuht5b7AoiPx850V2mnO2voE7avovuD9iFzEZEY2EDkf2cSGq9E37x8X79I2lhCcRQRufAAaBFWc+dKbtdgo2sNvMrThjFi2EHSQZmvtuKGvfDxzrRvcetqTnbPntPIdAb4BvA2MU4DBXI+BRegLoTMAKW6yg830z0Ncgpvn+niOCIVaa1cIICCUCvB0b+BP1wh4LkFIgV0lvjoVvc7JaEchnKE9HxNqcoINPG80iyypLul+dWmySg8yaaPvXFntnPr0lNSTxBif/yCURoSWEmAx4rmjiLWDzloE6Wg== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Bertrand Marquis , Stefano Stabellini , Julien Grall , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 03/20] xen/arm: smmuv3: Alloc io_domain for each device Thread-Topic: [PATCH 03/20] xen/arm: smmuv3: Alloc io_domain for each device Thread-Index: AQHcB7ycdMk0c92iU0qjOO1oC+LJsw== Date: Thu, 7 Aug 2025 16:59:16 +0000 Message-ID: <27a106209124c8d052d7cca6285d9b7b1b110ef2.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: e03d7344-5d52-4c09-a8d7-08ddd5d3bea1 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?FhLo/iG7C4abnVmAu7cgWGAKWMFwRqx31GF/VUzEgDpv5lJZZPzZNlscgv?= =?iso-8859-1?Q?UVG39Dz9Cilgv7QOsKocHC8Uxv7bmSweR9boaSH9I5n8QJhmrzxlWATsf9?= =?iso-8859-1?Q?B7+fWwnFpW+RlaG6ZmLnhxGZDxkJ6FDGidfAu+pAdsF/7lPDbsF+LMul/x?= =?iso-8859-1?Q?DBcgHLvpVygnT6fhMC5VF3nv6DPb+a/4fJK/3UPFURaI2RRUwNsPdlFZkR?= =?iso-8859-1?Q?ql4HgchpleMZzibTT0snGH248Z4Z6YU+9iz9eAqyQqpwa9IFA9oSvsCq3j?= =?iso-8859-1?Q?ECyGKDq9KCI6flHSQYbDD5oa/ORYIohvqXmkPn3h4SbYG/RfKk+rPqJvxc?= =?iso-8859-1?Q?HTTEBXumEKmOuAN9zcyUPDSzWfTn99A2OTX2nfRYrflNOCB2pCXeHacL/I?= =?iso-8859-1?Q?lpEdc3fKz4bs3gn757ydK9hZhPBLsG/jJR7HQKMVv2loenf41KkmOmfh38?= =?iso-8859-1?Q?ywkQJEToI2I/nLM4hmBVtRezlywoO7yfWMB3QjHFx6C6cMktwm+xAc72W5?= =?iso-8859-1?Q?ln4nCY1qXKehXnzuKIy0VT+dwA9gQF39eqiDP/Loxs1gR7GXCipVxheTR1?= =?iso-8859-1?Q?rAhX5MDG5Ruh2T5zmT2yLKKAczr87PI+JfS7jjbl9/JoNAFd56Hfn9eW6e?= =?iso-8859-1?Q?zYCXqoirGqrKsp7dS1/ZeVSUmvBTybIQ/FM7Qj+gA/boa9EEQ2QmlU990b?= =?iso-8859-1?Q?+8DA7LTRJo1MtYmxTvlVOA2sMcHokE4JdRXfI74+WLQUnXLYDm33NgkS0c?= =?iso-8859-1?Q?6eczLcGgEZqNHbbaCbFrZSydf8nVVYd3UZgqShse1KVIExGEo71s+k62nQ?= =?iso-8859-1?Q?FL2d0e+vpU+qGRHESqSuUfwGjO2mJhlf7+gZCS7rBQYeWM9AnGAv31ik3l?= =?iso-8859-1?Q?249jIXLnv87EUPbEoPhq0C2/3TBH4+EhZc3Rh/vbpr49OzYqQZyEwqlC2n?= =?iso-8859-1?Q?yCr4PwdLWMMETczlFYb/Q8VBFSfGkm6I2qF2jA/J2zrPI2W9axew3CYasw?= =?iso-8859-1?Q?VQKtoxeD9nqzrxRob6yJ5qhDOv2ARgpUpvVQD0RVgT60AnKH+I7PfZAUBQ?= =?iso-8859-1?Q?MK4H/iRF3bwrxjSXZw7LW+kjwSfxEUV1cWOzJFvrAcHeY221mO5XI9aZnC?= =?iso-8859-1?Q?SUCVHa+jjQUyvYJjFEZmuXGeod8m/WORVCqCJ0QEfZUOXWSnp+i+i1lJtH?= =?iso-8859-1?Q?AW7gxv0G+fnM0FxR1OunY4cJLjWPTtdtX3UVXXVaxP2YwGrShvjjliiuzh?= =?iso-8859-1?Q?IPqhL6TfoN1g383nshegXJTSlpmpYRrwIZn/4aaWFO4BdekT5479CH8PWI?= =?iso-8859-1?Q?hnJXgMRCvY6sO5f24QUCoXtB5rR1LsjpTBP0/agoUnEVb81u+EUhQyA6am?= =?iso-8859-1?Q?E9vEQrZhYM9CCzz8SdHa0CC1F1Cyn+9Oj4ktjM66bhSnYQT+X91koOdCCF?= =?iso-8859-1?Q?LJJwMpsnu+/SaeMJYTz4W2U0UILQqVz0NSGtiro+BcfCPIo6y+me41JNZL?= =?iso-8859-1?Q?bWaD9tXefzN7N9hinZbS4coS7t+ElwMCysZI8cG20o9g=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?fhSQe74irvxFRaUNm7ursNLknfncIFfsMBw/3iVW2mqjWuviaiErnHRK6B?= =?iso-8859-1?Q?r9RyEX99H7LT32RtalG6uxsrd6zujrgZNxHQKTacpEWgoZuKXCpMOor1Xu?= =?iso-8859-1?Q?iUwNT556Q2llSqP5ixlXWrl397WnuEiv9OuVADlnjJLqYZLVJ6O4bpyXUP?= =?iso-8859-1?Q?Y9zPhyZSI9D3qX5Z0VTQSGFpXa1a46e9WmObI3JSrVfINg0mpPEwOpSi0s?= =?iso-8859-1?Q?3pwmr90OV3vFcrrSCB5xmqGxs+6U4CJy/OS8Tey7Qc/MuhfZl+ffA3xY7s?= =?iso-8859-1?Q?heRcdV66yC0hUCbGqpVdardSwcGJG8WKhx/axOqQcxyQzL5lyirfetjj3R?= =?iso-8859-1?Q?ZFLy7D/xyCoGa7nxMDEz0idVUK4dBKBYiqwqdLhw+diEXmuhcVnCj38yKQ?= =?iso-8859-1?Q?m+u7Zkt7SGYFiT5f+T/mXEubMiappZo9SCN5OIb6rpqJELg/UH8Vly+ZdT?= =?iso-8859-1?Q?F6zzJja8NV86iG57I4jK9IUqEecxOqGjWtL4uGSGNMDliRNlEaUj+gQEnJ?= =?iso-8859-1?Q?xl6rjuVNZSRb6noLKbxkbXTB6JvI9IeeQZTf5hYSIGK1+2AlhaeCeMcGHN?= =?iso-8859-1?Q?IKXKNS509ITSMpcQ35QDbHVFAvKtbTW/4CM+N39pjBQdBHicu1YfJ0lBa+?= =?iso-8859-1?Q?clxi4j0t8kbkerxyN0uUQ2AzxgkqwTzsc5SmnRiEcF8DvoWq9bLoIWuils?= =?iso-8859-1?Q?PvWi64ktO0DqUnWCVJxOFRwa4olsLuE5Lz9ozl1XddQ/f0V+ySlaCG9P3a?= =?iso-8859-1?Q?1dPr9Y41kQb4lqZ6zbm8o4wb3JGa2UnDx78w7bG/YbLO6EGqLEd0F11BQK?= =?iso-8859-1?Q?jTciEaIL0iVRtqm3gfcvwbGA+BvmMNFUBP6V79K0yP81uVi8oRVAkqN2PD?= =?iso-8859-1?Q?YYfUGB6A7Pg7D1dZa0XppetAiBEPb2IG3Jf+k47SuWQR9OWakhnYRhn/rM?= =?iso-8859-1?Q?mgc5jqgMyZNk4c9luSV/i7mgdOsruE2l+9GAFHiR9MTB+tHsdM11LxZZct?= =?iso-8859-1?Q?mdTzvoIofsOpw2LN2PpDEBhdgmxWN4i3GU1PPkSIQzeMeLzvch45Tve8Pz?= =?iso-8859-1?Q?AmW+QO+ZSyW2HK9XZd45zlamprlyzRRmPfq5bv57CjQYWw7u1zBCNGkc4u?= =?iso-8859-1?Q?Bd7p45L67ISAlr/6M7WnYFEjmUn8gpdO5ZzMoOU/6wxv8cSb8eP5ZSRi3G?= =?iso-8859-1?Q?M1RWRMCuqCKZ4bd4bzW7cwdEBA8d2AGEa48irQCAomv99Tr3blh4MmIl0Y?= =?iso-8859-1?Q?G334JFVhehkNTRAf17jUzhZc5fN4SMzp9PuLS9eVm4qG4yneDtDf/enIPf?= =?iso-8859-1?Q?OA5g9Vanx/cSflY2fN7vl7JW4oK0hdVt/DxI5LxjyC1YSkWIdITq1xueJi?= =?iso-8859-1?Q?n3Ilt4SdwgF96pGDjH73oMCOFnhTete/lCpo3o9hlOtt1grIyHNfYoZefa?= =?iso-8859-1?Q?M9r8J1UpLH5gsxlqzEmbFTOpGrBq4PTvXSGbokiEuOpjjTrEB8RpNInMEs?= =?iso-8859-1?Q?ZwkBAXUVNfkfkL4zfPrgdE0MZEk2rISJiQcYpPHJJHJyoOXg8Egim4QI2w?= =?iso-8859-1?Q?IsVFVMFFGxIT7LwAfzWjKWgG9wXIwIsG/0nrbAL5wlMu7i96r0qqQCagP6?= =?iso-8859-1?Q?iQONytzByDE4HegoIZ9S4fKRODk9YLqDfl?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e03d7344-5d52-4c09-a8d7-08ddd5d3bea1 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:16.9323 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6p/cR7AWA4AQleVmnJhKoggZVxXvKwXktFffnYsAgj2JTAc8tv4T2WQsV0TR0D4TTNYZzPXdhEMo8s/TI4o/gA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591535269116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh In current implementation io_domain is allocated once for each xen domain as Stage2 translation is common for all devices in same xen domain. Nested stage supports S1 and S2 configuration at the same time. Stage1 translation will be different for each device as linux kernel will allocate page-table for each device. Alloc io_domain for each device so that each device can have different Stage-1 and Stage-2 configuration structure. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/drivers/passthrough/arm/smmu-v3.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index 5c96e8ec7c..15ff703458 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -2790,11 +2790,13 @@ static struct arm_smmu_device *arm_smmu_get_by_dev(= const struct device *dev) static struct iommu_domain *arm_smmu_get_domain(struct domain *d, struct device *dev) { + unsigned long flags; struct iommu_domain *io_domain; struct arm_smmu_domain *smmu_domain; struct iommu_fwspec *fwspec =3D dev_iommu_fwspec_get(dev); struct arm_smmu_xen_domain *xen_domain =3D dom_iommu(d)->arch.priv; struct arm_smmu_device *smmu =3D arm_smmu_get_by_dev(fwspec->iommu_dev); + struct arm_smmu_master *master; =20 if (!smmu) return NULL; @@ -2805,8 +2807,15 @@ static struct iommu_domain *arm_smmu_get_domain(stru= ct domain *d, */ list_for_each_entry(io_domain, &xen_domain->contexts, list) { smmu_domain =3D to_smmu_domain(io_domain); - if (smmu_domain->smmu =3D=3D smmu) - return io_domain; + + spin_lock_irqsave(&smmu_domain->devices_lock, flags); + list_for_each_entry(master, &smmu_domain->devices, domain_head) { + if (master->dev =3D=3D dev) { + spin_unlock_irqrestore(&smmu_domain->devices_lock, flags); + return io_domain; + } + } + spin_unlock_irqrestore(&smmu_domain->devices_lock, flags); } return NULL; } --=20 2.43.0 From nobody Mon Dec 15 11:29:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591532; cv=pass; d=zohomail.com; s=zohoarc; b=QVn2rWcEYnhv8qH3YRefGndhIL1LB0U0B0pmBI1XtSfyAs8qnBUGK7uE4OzpzNQig/IcXdWbtjmVlA6TtAgYPb9xPbAoyKtV3bWVspLiXfXjuj/sSRcS70fyH6ZOM3Pj73KVrlFlKUNaYexF3UFZIGJ0WAT11wtSbuzCYbm0gJg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591532; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3+Zv6qBGmmQgEGZkjtADidTX/0058eu9yl2uEEkSt24=; b=kHT0SywxEQ2XHPJR2k9KkJz+PUGB8jBFYZV77UNCZmsr0PM4NFV5++GZ7pUlhg8V2caSLL8HMrwXHyjyj7olnmZHyQLLi5gRfVCL9boB+eB2OSSWi4yXbtLOf768oQKQhf69SuhVUNOB7O8KfYYIV+UW5oCHKkf7I1wtm/n+5hY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591532578158.2343377819758; Thu, 7 Aug 2025 11:32:12 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073333.1436315 (Exim 4.92) (envelope-from ) id 1uk5Oy-0000z7-Gh; Thu, 07 Aug 2025 18:31:44 +0000 Received: by outflank-mailman (output) from mailman id 1073333.1436315; Thu, 07 Aug 2025 18:31:44 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5Oy-0000vi-As; Thu, 07 Aug 2025 18:31:44 +0000 Received: by outflank-mailman (input) for mailman id 1073333; Thu, 07 Aug 2025 16:59:22 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xZ-000773-ST for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:21 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id dc552c36-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:20 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:18 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:18 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: dc552c36-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XGzNNGSK0Z93OfHeCZs7ARgUXPVODCr/fDZcYVZ9G+wBGaiR7KZoKsfttoJL7i+Xa6NzTmgv1lnW22pNFAK13lSA6IJZ9bX2bvDpQcxzORuB8wpJomtoCppsmGlTP4IgG0fErjBkUa1XWwfn/4wHgrmc9gOT19O85E+fmhylWx4YQ0ySA8R+X4JcSfSPKqKEqFerlY1kgpYQVScNBs38IgRxD2pz7hZhJDEedXD+JzgHNRXh9/Q9ix5Bmv52bm1QFXr9H16NUBh+JqTCMd6v0YZESvV99MEJ7T5GdYjVKMY96/lP8NL166I2uCeLa0hX/iENFQQ2zUlsyuZD9tp89A== 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=3+Zv6qBGmmQgEGZkjtADidTX/0058eu9yl2uEEkSt24=; b=AUA8cLrKf4bLqeU+rSQH48B9NdnnMnSmhgm+RProIMUd9by8gqgLAcY0XQctcw87YCbkJ17WI6sWBT08O6XQOBdwv7Gl/v3Y7zz/PlYBzheAO8hhogUNIuZU7crY1W5Agnb0JhwBc3xLrvvvKZi5FPyVEVzjID8ox0SUP0v6rQoY9q+vgW5MRB9tB7l0l8eSy1KI2LMsZCFp3ajTdabTlJ+3IiCdCajZbqMvT03yribvQE9MwiOcmwMRwtUSja5f/gnEAT0PX0xD0eiEK942sF/NPWxIS/w/E2aDBtdVzMOstZo59/0ohBHW1OegjiBkfe8BpcyjvxByhJBp5FyiYA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3+Zv6qBGmmQgEGZkjtADidTX/0058eu9yl2uEEkSt24=; b=kiEHaEFK8HqcWasIvJDUq6sIcWZ9aNqN7sdM9dujnQWvCYP8kQJTKOE8PGtZnLVbU3yFg/kNobQI47QsS2VQbMe6m/Vp44NYnDQgF5zUcB5xzwqD42ETxSsLrpBk57irxLv5GthuwMD+3nvWS3klZvMvVsQx8Ql3gp6C3ic/dXsnaaH/uKCSdB/jEUr7BLAIlCkSamkchBFZhE9SPO4L2VjyNVzCDylM9w/hSGnvBdLgCVzXXwONp+KTwYU3hNvvRE+H9RSWYUDjyNy/pDdinEO/oCbCL3dHZEZEiBx3CThkUEcag1dt1EzGDsNThBalKoAdvnB8/BQOPqMg3/x+sQ== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Jan Beulich , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Milan Djokic Subject: [PATCH 04/20] xen/arm: vIOMMU: add generic vIOMMU framework Thread-Topic: [PATCH 04/20] xen/arm: vIOMMU: add generic vIOMMU framework Thread-Index: AQHcB7yc6FJdcKq17UOgpZ88dk+WBw== Date: Thu, 7 Aug 2025 16:59:18 +0000 Message-ID: <87b001cfc0555192435967b32190f75783ffa746.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: bed35d96-4695-4a46-f5a5-08ddd5d3bf7c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?bLbXga3aY5RUvJ8chjct6TcjN6jEskyeBEh49016rtHXe5VSn9/k51U5ph?= =?iso-8859-1?Q?xcrFac1Ba90izuZR6X0Ctb0NRTkI1ATB96usF0wu3Zdw6ymnnQBFX39i3T?= =?iso-8859-1?Q?cS1OvIyQZG/dCWrDXl+sT+haeLJVEHg0fBVze6RMmy1keOLnbAG61Qc0hM?= =?iso-8859-1?Q?z9gn+XsHkqeABjryCoe/MZAMYi7Y4HCl/Os8Fbt8j1PKqaodAN9bC9LbDB?= =?iso-8859-1?Q?U+CbDwj2IsxSAylypih+BVCGgQdGhPFS/KK+94FneCqzp217f8MZqq7WCm?= =?iso-8859-1?Q?NTzIoGAyHvMIt62ENzFkoGnVZVq5KZ7TJL7rw5vS6QHAzCsZxrAdr7fwU+?= =?iso-8859-1?Q?HlxfpYUULUSV8Q3oHzIMo0P4JCwGJNxivJ2MAMxRWqntK8T81XtkPBhwDD?= =?iso-8859-1?Q?2ESrlR1HT2u9yC2ePQ1zsGU6eW1kH+I+3IDrByPpLglBrG08gxQFsTwAMp?= =?iso-8859-1?Q?ABMOtBdCbtdd7fn0CiRO5uHP4ifdbmIXq6h/m5zb18WiQ8K2SF8g0N6GLA?= =?iso-8859-1?Q?jsHTDgtTf4RANkDYD1tqJC5s/NlPsZLkzmNhtB0FUMJRFPNIQK6XD3iZwb?= =?iso-8859-1?Q?bOuuo+zBSp5mopX90VJiPmFlZbS3IPcPJOB/ohag46LL3N0lrGySytaYcB?= =?iso-8859-1?Q?wDhWRysrKXY62uTAlSKLl9fBe1ENdZPEAZTRI8s9SjvZnwFucXqwiB5SKX?= =?iso-8859-1?Q?d98gJ7XyGCThESyyTS1TIy23WEuvO2SsYOUOwWY/Gs/BsNf1iM+1Wi7+KT?= =?iso-8859-1?Q?OCq4YR3PbhECU32WjgY92dJionsgQL5ktAteIrF+/E2UMbw9ZGs0iQ9SYx?= =?iso-8859-1?Q?bLe9JUkC56AYjVki8uUqgaBoaeRUmW6ome0+qtGQAObS96cKiZWgv/NGXd?= =?iso-8859-1?Q?n8cyGHahf0okg/aFJn7plHi7nwgHN076mbMJppPqnZY3lGrTTBKItoAiF/?= =?iso-8859-1?Q?MliMsF9pLkZ8Ib9JQCb73wYw5spEBUaAoCernnxzlMrfhONCyy8sUWYyxu?= =?iso-8859-1?Q?K6wsyDXSPGY6xUl0fSfPCo5pbpuM0kLEv/fugjnx7IFCZQRyDmkXFIxD1Y?= =?iso-8859-1?Q?CYd+rZCV5jJRftEh8Qk3k9hT+9kQxz041XCRULHeBkfmA9PnuImhkRNptG?= =?iso-8859-1?Q?m2ZAFn2ytmZ2GOgfScBZckhjA0GU2KdYd8hZOc9AUuHYBP4TIuh0SXJFiS?= =?iso-8859-1?Q?5Cdvmzzolsd7neCXRsU9+RXqrci4cNOk89685fd32MbpfOaMTofqMUVdKQ?= =?iso-8859-1?Q?y4x1vJueG7raLR0cLcRqQjCW9tQcf47G64QJiS7KTL4SWcLz7XUguejvY3?= =?iso-8859-1?Q?ip4Wg9Eu6CX9wXXFUtTK/z0DZovHv9Fjl3zIWkBLBTiJBIwwQ0/QAaLTB5?= =?iso-8859-1?Q?3ksgGzGSKItJWqS9udnnewCVo1OW9HeIUHKiLwwGV2NuRkw1iI64CTuqLM?= =?iso-8859-1?Q?c3I31/EpZM75Mu3BjV5ZUrw1w8dLR+RTNMoT2zWY9cy22lfPwHj23K86SN?= =?iso-8859-1?Q?nCLzHNQprwmJ70Dpt5S2uS5uSsopr1+9xPIjyL+JUmTA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?9nbaHoCpD/WOvC1lDL9euTDWTx/7vrZaYLBISdwW/ujXse86hTrhO79Enm?= =?iso-8859-1?Q?3gkf03XSQuHl3w7umUK/DdPqXiEy6JMYEd0wTTUyO8mASlSyqEv1V7kTt7?= =?iso-8859-1?Q?Dga6Gy2825JGxRKgoG6W2+F9EiAXaptDOLLUfXIKPJw2q3p1jKqBDz5lKg?= =?iso-8859-1?Q?4VXoVGJ7WLE/VCEqLYwkv19K1ioQ4N+EEPMNMt6y2zr0NPFo6b07tCiUmA?= =?iso-8859-1?Q?LKRTVBdUq38rr2KDWnBoeG+wMEfb9mkRjRpHpYB53IJWcIt80lZIwDzFs9?= =?iso-8859-1?Q?nZr0MGrj8jP5NNiIO5o+g7rb/J7HbEoCgDngKLBP7QqabckYvpzlYolk94?= =?iso-8859-1?Q?a5MPoeaqaoAon+JZgEyep76Id3CIvxP1SwO0pvm9m5h1O+TEScSFLhSdrL?= =?iso-8859-1?Q?oZVTmy9lZq7bNNtj9ZfLo10btHLDT+Co4YX2s/8hKhBQ6emJizZYt/QRwm?= =?iso-8859-1?Q?GrRQnZKgAPBH0+NepbTVUfJEWnhXhbK8JlNYZt5VSTliUSI3VnvDNg2hmv?= =?iso-8859-1?Q?oU9zTEJSAEc5BPYjkTdiUTbjEz4Yx7xMpCrRWnSrZxnJP4P7gMVhASij7l?= =?iso-8859-1?Q?1E14vPt1AVRMa2c1EyQJO0wgpg6TufvHBYpvcjIapqRgVwUHz2ZBwo8nup?= =?iso-8859-1?Q?/uBlpyiQCu54wC+lewauK3D3oRQyPckqZQLjd3gmK69bZaiBkx/TdLUkjt?= =?iso-8859-1?Q?psnpnKttOvYhd1+2F/rHQLL5xkdm5OL4J0pVa68IM0zJ5m8topexAYAAgC?= =?iso-8859-1?Q?Wl6mUHGzLamycOQWSCNXxfRdMw01PM8lijkr2oJl4TIU1t/voXXg369txd?= =?iso-8859-1?Q?4WG6z9E1YW9mz0dzWbJDuNUx6mZWUKasOnBUP8OLHG7BKDddCG1v4b/s7N?= =?iso-8859-1?Q?act9x1XGtPvXnC6djL/8TfXtbCLhatG516Ry1FziwOhVuBOEtb9bLl+61L?= =?iso-8859-1?Q?L3IvtF5+UQDBOp70e5gqK4WvK28oYX4MozSF7HErBx5T4AzhxmJScmZSCC?= =?iso-8859-1?Q?buprVz32rOiqA4/Vw/50nlD0rwlYX7WFJerf9D6RgvhBC+X8Do/JdNtzcx?= =?iso-8859-1?Q?73r7tTkzpT+IqQD8Up4m0WE0Qw1u1szIzmQuQFqzAtbRG+d+0Af/fs8Mo4?= =?iso-8859-1?Q?V/pmRHyexhAx/9PJ6IugRiN1MIswaVpyOUip+ai92xIMZGA22MVK+idyZm?= =?iso-8859-1?Q?C66nCChJgmxDpb4bZJHu/IwI3sPkGrvNcZEHL683HGoh31fbQLycG8ZLoy?= =?iso-8859-1?Q?R4Sw6SCebYpsVD4q8iMqs/4JAoAZpuThiCbFUysp5hebfHI/dfAAI50erp?= =?iso-8859-1?Q?u/hnrPKs3JrIT6LPtYiI/Fy7ckDFsevG7/1P/oSc3/27Ert6TlMXLMb62Q?= =?iso-8859-1?Q?1/BTfZu0ATm2GORrxQoW6iyYDRp4ILWgxXzIfIA3yVHjbo3y2aldIMGpCr?= =?iso-8859-1?Q?Frlpv5W5aPyn9YUEhIes3lRqfSl0DK3hSaBxMTVZ2pII1oiQDwcabQK0Px?= =?iso-8859-1?Q?wWVzEvBWfGNt0ss2wdv8eE8haxkg/ce2PfssHBYQ7jXQi18vgV2cAtnUY4?= =?iso-8859-1?Q?IMFdt/k82SH6qWcOwqdraPhhcPdnrS7ENAaiZBSy/PxyXzv2/9BYR9Jvvz?= =?iso-8859-1?Q?ljIcx7w5/z57nqzOzVAyCTcFLvJI1rPSOl?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bed35d96-4695-4a46-f5a5-08ddd5d3bf7c X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:18.3569 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: NOZfGoyormVqoLrjK09Fl4ztpXhl878Lb+NZruR/EqG2nxG9nNxYTNLHYelBL7QaN6tM2hBie7Be0HqfDQGFjw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591553193124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh This patch adds basic framework for vIOMMU. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/arch/arm/dom0less-build.c | 2 + xen/arch/arm/domain.c | 25 ++++++++++ xen/arch/arm/domain_build.c | 2 + xen/arch/arm/include/asm/viommu.h | 70 ++++++++++++++++++++++++++++ xen/drivers/passthrough/Kconfig | 6 +++ xen/drivers/passthrough/arm/Makefile | 1 + xen/drivers/passthrough/arm/viommu.c | 48 +++++++++++++++++++ xen/include/public/arch-arm.h | 4 ++ 8 files changed, 158 insertions(+) create mode 100644 xen/arch/arm/include/asm/viommu.h create mode 100644 xen/drivers/passthrough/arm/viommu.c diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index c8d07213e2..1fa6df214b 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -22,6 +22,7 @@ =20 #include #include +#include #include #include =20 @@ -280,6 +281,7 @@ int __init arch_parse_dom0less_node(struct dt_device_no= de *node, uint32_t val; =20 d_cfg->arch.gic_version =3D XEN_DOMCTL_CONFIG_GIC_NATIVE; + d_cfg->arch.viommu_type =3D viommu_get_type(); d_cfg->flags |=3D XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap; =20 if ( !dt_property_read_u32(node, "nr_spis", &d_cfg->arch.nr_spis) ) diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c index 310c578909..a66f71da17 100644 --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -27,6 +27,7 @@ #include #include #include +#include #include =20 #include "vpci.h" @@ -699,6 +700,21 @@ int arch_sanitise_domain_config(struct xen_domctl_crea= tedomain *config) return -EINVAL; } =20 + if ( !(config->flags & XEN_DOMCTL_CDF_iommu) && + config->arch.viommu_type !=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE ) + { + dprintk(XENLOG_INFO, + "vIOMMU requested while iommu not enabled for domain\n"); + return -EINVAL; + } + + if ( config->arch.viommu_type !=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE ) + { + dprintk(XENLOG_INFO, + "vIOMMU type requested not supported by the platform or Xe= n\n"); + return -EINVAL; + } + return 0; } =20 @@ -791,6 +807,9 @@ int arch_domain_create(struct domain *d, d->arch.sve_vl =3D config->arch.sve_vl; #endif =20 + if ( (rc =3D domain_viommu_init(d, config->arch.viommu_type)) !=3D 0 ) + goto fail; + return 0; =20 fail: @@ -1038,6 +1057,7 @@ static int relinquish_memory(struct domain *d, struct= page_list_head *list) enum { PROG_pci =3D 1, PROG_tee, + PROG_viommu, PROG_xen, PROG_page, PROG_mapping, @@ -1089,6 +1109,11 @@ int domain_relinquish_resources(struct domain *d) if (ret ) return ret; =20 + PROGRESS(viommu): + ret =3D viommu_relinquish_resources(d); + if (ret ) + return ret; + PROGRESS(xen): ret =3D relinquish_memory(d, &d->xenpage_list); if ( ret ) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 463ae4474d..50e4f5fee4 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -34,6 +34,7 @@ #include #include #include +#include #include =20 #include @@ -2057,6 +2058,7 @@ void __init create_dom0(void) dom0_cfg.arch.nr_spis =3D VGIC_DEF_NR_SPIS; dom0_cfg.arch.tee_type =3D tee_get_type(); dom0_cfg.max_vcpus =3D dom0_max_vcpus(); + dom0_cfg.arch.viommu_type =3D viommu_get_type(); =20 if ( iommu_enabled ) dom0_cfg.flags |=3D XEN_DOMCTL_CDF_iommu; diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/v= iommu.h new file mode 100644 index 0000000000..7cd3818a12 --- /dev/null +++ b/xen/arch/arm/include/asm/viommu.h @@ -0,0 +1,70 @@ +/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ +#ifndef __ARCH_ARM_VIOMMU_H__ +#define __ARCH_ARM_VIOMMU_H__ + +#ifdef CONFIG_VIRTUAL_IOMMU + +#include +#include +#include + +struct viommu_ops { + /* + * Called during domain construction if toolstack requests to enable + * vIOMMU support. + */ + int (*domain_init)(struct domain *d); + + /* + * Called during domain destruction to free resources used by vIOMMU. + */ + int (*relinquish_resources)(struct domain *d); +}; + +struct viommu_desc { + /* vIOMMU domains init/free operations described above. */ + const struct viommu_ops *ops; + + /* + * ID of vIOMMU. Corresponds to xen_arch_domainconfig.viommu_type. + * Should be one of XEN_DOMCTL_CONFIG_VIOMMU_xxx + */ + uint16_t viommu_type; +}; + +int domain_viommu_init(struct domain *d, uint16_t viommu_type); +int viommu_relinquish_resources(struct domain *d); +uint16_t viommu_get_type(void); + +#else + +static inline uint8_t viommu_get_type(void) +{ + return XEN_DOMCTL_CONFIG_VIOMMU_NONE; +} + +static inline int domain_viommu_init(struct domain *d, uint16_t viommu_typ= e) +{ + if ( likely(viommu_type =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE) ) + return 0; + + return -ENODEV; +} + +static inline int viommu_relinquish_resources(struct domain *d) +{ + return 0; +} + +#endif /* CONFIG_VIRTUAL_IOMMU */ + +#endif /* __ARCH_ARM_VIOMMU_H__ */ + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/drivers/passthrough/Kconfig b/xen/drivers/passthrough/Kcon= fig index b413c33a4c..fbd56eb990 100644 --- a/xen/drivers/passthrough/Kconfig +++ b/xen/drivers/passthrough/Kconfig @@ -35,6 +35,12 @@ config IPMMU_VMSA (H3 ES3.0, M3-W+, etc) or Gen4 SoCs which IPMMU hardware supports stage= 2 translation table format and is able to use CPU's P2M table as is. =20 +config VIRTUAL_IOMMU + bool "Virtual IOMMU Support (UNSUPPORTED)" if UNSUPPORTED + default n + help + Support virtual IOMMU infrastructure to implement vIOMMU. + endif =20 config AMD_IOMMU diff --git a/xen/drivers/passthrough/arm/Makefile b/xen/drivers/passthrough= /arm/Makefile index c5fb3b58a5..4cc54f3f4d 100644 --- a/xen/drivers/passthrough/arm/Makefile +++ b/xen/drivers/passthrough/arm/Makefile @@ -2,3 +2,4 @@ obj-y +=3D iommu.o iommu_helpers.o iommu_fwspec.o obj-$(CONFIG_ARM_SMMU) +=3D smmu.o obj-$(CONFIG_IPMMU_VMSA) +=3D ipmmu-vmsa.o obj-$(CONFIG_ARM_SMMU_V3) +=3D smmu-v3.o +obj-$(CONFIG_VIRTUAL_IOMMU) +=3D viommu.o diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough= /arm/viommu.c new file mode 100644 index 0000000000..7ab6061e34 --- /dev/null +++ b/xen/drivers/passthrough/arm/viommu.c @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ + +#include +#include +#include + +#include + +const struct viommu_desc __read_mostly *cur_viommu; + +int domain_viommu_init(struct domain *d, uint16_t viommu_type) +{ + if ( viommu_type =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE ) + return 0; + + if ( !cur_viommu ) + return -ENODEV; + + if ( cur_viommu->viommu_type !=3D viommu_type ) + return -EINVAL; + + return cur_viommu->ops->domain_init(d); +} + +int viommu_relinquish_resources(struct domain *d) +{ + if ( !cur_viommu ) + return 0; + + return cur_viommu->ops->relinquish_resources(d); +} + +uint16_t viommu_get_type(void) +{ + if ( !cur_viommu ) + return XEN_DOMCTL_CONFIG_VIOMMU_NONE; + + return cur_viommu->viommu_type; +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h index e2412a1747..0a155fe615 100644 --- a/xen/include/public/arch-arm.h +++ b/xen/include/public/arch-arm.h @@ -327,12 +327,16 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t); #define XEN_DOMCTL_CONFIG_TEE_OPTEE 1 #define XEN_DOMCTL_CONFIG_TEE_FFA 2 =20 +#define XEN_DOMCTL_CONFIG_VIOMMU_NONE 0 + struct xen_arch_domainconfig { /* IN/OUT */ uint8_t gic_version; /* IN - Contains SVE vector length divided by 128 */ uint8_t sve_vl; /* IN */ + uint8_t viommu_type; + /* IN */ uint16_t tee_type; /* IN */ uint32_t nr_spis; --=20 2.43.0 From nobody Mon Dec 15 11:29:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591537; cv=pass; d=zohomail.com; s=zohoarc; b=Yxmewm2YhfbfZKLUv40HwgiagF7DbRn09mH+2nhtxEiXJMmyjt9UXoBStocmfFEyFo0bKeEBXYgybBhKG+L9uRKwV9xXyFzEwGQd2PjXnQzXRuyCjH2DeUWVNmBZTBNlvU22aEymBw/Q6RI5Ifd4MUbWF1fX5/HhcMXKBUht6h4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591537; h=Content-ID:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W5bgCnmqREuCB9x7yrfXS0DVwJ5vmEllxhsq/3uGl74=; b=lpbHvE+bdxLupMOdKb8X7y8hNgEdp6BcdhHcKHB2sJv8UUgDgQVDrR6ubJTaFFaglo0CwfIueeC1Ifc0XjthyWHAkObovtd90PyESr1JFmd2XYAWhQGyi2btedzrslbKkKGMv1MKG3JzAWPP5ENFKAk/48Ag5/96wE0BTBPexMM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591537305678.4162338921209; Thu, 7 Aug 2025 11:32:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073335.1436323 (Exim 4.92) (envelope-from ) id 1uk5Oy-00016P-Rk; Thu, 07 Aug 2025 18:31:44 +0000 Received: by outflank-mailman (output) from mailman id 1073335.1436323; Thu, 07 Aug 2025 18:31:44 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5Oy-00014I-M8; Thu, 07 Aug 2025 18:31:44 +0000 Received: by outflank-mailman (input) for mailman id 1073335; Thu, 07 Aug 2025 16:59:23 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xb-000773-Gw for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:23 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id dd4bdc69-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:21 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:20 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:20 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: dd4bdc69-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=b6n9sHNDjRdkO/wjFznYxUX6XI3jkeGhb8so6IRXyn6WSBlrr5ykyXeZ1nZliuv0jJhbY4NU03Mrkyp/EJ/G7JAyTBeW6rwDeNdwI28U+u2W7Ze3T+88wUY7YofVD/fLM/xkm/tUvIt7Q0qL3UUEopHsAUQoYiee81sQKV4CcQOBKq+/8MhaJFWW5HtmxIxEyEaXEPNaFaUHlOYqVlzGbQd9N4Wdmg2kQuAN6u3+VpmbqNN7BHM28RGoD7jYsB+1ajJq1kLVp8MTwvK6PFVM7+b7CQ0at+bxUaJDAG+W9IuWtpJD5IeCojLHS5320n6DkVeG2S/d0M7DdmN/Y7zUQg== 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=W5bgCnmqREuCB9x7yrfXS0DVwJ5vmEllxhsq/3uGl74=; b=aPxb29Tj1IjlnB/XOgvciHwBtgjCw44WVJfzyETVYFsOakB0B9CdLWzv37rwPNC+2vro0OmU1lqZUUWt+QLEeyUzsjP3OowXpmOIll+1aS8EpCuR5jonNoHbsg+epQbeREZ6bt3w0Hnca9S+sCFsz6Wq5MqnyxPhzSv1bjJePahduW/PlAbewiXggmwF3RIrcHWsAdhLw7gdEZ0rcBhnhm05cbzvUoGv7OOAOrB97odf0NrLC5rXHUiVfzHtwmomKZCG4LG62Aw+lo3NwotkufRd+VGRcFBEv77i9lK3u123l/7aSMnc6Eic2aYZV/c0By3O6hwehhWyhjvwWYUbzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W5bgCnmqREuCB9x7yrfXS0DVwJ5vmEllxhsq/3uGl74=; b=pj1bEzzve/UE6/qyDNO2Dl7xIetP/4/k9P/rxj0N8hoRrM/EknP0PdqLK5JAm8wv+we7v1HBjDKWqI5moj45MsznfJcAhVkHXeGsB4B9JjV4oJ6Z2Sm0chhfVpR+BYgEEIy0b6Qo9ijcrlXtSCP9RAva6lIdkQI+2DWrxxBuP1kfBh9hKuI3IGxl6hwwmKzIpcO3JUUZRRgtgeOJIgmL+YhDPmf2kVBFdOh2pXMrTLUecjN/+lX+eE1En8mLOhxMMD6sHI7Rtadsj3eowv4OBBEPzpFEVwdXAUFhOZI7mZmW0byGd+cee3ej8d9lF05nqDUtVLxDX8zozFZDvekC7w== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Jan Beulich , =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= , Milan Djokic Subject: [PATCH 05/20] xen/arm: vsmmuv3: Add dummy support for virtual SMMUv3 for guests Thread-Topic: [PATCH 05/20] xen/arm: vsmmuv3: Add dummy support for virtual SMMUv3 for guests Thread-Index: AQHcB7yeQvkt3U8dXUO5vMf5OxHVfQ== Date: Thu, 7 Aug 2025 16:59:20 +0000 Message-ID: <757e832e781fd22aa2c7d2491239a61c9935cdc1.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 36c7e33d-cb71-469c-1b26-08ddd5d3c09b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?Q0dBL1hBU3lKT3dhYUUzeSt5VTNjT1UreGkyak9uUFBMUnFBOXp4eXJDbkFx?= =?utf-8?B?a3lzSWFNd3FXZDlXbnRqcGlianhrc3liN1diOG83TDlLYTVXU0hRTlVaM2JX?= =?utf-8?B?MG9IWHdtYmlkQnhFYXRva0o5R09LejlOaUxWcU5MdWl3T2g3YXYwb1Uwd2JD?= =?utf-8?B?bzVXQjlRR0swTEQ3a1hFOFNxelg5QTdYQjZvTnRLZVpmakhHcGJkV0ZPa2hp?= =?utf-8?B?a0duNDJqYm95Z1dtUFNSMVgyQnVabnM1YzF5THBzVE9DeThHd0srOUtyUzVH?= =?utf-8?B?RkRXNWFPUGcyZk5rS2JaNDVhaUhhWE56WXMxM3dKc2ZQR1BrUGxyZk1kTi9G?= =?utf-8?B?WGRVOVZBMzY4UjQvT0tqMXN0enMyU3N1a1EwNllrb09oT2twV3g0czFHdDBN?= =?utf-8?B?Z1IwMFpIam9zMlZaMmNtZk4zOUpIZ0N3MW9BcEUwWDMyZ0dYVUFMdVpaVjM2?= =?utf-8?B?eEZWZS9CVmhtMHJvU3FNci9yU2V4cDdQZGdFNGFLUjZzeDFYV0wwbGMrcVQ3?= =?utf-8?B?dWo2UDJQK3VCTUJvbU9xdThVNFhVV05TRTRJWTUxSUpzeUU1UU5GUmZRRnlo?= =?utf-8?B?NTk3aUtOSjVQY2JETytSZTg1ZG5FOVBxZ3VWTGpUOXFpM2VuL2hwbHFuTUY2?= =?utf-8?B?OUpNQTIrTHJtLzhncE5rS3dRQm5PczJaMEI2OUMybTZVKzdkTXc3WVFaQ3Q4?= =?utf-8?B?MHBKTlZXYnRBNXEyM2JuRHMrT1U3TnpMc1M2WDFmZXFTdjJhREQ4TnJ4YTI2?= =?utf-8?B?elNVRktLam81dmQrQ1BPQnkrY1NzT0NHQ0xrN003R2ZJWERmaDAxYUVHQlFK?= =?utf-8?B?amhOVnR5QW5kTzd6MDB6NmtBR0hJN0JiUnF6SmJEdFlRcnlXRE9yQ1hpVDVT?= =?utf-8?B?QjJKQWdQNTFMaFVmZUgyQlc4a1VPK3g2NS9sQW5ONFBmVXc0L2E1Q0svS2Rq?= =?utf-8?B?RUJrUTZTZXNkVEhmc0xjeDlSUUp3OUd1TEFWbngzdUpjNHRkMGM0M2U0bkVk?= =?utf-8?B?MWNkeWFMOVhSc3E0cVZjVWdkWnNTRVdEdXpRWTY5Qkh1WCtKRld3OWIvVi9H?= =?utf-8?B?YVdPTXdpOGhMU2xGSnlyNUxJU0lvbUt6TXFmUnVBUkV5OUc0SGJ5LzZ5STBB?= =?utf-8?B?MU9pNmFXaG42SjJHMGZFYVQ2Wk9aZnBmaUQraVV2WDZIcmkyenFSYWFLSTdt?= =?utf-8?B?WXFqbTVaaHBZcnVVQXVGYVR0SWZBbndUK2ZQWW13eTlUSTZYbVQxdTMzY1Q4?= =?utf-8?B?eElrRXdnV012WjZjZjRic3dhNVYyV0txeFQvMjR5RnNZcG0xa0lqUVdQL0Qv?= =?utf-8?B?M01SRHpWRHFlN255TWw1YnFXQTRQRXBZTUJEY2F6b1FHaEhIeTg3bzdURU9u?= =?utf-8?B?bjBkYmsvdGJwd3ExbkE0MHE1aHBFSkE3MG8zaHpoend6K2w0QnFOWVF3andz?= =?utf-8?B?OHU0OWhPYWp0NXZVNFBraHo2UXhpUkcvSkpyem5Tdnl5akVZWTdtdlJzYkhR?= =?utf-8?B?WEk5T3BndjYvNHJzZ1VQVFF6TXhLV3JtcWpWa0QrZzFtYjhlMFU5U3llNHMz?= =?utf-8?B?TEwzQ1k0ZVlvS3VGVFo1UEVGaHA0Z1RjOWtMMlBzUTJQTlpsU2lpdGg1RkEy?= =?utf-8?B?OGRnTTRsWXZyN1NDdENPWTNaUjJtbjJ1eDA5ZmRtU3MwcXMycmdxU2M4M0Z0?= =?utf-8?B?ZjJ4bGU3aWRUOW4zY2VMSFZrOFJjV0dhcTVlQ29xS2VhNWE5Y1JRYVVXMG85?= =?utf-8?B?WEd4V3gyeTRlOW1hcDNPTFlxK0Z0eEpyUk5ySnVVYVlCMFFJMDhxVnhRb0lm?= =?utf-8?B?VDhSeEZjZEpBMStnRFVXaDFzUUp6NlVqUUF0YnNkM01pa1JoNTNicktGbHIy?= =?utf-8?B?TCsxeUNobk85OUZNY1RKaEQvRnJMN2o2bEV6bHEzRkZ2TUI5WmhpeUR5QzMw?= =?utf-8?B?RGwzUDFLWTZmb0tiQ1pPMEMvejMrRVlyT0dpWEg2dDBLLzFjeE9vejllNEti?= =?utf-8?B?Ymw3YW1JS0ZBPT0=?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TWtkTTdGV1VVSURMcjVTc1IydmxqbVdueXM5V1c4WDZ2YUg4aWpYWnlhY0hi?= =?utf-8?B?cmxCWEJISWo5YmRTaXZncG9lRVo3a3A5TTZRRDQ1b285NVMvQXU1ZStYMVhp?= =?utf-8?B?NHJRYjQ0UkN6WHlPTWVYZ2x4UHRaaVRGS0Z2TEV4WmVPQkhBeWxtUjlmRFg2?= =?utf-8?B?b2gySG1UN0M3V0pQTmdQLzY1YzZKMVgrRDRDZnJSSm1SZ2tGeE1GT2hzZXlh?= =?utf-8?B?Yk05SlVnU1krd25SYzkrWnRxcGUzbUV5elZ1WXpYK3pMOU1tWXBNZTNXWWRQ?= =?utf-8?B?U3h6a1VEVjBSYjFGdXVrTmxwY2hqOVJUbm14bVlTbHpPQVMrZ1F5TXhlZFVQ?= =?utf-8?B?bXFFTitvV2dKRUVtSFJVYllUSG13eGpMcDVYZjYvM0oyQ29OWW8rbHcybDZP?= =?utf-8?B?ZU1GeTFRaWo2YkhZRTJlRjl4QjYrRG9lZU5JMXpTUW5kT0w0dFBwbDkvdEdt?= =?utf-8?B?VDAyU3dLdlVFUWhQUHI3dG9OdVdITk9YbWUwYlV0SXFkb3ZHMGVDMThBUkIy?= =?utf-8?B?bDJvR0dzTGxjc05zdll2bW04Q1BVeTFXY1dDNjBCeHI3eGtoa3RDbC9DTWdP?= =?utf-8?B?U0xOZmd0YWtUZXI1SjI3OS9vN0RKM1lza1hJZEJ1T0NOYVNGVEwwVVYzNkN2?= =?utf-8?B?Q3BwaEhDaDlTUE13SVI1ZHp6T0YyY0pUYS9Id1g3L1piZGplQlZic3h0MFRq?= =?utf-8?B?aHoyTjJMMkw4MDFZODBVQVpBOFdUVG5ybEVpUUpYdWZOWHpUZHl2T2Z4NzY5?= =?utf-8?B?YUp1c3lVWVhRT1FzNG9SQjMzTFFTMEV5MjNLUitrd3QrRW9ZZFJIaWhNZlA1?= =?utf-8?B?MXNuK0xMcXZSTjFpOSt5ck51RDI3V2dtQlYwaEp6T0JDSWFWcG5YMUZoQW53?= =?utf-8?B?SkxacGY3LzhNelZGak93SnBYZFpjdGtMMDZEUDhPL3pWbHdzek5PbVA5M3hs?= =?utf-8?B?eTZEd1BuL25CNyt5OWo4OXpCdXhJTFM1THM0cG9VL1JuYVpxbkR3d1JiSCtP?= =?utf-8?B?cERkNzlwUytkY0d2ZFJqQzE3VFpzWVVvZmt6eEhnVndZWTBybEFPWEs5MHhu?= =?utf-8?B?RVRldlNVdUhGU2hoWngrWnV4bWw3SklNenlzOEZ0SGN0akpBemNCdGZ3bDFz?= =?utf-8?B?WEh0U2ZzK0g3R0JwY1FPdkVPYlBEMXNwSzY3S2w5YWQrcEFSNlRZb1F0SzRL?= =?utf-8?B?L1pOek5ILzA4enFoUFdBMnVMNEF5RmNxVVZoTTdXOWdTRncvVnhYTmRGbU1q?= =?utf-8?B?TkNKMGlhS29kajN2cHpabG9rTnkxb0QwQVZOZGtwUWdLMW1lOXpSZkUwK2FJ?= =?utf-8?B?T0xobDdyTnhhVU5uTmg4ZUNzTm9sTXNwemR6T2RNVmJyWGk3UXR6dWNXTGsy?= =?utf-8?B?V09BZGF0SUR4RGVvV0hPTFhsWW9oNU9BQ0xkQWdmaVZBTlM2RU1kWG1GNEJs?= =?utf-8?B?QUE2YnBoZDBXSVRMWHA1Y2dSclZxaHFBcjVVTUw0OXZSa2dzai9TWkpuTlhs?= =?utf-8?B?c3hsY1owazF5VFRkdGpwVWVnZjd3V0xrUW05bWpPVk1yQWtGMmk2em40YWdj?= =?utf-8?B?OGFkYXFzZnkrUzhZY2l0MjlJZ040KzdJRzFyYThvUWU2SEVnanJrUHloMGhp?= =?utf-8?B?UzdhZFRya2RCbVh3eFFBWDhsaUJNazMxajhDWmk4NTl6dS81a0cvdXVTRnkw?= =?utf-8?B?eWFhOFZaSkpWWHpHMUh6bVI1WE9HTjFUaWxzcVNUdUo3cnlLWlBrLzBKQTJs?= =?utf-8?B?K0YvYmx2K2lkLzl0clNKUk9lRUFmYUJuaFBkTXMxTWpmTTBJUnhNdzh0aVg5?= =?utf-8?B?WUVvWFFZc0dpNnNKemt3b3EwV1RURUs1WEx4RFdrUVEwQ0txbDNGdmtjdDZJ?= =?utf-8?B?SGVSWS93ZFJUU05KQU1yQ1JPaXF0Wno2cHc4K3lvTDJ2c2tYWnVTZmFBQUw0?= =?utf-8?B?M1crTmhTaU9BVWdVclRDYXpsdE5OMWRDODhqZXVZS0pvNm9iRzduUXhJKyt1?= =?utf-8?B?cGlyWVJDNkpYMENFYW90OUVGTjllWVUxZ2xibUxUbHp3N1ZOaDNCbmIzMjNM?= =?utf-8?B?cS9RVnI2S3Z3U0pVcE9RTmpLU0VrTW1VcHNDQWVYdDg5cTEzQUhsUHJra3hv?= =?utf-8?Q?5Iqph4mxM3FLfIfBgdZn/uKgu?= Content-Type: text/plain; charset="utf-8" Content-ID: <3FE4F91D27F0E04893823C9B60DC5579@eurprd03.prod.outlook.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36c7e33d-cb71-469c-1b26-08ddd5d3c09b X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:20.2470 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 3Owx8BXOic2WjkxGIe4G2gdOha9HpqTAbv375zU+o8wpAJ8zmPgtyllXzoR3T/c8Sv8QeZbUY7Yktbz2QZDbQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591539826124100 From: Rahul Singh domain_viommu_init() will be called during domain creation and will add the dummy trap handler for virtual IOMMUs for guests. A host IOMMU list will be created when host IOMMU devices are probed and this list will be used to create the IOMMU device tree node for dom0. For dom0, 1-1 mapping will be established between vIOMMU in dom0 and=C2=A0physical IOMMU. For domUs, the 1-N mapping will be established between domU and physical IOMMUs. A new area has been reserved in the arm guest physical map at which the emulated vIOMMU node is created in the device tree. Also set the vIOMMU type to vSMMUv3 to enable vIOMMU framework to call vSMMUv3 domain creation/destroy functions. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/arch/arm/domain.c | 3 +- xen/arch/arm/include/asm/domain.h | 4 + xen/arch/arm/include/asm/viommu.h | 20 ++++ xen/drivers/passthrough/Kconfig | 8 ++ xen/drivers/passthrough/arm/Makefile | 1 + xen/drivers/passthrough/arm/smmu-v3.c | 7 ++ xen/drivers/passthrough/arm/viommu.c | 30 ++++++ xen/drivers/passthrough/arm/vsmmu-v3.c | 124 +++++++++++++++++++++++++ xen/drivers/passthrough/arm/vsmmu-v3.h | 20 ++++ xen/include/public/arch-arm.h | 7 +- 10 files changed, 222 insertions(+), 2 deletions(-) create mode 100644 xen/drivers/passthrough/arm/vsmmu-v3.c create mode 100644 xen/drivers/passthrough/arm/vsmmu-v3.h diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c index a66f71da17..f0971a76cb 100644 --- a/xen/arch/arm/domain.c +++ b/xen/arch/arm/domain.c @@ -708,7 +708,8 @@ int arch_sanitise_domain_config(struct xen_domctl_creat= edomain *config) return -EINVAL; } =20 - if ( config->arch.viommu_type !=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE ) + if ( config->arch.viommu_type !=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE && + config->arch.viommu_type !=3D viommu_get_type() ) { dprintk(XENLOG_INFO, "vIOMMU type requested not supported by the platform or Xe= n\n"); diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/d= omain.h index a3487ca713..25ee7c4290 100644 --- a/xen/arch/arm/include/asm/domain.h +++ b/xen/arch/arm/include/asm/domain.h @@ -121,6 +121,10 @@ struct arch_domain void *tee; #endif =20 +#ifdef CONFIG_VIRTUAL_IOMMU + struct list_head viommu_list; /* List of virtual IOMMUs */ +#endif + } __cacheline_aligned; =20 struct arch_vcpu diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/v= iommu.h index 7cd3818a12..4785877e2a 100644 --- a/xen/arch/arm/include/asm/viommu.h +++ b/xen/arch/arm/include/asm/viommu.h @@ -5,9 +5,21 @@ #ifdef CONFIG_VIRTUAL_IOMMU =20 #include +#include #include #include =20 +extern struct list_head host_iommu_list; + +/* data structure for each hardware IOMMU */ +struct host_iommu { + struct list_head entry; + const struct dt_device_node *dt_node; + paddr_t addr; + paddr_t size; + uint32_t irq; +}; + struct viommu_ops { /* * Called during domain construction if toolstack requests to enable @@ -35,6 +47,8 @@ struct viommu_desc { int domain_viommu_init(struct domain *d, uint16_t viommu_type); int viommu_relinquish_resources(struct domain *d); uint16_t viommu_get_type(void); +void add_to_host_iommu_list(paddr_t addr, paddr_t size, + const struct dt_device_node *node); =20 #else =20 @@ -56,6 +70,12 @@ static inline int viommu_relinquish_resources(struct dom= ain *d) return 0; } =20 +static inline void add_to_host_iommu_list(paddr_t addr, paddr_t size, + const struct dt_device_node *nod= e) +{ + return; +} + #endif /* CONFIG_VIRTUAL_IOMMU */ =20 #endif /* __ARCH_ARM_VIOMMU_H__ */ diff --git a/xen/drivers/passthrough/Kconfig b/xen/drivers/passthrough/Kcon= fig index fbd56eb990..d711123cac 100644 --- a/xen/drivers/passthrough/Kconfig +++ b/xen/drivers/passthrough/Kconfig @@ -41,6 +41,14 @@ config VIRTUAL_IOMMU help Support virtual IOMMU infrastructure to implement vIOMMU. =20 +config VIRTUAL_ARM_SMMU_V3 + bool "ARM Ltd. Virtual SMMUv3 Support (UNSUPPORTED)" if UNSUPPORTED + depends on ARM_SMMU_V3 && VIRTUAL_IOMMU + help + Support for implementations of the virtual ARM System MMU architecture + version 3. Virtual SMMUv3 is unsupported feature and should not be used + in production. + endif =20 config AMD_IOMMU diff --git a/xen/drivers/passthrough/arm/Makefile b/xen/drivers/passthrough= /arm/Makefile index 4cc54f3f4d..e758a9d6aa 100644 --- a/xen/drivers/passthrough/arm/Makefile +++ b/xen/drivers/passthrough/arm/Makefile @@ -3,3 +3,4 @@ obj-$(CONFIG_ARM_SMMU) +=3D smmu.o obj-$(CONFIG_IPMMU_VMSA) +=3D ipmmu-vmsa.o obj-$(CONFIG_ARM_SMMU_V3) +=3D smmu-v3.o obj-$(CONFIG_VIRTUAL_IOMMU) +=3D viommu.o +obj-$(CONFIG_VIRTUAL_ARM_SMMU_V3) +=3D vsmmu-v3.o diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index 15ff703458..193c892fcd 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -93,6 +93,7 @@ #include =20 #include "smmu-v3.h" +#include "vsmmu-v3.h" =20 #define ARM_SMMU_VTCR_SH_IS 3 #define ARM_SMMU_VTCR_RGN_WBWA 1 @@ -2708,6 +2709,9 @@ static int __init arm_smmu_device_probe(struct platfo= rm_device *pdev) list_add(&smmu->devices, &arm_smmu_devices); spin_unlock(&arm_smmu_devices_lock); =20 + /* Add to host IOMMU list to initialize vIOMMU for dom0 */ + add_to_host_iommu_list(ioaddr, iosize, dev_to_dt(pdev)); + return 0; =20 =20 @@ -3039,6 +3043,9 @@ static __init int arm_smmu_dt_init(struct dt_device_n= ode *dev, =20 platform_features &=3D smmu->features; =20 + /* Set vIOMMU type to SMMUv3 */ + vsmmuv3_set_type(); + return 0; } =20 diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough= /arm/viommu.c index 7ab6061e34..53ae46349a 100644 --- a/xen/drivers/passthrough/arm/viommu.c +++ b/xen/drivers/passthrough/arm/viommu.c @@ -2,12 +2,42 @@ =20 #include #include +#include #include =20 #include =20 +/* List of all host IOMMUs */ +LIST_HEAD(host_iommu_list); + const struct viommu_desc __read_mostly *cur_viommu; =20 +/* Common function for adding to host_iommu_list */ +void add_to_host_iommu_list(paddr_t addr, paddr_t size, + const struct dt_device_node *node) +{ + struct host_iommu *iommu_data; + + iommu_data =3D xzalloc(struct host_iommu); + if ( !iommu_data ) + panic("vIOMMU: Cannot allocate memory for host IOMMU data\n"); + + iommu_data->addr =3D addr; + iommu_data->size =3D size; + iommu_data->dt_node =3D node; + iommu_data->irq =3D platform_get_irq(node, 0); + if ( iommu_data->irq < 0 ) + { + gdprintk(XENLOG_ERR, + "vIOMMU: Cannot find a valid IOMMU irq\n"); + return; + } + + printk("vIOMMU: Found IOMMU @0x%"PRIx64"\n", addr); + + list_add_tail(&iommu_data->entry, &host_iommu_list); +} + int domain_viommu_init(struct domain *d, uint16_t viommu_type) { if ( viommu_type =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE ) diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c new file mode 100644 index 0000000000..6b4009e5ef --- /dev/null +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -0,0 +1,124 @@ +/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ + +#include +#include +#include +#include + +/* Struct to hold the vIOMMU ops and vIOMMU type */ +extern const struct viommu_desc __read_mostly *cur_viommu; + +struct virt_smmu { + struct domain *d; + struct list_head viommu_list; +}; + +static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info, + register_t r, void *priv) +{ + return IO_HANDLED; +} + +static int vsmmuv3_mmio_read(struct vcpu *v, mmio_info_t *info, + register_t *r, void *priv) +{ + return IO_HANDLED; +} + +static const struct mmio_handler_ops vsmmuv3_mmio_handler =3D { + .read =3D vsmmuv3_mmio_read, + .write =3D vsmmuv3_mmio_write, +}; + +static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t siz= e) +{ + struct virt_smmu *smmu; + + smmu =3D xzalloc(struct virt_smmu); + if ( !smmu ) + return -ENOMEM; + + smmu->d =3D d; + + register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu); + + /* Register the vIOMMU to be able to clean it up later. */ + list_add_tail(&smmu->viommu_list, &d->arch.viommu_list); + + return 0; +} + +int domain_vsmmuv3_init(struct domain *d) +{ + int ret; + INIT_LIST_HEAD(&d->arch.viommu_list); + + if ( is_hardware_domain(d) ) + { + struct host_iommu *hw_iommu; + + list_for_each_entry(hw_iommu, &host_iommu_list, entry) + { + ret =3D vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size); + if ( ret ) + return ret; + } + } + else + { + ret =3D vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_S= IZE); + if ( ret ) + return ret; + } + + return 0; +} + +int vsmmuv3_relinquish_resources(struct domain *d) +{ + struct virt_smmu *pos, *temp; + + /* Cope with unitialized vIOMMU */ + if ( list_head_is_null(&d->arch.viommu_list) ) + return 0; + + list_for_each_entry_safe(pos, temp, &d->arch.viommu_list, viommu_list ) + { + list_del(&pos->viommu_list); + xfree(pos); + } + + return 0; +} + +static const struct viommu_ops vsmmuv3_ops =3D { + .domain_init =3D domain_vsmmuv3_init, + .relinquish_resources =3D vsmmuv3_relinquish_resources, +}; + +static const struct viommu_desc vsmmuv3_desc =3D { + .ops =3D &vsmmuv3_ops, + .viommu_type =3D XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3, +}; + +void __init vsmmuv3_set_type(void) +{ + const struct viommu_desc *desc =3D &vsmmuv3_desc; + + if ( cur_viommu && (cur_viommu !=3D desc) ) + { + printk("WARNING: Cannot set vIOMMU, already set to a different val= ue\n"); + return; + } + + cur_viommu =3D desc; +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.h b/xen/drivers/passthrou= gh/arm/vsmmu-v3.h new file mode 100644 index 0000000000..e11f85b431 --- /dev/null +++ b/xen/drivers/passthrough/arm/vsmmu-v3.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ +#ifndef __ARCH_ARM_VSMMU_V3_H__ +#define __ARCH_ARM_VSMMU_V3_H__ + +#include + +#ifdef CONFIG_VIRTUAL_ARM_SMMU_V3 + +void vsmmuv3_set_type(void); + +#else + +static inline void vsmmuv3_set_type(void) +{ + return; +} + +#endif /* CONFIG_VIRTUAL_ARM_SMMU_V3 */ + +#endif /* __ARCH_ARM_VSMMU_V3_H__ */ diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h index 0a155fe615..d6201df06a 100644 --- a/xen/include/public/arch-arm.h +++ b/xen/include/public/arch-arm.h @@ -327,7 +327,8 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t); #define XEN_DOMCTL_CONFIG_TEE_OPTEE 1 #define XEN_DOMCTL_CONFIG_TEE_FFA 2 =20 -#define XEN_DOMCTL_CONFIG_VIOMMU_NONE 0 +#define XEN_DOMCTL_CONFIG_VIOMMU_NONE 0 +#define XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3 1 =20 struct xen_arch_domainconfig { /* IN/OUT */ @@ -450,6 +451,10 @@ typedef uint64_t xen_callback_t; #define GUEST_GICV3_GICR0_BASE xen_mk_ullong(0x03020000) /* vCPU0..127= */ #define GUEST_GICV3_GICR0_SIZE xen_mk_ullong(0x01000000) =20 +/* vsmmuv3 ITS mappings */ +#define GUEST_VSMMUV3_BASE xen_mk_ullong(0x04040000) +#define GUEST_VSMMUV3_SIZE xen_mk_ullong(0x00040000) + /* * 256 MB is reserved for VPCI configuration space based on calculation * 256 buses x 32 devices x 8 functions x 4 KB =3D 256 MB --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591528; cv=pass; d=zohomail.com; s=zohoarc; b=Wzny0CNYcT9hbUfgJyCUmBJbFpeeE492DjiBiASDsI7AJVmzrl5Gh6QKp2YEYxo9i98q+IUg0z8EmVW2O7P9RikeojhHRPkUvbdCeqIPZ351eQO/KTaKYvraOAKF9zmBKYMhH7mV0j6/ehV5XqzklR0BRg9Z/wCCDvyMOJEi4As= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591528; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=68Lx4fYKL1tbLIfAe1PTz0kH1D8goLZ77LQnqJ/GQNI=; b=K8hip5EqVzRKyCHz3NGP6kTfX+YbqYlY//sycCTts0FhiBGb3TcVLt3YYTXkMr6RrXuyufuQIExURaGAURXdAdZTG5m9N6AfDC3MV+Fp68dk9mReSCayF4oIvM5itxp1cGug+dzuecmTXnA0MPOb5tOw3a/sFVx4JqFrVlbAdcA= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591528686274.864511624932; Thu, 7 Aug 2025 11:32:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073337.1436333 (Exim 4.92) (envelope-from ) id 1uk5Oz-0001Fd-BU; Thu, 07 Aug 2025 18:31:45 +0000 Received: by outflank-mailman (output) from mailman id 1073337.1436333; Thu, 07 Aug 2025 18:31:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5Oz-0001E4-3J; Thu, 07 Aug 2025 18:31:45 +0000 Received: by outflank-mailman (input) for mailman id 1073337; Thu, 07 Aug 2025 16:59:25 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xd-000773-BM for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:25 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id de729565-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:23 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:21 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:21 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: de729565-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YyaKF9QaRa7MqtmUYgfjKKLs/ZZJujI7yOfLJw2wmxKIUINTrSUYPi0koxChrUAwq0cztICulF7sbJR00BJyzJGv2PfiFl92ycqvv5uiysMiFlJBZu3GEkSnxOV28unRmnqbqtVAWNoyXs0Z/BMkWfUEAcCv5gP+nZ716YL26safsEzFCPiTxClk/QY0J412nN9hbW1/Z8ESmts/1adpbt/ZuK9zPm7wqvjr/yTozkm6z1/RYMZ+thAvZ+UB+v0ttc1FpS6JuysBjQCqn3Ker18/VsDgV92TUusV5reg3Epr1go9lbPCbLyYV6pflB3yceXa7eR5IuPlpuxsEDNfvw== 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=68Lx4fYKL1tbLIfAe1PTz0kH1D8goLZ77LQnqJ/GQNI=; b=WRSDfGM+P0HL3VEDy4O+7YubluhxW64/+LEuxWSEt3ZMrxH62w41nVilQFDeP+JaQjUJ9RHlJPPfZ5YQjSRQpgT+X2tjcjKKYdPdmfHlMuS2caSY4hHDgnjTqBSTM2r8+cp5qghq2ywEDXzmqr3LpbQViP3F+osl4S1rT/42gGrPnxrf47hxhwVIL841mTuEapDu1go8OC3lj+3eQAzib3UW3t5pvW2IcH2u6kYmzA/B/mJLjD34ttNNOECiVvuDeoynp5sNX7gjG3F7woOhxoMjNNGQro3woD08l5KLDT5f7SwgFgSb8x2dYmsEpabw8GqFJcpQT1TZwP5IdZxOqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=68Lx4fYKL1tbLIfAe1PTz0kH1D8goLZ77LQnqJ/GQNI=; b=HzFC/mSsMiCBiVsd8htYoPg8Z3kAkPDdrAEmZoBidWbrQKQV8GWP23LY3Sni7PWIcez9ULdwTL3rhzHKlQn2G6sw7hXQpo2JveTAl+d2JZlhDt40ofjQmxcCtQ8CVSQ53c0c02hRNbPp+PeiAJUuQ6eZa1nvXHCadWl45JYt/C1zb+ufMM9burz9k/NVLmNcPtlv7/vupMcBUgNlAv6tY5lwB7r9ktFZHMGlVkCSmk4lqrRfI/dFE53Uu+q70Cp8vxLmcRJoCdEnFbzqRzrfhJKCZqqP7C5Z7hsReo2ICMax/MGjUI5ZdQuOb3/7w1hH1kCVkIy1MlkcN2v/uGHYhA== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Anthony PERARD , Nick Rosbrook , George Dunlap , Juergen Gross , Milan Djokic Subject: [PATCH 06/20] xen/domctl: Add XEN_DOMCTL_CONFIG_VIOMMU_* and viommu config param Thread-Topic: [PATCH 06/20] xen/domctl: Add XEN_DOMCTL_CONFIG_VIOMMU_* and viommu config param Thread-Index: AQHcB7yeWtqOMnUc4US5ATSpbJFzIQ== Date: Thu, 7 Aug 2025 16:59:21 +0000 Message-ID: <76c461a4af7c824bc9a3d0958733ddb12ee724b7.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 3e2796bb-0ade-4324-bcb6-08ddd5d3c146 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?QCA/y03v3my8S98zN6F7XKkqts3vaCMR0jsLzbX8CH3uD1LXIfDgIWm6uD?= =?iso-8859-1?Q?mp1En9GAs53Ay7VwFrtEP+4whznZSqkD2NFCmuZZlNacKJUbHyNfbZENZn?= =?iso-8859-1?Q?Kxy7L8A27qd99xGMIPHy9KDxnzJ05OW8KePnAEg6QoGFg1KqORFj+vexAu?= =?iso-8859-1?Q?liwSpGq34/CD8MfDqZzbUKsUO6pDCJoT6Hcug0j31Af+Lpp7N6Ahcqr4La?= =?iso-8859-1?Q?YoHh99P6wMKBZmqV1+GR8NoEXr8iLw+MHO9EB2MMB9FZBRFdN4zzyd8fW4?= =?iso-8859-1?Q?1LFQ1xRTikSU8ryHqYsYqdH4uwaDQ6FoZZ39g7Aoo5qrwpKwEBJctfLLF1?= =?iso-8859-1?Q?ok7B/Gm9vS+WW+YesjsmB7JG7ZeqnUqareItYLO5jeGzQNqF6R60C086ex?= =?iso-8859-1?Q?6eFeMFz/1P7wPxcMWftGJvi5HvxGguGRDVQNWeYFvXcmVaNGoVcfkALiLU?= =?iso-8859-1?Q?R8HxiS/vhgIuhprp1EW6vE9i7UG9jyMr/0h2ocuTdqVJh8A6YEPVzk0E4+?= =?iso-8859-1?Q?jhViY2A0p4O86yMB0VKdxLL063KTj0psWCjd5l0CTeBUAhBgcLJEjz7Jcb?= =?iso-8859-1?Q?etpFHPfFhH6iTvQSuSpYTdKePpaQHQUcsSytyM/WJ9xGiu6gFQFcRbc1Gu?= =?iso-8859-1?Q?Efh0mZCO58IAhzIMcXPlzDJ1dB8LRzck/7/JU43rds8QxqFubWZDFECckX?= =?iso-8859-1?Q?C31mZbzo5hDHXAFRFf4Q42Six4+wA/hLMhsK/5GvRDZ4hQX8h6yp4UIGdg?= =?iso-8859-1?Q?iPNk3+KCxSLKLzM3hzxMDtQjAhoyga41FVlhe3ns8HrnhfFrBvpR9mbMOC?= =?iso-8859-1?Q?Hbkslnbfvuk3hbAXg+hughdCaGdMeR+QusL5W4W7FpsxxBY33QYWaggZ7C?= =?iso-8859-1?Q?308+tq6J44Pf7TJ8otJcCcAtbB2PRugOeLUPXwD1CF2wuXWk3hZJ/miQxg?= =?iso-8859-1?Q?hc2tmdX8NV3ufovWiyqc9FqVVBXstpzeiQoJUdzWQpz7rHb/zPEwJSK6Lt?= =?iso-8859-1?Q?GAHlyfPOqcHy4zTJ9AIWgFqII1mHFkT40vzVlF2CS323Zh3EqwsxblBMcR?= =?iso-8859-1?Q?0K2iryrBliYgt9/8Ls9npwbNS/77Vq1nzvqYGYcwn/TX40CHyMLsUM9oio?= =?iso-8859-1?Q?qAbqDwudL8sAV+mmBxwhQ8zrsOwNVy/4JqcQONiSH08wzNZoKhA60ZHOPl?= =?iso-8859-1?Q?s0AxIajhedS7U6SC1swGEcQ5sv5U6gumOnWnQNle5PwuiadMLOtmMk5kCm?= =?iso-8859-1?Q?XkZIWlWnkhEMmqlDA49F5fL0j0BaeZGtYH7lh6uByD7CwE3qgEvCTtzXDy?= =?iso-8859-1?Q?IET0jGWWoRBGra9RbN+Z8htOyOuBptCBxlkh53NIeERHL0V3PR2wAkblhM?= =?iso-8859-1?Q?rNO76/lhvQfO/Jo/soM2FottNZwSuh1fex746WU7vCe1BRZaa8ykds1XSy?= =?iso-8859-1?Q?ZdTLXkQLWNzOSa/OUvuU4wU8cFLhnSoTeeLTGH+GQlsHBskLZoLS4Z1m6m?= =?iso-8859-1?Q?c2efFXfWy5VDb5jtR3HKS9qcL5E241B2ZRk4LL6n8iUQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?D1JxLFcwcj5o9FdhXPHc3DJc88eBi1fblIItGhQJOxzBM7h9bMeKrhjCkc?= =?iso-8859-1?Q?xzL4S8G9t/7WV12o4c0IHi9uMlMVN78OaTKMQ1LCMoCdFdv5kpg0lIlgPL?= =?iso-8859-1?Q?0x/WjeTsSFguhovO7DceQ0vW4tPyfwc26NuM5i0/kH+DWSOcKAPzBdao9I?= =?iso-8859-1?Q?CfrqP4JaqmtNXxEL3BkwSf+czBnN5VPQh5eetq6v/5EyxYS0x1Hp6IK1zx?= =?iso-8859-1?Q?VnRK4B3d+LV2HOU4zWzpL3lMUFTIdgSnk+eRSMQzegrEE5bT4XZJP3lkT0?= =?iso-8859-1?Q?rw2+SEa9DEN5PCd1sqBbZvMrQwCIzoyMj+drnQdMUHfgUtCGGJamERh0v3?= =?iso-8859-1?Q?vbk77xOOaDcJbsYmQD/z3urpCx2nESObinRcWY229VioxbvErw78pR6qhi?= =?iso-8859-1?Q?1cfv/nc/gSzEcoKreezOaY8KFPbkYmAKXY+vrcGEavHIPG1LgnfYf0rgwA?= =?iso-8859-1?Q?LeCbzekrG3arkkUoCV//nO6jSj07JxavqT6BiORdFkKqPRwrMXjej47fa3?= =?iso-8859-1?Q?87xoFauEfciFvLGPisaA83HAAwmONf5+f6FrCFbzsd6zTqTmJ6nM7P2JH4?= =?iso-8859-1?Q?ji+uX805vxHJQlPfVOk10kt0KRA5a6SKpG6G/KRwryJBcQE9ZT73yQn/JW?= =?iso-8859-1?Q?1ZkKA0RGKBLsZ00PwM/A0lAWqkJQoLLHFgJ+3SuKk8xv7JPuHfSf935/3i?= =?iso-8859-1?Q?tGAyR0ae3SgzBV1I93EWZ9GJm1aZrAltSbDANOTbMKeTh0uDNVI0VpiPL7?= =?iso-8859-1?Q?NoLW3oHZQPYwPJw9i5t5Y6/aPag2dig3LXCJmgcLJfrrcvtshunsLh2bc2?= =?iso-8859-1?Q?TaiVz8seGYQzdxZ4NPzIo4E/v+PPWkAoiL/s1GQVOOqt80Jw+N67pFu9dX?= =?iso-8859-1?Q?7YDUKOYHpqqQOwt8+nbJSgsMmrNdPXdQwczvIy3p2VFNco8Gib6vm+YdEQ?= =?iso-8859-1?Q?GQwNJkZLR7hScf+M/PUS+5xLvpzPRYaE+CRVxSU5ZGEOISRf1IrkJ8Wvdr?= =?iso-8859-1?Q?4/JO9S9U3QoekAolmaul2tmsyuVKyKM6FVjxThFZJic9CtroflrOj/72mV?= =?iso-8859-1?Q?9zIiy/Hi2OJT0uPKzwLUQt0ntCd8c5JJmF3rHpDSwI1QmR5PZe2h7qjIiI?= =?iso-8859-1?Q?954t4ze11JVrjyvGJEu+W1gr6tI+D9SFJzCoprvnXGy46exTAiD55mkZGR?= =?iso-8859-1?Q?YHObHO9qsu+F8/ri0DQAjy5C+ElDseDxQpm85wIdTydlCvQkjEFRvt0eoo?= =?iso-8859-1?Q?mUeCUCe0Sb4q+pTbTkPdbu/wmyAwHk2evl0lEyR7N49NW8SzVVdAN43Xh3?= =?iso-8859-1?Q?0KkSnQi8z2zHX3/9004TpAmghbZfQdIhFdBM1mwuEyjJBU6daiO4CDhL5h?= =?iso-8859-1?Q?aQYrluVL4AGZW5uVxaIiqnsivcJHKQsOaEk2ykdqnLZ5apVibth4yed9Xl?= =?iso-8859-1?Q?vJJ7jUGaLvbD6jmlA82KiKee5Jsh5YkSHeO/T3J2eXVRlTgJUFesZwrFMW?= =?iso-8859-1?Q?RzUKVKo44l/yC7T3VTDTci7+Xolwc0oMTbFxYBrrycl9u0NC9gR7rYUQj2?= =?iso-8859-1?Q?E9dyJX7XHYZRu5d1OP7ryIuNLC/157VE3ROq+WnT2LwvhyWwvVQpLYuvnC?= =?iso-8859-1?Q?qxxo8UjKmLO/vFqnQYEzqEfEAZE4ex5AUz?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e2796bb-0ade-4324-bcb6-08ddd5d3c146 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:21.3727 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2ORdUYyjCsDXmmxg+2nHqwmJgnmkYZipz8YThVl9ZpZiuI0lLf233zBtDllfNXkQhbvp0YlRcp0cxJvajzdzig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591531762124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Add new viommu_type field and field values XEN_DOMCTL_CONFIG_VIOMMU_NONE XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3 in xen_arch_domainconfig to enable/disable vIOMMU support for domains. Also add viommu=3D"N" parameter to xl domain configuration to enable the vIOMMU for the domains. Currently, only the "smmuv3" type is supported for ARM. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- docs/man/xl.cfg.5.pod.in | 13 +++++++++++++ tools/golang/xenlight/helpers.gen.go | 2 ++ tools/golang/xenlight/types.gen.go | 1 + tools/include/libxl.h | 5 +++++ tools/libs/light/libxl_arm.c | 13 +++++++++++++ tools/libs/light/libxl_types.idl | 6 ++++++ tools/xl/xl_parse.c | 10 ++++++++++ 7 files changed, 50 insertions(+) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index f0c920b39d..25e9be073c 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -3125,6 +3125,19 @@ This option is only implemented for Arm where the de= fault is enabled. =20 =3Dback =20 +=3Dover 4 + +=3Ditem B + +To enable viommu, user must specify the following option in the VM +config file: + +viommu =3D "smmuv3" + +Currently, only the "smmuv3" type is supported for ARM. + +=3Dback + =3Dhead3 x86 =20 =3Dover 4 diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/h= elpers.gen.go index 667030cbd7..23635afefe 100644 --- a/tools/golang/xenlight/helpers.gen.go +++ b/tools/golang/xenlight/helpers.gen.go @@ -1163,6 +1163,7 @@ x.ArchArm.GicVersion =3D GicVersion(xc.arch_arm.gic_v= ersion) x.ArchArm.Vuart =3D VuartType(xc.arch_arm.vuart) x.ArchArm.SveVl =3D SveType(xc.arch_arm.sve_vl) x.ArchArm.NrSpis =3D uint32(xc.arch_arm.nr_spis) +x.ArchArm.Viommu =3D ViommuType(xc.arch_arm.viommu) if err :=3D x.ArchX86.MsrRelaxed.fromC(&xc.arch_x86.msr_relaxed);err !=3D = nil { return fmt.Errorf("converting field ArchX86.MsrRelaxed: %v", err) } @@ -1699,6 +1700,7 @@ xc.arch_arm.gic_version =3D C.libxl_gic_version(x.Arc= hArm.GicVersion) xc.arch_arm.vuart =3D C.libxl_vuart_type(x.ArchArm.Vuart) xc.arch_arm.sve_vl =3D C.libxl_sve_type(x.ArchArm.SveVl) xc.arch_arm.nr_spis =3D C.uint32_t(x.ArchArm.NrSpis) +xc.arch_arm.viommu =3D C.libxl_viommu_type(x.ArchArm.Viommu) if err :=3D x.ArchX86.MsrRelaxed.toC(&xc.arch_x86.msr_relaxed); err !=3D n= il { return fmt.Errorf("converting field ArchX86.MsrRelaxed: %v", err) } diff --git a/tools/golang/xenlight/types.gen.go b/tools/golang/xenlight/typ= es.gen.go index e26b3cdfc7..23f5a300e0 100644 --- a/tools/golang/xenlight/types.gen.go +++ b/tools/golang/xenlight/types.gen.go @@ -599,6 +599,7 @@ GicVersion GicVersion Vuart VuartType SveVl SveType NrSpis uint32 +Viommu ViommuType } ArchX86 struct { MsrRelaxed Defbool diff --git a/tools/include/libxl.h b/tools/include/libxl.h index 185f74d8a8..f985426ae1 100644 --- a/tools/include/libxl.h +++ b/tools/include/libxl.h @@ -313,6 +313,11 @@ */ #define LIBXL_HAVE_BUILDINFO_ARCH_NR_SPIS 1 =20 +/* + * libxl_domain_build_info has the arch_arm.viommu_type field. + */ +#define LIBXL_HAVE_BUILDINFO_ARM_VIOMMU 1 + /* * LIBXL_HAVE_SOFT_RESET indicates that libxl supports performing * 'soft reset' for domains and there is 'soft_reset' shutdown reason diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 4a19a8d22b..44b7bcd672 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -233,6 +233,19 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, config->arch.sve_vl =3D d_config->b_info.arch_arm.sve_vl / 128U; } =20 + switch (d_config->b_info.arch_arm.viommu_type) { + case LIBXL_VIOMMU_TYPE_NONE: + config->arch.viommu_type =3D XEN_DOMCTL_CONFIG_VIOMMU_NONE; + break; + case LIBXL_VIOMMU_TYPE_SMMUV3: + config->arch.viommu_type =3D XEN_DOMCTL_CONFIG_VIOMMU_SMMUV3; + break; + default: + LOG(ERROR, "Unknown vIOMMU type %d", + d_config->b_info.arch_arm.viommu_type); + return ERROR_FAIL; + } + return 0; } =20 diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_type= s.idl index a6030a2dbd..0c8d2c7156 100644 --- a/tools/libs/light/libxl_types.idl +++ b/tools/libs/light/libxl_types.idl @@ -551,6 +551,11 @@ libxl_sve_type =3D Enumeration("sve_type", [ (2048, "2048") ], init_val =3D "LIBXL_SVE_TYPE_DISABLED") =20 +libxl_viommu_type =3D Enumeration("viommu_type", [ + (0, "none"), + (1, "smmuv3") + ], init_val =3D "LIBXL_VIOMMU_TYPE_NONE") + libxl_rdm_reserve =3D Struct("rdm_reserve", [ ("strategy", libxl_rdm_reserve_strategy), ("policy", libxl_rdm_reserve_policy), @@ -725,6 +730,7 @@ libxl_domain_build_info =3D Struct("domain_build_info",[ ("vuart", libxl_vuart_type), ("sve_vl", libxl_sve_type), ("nr_spis", uint32, {'init_val': 'LIBXL_NR_= SPIS_DEFAULT'}), + ("viommu_type", libxl_viommu_type), ])), ("arch_x86", Struct(None, [("msr_relaxed", libxl_defbool), ])), diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index 90c9386f5b..32236f7e5f 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -2989,6 +2989,16 @@ skip_usbdev: xlu_cfg_get_defbool(config, "trap_unmapped_accesses", &b_info->trap_unmapped_accesses, 0); =20 + + if (!xlu_cfg_get_string (config, "viommu", &buf, 1)) { + e =3D libxl_viommu_type_from_string(buf, &b_info->arch_arm.viommu_= type); + if (e) { + fprintf(stderr, + "Unknown vIOMMU type \"%s\" specified\n", buf); + exit(-ERROR_FAIL); + } + } + parse_vkb_list(config, d_config); =20 d_config->virtios =3D NULL; --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591537; cv=pass; d=zohomail.com; s=zohoarc; b=ac8fqp+Xu+78Cf1FY+ILylTED4NnGqqLwHejqF2w3yE3DNZXPeObh2tZ8VSqMQq4pRWi1BakjIyKgaM3uGXKyMnfwUAB2Az72j2lwSiLlw7290msHayTYcEYAwDgGWGV3Ov7/z81D6KktoX8qln5WLJqRmbl9Y/8EJUaUaVHREs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591537; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IkqYZa3FRTnOPpkwt/VlfgBuNz63zorMdd4FHR0PPWg=; b=HBmqMinAJ8WHSpIteRrpA33qSL+VeQw5mQmzy4B5AFMDYCSEG/SSIfRD/g546lD2JJ+kZauZUNK2leQ48ndD5jZ7HaUWXBY5cVHJzG3XG835c1iHsu3ISQg5qkQm/JRo0MlW6hkXW7OiqelIDeJkw48yWv7X68vdS4TFRNmPY0U= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591537401788.8522226668857; Thu, 7 Aug 2025 11:32:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073339.1436342 (Exim 4.92) (envelope-from ) id 1uk5P0-0001PF-0C; Thu, 07 Aug 2025 18:31:46 +0000 Received: by outflank-mailman (output) from mailman id 1073339.1436342; Thu, 07 Aug 2025 18:31:45 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5Oz-0001Ne-J1; Thu, 07 Aug 2025 18:31:45 +0000 Received: by outflank-mailman (input) for mailman id 1073339; Thu, 07 Aug 2025 16:59:26 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xe-000773-Sb for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:26 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id df5dba48-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:25 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:22 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:22 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: df5dba48-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WTYTZzlxLAFXorSc6HULDVixECOv0y+cJNkpDAD3V22BVWOidY6Jb7PX+biL5vDatcnfhd/Tf6WNZmUM2sOyTu/aiNqWpEbupUl0tEuJxDRAEVHASPSFW3Q0HQm86n+3Iq/jz0J4TRtbcRGPx31cQUOo6y86rqeGamoI4zqubYwXlUuH/3l2yYczu8FGk8p3jFewVS80eVmvnv14yKO3poHG6K9AcgzwdWiJ2A0qJ+wowbGgZpDw0A/3qlTkqXXztGqFuO8Z41YRP5pHzwgc5jb9KwDBtNXaM7RtY+a225MPxVjqCqjbyFX8oCqtMMwoQshZBepJND20GWIPrd9Dog== 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=IkqYZa3FRTnOPpkwt/VlfgBuNz63zorMdd4FHR0PPWg=; b=l8xzvBSxICnXXU4VHqMr8Vde16iCIp/t1VkS7JJYm2TSCkwDZjZnFm+Q+q0ACOD1mo909RyzC7LNhAphzAvdkLDDVtiIDPthGThh7CIdX1NYav1nda/SkQqVAqmspf4vpvhUkHXsLcNPT15levgO9w8ge9mxofFVetUCZaVlw175WwxcP9jVh1uRmkbU7Nb8DFbvrixbiJl3sS78Ucfeq8umxBkKLRAQOMuu0qpiI35+xiFsqOMaB/XOo/CmgKTDWC9HhUcDTtwuHa1ig/8O9B1Mf11r2OsOCZGxBLKdIVZkAxOOcaForgbB1+WDvHjtc/IK5EWS4C3fW2nCijX/yQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IkqYZa3FRTnOPpkwt/VlfgBuNz63zorMdd4FHR0PPWg=; b=eXjLWjo36rSfapjsD6VgpUWVpjrNNw0EERndALePxtkdEiiICcUyTLW/6ncOolNhTKfjBKPsV23w6vXsO0Ts8k/WWQbHSpmZ+2oyQ0smYCOCUXqLrmbqQu/mhSj3V/UtwJylrogCIfs/FMh2Tan3SEhQx5w2d43iLQd46nI2rGx899VQ+NPyfUqLvNNlUZAI5pXw91R1RwvBtNFzkJYP0PxidsRFVx+2Dlxd8VtLc6qkyDcGKJ/e4wHu3XGhnQj1Q1ANhKgTmXCbnY5FrUgn1+Mw0KshcMp1G01wYUFJ0ChmSmb5zSHbHuqcPaDimMldnHtjiiHK/lQjiQjZEOq4TQ== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Stefano Stabellini , Bertrand Marquis , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 07/20] xen/arm: vIOMMU: Add cmdline boot option "viommu = " Thread-Topic: [PATCH 07/20] xen/arm: vIOMMU: Add cmdline boot option "viommu = " Thread-Index: AQHcB7yfTy1RKYdeLkuvW3i0Y8QAyQ== Date: Thu, 7 Aug 2025 16:59:22 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 184e54df-0695-41ea-daed-08ddd5d3c1e8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?E8abdjsECdzJASM0ki5Nd3CgoBkDykccYWjOWNcB+gzS+RkR1J2gUR265h?= =?iso-8859-1?Q?IKQe42mCSt7nc9K0ZPiyHSxJ3HCh6uCK8ILy1J9vnWaTQja78+HqfWNHQ+?= =?iso-8859-1?Q?+aRNaED9uasatuYKd6BlpniRUSMRHM3a6mW/KcReeVv02hm7ZjT9Cz3xB2?= =?iso-8859-1?Q?OUFXfvRlO2DJX+osR/8uP1Y4v9g9QDm82nx7gh90U97cbXVE02YsSGgWuW?= =?iso-8859-1?Q?ypnu/stoSxdFzZHUp/1Ir4N5uDUpw7PfZhKyeq3nqK/XzRdbB8tjOsiTPa?= =?iso-8859-1?Q?QxmU4O6cm8IrshwKepPa6b3BTepsMbro2OsiG0wAlBQhTYuXziWxHcmL0i?= =?iso-8859-1?Q?Z3gukAjsiWOM21GfAUDJ0AUPgE67ClhxkuT7PV8/2TK4M8Fa0/65qGKrdc?= =?iso-8859-1?Q?O9rG53nAQOOmZoDx8ueSyzzsdl35auAfuLvajg0opMoWiCvaJqiEvF9otE?= =?iso-8859-1?Q?0/OTo6eIuyw7GKaKi2vdYM/w7k4MnEH8fjndJ7OdNOvvTzXeKdnZ39ptu0?= =?iso-8859-1?Q?UC+P3oc0Wp/wdZ/Hxu6wqCMZrNdBd7WxsJhdvteiltN2557GxMfsB5D4MN?= =?iso-8859-1?Q?dObq78P/kyt9DmMykhinFGjdvJOwp8kd1lz2jGJHMMSaVdkZinF1twD6th?= =?iso-8859-1?Q?NEofJBmoxFMf/LrpJRP58jEP7YudlywjArWDcUJlJgNah/rbrszryTGV6Y?= =?iso-8859-1?Q?IUMGVqsgU837Pn9YM7gxJcq9EKZElvWgoYku8gN/QbXz8joAftVnETTiiz?= =?iso-8859-1?Q?GrUXkEEMH3KCKH17+aaFZcD8S1m9XC3Yz9k2Ngkl2Etcb/HWWbutxSQqWn?= =?iso-8859-1?Q?hzAZVyfeHEY3eTEXihSUli5t7ArpPC9OmhYxPAZMU87rwmZXRPXLMa7Sry?= =?iso-8859-1?Q?7qXu+zVoim6PNJwqzoBFNFxp1GiwtmkCxKj3XJX6LmbYGY/t6CDBkce0cW?= =?iso-8859-1?Q?39oZTGdsBIfkPpPY4tgUN8cKJLaCNTHdD+Vq8f2ACOWtuubCOMtuDCKmSP?= =?iso-8859-1?Q?EHEuqXqk4AU5ige/Uj+wT7Awp3qHWEcNj3VAr/ykp74LizqsCBitGeZM+i?= =?iso-8859-1?Q?9Yn0+W6/8lGpT/V358kCsJLOJ9MkGwawBxx9rNK9mPFeZMBEwTU+Egotwf?= =?iso-8859-1?Q?Bhf0+AThaS+HNd9l38IvoBXTghwP7YPf/Frx6YqNDdB3rsyFBqaV+MhE+g?= =?iso-8859-1?Q?vMiDAGLssxYG5WHEWbv4aKA7XpH+FejCb+vOkIQnY/LCxHjaRjj8ophAOc?= =?iso-8859-1?Q?8vgwUmJ6dwwsnqSIZmHRzPEEadEX91tYCOySIGdOLR7BqU5a+bFlsHE4f8?= =?iso-8859-1?Q?Vfgk/fU+0qNoMDFMRN1e+6OvjZCJPrXilRA5oBOnoUkvEgK/NwTbeDuAaP?= =?iso-8859-1?Q?P2tk42DNwkTZOfelJXraKmrofoWEGwg9OrqJhygrZ2vicGhonP4UOHDJ7U?= =?iso-8859-1?Q?Jh8f9eLixce56yiUty6d67qKYleNCBIgwkTuhPCEeRtz6+modhWEVDUrni?= =?iso-8859-1?Q?rEKaESstTbexZV2+kkFi+En8nDSSJ265HKljZFr3Ywjw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?/0mbGkKn2N2adDv4N8Avw6EV2jwtd8yykfQHxxHrmuQR2jy06tfyt2jAWh?= =?iso-8859-1?Q?ri+Nvd04EVe1FbDYautQF0JMKo89loee80+z+c1t9WluTu4iVHSC7k/dEY?= =?iso-8859-1?Q?tziLpnPHuyH0KMhT8RCCIP9MlnK2Fgv9RbYMTgJoyo4MIRNhbPqNdMLsHs?= =?iso-8859-1?Q?St9DG1o1S12cAVDlXAz06aJvc7u03UPBuW2IpdBrOb3NltyUEzHJmX426H?= =?iso-8859-1?Q?x4yvFSQ3mTTeXwhwm4Vp0AeRK1pEnBLQbzeayaWpdedVP8Sf32y4ymsAaF?= =?iso-8859-1?Q?UP9s8johPmMPN/L9kr64eWaPqiyxlblJRhmOhOfaVRaSfT97h+DBlZfgRv?= =?iso-8859-1?Q?nm7KhJuo59TdPhbJu21luqmBUtNPitnxV2AZoHk092xrRM5ZE3EAHL5N7w?= =?iso-8859-1?Q?eOUJzTnRo9uqe9V3tGZoE3D12LqNQmcLbmprDbln+BGmWZezH60dy3pPEY?= =?iso-8859-1?Q?1X/6cyhIoyFRvU5tQpUvsOhWM+AWAjf2ZIv4Qj/8yMMbaQsUiV+Lkaf9UA?= =?iso-8859-1?Q?YHvrkoqrFiOvalBTz9AUK8kb0Dki8I+wAhY/64Fov1ZQRkNiMqKt0ISSUg?= =?iso-8859-1?Q?pAqSqnMgBuTixmKlP3momAUxZAidrtPQSMCf/fA/+RmauEkOFcDLjDfMa2?= =?iso-8859-1?Q?v0bbUesxvVqfzJQUHt98sfmeWkpCwaew3wTCxjYppwF8/Dvl5uN1+fyC7c?= =?iso-8859-1?Q?MfjppUYudbcrlfK2Bie17h/Q49v9bcfL6ocHC+OYjgnkXTCaRafzEXJ4YJ?= =?iso-8859-1?Q?FXu2wAcruMddEWOTvqAsSPW4Mt5HH8/eAeVVitAjwSBCVXxRF7AGHBPhCf?= =?iso-8859-1?Q?oD/f2Ef/RYVRhbJ6Q0sUMxzrXUcyPJkFXk11oMzHILmprMwErlQjlK2CPT?= =?iso-8859-1?Q?x2aIo+tWIBqS6JXu2NoroScz1e+4LqrAl2IXBjeaF7VD0zxoyTx7u42RGe?= =?iso-8859-1?Q?zXArZSZ7VT86/+1aUWlAowjcOxWcc0AX18nzxCbkI3bk81oCllORSxMv4V?= =?iso-8859-1?Q?nkf++QtIBLvTMp8D1XeptjeyRr/171cEO36EFqCDuN4ZELQetvhthVRJGe?= =?iso-8859-1?Q?7qGY6w0NaUhLZKKtTMBBPkDN2hqxePESRucdhPhZN79v5YorG8iFrXvzgD?= =?iso-8859-1?Q?uxHMFQiVJ51UPmy71qh/nDa4m0iysyiXZAOWnWc4fD0WxWHSs6bFySg+o2?= =?iso-8859-1?Q?eghV6jP2C1NcezZ0NKMdhwMYVF/WHt7kOcBvYyPflTEPifH8ejadDBePHR?= =?iso-8859-1?Q?7rK/UACXSfmbBkbeFyJruHmxfUk6ztQc2WdRIgBDKtNBYDEjbC4OJVPfI5?= =?iso-8859-1?Q?GGkcShNPPD3mNzxC0r4NLJkCFOxwkNvVPyl7kbfdVnEexwYfPObw7U0E9V?= =?iso-8859-1?Q?Q0/9Q2sA8r7AVMdMwlp0XR06Ss4bl1QMTc+aFtTK31PuPPmoTWaN0NYKbS?= =?iso-8859-1?Q?zvLyRJKfLgrbMLa/hAQZDNAHv2qXimmilW+K7IcEy6WuU/CU+UswRb8eSv?= =?iso-8859-1?Q?dlJfWUKJTCrNjAiXA0Ru04RGI9fwdo7mDJ/8J/QkPD2lXl7RvEbMqOzyJK?= =?iso-8859-1?Q?jRIYFZLDxUac46UX9gr2PUl3Se6Oq5ppgmGybdE8WVEVO3zolhHYxboKZU?= =?iso-8859-1?Q?CuJBNhqQmu2xwZTvxaYUeuUmI3FBajZegq?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 184e54df-0695-41ea-daed-08ddd5d3c1e8 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:22.4293 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qL+vHlGtKGKHffejAwuVFI9DgZtJVUnUynRG7yR6g21HjzAp8QloYOG2Vg/u6FFlyVQ9SmGgBTDBnhTOIvcsLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591539701124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Add cmdline boot option "viommu =3D " to enable or disable the virtual iommu support for guests on ARM. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- docs/misc/xen-command-line.pandoc | 7 +++++++ xen/arch/arm/include/asm/viommu.h | 11 +++++++++++ xen/drivers/passthrough/arm/viommu.c | 9 +++++++++ xen/drivers/passthrough/arm/vsmmu-v3.c | 3 +++ 4 files changed, 30 insertions(+) diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line= .pandoc index 6865a61220..d6a2a6fbdd 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -2058,6 +2058,13 @@ This option can be specified more than once (up to 8= times at present). =20 Flag to enable or disable support for PCI passthrough =20 +### viommu (arm) +> `=3D ` + +> Default: `false` + +Flag to enable or disable support for Virtual IOMMU for guests. + ### pcid (x86) > `=3D | xpti=3D` =20 diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/v= iommu.h index 4785877e2a..4de4cceeda 100644 --- a/xen/arch/arm/include/asm/viommu.h +++ b/xen/arch/arm/include/asm/viommu.h @@ -10,6 +10,7 @@ #include =20 extern struct list_head host_iommu_list; +extern bool viommu_enabled; =20 /* data structure for each hardware IOMMU */ struct host_iommu { @@ -50,6 +51,11 @@ uint16_t viommu_get_type(void); void add_to_host_iommu_list(paddr_t addr, paddr_t size, const struct dt_device_node *node); =20 +static always_inline bool is_viommu_enabled(void) +{ + return viommu_enabled; +} + #else =20 static inline uint8_t viommu_get_type(void) @@ -76,6 +82,11 @@ static inline void add_to_host_iommu_list(paddr_t addr, = paddr_t size, return; } =20 +static always_inline bool is_viommu_enabled(void) +{ + return false; +} + #endif /* CONFIG_VIRTUAL_IOMMU */ =20 #endif /* __ARCH_ARM_VIOMMU_H__ */ diff --git a/xen/drivers/passthrough/arm/viommu.c b/xen/drivers/passthrough= /arm/viommu.c index 53ae46349a..a1d6a04ba9 100644 --- a/xen/drivers/passthrough/arm/viommu.c +++ b/xen/drivers/passthrough/arm/viommu.c @@ -3,6 +3,7 @@ #include #include #include +#include #include =20 #include @@ -38,8 +39,16 @@ void add_to_host_iommu_list(paddr_t addr, paddr_t size, list_add_tail(&iommu_data->entry, &host_iommu_list); } =20 +/* By default viommu is disabled. */ +bool __read_mostly viommu_enabled; +boolean_param("viommu", viommu_enabled); + int domain_viommu_init(struct domain *d, uint16_t viommu_type) { + /* Enable viommu when it has been enabled explicitly (viommu=3Don). */ + if ( !viommu_enabled ) + return 0; + if ( viommu_type =3D=3D XEN_DOMCTL_CONFIG_VIOMMU_NONE ) return 0; =20 diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c index 6b4009e5ef..e36f200ba5 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.c +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -105,6 +105,9 @@ void __init vsmmuv3_set_type(void) { const struct viommu_desc *desc =3D &vsmmuv3_desc; =20 + if ( !is_viommu_enabled() ) + return; + if ( cur_viommu && (cur_viommu !=3D desc) ) { printk("WARNING: Cannot set vIOMMU, already set to a different val= ue\n"); --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591526; cv=pass; d=zohomail.com; s=zohoarc; b=em+AVF4J4Mv+JLQCQD/LiVKcHpcH40mnvUJBiwdNVyIImb6ZKkuDshWx4lTnbOxyKsl5sJxpwiOzMjvJm9jZcbqzPQsUB1zHs86lHTUey1Pz/Gl8lXVh9KGo+p4fupZ5N+/ObuQEf/R+BnxJzavZ/Zul2YgEr1m5g33kb6BPaFE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591526; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PFJxt6SY/lulT4RXtLz5WMyN2ImvVsxM6Td1tl5EU9M=; b=WI8wteAesbEnUGe5+Lh6XbgWfWpRfzLSu06pSQV2YMwPJF9ZlpB/xjXrmSV6JSLqkwSMq9NXGFWzIWJcPXKgWofvyhtAGjzA3TmvA0eMBTL5H1YHnLOyYo/yqBU3eO8Fpi3cAiozM9QIKv1AEr6Ix810EgXhf8O4nG0HbgNnMUM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591526533872.4263799867847; Thu, 7 Aug 2025 11:32:06 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073342.1436350 (Exim 4.92) (envelope-from ) id 1uk5P0-0001ar-G4; Thu, 07 Aug 2025 18:31:46 +0000 Received: by outflank-mailman (output) from mailman id 1073342.1436350; Thu, 07 Aug 2025 18:31:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P0-0001Yq-62; Thu, 07 Aug 2025 18:31:46 +0000 Received: by outflank-mailman (input) for mailman id 1073342; Thu, 07 Aug 2025 16:59:28 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xg-000773-H3 for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:28 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e0470f5a-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:26 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:23 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:23 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e0470f5a-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HegMn5UxB9avag8CESU/JBSzUqFD5jWR9kmHaQ838gml4QFw8V8II3KTytleznv03HXMlH6E6xbRevFa24ColGOrD/97j8Mry5bnre8eFM0dWiliU64x8jcqgfFm+kqaKW/vaJ1GUNlh9/OsSp6GunGfpMoZuTGhV/cXuKRhDdrJUbu3AqkTPlu056g/SG8LCJ+r7TJ5Kg/lC/CC77EkDa3WtLwVPUkYVQj2GaY3QxD36eGfG9Bbh3uf5DjF+Ut1ECNePNuW9buNBN9mNcPvFMRwuC5qR8Hzy5eBLHJY+54I9/SBthBiRFQOkqpp7AnpvLe7DuVqzQ+GfEEDhOo96A== 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=PFJxt6SY/lulT4RXtLz5WMyN2ImvVsxM6Td1tl5EU9M=; b=r56W/WOg6LjntziWV6hnCXX2ERpavIIKcu+pxZ667/1glEPiJGMwbhj3ZsK7aMXfo2ag4xnKSqO4TTuXXu8P4LbTkbQ2o8L0KhSZsOs1eYOIi3NhBXGvPyETfbY2+lnksnvXgsrl++EoqCOGLunRg6wx5crmvcKSUOMdc/ChscgnCCmWksV0THV+K5cUrxtgKdncF7KY6WfkSUarreffTgpsQKnTGSCwTcyGOlsMF9YFK14u2N65eEiiA9LXZndkLEu7WR1eG4mHLZIcVFGHYcXhWAte6/wo0L1OvFz/nC6P/AG5qerwOq4xmHNI7t+sQpXlg2k1+qSVDb2f18GCcA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PFJxt6SY/lulT4RXtLz5WMyN2ImvVsxM6Td1tl5EU9M=; b=gQLMcGOKZi4zGjeBrn2UnI+qVxUteWklDUIBL3PM8lFxHjBf39X43pWtMcUR58e40LKj8TpJa+TquKZCDe8qaffF4tWpd5tvt2A2LVYKYEGTvNQOqqMwPkb3kNxMeQDwx/zz1HGn7HxJ1TmKWpeVaqc7ZtUJEisE7gAujRNu2a4aoFMA50Ce5H7gB9PsS9uGnkonQQrhBPl24vJn6uZh8lPkpyQw8pGo6tBZ4GaCWD9frKWW2SHIqoiu7L7q+759IRxtssEctDuPeODF4dBM+d09NgR9+y61FXmUYc3xQHPecKirU92+SibQVTPNNtBwLfWzKqPfFpTmRALhKpQFVw== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 08/20] xen/arm: vsmmuv3: Add support for registers emulation Thread-Topic: [PATCH 08/20] xen/arm: vsmmuv3: Add support for registers emulation Thread-Index: AQHcB7yf5fp8wcYRf0iby3/TDRcqpw== Date: Thu, 7 Aug 2025 16:59:23 +0000 Message-ID: <77d962e8a344f3fd3f7afcd71ad35c12a604b372.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 58253980-885a-4dfe-4ded-08ddd5d3c27a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?orrmLF7YZj3dJVyTpWC4Bxc/OAdjDTG6VJ9KQ25sYXX31Nr2jnyLqrHxM6?= =?iso-8859-1?Q?R+cZH0qkjLIPH81NrYKKZFhLPgRcjVat0q3/WuapbOQckIQOi2s76m2luu?= =?iso-8859-1?Q?PzTlxpPxbC4YGMBCccxftUCYOA9Cz7/btwMFHM8f0tA95axVyKsCukEtDz?= =?iso-8859-1?Q?pGDAwSFsmunVSKGFfXRGMTKktIGY+PSTum1ONO1edaaXgLEifgsTj6j0+x?= =?iso-8859-1?Q?UDbsg3ADrJaQXIi6aJMphiP5QFGseRlabAlcPWLXfIdfx0rX4BjDvd6uSt?= =?iso-8859-1?Q?ek235GdgzX9zF92cp0AhfEo75cDsrkCDalJLYbYEmwDBO0b/CAtzVCqZw3?= =?iso-8859-1?Q?Y0Z1aG4yoEniopeG/T/bsU6OD8aUgJCloe5nEbP9vFsa0lWx0vJt8ay0iI?= =?iso-8859-1?Q?MOutL787cvRjxlhBnfh1F1HyZLWrIohDIay4Tglc71LA900IDLRT6dDTjL?= =?iso-8859-1?Q?FFKD39lQmEErhFsDlnk1ED/heev1j1gOjqnI8Ah/xQtU7gx+c0KqmYRISl?= =?iso-8859-1?Q?3ITtCkC3/L7MIM+ZjZWAuwXNbM8E1YQvb6iS9Y2a7yW8GpTDDYGTbQx8PD?= =?iso-8859-1?Q?fYhkQ/JCfDxbeMXgSm6ZQ2hn4PllOPiNwW09tbdg2+LAWly86oLF0McY0P?= =?iso-8859-1?Q?HmV1hFfdroJLLTdfL5OsixCk1DhS0ax9+VJ4IlzPmCCjXOu+vEZaOVN7Wg?= =?iso-8859-1?Q?5LmNo9/j2Du2GsItyJBOH2c59BvNgSymCTKueiUhllUpAGEtF9zOvRukfy?= =?iso-8859-1?Q?eT1v+9q8lDXBSiDPO4GfjpVhHduWXJ1utx9rMwTZNooWJGrWGgYIyIdCyu?= =?iso-8859-1?Q?JRe6O2Qs5ZyCnJqMhW0806FtVA421OSu7zjXyKNRDA7zpkM/uHMisEHxA+?= =?iso-8859-1?Q?IV984l/8xCpObxA03Asg8RTvsJGFCVHTCl9/70Gf0hDzpYI0MgoxJIeQtA?= =?iso-8859-1?Q?WoUqf4mTrZ7P7/iCGwAwdKYq4H6Q8GUX6gKVHouRU5h0sldfmDvMs3qQcU?= =?iso-8859-1?Q?T+Wq7gBeMUyNdvq8RqTW06Lr+eBApQGEhi7pkiQfKuQwVxwc7k6uE6OK/1?= =?iso-8859-1?Q?k66hfnE7Xqig3h9WKeX5zkmYoykHizZVMM1mZavYgOU9+9sKMWMcyxwwS0?= =?iso-8859-1?Q?uYv6m4/1sFBjtrSjKXUY59a6Rf7JN/0nP9k1owLE38VVxXQuEpHyNitUne?= =?iso-8859-1?Q?wd7YvxP0kjAOqHRYHKH8KQ+9uXK+ojyue3TgU5Cl+f6V9X8GW7RKwSEEsM?= =?iso-8859-1?Q?x1KDG1XmTtLmwsSfI9KTRwv/AsG1egae8qfGCz8JfCwLgyMiPrkVPgXapm?= =?iso-8859-1?Q?JF+Ln7HmsoqY1zC9tm5aW5AQGTaIg4KWdpv/eDGjfU7ReWXgBLsu8RDezE?= =?iso-8859-1?Q?nC1pkUzzAfAoChESNOAIQDKYWcbGZ1oJegq1rAO/p4matZSRQoNVprJ4Z1?= =?iso-8859-1?Q?kBZ7+CLLcJBykvDx8bbAXjlSVq+DaaeBT6Zdke/7HpGSm29rFd8fzRhrT9?= =?iso-8859-1?Q?T4nU9tq073RizAIw08tjvpHjFmlFoXUa7jZlTk65Xv4Q=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Uas1dOLSav4hkuhpZ4Tap2fPSUa1h//LQ6niR3xbbd9M9WcR8XX66bY7+h?= =?iso-8859-1?Q?VGh2N9TF4DpL6KOG4fCv6ByNJKh/VA1YGlNc+PvVi8dWhK+Kz6Ie5K0a4E?= =?iso-8859-1?Q?96GintZiJb6cxG8KPo5LG6EKZrXAyJvN0LnPF0bkqenMh9DwJCjOZCo3xO?= =?iso-8859-1?Q?YOikdW/ReuAgy6mqcEfQ3LLO89HadcqeCjNtkUH6bicVXE4oKPH/9pL2C0?= =?iso-8859-1?Q?Reh32Yq4J0PeLJZBIU3lXjalCHaw7qqsdk3Uctb5xfvmQbZT0H6TPaZ+Ez?= =?iso-8859-1?Q?S8yjBQrRrVQEWpE26nPJklOBkX9CRTJQUQMe7rpEkrKwFrN+22snr3alJL?= =?iso-8859-1?Q?2EWrd19TTaZ7/v7mF23Mdy0WWA5bb9WRhzIPdKRcng4W6An5PHkQDn08+f?= =?iso-8859-1?Q?cB15THrOkZSSdfn/NV12zZ3jdIo7KBCW5BqJB6irAVYu90t7Vwn2YxyQkA?= =?iso-8859-1?Q?5969fnzo11QAjN5d4NgEGGwSHxyPXnq4BzjNHLsVcBhXpWb0KVaDZ0mfZ9?= =?iso-8859-1?Q?IEspGag5tMFq0qG4xGy6BzvS1hUN25PdXm96Thndr7RmQzeDUs0ifATsRc?= =?iso-8859-1?Q?XlvnYBB0YXQQqNDrSAJSVR2Ccs48ZhuZxCxc+aNBz3Xk6lTa3kQncwU5pK?= =?iso-8859-1?Q?K1AHkUira++MSZpbhJCarlHD9LT7bMDzwikekhDezgFrvamqc2bJeR/z9a?= =?iso-8859-1?Q?T/MsAV57QgxSCZKgVv4AhDe4unk0nTLR4aD4FvkXJ0+vQpQJeKdYtzXhrl?= =?iso-8859-1?Q?2DyHwkArBTfwUvlJuKkGuRX6X7Zqpa0z/l0skAIqs8/+CSU4GpGwkiQd4O?= =?iso-8859-1?Q?+hnCKlEGtNxlrwL0sSaMgL72e4p6aff0Za0HN9lGQVc6zVTvvylmMYWQiv?= =?iso-8859-1?Q?INvbLoUSKZD6MUN8LVQr1nGVBW52GQ+lTgXt5rmhFk43+15hQyocZrQ5e5?= =?iso-8859-1?Q?SOEbKZBK5k+9qHJIdE1AsolcxouCrzxgEV0FUq1lwuvtDlWlhr0hnzkyb6?= =?iso-8859-1?Q?lphUfriotUpVEcbQ+DTWCNLC23BRnWXq5j2sgiYzVBxdTSi6UjqrWMP2K8?= =?iso-8859-1?Q?FN8bd+/2Ru5ewd+JelbVhO+PpaH1WF8KmMnURlQujn6owal3+t1Psg7jzq?= =?iso-8859-1?Q?WACL2Qw7ZDNojgX558nPl7vGs/UE5QFyOaehtsd+AFMwvedXRcpQtVx2Xn?= =?iso-8859-1?Q?36cf6ho93BCvABncn7Ws/l4SkUROA+SM7w3jurk6KV2Yh/dOfVDyWBoeKg?= =?iso-8859-1?Q?x4sjdxmJ91A4eicOvPaLmppztqvywyoOpQa+0mTl62TrPcuP1lNqgP1SOc?= =?iso-8859-1?Q?FzhtJWl6wST6deakfL2qecyAza9w4d/G+Owjj1k5UCrQmiA7euOpzzQ5Kn?= =?iso-8859-1?Q?qS1TzeA4U5ktBh82th1gWBfKcEARiTXeRQoBSV5uTqn/OfHqYGPVZlrnnv?= =?iso-8859-1?Q?h2r750sPIrAyPGNwrXa0lyAwZEDxZcr2jOtKc++JQlqYCY6HaLp/WbBBgz?= =?iso-8859-1?Q?SG/4uI3rdo0GvgV/rm33tup3HW4OmwOfVj+KmPDdjdoee6mex9OChDMDLd?= =?iso-8859-1?Q?u4S8rLpfRZ+0vBd/06ZmSi87NKWkhS3zUlNbnk04G2iOBqSknqLttbnHZj?= =?iso-8859-1?Q?zaD8kv7gk8jUstgMu6jHF7iqavaji35XC9?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58253980-885a-4dfe-4ded-08ddd5d3c27a X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:23.3825 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Xfm5eUfEld51REa5ck+nePTSnH/06BvUh4yJqIsdvIZp30SeK7FAwn2Bi/4P5CMoDu4mGzZVvaa1pKjRU4aNUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591529655124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Add initial support for various emulated registers for virtual SMMUv3 for guests and also add support for virtual cmdq and eventq. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/drivers/passthrough/arm/smmu-v3.h | 6 + xen/drivers/passthrough/arm/vsmmu-v3.c | 286 +++++++++++++++++++++++++ 2 files changed, 292 insertions(+) diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug= h/arm/smmu-v3.h index 3411edc47f..d54f0a79f2 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.h +++ b/xen/drivers/passthrough/arm/smmu-v3.h @@ -60,6 +60,12 @@ #define IDR5_VAX GENMASK(11, 10) #define IDR5_VAX_52_BIT 1 =20 +#define ARM_SMMU_IIDR 0x18 +#define IIDR_PRODUCTID GENMASK(31, 20) +#define IIDR_VARIANT GENMASK(19, 16) +#define IIDR_REVISION GENMASK(15, 12) +#define IIDR_IMPLEMENTER GENMASK(11, 0) + #define ARM_SMMU_CR0 0x20 #define CR0_ATSCHK (1 << 4) #define CR0_CMDQEN (1 << 3) diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c index e36f200ba5..3ae1e62a50 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.c +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -3,25 +3,307 @@ #include #include #include +#include #include +#include + +#include "smmu-v3.h" + +/* Register Definition */ +#define ARM_SMMU_IDR2 0x8 +#define ARM_SMMU_IDR3 0xc +#define ARM_SMMU_IDR4 0x10 +#define IDR0_TERM_MODEL (1 << 26) +#define IDR3_RIL (1 << 10) +#define CR0_RESERVED 0xFFFFFC20 +#define SMMU_IDR1_SIDSIZE 16 +#define SMMU_CMDQS 19 +#define SMMU_EVTQS 19 +#define DWORDS_BYTES 8 +#define ARM_SMMU_IIDR_VAL 0x12 =20 /* Struct to hold the vIOMMU ops and vIOMMU type */ extern const struct viommu_desc __read_mostly *cur_viommu; =20 +/* virtual smmu queue */ +struct arm_vsmmu_queue { + uint64_t q_base; /* base register */ + uint32_t prod; + uint32_t cons; + uint8_t ent_size; + uint8_t max_n_shift; +}; + struct virt_smmu { struct domain *d; struct list_head viommu_list; + uint8_t sid_split; + uint32_t features; + uint32_t cr[3]; + uint32_t cr0ack; + uint32_t gerror; + uint32_t gerrorn; + uint32_t strtab_base_cfg; + uint64_t strtab_base; + uint32_t irq_ctrl; + uint64_t gerror_irq_cfg0; + uint64_t evtq_irq_cfg0; + struct arm_vsmmu_queue evtq, cmdq; }; =20 static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info, register_t r, void *priv) { + struct virt_smmu *smmu =3D priv; + uint64_t reg; + uint32_t reg32; + + switch ( info->gpa & 0xffff ) + { + case VREG32(ARM_SMMU_CR0): + reg32 =3D smmu->cr[0]; + vreg_reg32_update(®32, r, info); + smmu->cr[0] =3D reg32; + smmu->cr0ack =3D reg32 & ~CR0_RESERVED; + break; + + case VREG32(ARM_SMMU_CR1): + reg32 =3D smmu->cr[1]; + vreg_reg32_update(®32, r, info); + smmu->cr[1] =3D reg32; + break; + + case VREG32(ARM_SMMU_CR2): + reg32 =3D smmu->cr[2]; + vreg_reg32_update(®32, r, info); + smmu->cr[2] =3D reg32; + break; + + case VREG64(ARM_SMMU_STRTAB_BASE): + reg =3D smmu->strtab_base; + vreg_reg64_update(®, r, info); + smmu->strtab_base =3D reg; + break; + + case VREG32(ARM_SMMU_STRTAB_BASE_CFG): + reg32 =3D smmu->strtab_base_cfg; + vreg_reg32_update(®32, r, info); + smmu->strtab_base_cfg =3D reg32; + + smmu->sid_split =3D FIELD_GET(STRTAB_BASE_CFG_SPLIT, reg32); + smmu->features |=3D STRTAB_BASE_CFG_FMT_2LVL; + break; + + case VREG32(ARM_SMMU_CMDQ_BASE): + reg =3D smmu->cmdq.q_base; + vreg_reg64_update(®, r, info); + smmu->cmdq.q_base =3D reg; + smmu->cmdq.max_n_shift =3D FIELD_GET(Q_BASE_LOG2SIZE, smmu->cmdq.q= _base); + if ( smmu->cmdq.max_n_shift > SMMU_CMDQS ) + smmu->cmdq.max_n_shift =3D SMMU_CMDQS; + break; + + case VREG32(ARM_SMMU_CMDQ_PROD): + reg32 =3D smmu->cmdq.prod; + vreg_reg32_update(®32, r, info); + smmu->cmdq.prod =3D reg32; + break; + + case VREG32(ARM_SMMU_CMDQ_CONS): + reg32 =3D smmu->cmdq.cons; + vreg_reg32_update(®32, r, info); + smmu->cmdq.cons =3D reg32; + break; + + case VREG32(ARM_SMMU_EVTQ_BASE): + reg =3D smmu->evtq.q_base; + vreg_reg64_update(®, r, info); + smmu->evtq.q_base =3D reg; + smmu->evtq.max_n_shift =3D FIELD_GET(Q_BASE_LOG2SIZE, smmu->evtq.q= _base); + if ( smmu->cmdq.max_n_shift > SMMU_EVTQS ) + smmu->cmdq.max_n_shift =3D SMMU_EVTQS; + break; + + case VREG32(ARM_SMMU_EVTQ_PROD): + reg32 =3D smmu->evtq.prod; + vreg_reg32_update(®32, r, info); + smmu->evtq.prod =3D reg32; + break; + + case VREG32(ARM_SMMU_EVTQ_CONS): + reg32 =3D smmu->evtq.cons; + vreg_reg32_update(®32, r, info); + smmu->evtq.cons =3D reg32; + break; + + case VREG32(ARM_SMMU_IRQ_CTRL): + reg32 =3D smmu->irq_ctrl; + vreg_reg32_update(®32, r, info); + smmu->irq_ctrl =3D reg32; + break; + + case VREG64(ARM_SMMU_GERROR_IRQ_CFG0): + reg =3D smmu->gerror_irq_cfg0; + vreg_reg64_update(®, r, info); + smmu->gerror_irq_cfg0 =3D reg; + break; + + case VREG64(ARM_SMMU_EVTQ_IRQ_CFG0): + reg =3D smmu->evtq_irq_cfg0; + vreg_reg64_update(®, r, info); + smmu->evtq_irq_cfg0 =3D reg; + break; + + case VREG32(ARM_SMMU_GERRORN): + reg =3D smmu->gerrorn; + vreg_reg64_update(®, r, info); + smmu->gerrorn =3D reg; + break; + + default: + printk(XENLOG_G_ERR + "%pv: vSMMUv3: unhandled write r%d offset %"PRIpaddr"\n", + v, info->dabt.reg, (unsigned long)info->gpa & 0xffff); + return IO_ABORT; + } + return IO_HANDLED; } =20 static int vsmmuv3_mmio_read(struct vcpu *v, mmio_info_t *info, register_t *r, void *priv) { + struct virt_smmu *smmu =3D priv; + uint64_t reg; + + switch ( info->gpa & 0xffff ) + { + case VREG32(ARM_SMMU_IDR0): + reg =3D FIELD_PREP(IDR0_S1P, 1) | FIELD_PREP(IDR0_TTF, 2) | + FIELD_PREP(IDR0_COHACC, 0) | FIELD_PREP(IDR0_ASID16, 1) | + FIELD_PREP(IDR0_TTENDIAN, 0) | FIELD_PREP(IDR0_STALL_MODEL, 1)= | + FIELD_PREP(IDR0_ST_LVL, 1) | FIELD_PREP(IDR0_TERM_MODEL, 1); + *r =3D vreg_reg32_extract(reg, info); + break; + + case VREG32(ARM_SMMU_IDR1): + reg =3D FIELD_PREP(IDR1_SIDSIZE, SMMU_IDR1_SIDSIZE) | + FIELD_PREP(IDR1_CMDQS, SMMU_CMDQS) | + FIELD_PREP(IDR1_EVTQS, SMMU_EVTQS); + *r =3D vreg_reg32_extract(reg, info); + break; + + case VREG32(ARM_SMMU_IDR2): + goto read_reserved; + + case VREG32(ARM_SMMU_IDR3): + reg =3D FIELD_PREP(IDR3_RIL, 0); + *r =3D vreg_reg32_extract(reg, info); + break; + + case VREG32(ARM_SMMU_IDR4): + goto read_impl_defined; + + case VREG32(ARM_SMMU_IDR5): + reg =3D FIELD_PREP(IDR5_GRAN4K, 1) | FIELD_PREP(IDR5_GRAN16K, 1) | + FIELD_PREP(IDR5_GRAN64K, 1) | FIELD_PREP(IDR5_OAS, IDR5_OAS_48= _BIT); + *r =3D vreg_reg32_extract(reg, info); + break; + + case VREG32(ARM_SMMU_IIDR): + *r =3D vreg_reg32_extract(ARM_SMMU_IIDR_VAL, info); + break; + + case VREG32(ARM_SMMU_CR0): + *r =3D vreg_reg32_extract(smmu->cr[0], info); + break; + + case VREG32(ARM_SMMU_CR0ACK): + *r =3D vreg_reg32_extract(smmu->cr0ack, info); + break; + + case VREG32(ARM_SMMU_CR1): + *r =3D vreg_reg32_extract(smmu->cr[1], info); + break; + + case VREG32(ARM_SMMU_CR2): + *r =3D vreg_reg32_extract(smmu->cr[2], info); + break; + + case VREG32(ARM_SMMU_STRTAB_BASE): + *r =3D vreg_reg64_extract(smmu->strtab_base, info); + break; + + case VREG32(ARM_SMMU_STRTAB_BASE_CFG): + *r =3D vreg_reg32_extract(smmu->strtab_base_cfg, info); + break; + + case VREG32(ARM_SMMU_CMDQ_BASE): + *r =3D vreg_reg64_extract(smmu->cmdq.q_base, info); + break; + + case VREG32(ARM_SMMU_CMDQ_PROD): + *r =3D vreg_reg32_extract(smmu->cmdq.prod, info); + break; + + case VREG32(ARM_SMMU_CMDQ_CONS): + *r =3D vreg_reg32_extract(smmu->cmdq.cons, info); + break; + + case VREG32(ARM_SMMU_EVTQ_BASE): + *r =3D vreg_reg64_extract(smmu->evtq.q_base, info); + break; + + case VREG32(ARM_SMMU_EVTQ_PROD): + *r =3D vreg_reg32_extract(smmu->evtq.prod, info); + break; + + case VREG32(ARM_SMMU_EVTQ_CONS): + *r =3D vreg_reg32_extract(smmu->evtq.cons, info); + break; + + case VREG32(ARM_SMMU_IRQ_CTRL): + case VREG32(ARM_SMMU_IRQ_CTRLACK): + *r =3D vreg_reg32_extract(smmu->irq_ctrl, info); + break; + + case VREG64(ARM_SMMU_GERROR_IRQ_CFG0): + *r =3D vreg_reg64_extract(smmu->gerror_irq_cfg0, info); + break; + + case VREG64(ARM_SMMU_EVTQ_IRQ_CFG0): + *r =3D vreg_reg64_extract(smmu->evtq_irq_cfg0, info); + break; + + case VREG32(ARM_SMMU_GERROR): + *r =3D vreg_reg64_extract(smmu->gerror, info); + break; + + case VREG32(ARM_SMMU_GERRORN): + *r =3D vreg_reg64_extract(smmu->gerrorn, info); + break; + + default: + printk(XENLOG_G_ERR + "%pv: vSMMUv3: unhandled read r%d offset %"PRIpaddr"\n", + v, info->dabt.reg, (unsigned long)info->gpa & 0xffff); + return IO_ABORT; + } + + return IO_HANDLED; + + read_impl_defined: + printk(XENLOG_G_DEBUG + "%pv: vSMMUv3: RAZ on implementation defined register offset %"= PRIpaddr"\n", + v, info->gpa & 0xffff); + *r =3D 0; + return IO_HANDLED; + + read_reserved: + printk(XENLOG_G_DEBUG + "%pv: vSMMUv3: RAZ on reserved register offset %"PRIpaddr"\n", + v, info->gpa & 0xffff); + *r =3D 0; return IO_HANDLED; } =20 @@ -39,6 +321,10 @@ static int vsmmuv3_init_single(struct domain *d, paddr_= t addr, paddr_t size) return -ENOMEM; =20 smmu->d =3D d; + smmu->cmdq.q_base =3D FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_CMDQS); + smmu->cmdq.ent_size =3D CMDQ_ENT_DWORDS * DWORDS_BYTES; + smmu->evtq.q_base =3D FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_EVTQS); + smmu->evtq.ent_size =3D EVTQ_ENT_DWORDS * DWORDS_BYTES; =20 register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu); =20 --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591536; cv=pass; d=zohomail.com; s=zohoarc; b=jQ1JJJ9zBfyvWWuRuAHGT8z32T7hE8HeDHRXkpVZAnLrN9tUBQrZpQcoub6XFB3kImLRedNjMlidIeX+AElErzgZ3o3AQ4YM6Ip/Q3TxCyE7nl8NhoYWYZA9i1D8kBmh5NzzihW0eSrgDnNp7tPNH4xkpewN9vGTVjRpQHQGUuQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591536; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ziYBUTrB3P+AGN2Q/b5l0hgVM7EuLNty773Ail/6/I8=; b=nhYkgAJuEumN4WOPX5/UFAgFownoqwk0sJ1NrSrL/OT2Ra36/feIPEsWB3SVgDryXLj62pDmVoo9gzQfJi9ySAqdIx+CeJ87wxqeJf3EIeemKIihr3lQtqYMH5Eqx7lfKJocpLOhDy3sXU4Nz/YtQyv6C1xYd5mw2VQml+QYttM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591536902111.06154702378353; Thu, 7 Aug 2025 11:32:16 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073344.1436358 (Exim 4.92) (envelope-from ) id 1uk5P1-0001mg-25; Thu, 07 Aug 2025 18:31:47 +0000 Received: by outflank-mailman (output) from mailman id 1073344.1436358; Thu, 07 Aug 2025 18:31:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P0-0001lM-Ow; Thu, 07 Aug 2025 18:31:46 +0000 Received: by outflank-mailman (input) for mailman id 1073344; Thu, 07 Aug 2025 16:59:30 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xi-000773-1F for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:30 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e141abe5-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:28 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:24 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:24 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e141abe5-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WW5ilPlvQ0TCkfxG7JqdDRYdFOmxMECSCFug2TqFPBTvH1EWBmHivLr4r+6KbRvNkzs9wHXMSaOGePQI4FMyQtpeeVBRJbmmWcbq041qD/+R9tAbJKItw1qES5GLz9PEsBW0QMzq3d7CBkV9Oy0qNwKcHT5aVGXRTadYaghVt9RBsauZ9diS1dvv6svLKqg8vtG8wgphY7EWMnUm505MbY27kzd0l/ht8GefFQZmScOwO4ZpPEqJlRuQSOvA0GRlVSLSp1tEgfFHKEvz0jN971AeNY+/g313zfzwsejneJLoap6V8jN7MvRy2Cnolw2eil6pffpWIlyT8hQqCCyE7w== 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=ziYBUTrB3P+AGN2Q/b5l0hgVM7EuLNty773Ail/6/I8=; b=zH8biVCwXKAt06mQ27r+YhJuO3Oke9OI9ycsR8E+ZTjEMsIR5RGcPaqBotNVLRuMPyiNNPIS5gPW73r1rDMkOgRp/GNNB33vh2dv0Blw+MyDGwcX1bAL5iCbBJ9CiNZ0CzsPpVNd0F9WFwp7xOAtBRl+ypPto/qDCYaSw9V9UAldy5fxH8x6hK89Gocix+AAtwi6M85Va9zI1ibB5okhXH4Iy/BV9NmLrm/KsSWbAHQF9P1o3OE2yqDUH+gXuHF8znfAFV+CskxGpNz+h4GdHfp5A5dWwuB8nnxrYfeu/to09ydsZmMONWXEFNv+V6/JwBo5bxnPRFLSIM2FlKqWKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ziYBUTrB3P+AGN2Q/b5l0hgVM7EuLNty773Ail/6/I8=; b=pX6/Ccxp2doCdJRVGV/MBpHLBGUHSSn9WrPXrAfafWgf3HDUS30U1bMbOIKq/cxtHANxFUiGtBi8/KeSw02zbrA94WhaoNytd617fTBD4zdcHq1ARnQ5t6Yfl3N8Gk7weZotT98gdyffDyK+CSnyV6NzGXjW+v9EMSTalOL706khoBXpiECLxVVR66Kd/EP+nSu1ePLqtQguoA14q138ZOAp7mePeZlNStC9Q/evcs5UFwer5/aQf4AaSC+fwCmok3KasFRGep6OuPHoKfmFnuuGh8yl1pCB/2HOgeogqvI5BRY4ERpgRVbrzozHIGf94z2EMfkh28a//5XTg3vjWw== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 09/20] xen/arm: vsmmuv3: Add support for cmdqueue handling Thread-Topic: [PATCH 09/20] xen/arm: vsmmuv3: Add support for cmdqueue handling Thread-Index: AQHcB7ygaIRJk82f2U2cK2snO9G44g== Date: Thu, 7 Aug 2025 16:59:24 +0000 Message-ID: <61dbd27ea536b80b6d0de1bf3ad0b4bab38e83a7.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 6407eea4-105b-43eb-4ba1-08ddd5d3c2f6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?t2aMweyVHcP2Y5Gp+VjPNRpooJ+i6aL8qgXX4nMAFKgLVD1wl/Nlv/oZTU?= =?iso-8859-1?Q?S6NKpjgn+mW8lmNMzAXd3fcraAAVmM8J79LA1E1Kvr50N8CSRIc77svF9K?= =?iso-8859-1?Q?cN3L3n+pz93uCQx9eN5l6SEG9xtL77TwHsLHyUGnQkXkzge+g//Akb7JCF?= =?iso-8859-1?Q?6CiVnXIvl3HJ527EcgmfihqM/4Q17E4L9s9K3vYenzSDArDt0ccyc0hTwF?= =?iso-8859-1?Q?/5iNl3fn2+M7k4T2hFpfhB5d0P281ixKB94AFA3Rp4mNnKJZkcSeKymb7P?= =?iso-8859-1?Q?DF8O1CEfSgdP5ah2wfRa8aJ9m+vmJIXPKQLL4dEcsjeyMO8neUDkbSuNB0?= =?iso-8859-1?Q?rKDlM/N2efsu3POeeA1dGZ5VrIW6uOyMbKtU/YtW5cm2iNuVBKm/AUsDy2?= =?iso-8859-1?Q?IIRZOovS8DbGD9NFZTSAAUW1tWcLgmC/XBRmQ5y4h/yKaQepAymphFsEYO?= =?iso-8859-1?Q?ULmBJmC+VygG2xo8zwYbYYp8476gzigOiK4EY/0YfvdOV94QLO8KHhY+BC?= =?iso-8859-1?Q?sr/VgVjCTqxwXykeKvT9FVSSgy7hRIoVnLDatb4IvdxBBL1gKTUiXjgtQ9?= =?iso-8859-1?Q?ht4nNK+jGFj6t8IHun5Bw09R39TTUP/wOH+FT5G87JO3LJZyzplZ67/5yD?= =?iso-8859-1?Q?0PcH2yDhg8YPjm5w7V2+kRQCr97Ij1CcQPLqnF7VReNflaf33OFeyzASTo?= =?iso-8859-1?Q?Vb3nz6mHL892SjX1Ag8Svs4fto8qzcMQ+nWuKbZHpGDK7Ml0Bc4bbPgd5J?= =?iso-8859-1?Q?s9gIfcrvkNOnmRVtDm2KQGB5E7jNq9gAK86Y3zlW+2yLd6UpxveSxAkoXV?= =?iso-8859-1?Q?n4xpeUUDGTh/CsaBl1LRSiRWZjJ5s+4/3PAW6vnI9ejkdJbtypP5V1ZHQJ?= =?iso-8859-1?Q?PJ5jYypgsyrqa/HQCH5xPCxsUaeGA+brODv0DI343VgiV8qmArk1USgSOz?= =?iso-8859-1?Q?Pm6KhA6rK3GcN3TLG0icYJMoRFce5djlkUlSJ0aPsnv5nleyr4VPGsGoxi?= =?iso-8859-1?Q?oMItK7ByFuwUUfp8ZKLmkzYfGg8p42tHDEaiUr0Y2Mrndfrw8OYSId3gtW?= =?iso-8859-1?Q?jzi4E0t/QXLTj9oyJ+0mR10/wrcBf6ZUaXF4wt1LXkA7tfdxppJZ3Ch4G/?= =?iso-8859-1?Q?yxGZxNYO9nMOM20SIpW8waCH7ctJkaeIOPqvUU2Dd4B74Oa4wcH8sybuPd?= =?iso-8859-1?Q?3Tq/DCkxMem0NYrKtmjd+veP+sNREVX0MS2x/fB3XMS8xA8ssZ9x+dFIiK?= =?iso-8859-1?Q?EGD9/GMZva/f1rgnhEUW4bTKdIlTWP2jkvF7N1cfSBPfmy35K9bDbZ6K/k?= =?iso-8859-1?Q?dpnEwFfMryxMe8kif9gtlUjfwILsIucBwmkQfu9RciCnnDTNBeoZex93Hy?= =?iso-8859-1?Q?NJd54friVP9WF2llabiT7rR8Z1nUmVtuzAENS3zJIOLJTlQfzogGSKy8jn?= =?iso-8859-1?Q?w3Kblz823bGwqD72Z87+blFbrWIQmpLSzETxO29RJilDOceMChkgoiaWxN?= =?iso-8859-1?Q?BU+2OcAW7OlxMAhtSWZwSSHRuAD9+vsazZDL98aNCX6A=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?HH7R2WVH4vMHeeEYAVltoir81JNQlpjlIleErX+dPrtwYHJCmKgVb2dBdt?= =?iso-8859-1?Q?pXh1184x53Em/2nkiQ5I8uO118ucHZ6RO8hzhSnyeg02OwQyD+eXLJllka?= =?iso-8859-1?Q?FgMBiHpj5NplRf/o1HPzHCPmmElk60c+/kiFLBtYVVdFH2HuIN1Rm/zMe0?= =?iso-8859-1?Q?8743Y/6gEyU0Y7o9cXNKCbXWq86rTFX9gFLT/HMxGlIvjGXXBjZonO8LgK?= =?iso-8859-1?Q?mmj14QUzza6NKyg5PmaAr1emvdombhhfHGl9fmDsx/kYwN2M6r9yvlEE3E?= =?iso-8859-1?Q?C69aUazuCs/LgqJwLcCuDE/gv6BK5EK4Ay0iAJUouzyQa1FsEDx4VEFels?= =?iso-8859-1?Q?N6Dh+j0Rj0brdYT4wNy9EfZqcmDDIwgzO7NsF++beHshzIFozRDre3uoet?= =?iso-8859-1?Q?P/Ibce+UIxXrZHwCshuTfILB/uFVv4a5YgJXyiv2PF0Ax7j/a4g1hvNkMg?= =?iso-8859-1?Q?Cr6kV3b+bAFf5FvNUgTNJJeUZ9uIau1gbCapoN1c+237No0iC4RJCbdBRA?= =?iso-8859-1?Q?ZpMM78inQPdf6KoDWxcXb/Sz0dwe8jOgPclt/h1wzsPSSwvioNRWFoRGOD?= =?iso-8859-1?Q?iFGlDTfzHaKp1w1iEy3KoXIBi9T56A5PF8f5wfsHG+ayasRtj+tz5X1D/K?= =?iso-8859-1?Q?TtWnVVoKAIXRy0VjbWnGCIKIbtbxN6j+dWnFhMl4heqAgsErRRwJbXCa38?= =?iso-8859-1?Q?oFcLhFHGrRHnbHye9+Trcm6Brs0IAqjH79Gv/XRmQDlWrZxYYu/cIUKhmI?= =?iso-8859-1?Q?9q35V1g2C8ge2h+DmJqb0FSTKk7GI0BDiyPwn+fuArwY4ic5dCL8qA/4G3?= =?iso-8859-1?Q?CuPk/IZRDn3f0Kk8AyR0x8z0fQ0SNfulS6ThBqE8DTk+7chILy53KSR5Oh?= =?iso-8859-1?Q?IfFSw6AZf6VntpRf1pxVIXG/Ov+RdjhRs5JVsTfNWz41AUve5toDbwd/cB?= =?iso-8859-1?Q?GmTNxjG4wEvxN0opR9ja/DHapKHwAwTouqyvVgshgxviBQ+7Zh3974De8j?= =?iso-8859-1?Q?muEX7jhGiMsqVE9SKMqwKqGKy5Ea8wfOD1YkUPauWB0nTKrLYuzl5uoBnI?= =?iso-8859-1?Q?VBvuJRlqjhBT7NrhUTFeFh7xVR4GKuRCRxGFC9lI74TS+aWqzFmmi2FN56?= =?iso-8859-1?Q?tTACgad8SQCR8pCzq+MSNcV/I3tGQ/RmAgKWhGFunBQNAcZX6Cbdq0CQup?= =?iso-8859-1?Q?isQ1B8BksxI1xG9ds3YWXWyGSYa0REvswzdgBx6iH9EYyQpBqk/8pAHlTb?= =?iso-8859-1?Q?7Ee18dDlI6y3q13aHtgmjCIUdeKM2hrAOP0klIFrEYUK/xu4rGZplVhnaR?= =?iso-8859-1?Q?KnJjNg5VXwf1nX6EqQMy/NkMNUNLZMjSoyr6m90puyQZmWty1O/grGcsyp?= =?iso-8859-1?Q?HXSe32FcGCedfo11mWVs02y2pUHxU/agm3PWOvsg620PvZaoKK1gEvLlp+?= =?iso-8859-1?Q?Awvn0M81Q4mUkgAYjI8YrfitzDf1rLLAsPStbaKpDqAcTBPkLnG5+gaU4D?= =?iso-8859-1?Q?71TjpnTjO/04tBcIzzis3hn/l+viCU9bVxoKtr5pPloJXShecwh6Rd1I01?= =?iso-8859-1?Q?Bj3FHHznS/MA6rcN8O7EjLV7yVw2rARx7BbLIztOBpAPxA0lJxu7ePa+wk?= =?iso-8859-1?Q?FeknSONeoRG/u9ELvPhs99aWVxJbZddHkG/WwJXjtmpIaCNgWaSEErVg?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6407eea4-105b-43eb-4ba1-08ddd5d3c2f6 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:24.2071 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 58A1hKHVygWtUdUtzKNXQywJYC/pRiiVGrc1QsDB5UU+kZEtKTXGIv8c7sNBHEPTDPbCMVxsoSPW+8jkeJ1ShQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591537120116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Add support for virtual cmdqueue handling for guests Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/drivers/passthrough/arm/vsmmu-v3.c | 101 +++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c index 3ae1e62a50..84bd1f7327 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.c +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */ =20 +#include #include #include #include @@ -25,6 +26,26 @@ /* Struct to hold the vIOMMU ops and vIOMMU type */ extern const struct viommu_desc __read_mostly *cur_viommu; =20 +/* SMMUv3 command definitions */ +#define CMDQ_OP_PREFETCH_CFG 0x1 +#define CMDQ_OP_CFGI_STE 0x3 +#define CMDQ_OP_CFGI_ALL 0x4 +#define CMDQ_OP_CFGI_CD 0x5 +#define CMDQ_OP_CFGI_CD_ALL 0x6 +#define CMDQ_OP_TLBI_NH_ASID 0x11 +#define CMDQ_OP_TLBI_NH_VA 0x12 +#define CMDQ_OP_TLBI_NSNH_ALL 0x30 +#define CMDQ_OP_CMD_SYNC 0x46 + +/* Queue Handling */ +#define Q_BASE(q) ((q)->q_base & Q_BASE_ADDR_MASK) +#define Q_CONS_ENT(q) (Q_BASE(q) + Q_IDX(q, (q)->cons) * (q)->ent_size) +#define Q_PROD_ENT(q) (Q_BASE(q) + Q_IDX(q, (q)->prod) * (q)->ent_size) + +/* Helper Macros */ +#define smmu_get_cmdq_enabled(x) FIELD_GET(CR0_CMDQEN, x) +#define smmu_cmd_get_command(x) FIELD_GET(CMDQ_0_OP, x) + /* virtual smmu queue */ struct arm_vsmmu_queue { uint64_t q_base; /* base register */ @@ -49,8 +70,80 @@ struct virt_smmu { uint64_t gerror_irq_cfg0; uint64_t evtq_irq_cfg0; struct arm_vsmmu_queue evtq, cmdq; + spinlock_t cmd_queue_lock; }; =20 +/* Queue manipulation functions */ +static bool queue_empty(struct arm_vsmmu_queue *q) +{ + return Q_IDX(q, q->prod) =3D=3D Q_IDX(q, q->cons) && + Q_WRP(q, q->prod) =3D=3D Q_WRP(q, q->cons); +} + +static void queue_inc_cons(struct arm_vsmmu_queue *q) +{ + uint32_t cons =3D (Q_WRP(q, q->cons) | Q_IDX(q, q->cons)) + 1; + q->cons =3D Q_OVF(q->cons) | Q_WRP(q, cons) | Q_IDX(q, cons); +} + +static void dump_smmu_command(uint64_t *command) +{ + gdprintk(XENLOG_ERR, "cmd 0x%02llx: %016lx %016lx\n", + smmu_cmd_get_command(command[0]), command[0], command[1]); +} +static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu) +{ + struct arm_vsmmu_queue *q =3D &smmu->cmdq; + struct domain *d =3D smmu->d; + uint64_t command[CMDQ_ENT_DWORDS]; + paddr_t addr; + + if ( !smmu_get_cmdq_enabled(smmu->cr[0]) ) + return 0; + + while ( !queue_empty(q) ) + { + int ret; + + addr =3D Q_CONS_ENT(q); + ret =3D access_guest_memory_by_ipa(d, addr, command, + sizeof(command), false); + if ( ret ) + return ret; + + switch ( smmu_cmd_get_command(command[0]) ) + { + case CMDQ_OP_CFGI_STE: + break; + case CMDQ_OP_PREFETCH_CFG: + case CMDQ_OP_CFGI_CD: + case CMDQ_OP_CFGI_CD_ALL: + case CMDQ_OP_CFGI_ALL: + case CMDQ_OP_CMD_SYNC: + break; + case CMDQ_OP_TLBI_NH_ASID: + case CMDQ_OP_TLBI_NSNH_ALL: + case CMDQ_OP_TLBI_NH_VA: + if ( !iommu_iotlb_flush_all(smmu->d, 1) ) + break; + default: + gdprintk(XENLOG_ERR, "vSMMUv3: unhandled command\n"); + dump_smmu_command(command); + break; + } + + if ( ret ) + { + gdprintk(XENLOG_ERR, + "vSMMUv3: command error %d while handling command\n", + ret); + dump_smmu_command(command); + } + queue_inc_cons(q); + } + return 0; +} + static int vsmmuv3_mmio_write(struct vcpu *v, mmio_info_t *info, register_t r, void *priv) { @@ -104,9 +197,15 @@ static int vsmmuv3_mmio_write(struct vcpu *v, mmio_inf= o_t *info, break; =20 case VREG32(ARM_SMMU_CMDQ_PROD): + spin_lock(&smmu->cmd_queue_lock); reg32 =3D smmu->cmdq.prod; vreg_reg32_update(®32, r, info); smmu->cmdq.prod =3D reg32; + + if ( arm_vsmmu_handle_cmds(smmu) ) + gdprintk(XENLOG_ERR, "error handling vSMMUv3 commands\n"); + + spin_unlock(&smmu->cmd_queue_lock); break; =20 case VREG32(ARM_SMMU_CMDQ_CONS): @@ -326,6 +425,8 @@ static int vsmmuv3_init_single(struct domain *d, paddr_= t addr, paddr_t size) smmu->evtq.q_base =3D FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_EVTQS); smmu->evtq.ent_size =3D EVTQ_ENT_DWORDS * DWORDS_BYTES; =20 + spin_lock_init(&smmu->cmd_queue_lock); + register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu); =20 /* Register the vIOMMU to be able to clean it up later. */ --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591532; cv=pass; d=zohomail.com; s=zohoarc; b=QwiAJku6UCY7sUAjw8yf4qkjdZZznphlq9PyTah8SLfYwqgX1UfHUfva2uIMohxqPgHHQCsjxmDXSRa67xV1IEmzTQvw47gB3uEalcuDbnxxcr2n7bMidRm+JhmADat+Hq4XpQz1M1FHZNXF+ytJ2Ha6yiycwzARDGWAR7WyBv4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591532; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VELNmVszE9BQTzKi1GRSdq0FFYAOcApUP1MBVb3E+KU=; b=LJhSkJs5k12N9Ad9ema5IZ6RovSVkegvg/9AoS3b5mADTf4teJ2wnYMMnzOu5cJ/vTdYFZjATLpxj/YeKGgrjO6y98BSU5zy4kpwyYIYsctza4X1bxVg6bLmFDnqFYOsM69XHT18dYWZia7w3YVv9ZUm3apxvXiYdQN80nxWK6I= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591532189566.4071663014935; Thu, 7 Aug 2025 11:32:12 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073346.1436371 (Exim 4.92) (envelope-from ) id 1uk5P1-00020V-TQ; Thu, 07 Aug 2025 18:31:47 +0000 Received: by outflank-mailman (output) from mailman id 1073346.1436371; Thu, 07 Aug 2025 18:31:47 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P1-0001yP-E1; Thu, 07 Aug 2025 18:31:47 +0000 Received: by outflank-mailman (input) for mailman id 1073346; Thu, 07 Aug 2025 16:59:31 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xj-000773-Ir for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:31 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e228405c-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:30 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:25 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:25 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e228405c-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bwiiK0UZ9l9AYmpHENDXYNXghLJzjqFTTxlo44NojLCrJDreYzZvHaMePXbdcM6E+/e5MeuQLCY89w/2kyNtqNF3BXjsjAIxQuPFzxjm4YXeb9vk6m8bADaNAarTItrXiU9hkQlwZor0L67DBhIFpEsF8/wj8r6PcSq6hA0FBxxu5CciOISXnNhEajuGLiRnvfuef3b7LO1+20Y/xLiL4BcwersRj0ULC8NGr8gWJINHCZp6R8kWDaaSznwO4k1o/cIq6yQ/4g17NjXBz8UT9lceM3CtMnwx+FCqURca4zStUUmnF8rNSdxSM5Ek50Kqcv6fWdnQ6Tz5I9bTyk68RA== 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=VELNmVszE9BQTzKi1GRSdq0FFYAOcApUP1MBVb3E+KU=; b=wdfN7G3by9fa3QoYYfN9wyAjEtpkHUs0GkXM5J1+WSRpd/9HwOsZIjY2xJltLGIgDKhQMnTDcjcNhXNrr90fM2A+Erl6ItkRUclzMkoDwCSa7rkGJPMdI2jmcCa+u7gN6oX1Ofni8tuAUWueV9JoyzjJsAAAqdtJ5ZWxeD1h5VaY2hDJ9y4zjby/4Zt/6tcl54XB1/GeT0/dcvNgWLFVb4UQP2MUwad0EgeQ5L6oImHs5tyq/RJgynciBOIbb2j1wwkX4hMmJdvPIT6MzYOBDl5A9G+Yr0dbuGuJCpsgMGiQwCC+i1RW6OmKLcfklP/Qf1BG1mpmTYXizJSY3PBNpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VELNmVszE9BQTzKi1GRSdq0FFYAOcApUP1MBVb3E+KU=; b=sz7vp/uq9GxEo4PhfzQuZVkr4AIGDQxuLOniINfORp4MkxexT4DLaGCM/+N32oONrc33WFQF5ZGCIeNyyOoJQVSQwiE9PcFlegDjpikA5udeL8QGiQ1ncRsz3eSj+DRpXNMWE2QivBzCBSyF8O79gaJjgYCsZ+6/mFPwpFOaV+e3s6o/zt8o75a34vMa2iNf7609/n2EH/p2Amwm9Qtc+2Za/jlW+2Bwm/U9xK4ZyC9L/2mYO6FPYs0ri4dFDpxzyvTenf9xmwvA/80Epw2ny0EuGYriecZaIhdQzfJQ2zgQqr2CG2ZXO0BOGMHzL6QIpaVd4uWiUyy1yndt+Y8fDg== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 10/20] xen/arm: vsmmuv3: Add support for command CMD_CFGI_STE Thread-Topic: [PATCH 10/20] xen/arm: vsmmuv3: Add support for command CMD_CFGI_STE Thread-Index: AQHcB7yhsDZE5DA1DUCoBRmJXjwGPQ== Date: Thu, 7 Aug 2025 16:59:25 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 6804eb4a-da0a-4e1c-d7c3-08ddd5d3c38e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?d4TW02nd0V9+cEWH5jvRUxgFilAUEiufhtI8A2HLZ79519S5hOKDnCqSLb?= =?iso-8859-1?Q?vXyQnijlgn7Kd7iYtYVyps8+2zCGksc4xbv9pHKKZ0nv385aRfunWkHFLo?= =?iso-8859-1?Q?SA4QaR/GEe2CMuB2Amb4HsyB3C2c39ckkl++64qj0olKK9Ou9erOwZSjn1?= =?iso-8859-1?Q?qk9nykgnitFf8ErzBNW0EgQr+optIbdtWgHPcTdMHQ9grzRRTNi3urokvq?= =?iso-8859-1?Q?h8RV8w8EyJ/hVcVBB9ofheFg9u1VNAY1X42znxudfQf4YJTpGG1/gHtYAN?= =?iso-8859-1?Q?Iy4CYldjREpqYTtjpNquO11gHY4FAQyIIlPB2bJMJtJIdfXev82d+NOeil?= =?iso-8859-1?Q?5K2yt5hn4GR0WPXhfURjjC86qxEcZ2OtVY4OTde41M52IscE15UckJ8dwz?= =?iso-8859-1?Q?gR5lite9Y6yZRxeqE0oE6BpgNBWQAVyr55trQ5Df68Hg4mArMlwDLIs10l?= =?iso-8859-1?Q?AxJK6/8EMR/Vx8ubmNjyPp72gC3ZIboCcffXKHUjDsexdqw/rDjayA7Adj?= =?iso-8859-1?Q?1jpP+BFVO5ILDTywrSlQUtAF3EcYIByXesxUo448lsxaswCILdnmNqBBx3?= =?iso-8859-1?Q?TsfHbueDbXM8MoEoiQh2cnhBE3FZxcQbQR2gNhJGVKgvV56UPktmp7f3NS?= =?iso-8859-1?Q?N2YK4xr1FfyVCFr+QlEz9UeGneYj88qkJkMm35Z/HuqkgVM2L7LCQxHbaI?= =?iso-8859-1?Q?TT+u7lheNJnqKbRWVkfxcy+vzjkiGkqPf1tzMSjbu+pi+eKe59Gmhua/w8?= =?iso-8859-1?Q?Uz8MNLiphWrIZGzWp1rohcZKV3j3/53d9Ceyd7RCSE1UJVEWUFsQSmEpLt?= =?iso-8859-1?Q?TADSUaIanyCHhZR5rk3a+ZkzGF71jKa2jkp/+eUCrla1V0pvf+mbRVCkA7?= =?iso-8859-1?Q?CoA+DeP9UY1utBEQ5lcDXtKd6t4kkgJC1WXy6eG/Xi3qK9Nyc7R9vKFks6?= =?iso-8859-1?Q?DXzCMmz6TTRS4oT/Zi0xO7A+rPKhedekRfm9Ofc+KpLpU9y89i8TJ7OT0y?= =?iso-8859-1?Q?f/CMa8Qxya5TkUMzhVP0Y/HiQuUO2cLvcVaifafgs1RXhyNV+iQuITQvoU?= =?iso-8859-1?Q?OmyIjWxNpnDCo8nbXig5ZcEXcZ3Sj62j3Ux2AYcBAcUpXTKYTI52Uo+IcF?= =?iso-8859-1?Q?SHx+h0Xrjyn5v2ffuTFOnUQbcNCa3bLZag8glvA/kAUMrSrRlomtwFVqUP?= =?iso-8859-1?Q?e/zKmYfHApuFoyMsmBUhDo7oWhGrAzs2BvtYEJ3vNzFVeVxUvW6Ysgmm7f?= =?iso-8859-1?Q?jL38LCybC06nkzMhzqWzMTlURRFbfSzija8t71FM3Wx/9sUsIhGCQj0oHF?= =?iso-8859-1?Q?AKAQnbmXffS3jAdFnfLMPCINAYyn6FqHYKlMip98AzS2ECTbp83yBsjJad?= =?iso-8859-1?Q?LcVuLJPjjcUdl9Mx3xM1uh9W7t7BnvVibaJ+uvHyhLzE1Tg0vyNnGt1PaG?= =?iso-8859-1?Q?6MZQZSK8Hu8aWsa4YvfFoNL5x+Tqoy7ybkKKAKhEHjgIzfTxPMiayNngR8?= =?iso-8859-1?Q?hVBfscjT+1TL9mx1H81Nxsdaw1TS3QxJuMGoQphFezKA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?lV/fZtTz5sfuRM5zl8rzzpHu1wCAMQdT0GTn6rrFHMyGNtsYEbgTlTQ3Mg?= =?iso-8859-1?Q?/mQZy+MnE42rKmIGHsk2yFX6g/dcbqnWRWN7CuGq+WWPzozjMFpIwT584c?= =?iso-8859-1?Q?7pEBsZuYTsvx1mNgKsbbO0/nvrOTjigDXXqmB6Bu7IK4SJbWKzRYx31Ys+?= =?iso-8859-1?Q?ZCZdH3Y0ujO1GzPuA0uavMC62BS6tcDnvEsCJ7+QkzJ+Ez1XRAxlPKnd7J?= =?iso-8859-1?Q?HdsuQ64RzxfRUGkfUV13JVFHyY2F9u/PeIC+4TBg9rrgTdK3qiAKWHMk+c?= =?iso-8859-1?Q?G3hjDdzKrGi5QwkaB5awzsVcTo1VoW8yDqHjv2vNh3f1CBE2cdsONiHuum?= =?iso-8859-1?Q?ZcohnyT3Z2hwwfc9f8MfJAIJl9r3vJUC8VbYivFQXs0HGSivR8osagJ2Q6?= =?iso-8859-1?Q?YRhrIDI79lKjpD7A74EAsk+A2/mX94Pu3GgRlKk2vPL/n0OopSLEY4oefl?= =?iso-8859-1?Q?9hYSb/5fOSt9l4Biykqtmx3b7Uik+ymFUFlry/WeRrjcfFLBHDq9gCE+gX?= =?iso-8859-1?Q?L7+syq2PSLC8Lgs5DyLxvU2650o35tJIpOSitjMbk+nN8N3J/SzInxu13+?= =?iso-8859-1?Q?qFVwQaLP4UlVKcOpS71NLXEKZDK62Rrzj4SrbP+t3KAv1/RjN/FHqDjP8Q?= =?iso-8859-1?Q?tizXiHgQO0412Lj2uzUwpbCyKjngTOH5MgJ7EGxQd/QsSM9OHP6erNJy6o?= =?iso-8859-1?Q?a4rLHNdoGmbOyYIK37gC/W9LmNoTFkjlX+a1rx4rhqSq/GUb2aOkVm03Ej?= =?iso-8859-1?Q?qGYo0QPTs26u0ErIHAA+/jwTf6PuU/lsswDL9bgtmZ3v7D2CFMG/i5bIQ4?= =?iso-8859-1?Q?xSF0Dev3xmVKI8Yv5ACoXzoUvVNK0trM1OViTarUUNguj6uevxlQRuyTul?= =?iso-8859-1?Q?S2qPaSCdOpAUlRcaYQmbmuA7NYHcKoiRLWVAmzz+sprfLfaiD1icgnpGdg?= =?iso-8859-1?Q?4bqrUz62z0ymBH8QikfZqE6Q//84y6halGNHpcG9VdaikN1to7xON7rPJN?= =?iso-8859-1?Q?zT1E66toSVqPwixsVMygETjNzj+QG6pz1MnXzhr3RdVrsT3HOPhMpdrdcY?= =?iso-8859-1?Q?v0mn0z8C3dpLc8EAaQrGxn0FaaC9O+dISgsdP3bvyHhe11zI+rO7ZeNDxs?= =?iso-8859-1?Q?QWTYAKvszqD5liaZ5KM48qk653h6UEk49+cYphKPQ5GHsEQFgaB3wunLGe?= =?iso-8859-1?Q?2cSdOo24J8eRcpF3Cpoz2ZiKZHIrxkQySPW5aRujOUwzDCPb7dqpprBN3y?= =?iso-8859-1?Q?UgrFSsfj0wRXWykh7KpljiQ5badAEPkMg7qRZOpaZfmnUr1fTHKthEcutp?= =?iso-8859-1?Q?t4JJKXfNRn1Mk9NB0RDef/anLleYymedzMxB7DrShAcSD3V3vxiN/K2OWn?= =?iso-8859-1?Q?5D2vJcmZPCAEOKoEe5B1xZxCPRkDOL6dWcYH0s6uIIqSvR7BZNJXzj1hoR?= =?iso-8859-1?Q?vJ9wSLP2Zuq734BB2cAUKYZsy8+52UolUJTbaYWSk50AcJUqjv6sW2h+ug?= =?iso-8859-1?Q?NrDXqlW+JCkXr/FPEannbDfE68mJWQ2oXrCgohlaFOqhu/sE2S3O59IG1/?= =?iso-8859-1?Q?yY5Wz5TW+/WX3BiRtj0HFS3yodsvL5kVxuGhHq1gduR8PlJ5T7smwx2wP0?= =?iso-8859-1?Q?c/3hIc7XDZ2Ttb396YPHPpJhMsu6BQrUOmxeKR4lrezuLD7UosIFvrUw?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6804eb4a-da0a-4e1c-d7c3-08ddd5d3c38e X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:25.1712 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7EMqOcWNGynaw6EUwGDpDoaKf95ykeT45Z8tk6aEI4O1w5WUcDsdw1JZBalMJ8u301cPxrn9vUbbWhgOeEw5hw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591533409116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh CMD_CFGI_STE is used to invalidate/validate the STE. Emulated vSMMUv3 driver in XEN will read the STE from the guest memory space and capture the Stage-1 configuration required to support nested translation. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/drivers/passthrough/arm/vsmmu-v3.c | 148 +++++++++++++++++++++++++ 1 file changed, 148 insertions(+) diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c index 84bd1f7327..3ecbe4861b 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.c +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -45,6 +45,21 @@ extern const struct viommu_desc __read_mostly *cur_viomm= u; /* Helper Macros */ #define smmu_get_cmdq_enabled(x) FIELD_GET(CR0_CMDQEN, x) #define smmu_cmd_get_command(x) FIELD_GET(CMDQ_0_OP, x) +#define smmu_cmd_get_sid(x) FIELD_GET(CMDQ_PREFETCH_0_SID, x) +#define smmu_get_ste_s1cdmax(x) FIELD_GET(STRTAB_STE_0_S1CDMAX, x) +#define smmu_get_ste_s1fmt(x) FIELD_GET(STRTAB_STE_0_S1FMT, x) +#define smmu_get_ste_s1stalld(x) FIELD_GET(STRTAB_STE_1_S1STALLD, x) +#define smmu_get_ste_s1ctxptr(x) FIELD_PREP(STRTAB_STE_0_S1CTXPTR_MASK,= \ + FIELD_GET(STRTAB_STE_0_S1CTXPTR_MASK, = x)) + +/* stage-1 translation configuration */ +struct arm_vsmmu_s1_trans_cfg { + paddr_t s1ctxptr; + uint8_t s1fmt; + uint8_t s1cdmax; + bool bypassed; /* translation is bypassed */ + bool aborted; /* translation is aborted */ +}; =20 /* virtual smmu queue */ struct arm_vsmmu_queue { @@ -91,6 +106,138 @@ static void dump_smmu_command(uint64_t *command) gdprintk(XENLOG_ERR, "cmd 0x%02llx: %016lx %016lx\n", smmu_cmd_get_command(command[0]), command[0], command[1]); } +static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid, + uint64_t *ste) +{ + paddr_t addr, strtab_base; + struct domain *d =3D smmu->d; + uint32_t log2size; + int strtab_size_shift; + int ret; + + log2size =3D FIELD_GET(STRTAB_BASE_CFG_LOG2SIZE, smmu->strtab_base_cfg= ); + + if ( sid >=3D (1 << MIN(log2size, SMMU_IDR1_SIDSIZE)) ) + return -EINVAL; + + if ( smmu->features & STRTAB_BASE_CFG_FMT_2LVL ) + { + int idx, max_l2_ste, span; + paddr_t l1ptr, l2ptr; + uint64_t l1std; + + strtab_size_shift =3D MAX(5, (int)log2size - smmu->sid_split - 1 += 3); + strtab_base =3D smmu->strtab_base & STRTAB_BASE_ADDR_MASK & + ~GENMASK_ULL(strtab_size_shift, 0); + idx =3D (sid >> STRTAB_SPLIT) * STRTAB_L1_DESC_DWORDS; + l1ptr =3D (paddr_t)(strtab_base + idx * sizeof(l1std)); + + ret =3D access_guest_memory_by_ipa(d, l1ptr, &l1std, + sizeof(l1std), false); + if ( ret ) + { + gdprintk(XENLOG_ERR, + "Could not read L1PTR at 0X%"PRIx64"\n", l1ptr); + return ret; + } + + span =3D FIELD_GET(STRTAB_L1_DESC_SPAN, l1std); + if ( !span ) + { + gdprintk(XENLOG_ERR, "Bad StreamID span\n"); + return -EINVAL; + } + + max_l2_ste =3D (1 << span) - 1; + l2ptr =3D FIELD_PREP(STRTAB_L1_DESC_L2PTR_MASK, + FIELD_GET(STRTAB_L1_DESC_L2PTR_MASK, l1std)); + idx =3D sid & ((1 << smmu->sid_split) - 1); + if ( idx > max_l2_ste ) + { + gdprintk(XENLOG_ERR, "idx=3D%d > max_l2_ste=3D%d\n", + idx, max_l2_ste); + return -EINVAL; + } + addr =3D l2ptr + idx * sizeof(*ste) * STRTAB_STE_DWORDS; + } + else + { + strtab_size_shift =3D log2size + 5; + strtab_base =3D smmu->strtab_base & STRTAB_BASE_ADDR_MASK & + ~GENMASK_ULL(strtab_size_shift, 0); + addr =3D strtab_base + sid * sizeof(*ste) * STRTAB_STE_DWORDS; + } + ret =3D access_guest_memory_by_ipa(d, addr, ste, sizeof(*ste), false); + if ( ret ) + { + gdprintk(XENLOG_ERR, + "Cannot fetch pte at address=3D0x%"PRIx64"\n", addr); + return -EINVAL; + } + + return 0; +} + +static int arm_vsmmu_decode_ste(struct virt_smmu *smmu, uint32_t sid, + struct arm_vsmmu_s1_trans_cfg *cfg, + uint64_t *ste) +{ + uint64_t val =3D ste[0]; + + if ( !(val & STRTAB_STE_0_V) ) + return -EAGAIN; + + switch ( FIELD_GET(STRTAB_STE_0_CFG, val) ) + { + case STRTAB_STE_0_CFG_BYPASS: + cfg->bypassed =3D true; + return 0; + case STRTAB_STE_0_CFG_ABORT: + cfg->aborted =3D true; + return 0; + case STRTAB_STE_0_CFG_S1_TRANS: + break; + case STRTAB_STE_0_CFG_S2_TRANS: + gdprintk(XENLOG_ERR, "vSMMUv3 does not support stage 2 yet\n"); + goto bad_ste; + default: + BUG(); /* STE corruption */ + } + + cfg->s1ctxptr =3D smmu_get_ste_s1ctxptr(val); + cfg->s1fmt =3D smmu_get_ste_s1fmt(val); + cfg->s1cdmax =3D smmu_get_ste_s1cdmax(val); + if ( cfg->s1cdmax !=3D 0 ) + { + gdprintk(XENLOG_ERR, + "vSMMUv3 does not support multiple context descriptors\n"= ); + goto bad_ste; + } + + return 0; + +bad_ste: + return -EINVAL; +} + +static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu *smmu, uint64_t *cmd= ptr) +{ + int ret; + uint64_t ste[STRTAB_STE_DWORDS]; + struct arm_vsmmu_s1_trans_cfg s1_cfg =3D {0}; + uint32_t sid =3D smmu_cmd_get_sid(cmdptr[0]); + + ret =3D arm_vsmmu_find_ste(smmu, sid, ste); + if ( ret ) + return ret; + + ret =3D arm_vsmmu_decode_ste(smmu, sid, &s1_cfg, ste); + if ( ret ) + return (ret =3D=3D -EAGAIN ) ? 0 : ret; + + return 0; +} + static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu) { struct arm_vsmmu_queue *q =3D &smmu->cmdq; @@ -114,6 +261,7 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu) switch ( smmu_cmd_get_command(command[0]) ) { case CMDQ_OP_CFGI_STE: + ret =3D arm_vsmmu_handle_cfgi_ste(smmu, command); break; case CMDQ_OP_PREFETCH_CFG: case CMDQ_OP_CFGI_CD: --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591533; cv=pass; d=zohomail.com; s=zohoarc; b=HdPowwn+rS5v2nZu0efHo1e1UobMv8S7HM4Ct6dxrMEftRR1qLoeA15B6K1DWzPdF03DNqqVl2EREVpR2ULt0p8xNKEu2A3FdkmKFdRU8sX9YcqdQM+2BA3BYl1vAjlKYzVQ38fter6LelHmT7zxL1eI1HFqutQaWh71fEcA91Y= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591533; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KEniSrR57nVltdVydlhahhmJzE8muwus3yOrLndbPSk=; b=cndMXYpUDY5wt7MUmKCO3Q6j7orrDFuvsQz1JA36yoJtKpXcjHpJdzVJrtjboWJNQCAw4j5tuS4te57bgCP9KQkxZsZ4IVUZ/+TBYSpd7ys8m00k4fUocBfHd+PQJdi5BlDRbKNFycOSgsh0Pj3W5NnTFoA4CmTBOM2jS0eeyxk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591533712766.663241204797; Thu, 7 Aug 2025 11:32:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073348.1436378 (Exim 4.92) (envelope-from ) id 1uk5P2-0002D5-GJ; Thu, 07 Aug 2025 18:31:48 +0000 Received: by outflank-mailman (output) from mailman id 1073348.1436378; Thu, 07 Aug 2025 18:31:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P2-00028W-2F; Thu, 07 Aug 2025 18:31:48 +0000 Received: by outflank-mailman (input) for mailman id 1073348; Thu, 07 Aug 2025 16:59:33 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xl-000773-3q for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:33 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id e314394a-73af-11f0-b898-0df219b8e170; Thu, 07 Aug 2025 18:59:31 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:26 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:26 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e314394a-73af-11f0-b898-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C4tYEYPxtx/fZPdXSMimyN5V0vlsMpgzYOAFPRmqKWCm0+Q1Z8TGw8u2a1QWGGLvMkQyAZ+OORje9TISg/Z+7tJHsxIyturjRxBfb39gN7xObRylTUtnyR2XAgEmISR3YTKvtuLOBx4zAtrScibqBtDeE2Dd9KYqL/yjpuplLzR9ALhvKopQPQufHfV0dOSsg5LFzg12h3uXmv6yHpGkMymifdJeiL8fYqP6nlod2yDpFKH80QFaqaouX7cQ6FnTivia3565SJPQlG7UvyRqv2NenULO94vV+VgIrs1mVfViDjmRUBSqsramhNRbGN7J4UNvvZ2xvDJK8gUc7pqQ2g== 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=KEniSrR57nVltdVydlhahhmJzE8muwus3yOrLndbPSk=; b=LXmHZb+EuI22YeJzJB/JXW1YvLapkgOzfsjkUJdY0fJ91K684dxmxXEZudD+zSY2F5veJ3Yf1VFf2WbWwHWtV/YlO90GihThSGa+oOJC1jbjsfNCFIavqhYIIYyHJvefH6PLqhRmfB7n35i5rWVpj9ILeO3HmfBclu0CHkcL3ZGTTtDZgj0jmEpwa3wsXHbb3ZA5kHTg/UDpumomzItoqbG3zdmmAADcOerOU6ZmaiRsk1r10xkFyu683oTy9k+vZ85nvL3+IZCxaMQHwnXXqPKppQa62stWkgPB6MqxuegktjnJC0QAeZTeST7NWonx1rYVxviGyJaZu3/gTGZx/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KEniSrR57nVltdVydlhahhmJzE8muwus3yOrLndbPSk=; b=pwXeznodns5JI/uPeh0dNuTdj5aq+MHZNeiffpaXT+kdlB/YiWQff+w50WgWyL61vwNR51Bi5ALGGcEf578/GgLlmefpy8XFrY0cXegYkbxWdlv4auTrIC+Tod906prLwijkbrH0xyEPy4BzgGVPKbT0JUj1jhkYohwlS1hnCU9Ao9T+oKn9xGtylXjuC8Ar5tkO0lqgFdLanjpJKPcXdiUOypdsbRnTEfHnU8th7Ig5naKcaqXkEC+B4yKLKNI+6Y3CV2tzOm2M9wjl7SA+72qwBEMJQcbMlRSYOf/S1SerJk8Ojm11I05hVsMcopEuhAkrIRqrBhbjDy+MQ2wlQQ== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Bertrand Marquis , Stefano Stabellini , Julien Grall , Michal Orzel , Volodymyr Babchuk , Jan Beulich , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Milan Djokic Subject: [PATCH 11/20] xen/arm: vsmmuv3: Attach Stage-1 configuration to SMMUv3 hardware Thread-Topic: [PATCH 11/20] xen/arm: vsmmuv3: Attach Stage-1 configuration to SMMUv3 hardware Thread-Index: AQHcB7yha1klxs18OESsoLM4R9ywNQ== Date: Thu, 7 Aug 2025 16:59:26 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: fc830f38-dc7f-48a2-56e0-08ddd5d3c42b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?ancMAoT834YTNMxj9FQ2SRD9bCUlncsGFB/XjbJWIjboiRiGphuhywj8yo?= =?iso-8859-1?Q?EefAsg0Q923rzZJChspyLlYH4t+TR61278RJ/oTx6hgF74dLXp7sUZNLiX?= =?iso-8859-1?Q?8cSsIL7pKOOQ0Ppghy6o9WOdoVLvVN6jy2NezpEBc/ZGfYJvfckmqtUI+i?= =?iso-8859-1?Q?Qm6z+fNGnBe91rx4m6HHlROsLs3yXuo9kZ5q5hd2bj3eI+tQoE1o+uWWPj?= =?iso-8859-1?Q?41uf1aMcE7NCDIvgcRjcwxiidbkmsboIe6SoPm5dsLZnXoHVePe3d7XF54?= =?iso-8859-1?Q?1XWba6hKBhOSEoD/2eq6XEb9vs6/Jdt1cWK5JfdmAkS4QxU9lv7J2BK71p?= =?iso-8859-1?Q?Ejxz1vtTiGQbNoJpl6IBGOWnvg3XQ7qDa+cPZiF8IDwrwilenUk1O/n2W8?= =?iso-8859-1?Q?7q1fMHXNsXaJwhnwKZt3+GEgKLU+bE0H1Pz2Uf0ZIa/vHnh3uGyRFQ5P4+?= =?iso-8859-1?Q?AdGooG/NBJ7NnyUJnb7gs9HKq/kK6CliRuDNVty8unrmCz7mH75JcIt8AX?= =?iso-8859-1?Q?mbTgwBAa/wUPzc46B5oy0qLqUnPQ4Nftr5ro6Gfk6Q4IwqKZb8Xjd67OLA?= =?iso-8859-1?Q?VPSgEGnUpuxQ759znjqgPQAHdC7WM+yqLjkI0GaL0Isp1JSRWUkWh0VnPK?= =?iso-8859-1?Q?J169VqeT6g7n0lwWOxPdcEp/Lt0ONxYTt6o42O6VqoONX7SR2gTiXn6MD/?= =?iso-8859-1?Q?1xwhbhadloW+Tef0246E4kF9YzzSs/aoeepbzZnBV614XdMCSx+KW7VjpW?= =?iso-8859-1?Q?VCE+CQ9WRrDOOxI0C8x32sNdYXb4lhry5quGg2R9mDsBRe0MjSPu+2g0Sl?= =?iso-8859-1?Q?04sS4WTB6UWQilQmvKERgrsi6ujVDy2LkJ5HkFHAKbULbhx5lsVIBdG3Cy?= =?iso-8859-1?Q?HtccGzC2XLsE8sTqyU3UQyNNvJMyz+p8W1YVC3YhcYgYwXgl1IqV95Xzme?= =?iso-8859-1?Q?Qnoa2/rTs5TYEdSzGcpdGOIdKWsDJ3iisSQ66d/AjNjOxC9d9UG8pXOZbT?= =?iso-8859-1?Q?n0ChN1QxC/CSUwCvvNfe+YZdwQ5JDGVtXG6vvW8YyH1+AMlBA6YIcP9tO0?= =?iso-8859-1?Q?dvfCZIvroNI9XoIZ1nEtSBdfoR72+If2GMu+P8O5P+bq8qs9FxJT8eKEmO?= =?iso-8859-1?Q?/270hx94It/yFw9LrpP2fhM0u0tDFNhtejHxOMwRpAhRtTDNMefel1KF3a?= =?iso-8859-1?Q?QCAv6m3LjtJbytPmc33SqdfYc6+3HmCnU+eCfS1MWsCSA6w518V+hqS4Nj?= =?iso-8859-1?Q?x50ylOFOQefkJaEjFd6w805cLbX/xX+2SMzb9H5C22UpTXBYax9a4qwZFS?= =?iso-8859-1?Q?/RfbUvm6NtSrrqj3aHFk2W3VQ9L+8xIyxFh+FY/XMozp9w31VgB8bb7hw/?= =?iso-8859-1?Q?9asvlp2opu9f78qMhjbSc54qgl1C+i68nKsx9UkAcbKGImxDuvx8R7T09g?= =?iso-8859-1?Q?X4AS+EY1XrTEX0zemUiG2ha3g80XAg57947B0QpdqbFNQRhL4tkS7reAHl?= =?iso-8859-1?Q?JWVZgVWbXOoV1Gw8RpieeTBqk2s3ExkRDFYpMbAeXLPg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?PdGhDwHVSTbTdywmDD77KACEMujCPRVnmB79XzTKfMKXSicIqgOf193QiA?= =?iso-8859-1?Q?EiNsPU6kMGTwujRFZBFgWZ/XrF6gMK/63WbyKp8i2IQNkZ3olTxDh4xS2w?= =?iso-8859-1?Q?DniZgaH1HFO7iYrRRKWfEoELHfBZeeNmn6s7hGebGWCQeHs3Uf4f9O3ut9?= =?iso-8859-1?Q?qskGXXbAf7kg9/zy5PbjcXNSZKFCumwwNuggG1p1JY3ysQXxFYFlnmgJ1k?= =?iso-8859-1?Q?3ZTCo+RMSD5GYHWkW7aetOEpT8Fe7OdtKfILfCpSDK1+s4PwsDuboGgkrg?= =?iso-8859-1?Q?OOzjLFloGs1IN3p/Qb++58k8/bwr7FeTv167Tt8B5KHR4FXk/p+T48FLYe?= =?iso-8859-1?Q?FE1r6LqKMyP3pMzB1Uhd0jz1nDWZqtDBnRYjKR3MMrSsdsLGnC/cMB1wHL?= =?iso-8859-1?Q?q1c7Vs7BJBj3Jp8gcV6JOcrLDgFGFRb/jl5FmojdTQbJbnw/UkxMVFOVmm?= =?iso-8859-1?Q?38xt69bCVZzs8rrHvjK5H5kfK2jvAgHnWcABL6kC5/NVP+ZQCwcGtAEKoQ?= =?iso-8859-1?Q?L4hSw5Bt5PVMUBa3PgnV9wtu1LhKshQHMyb13AQ1sPFbHiZCDalydZHMgC?= =?iso-8859-1?Q?4Jt3SYQFbJeLc0nKvXbm/r/uaGt+23vjsxTGmV9ZtCFJPWWFgdcRBAy8nK?= =?iso-8859-1?Q?g/T8imvr7oBivF2vFkTyUabun9qlLgzYAcQYqC6L+wYMWaMv72zG5H738g?= =?iso-8859-1?Q?A00KdUN8EG3CMGoKoDVJpvyQMHiCA77xuHUOsIj5ajJWCgzcQM80nOZgw5?= =?iso-8859-1?Q?t9ZoaGwxXKVEEC/9lQz2pBLyijNelHLEYNovvqWcl57CXWlXdWzZMoMmnH?= =?iso-8859-1?Q?Y2RC1Zom6tojZSnEGOryccgplj570PlaVa/m8gaE50qYqWuuS1lEPTxPsK?= =?iso-8859-1?Q?NdDlcJR6zk4HCfCJedpwLlyqcjPhhsNPI6c7crkHRmmScLexsvOG7QgtOq?= =?iso-8859-1?Q?6v0ATaLOKDa1VecgurMO4ZBEWf9KZAvCJ6geQ2FfBIG9YiVsFum8/ql1Cy?= =?iso-8859-1?Q?oxYhjmvR1k6ymArh4vmMhts3Qop/UiorZUgfTaZ2ykR3xdqM0cu4h8dDUb?= =?iso-8859-1?Q?5IXgj6UZ9X6pxBtBDhwCF0+Ag7B0Kk9ChnyExTJd4j9hSZXo9MwGY4IpDM?= =?iso-8859-1?Q?hm8kTvwahna8Nyo8AwmDXf+duZWLE3xc83zZCkAidjqGgFUFa/tDfazbp+?= =?iso-8859-1?Q?EmY0jbd2NBeMh5OTYgGsyg4mdUuIbBU4qgVtTwblcle9vt2dllRh552tTa?= =?iso-8859-1?Q?zt6Vgnu72yM+ZY1gl4nKWpyS08mOMBIgRdWo+DoYxQNUXxKrGn9MdCLSK5?= =?iso-8859-1?Q?okbFZuuxQb78z482KdkQ0jpFKkvUKc74RzzSffohQpH051LJwffxUHgryJ?= =?iso-8859-1?Q?9zfX952sKnf5DymDxCZY5KQd6gSIzl5kPZeM4WHwn/vHrjrd9fNnvhfv/v?= =?iso-8859-1?Q?5Hng4ENaKdwosleHduO7MipqbIcKgpveCxLokmpjSH0D1RUw1jdFbdZXRY?= =?iso-8859-1?Q?Oo8RkBPZc73kd/ywnJ9NFs89oUYGRoyvYY6tr+8A7Mlg04CWQrK0frVszT?= =?iso-8859-1?Q?rr70HjXL1DF4TZlgUM2SjmlO+GKCMOGyjNLaTwDTd+oPGmmBLusQ2kSrKg?= =?iso-8859-1?Q?nQop0r+nZ4jEov42HhgfXJkV0tNWTIvPBkiuqneA6r8zfpACpHuP1ADQ?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc830f38-dc7f-48a2-56e0-08ddd5d3c42b X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:26.2087 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: he4hEiepS5BgPBKkBCSnrQJzFrzMdzqX6gXiMURZ2JCZJs07ATbu0mMCkIPXZuIo52m3XgK11YTcqIVxf4Jluw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591535201116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Attach the Stage-1 configuration to device STE to support nested translation for the guests. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/drivers/passthrough/arm/smmu-v3.c | 79 ++++++++++++++++++++++++++ xen/drivers/passthrough/arm/smmu-v3.h | 1 + xen/drivers/passthrough/arm/vsmmu-v3.c | 18 ++++++ xen/include/xen/iommu.h | 14 +++++ 4 files changed, 112 insertions(+) diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index 193c892fcd..91bf72d420 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -2791,6 +2791,37 @@ static struct arm_smmu_device *arm_smmu_get_by_dev(c= onst struct device *dev) return NULL; } =20 +static struct iommu_domain *arm_smmu_get_domain_by_sid(struct domain *d, + u32 sid) +{ + int i; + unsigned long flags; + struct iommu_domain *io_domain; + struct arm_smmu_domain *smmu_domain; + struct arm_smmu_master *master; + struct arm_smmu_xen_domain *xen_domain =3D dom_iommu(d)->arch.priv; + + /* + * Loop through the &xen_domain->contexts to locate a context + * assigned to this SMMU + */ + list_for_each_entry(io_domain, &xen_domain->contexts, list) { + smmu_domain =3D to_smmu_domain(io_domain); + + spin_lock_irqsave(&smmu_domain->devices_lock, flags); + list_for_each_entry(master, &smmu_domain->devices, domain_head) { + for (i =3D 0; i < master->num_streams; i++) { + if (sid !=3D master->streams[i].id) + continue; + spin_unlock_irqrestore(&smmu_domain->devices_lock, flags); + return io_domain; + } + } + spin_unlock_irqrestore(&smmu_domain->devices_lock, flags); + } + return NULL; +} + static struct iommu_domain *arm_smmu_get_domain(struct domain *d, struct device *dev) { @@ -3003,6 +3034,53 @@ static void arm_smmu_iommu_xen_domain_teardown(struc= t domain *d) xfree(xen_domain); } =20 +static int arm_smmu_attach_guest_config(struct domain *d, u32 sid, + struct iommu_guest_config *cfg) +{ + int ret =3D -EINVAL; + unsigned long flags; + struct arm_smmu_master *master; + struct arm_smmu_domain *smmu_domain; + struct arm_smmu_xen_domain *xen_domain =3D dom_iommu(d)->arch.priv; + struct iommu_domain *io_domain =3D arm_smmu_get_domain_by_sid(d, sid); + + if (!io_domain) + return -ENODEV; + + smmu_domain =3D to_smmu_domain(io_domain); + + spin_lock(&xen_domain->lock); + + switch (cfg->config) { + case ARM_SMMU_DOMAIN_ABORT: + smmu_domain->abort =3D true; + break; + case ARM_SMMU_DOMAIN_BYPASS: + smmu_domain->abort =3D false; + break; + case ARM_SMMU_DOMAIN_NESTED: + /* Enable Nested stage translation. */ + smmu_domain->stage =3D ARM_SMMU_DOMAIN_NESTED; + smmu_domain->s1_cfg.s1ctxptr =3D cfg->s1ctxptr; + smmu_domain->s1_cfg.s1fmt =3D cfg->s1fmt; + smmu_domain->s1_cfg.s1cdmax =3D cfg->s1cdmax; + smmu_domain->abort =3D false; + break; + default: + goto out; + } + + spin_lock_irqsave(&smmu_domain->devices_lock, flags); + list_for_each_entry(master, &smmu_domain->devices, domain_head) + arm_smmu_install_ste_for_dev(master); + spin_unlock_irqrestore(&smmu_domain->devices_lock, flags); + + ret =3D 0; +out: + spin_unlock(&xen_domain->lock); + return ret; +} + static const struct iommu_ops arm_smmu_iommu_ops =3D { .page_sizes =3D PAGE_SIZE_4K, .init =3D arm_smmu_iommu_xen_domain_init, @@ -3015,6 +3093,7 @@ static const struct iommu_ops arm_smmu_iommu_ops =3D { .unmap_page =3D arm_iommu_unmap_page, .dt_xlate =3D arm_smmu_dt_xlate, .add_device =3D arm_smmu_add_device, + .attach_guest_config =3D arm_smmu_attach_guest_config }; =20 static __init int arm_smmu_dt_init(struct dt_device_node *dev, diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug= h/arm/smmu-v3.h index d54f0a79f2..3e3a6cd080 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.h +++ b/xen/drivers/passthrough/arm/smmu-v3.h @@ -398,6 +398,7 @@ enum arm_smmu_domain_stage { ARM_SMMU_DOMAIN_S2, ARM_SMMU_DOMAIN_NESTED, ARM_SMMU_DOMAIN_BYPASS, + ARM_SMMU_DOMAIN_ABORT, }; =20 /* Xen specific code. */ diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c index 3ecbe4861b..3b073b9dac 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.c +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -224,8 +224,11 @@ static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu = *smmu, uint64_t *cmdptr) { int ret; uint64_t ste[STRTAB_STE_DWORDS]; + struct domain *d =3D smmu->d; + struct domain_iommu *hd =3D dom_iommu(d); struct arm_vsmmu_s1_trans_cfg s1_cfg =3D {0}; uint32_t sid =3D smmu_cmd_get_sid(cmdptr[0]); + struct iommu_guest_config guest_cfg =3D {0}; =20 ret =3D arm_vsmmu_find_ste(smmu, sid, ste); if ( ret ) @@ -235,6 +238,21 @@ static int arm_vsmmu_handle_cfgi_ste(struct virt_smmu = *smmu, uint64_t *cmdptr) if ( ret ) return (ret =3D=3D -EAGAIN ) ? 0 : ret; =20 + guest_cfg.s1ctxptr =3D s1_cfg.s1ctxptr; + guest_cfg.s1fmt =3D s1_cfg.s1fmt; + guest_cfg.s1cdmax =3D s1_cfg.s1cdmax; + + if ( s1_cfg.bypassed ) + guest_cfg.config =3D ARM_SMMU_DOMAIN_BYPASS; + else if ( s1_cfg.aborted ) + guest_cfg.config =3D ARM_SMMU_DOMAIN_ABORT; + else + guest_cfg.config =3D ARM_SMMU_DOMAIN_NESTED; + + ret =3D hd->platform_ops->attach_guest_config(d, sid, &guest_cfg); + if ( ret ) + return ret; + return 0; } =20 diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h index 37c4a1dc82..21f905d44f 100644 --- a/xen/include/xen/iommu.h +++ b/xen/include/xen/iommu.h @@ -311,6 +311,15 @@ static inline int iommu_add_dt_pci_sideband_ids(struct= pci_dev *pdev) =20 #endif /* HAS_DEVICE_TREE_DISCOVERY */ =20 +#ifdef CONFIG_ARM +struct iommu_guest_config { + paddr_t s1ctxptr; + uint8_t config; + uint8_t s1fmt; + uint8_t s1cdmax; +}; +#endif /* CONFIG_ARM */ + struct page_info; =20 /* @@ -387,6 +396,11 @@ struct iommu_ops { #endif /* Inhibit all interrupt generation, to be used at shutdown. */ void (*quiesce)(void); + +#ifdef CONFIG_ARM + int (*attach_guest_config)(struct domain *d, u32 sid, + struct iommu_guest_config *cfg); +#endif }; =20 /* --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591531; cv=pass; d=zohomail.com; s=zohoarc; b=h2x2aEcO5u41rLVDzb/wTPTRRrJ/tZysu+Aup2sAXI/MOfMUporK3V+151TtaRFq+vg75g6vaewhTvZyq54K3VxUp1vdMYaGC757/nES12o0VwfoeqXFCDC5O/TenAQdqWvyGqeUKvxpGpTXeapC2wAjTXOsjB530uVLCa2sPuo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591531; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9/gacka5WP3MqeEz6IZtMxNW7sie3Uk4dQVfMgpBOEY=; b=EENr1MG9ZPBJge1AvnHUDZepmQS2LEslOTLUpRUzXqGjAPr4ot+Va8VCHo/1cVyxpU+wa1cmg6/dzNOkjgQ01Lp70k22cVRMdL4SvlThVH7FQtABQ1oVnJYSa3BXhi9/Lc4PpC1Mx/cEfjublqgMax8a92S/k4xv0zDfkzLsZFg= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591531510407.8841845649723; Thu, 7 Aug 2025 11:32:11 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073349.1436391 (Exim 4.92) (envelope-from ) id 1uk5P3-0002Tj-Is; Thu, 07 Aug 2025 18:31:49 +0000 Received: by outflank-mailman (output) from mailman id 1073349.1436391; Thu, 07 Aug 2025 18:31:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P2-0002RO-SJ; Thu, 07 Aug 2025 18:31:48 +0000 Received: by outflank-mailman (input) for mailman id 1073349; Thu, 07 Aug 2025 16:59:34 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xm-00076W-2t for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:34 +0000 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20a::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e40cd520-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:33 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:27 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:27 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e40cd520-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n3wGOBocLUc0jh22l40lhfG64O4w3l8ZNMZ86q+QwqZfOmiSv5oNFndsNkpTaOopquM0UGT7Hlcl3bVsurckYag/qWze5y+Sg1IDjRmBZE/XIlLAitx8CZacUby3Om6quPwym8daI+C6Ez7CCI78OWrPgZENN4oF8J2Wpd4AucS1EaFIxj9q8+YGfuwsJt48KlXLiDvAFKzoCnoVyX78BWfjhY/WMsL+qYVPJV+VlOC83iv7GFgw+Fyvb6rxwFa8epHtR7WdRu2R+2vJCEdMtmCKFgvkTjqFACoJWd4B2KuLZ8zR0btCLlp9gU0OQ4Ho754bF8aQ32Pl5dmu4nu+fA== 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=9/gacka5WP3MqeEz6IZtMxNW7sie3Uk4dQVfMgpBOEY=; b=Jz/37zBwNp5z/Vr22nNOvY264IP25SyArL3CGZ5NE4trQEj0gmoa8q6Nd6aeB7utuisYj7+h7xSUUlcCSFGLrFEK1vcTFwyuMrDuTYwH5arsLf4csG6DYz1TMv7xk+GXljvFb+PrKiqF9nl1WdGjs5PJknHxy5nyPTUJUbcgHvalCSFBsiFHh6lVIFzkDxDYZO2ZjvgC+yKwpG1TIFssKkYcu1zLlT3iaeIoxeiwneXsBB/SxOh8Z9bo89MvDNYS//bIb1LX4lMeYrF1GG9d0k8UXYb6RGgaRMUPRkQ6JGP6tr1VJJCgpUn171llN5lITxuAi+KovuAQdyIeTGtuHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9/gacka5WP3MqeEz6IZtMxNW7sie3Uk4dQVfMgpBOEY=; b=kDTDClQyu/U2QalD01181yrPJtrY3JVo1pt39y77EYjr7WiqQWMqdM/2lkM0Fh0nEmv6ndpFPkk3cBMily/Ly/MPK6H42t37A20yccLhqop29/OpTgZTi/BmDSUYwoqDk9LOruTh+15U0aWGo1fEG8CcrsUyQnnw5dzsypY93tgHQ8ONK/Yp87aXTlx5J9+9AsV6KKec7Muzjybnf2zsp/IMPgk9wIxBaY+yCdX/BEzsBgJqYHwMSOLTNR7M94Z31bKmvBkaCe0vWSpuw+YyeqlJ3HX/KtcPUGERh+I1pP3f/AsDK4FbEueFfCP0VgxP2jdTX0UdTW5XJqX//5Jr5Q== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 12/20] xen/arm: vsmmuv3: Add support for event queue and global error Thread-Topic: [PATCH 12/20] xen/arm: vsmmuv3: Add support for event queue and global error Thread-Index: AQHcB7yi7AssCwTYaUG/iDk08I6dEw== Date: Thu, 7 Aug 2025 16:59:27 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: b1438cd1-490e-4317-20fc-08ddd5d3c4f2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?sB9i6tNRNSbKJIUi30JQywHae/uQhrH+iJqg5KH00mrwC8F/Is4uO56llR?= =?iso-8859-1?Q?tYWfu6PXaOsaJZoyeKCE/d0PK/+bRsi8NqI49cBMPUX7MaLNUfT4WnRuEB?= =?iso-8859-1?Q?1FX6YB6DjhEs2eNGmKLBxlBE4kzrayMhm5POshmmItYxM85o3YltPs0PS0?= =?iso-8859-1?Q?GMQux0l1ev64jW/riWmWJ7UPZdr43ZSd+eF4QCoBSH6Cpz4XZ92m7V4Dfe?= =?iso-8859-1?Q?lFPtSObR3I3G8Gzk/x6QnHcZ4cY+Rtr+vLpBntQ3apJw7tfWlHYagtpWUd?= =?iso-8859-1?Q?2mhJSFoigpli6Nyf+Io/hBHOv3+6hETFpUIkxcbhlZeGngiRmYRFPT2/sn?= =?iso-8859-1?Q?3MZ5W0kKzwIF9NcJQXit+T+e4KDT5nu4UQmPya9DIR4I8ZryylZD9jGOBx?= =?iso-8859-1?Q?hS0LFZqi4Er32/hiBHwpqCRiMOkRn/5WXodUoaDteT+8JQue93vfwXc8HL?= =?iso-8859-1?Q?DZNjsuVXzWzGYhQpNbalMSBpIy47VOWnC4wZ1uS3Pm/NPUqraM+8KPEhsY?= =?iso-8859-1?Q?9BNXU6UDypfc2ZvlU9Q0wChJIF/KTRZxYKWuiONbssuHvILd0yFGfJckAz?= =?iso-8859-1?Q?XwicuQ1w99XFnWOuiOC/ojXnDL7bwGaKgFAZyc8pmTQpjZhRIDI6S0sfuj?= =?iso-8859-1?Q?aDtwym+f1/nl56X6n0aeQs902lBecA+o7hgRYAE2gMEazlvDhSL2sec5Mi?= =?iso-8859-1?Q?h4nrP296GbtssMm12vUnC99gHufSierQc1sUgXCerQ2f+T34Mi1fFfhnqx?= =?iso-8859-1?Q?GkpRyDxqE249NGUq8yDW/08DAJjAsO601/I/y0HKhBLX9U2CxeCmP4TbQP?= =?iso-8859-1?Q?REO3GUCgnT1gyD2L/jM9ltyT3LDVX7mtIVkoK9f2JIvYXI98E0ITJfww/x?= =?iso-8859-1?Q?3G7KYuroR/RwzGFKSqPo6Lz1JWA5cHgONNppHFX8ccSn9P3zJNcbwtUeu3?= =?iso-8859-1?Q?7LsUJt/GxTHOHtOQ7dW6PE6Wpv+eOdRXXve9KF2pS3K89m4SwIT67kCCVf?= =?iso-8859-1?Q?pMEvUDQOIPv4LFtMv5GBULfUYy31oseEDpFVAnW4yldgaR9WigdO26lVBx?= =?iso-8859-1?Q?+NnJCWmu52D5OAUQTLscqTERJN5nwqfoFvdwPpKxv5i9fxgLa17o+kHsqj?= =?iso-8859-1?Q?SxM2XMthPXT3TXpWCn4ix6Nnyx6ZdAHYmNNzWfhXN/GRlgC2Qjr0H/RoN0?= =?iso-8859-1?Q?MlMsKVeUBHdfl1xkk2B72zFWSCRX8JX8KB59QrS0MK6tMilt+HU3d7BtbR?= =?iso-8859-1?Q?77s5s6S00LxxHAEnrLW9z8TKi6d1A7MNidiPzsTX36aPSzbVofFmH1oySN?= =?iso-8859-1?Q?VFcWRNikZW/+SdrJ/jZXYHPCGltQizxeqg2mbdgiJa72AmIwm7o3rC0NgP?= =?iso-8859-1?Q?o9h/AUdm3CBWlii7mFnqtxxbXGehCxv+MtCJFlvObxSl5UdKCUX1zrfSR5?= =?iso-8859-1?Q?Z8RXkBFAWZN4PM2xOCKEldT6Tt8rahvskrNjDUAq6NByq93P0kIGh0z8ie?= =?iso-8859-1?Q?B6aqqtTkS/KaD5WxnZbfu6FJXdZ7n8BiRq7izVQlFWcA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?4o1euG+ESNVW9Y8tStXAJ1hKNLJRja4pq70t9s9J867d/bB1Je9ZSRhw/4?= =?iso-8859-1?Q?DxdCwzvSrERFkkulFfGZvGLjCmH+l07uBgHv9GJlfZstadxY56TeYGvfku?= =?iso-8859-1?Q?MqCgiuEr2c5oYWNjZ6OyWpozxdJahVMeJMcg/n0BNCCS/2HbbJvfLDr8R8?= =?iso-8859-1?Q?ivyPT3TSnecvzVvgzDEVDrmiIsYYAK0Nnrqq4rp8Ut15M8AVfZRktnFo3p?= =?iso-8859-1?Q?YMsSITsYhrQDJ9zCW88183hiskoxsQPmMCUMB3hNFvzcFUHlgubkQREIFf?= =?iso-8859-1?Q?i2jBlkDdt6FVEIikjC32r0crRzBwBbTPLHlkw2SImsMz1u0pkL+IGo89o2?= =?iso-8859-1?Q?DbWuX293dJG9zD7Ffc8QkNkFD2uiP7leqSmhMtf06buyc4O1AtRqQkPaZW?= =?iso-8859-1?Q?OB4f59yV2LCr6j++ZWOfuQQ2+NTHwWS7JwpuQW0N5Km/SUbaxwt1fnuTPA?= =?iso-8859-1?Q?SyemzKj0vFUhR+VwoainvoRt4P4n4kLkF2c4AahJdk5eQnTWZhSaYtgrkP?= =?iso-8859-1?Q?vWFwxjAE6xIhUGGFzD1qDvfcUwBduycBqxeeb0GEzDjnUcTYJqFhhPKvSM?= =?iso-8859-1?Q?rfWxUz+FQHgY26KLacmdQlieXDpWGRBJpJrMoei7NC2lvDJgc7/aXJE6rE?= =?iso-8859-1?Q?8+pIYuYDHp9Xa2VWtEBv2HxCvcMxbxmY2NjPzrDQpHOGpjB0lwAX3Ms7WC?= =?iso-8859-1?Q?GPu1tjOkxMMOwqIaXng8hDy1iUEUe7DdAQFhcLrAjX7fvBioXHB1wQW0sR?= =?iso-8859-1?Q?aZpNMfRb2jq9drKUPWkmB1+1EPrVXKmgCHn8XvAtMli1hPWqBAeibkDpCU?= =?iso-8859-1?Q?w6HRSWmDZbIX8tmGk2/hjjaXujY7Vjzk5CKz5iBnDy13b9F5OBp2jerQgM?= =?iso-8859-1?Q?MMKcMufATGTz4K9Un50mImt0+KRKIoYB+s3Fi9WYUR+WFQ8dskx7xpXwBg?= =?iso-8859-1?Q?820LSocvWQgwKuxgeIF1B/kimg6fSDKJnbHX9ww3xojFAZ7GYdHQkxyQ5B?= =?iso-8859-1?Q?sTJETJW+6bMSU/hpfo9LiDB9dl8kYVH7qIfJDAtnq9yrRPNxUYiWBcTYGe?= =?iso-8859-1?Q?0HXSfNRYWnuJ5a/9ZfZTRNtBP1TBrfgObmpl2h29nrNtsY1k3wJmSyEgtE?= =?iso-8859-1?Q?xUGkiaa47stBtpu2PUAXhOX/+skt5TGDivU2qFgZouKyz5QKVokP+urFfc?= =?iso-8859-1?Q?xL1vvf4fTusqHhWwplP6hL4GLIkJpuShPJcX5YDL3rr2d4VW6G4Sdlai/x?= =?iso-8859-1?Q?/dLOzoKJlOILYYS2k0U98izSnHqxBb7uWhPLzqRGm66xADunSJ/Ew4NoBu?= =?iso-8859-1?Q?SBsqtTWLsqiWArmgoN61F0Nt+tXm6PtnqpnqrIQ+WCM/maoucZ/DNDLqOS?= =?iso-8859-1?Q?yG2HxTmBflJRJXdwykwvWFxPCambrTT+fLiSxSt6K3LHKfsUFoy1zzT2wX?= =?iso-8859-1?Q?9Bj5Mdzhy9xobcPyCGb87or5+09ZVzzgPnnxAO8IvvNcRiXfd3XCQiDKYu?= =?iso-8859-1?Q?+q9pWOzI4DohozswMv0R1MItHvUZvL0qyeTve91tmpdDhspLrZDEeaFsj8?= =?iso-8859-1?Q?GWL4s1cZyP7XHunzIQKTw8T6NMPepYBVQdh3PSs8p1D+BSo2qFCgin1uCN?= =?iso-8859-1?Q?V90smjJ388/+YsgFpzHobrNJL74HaN1s9JD4rZ08jsJycT1fCGqkw7wQ?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1438cd1-490e-4317-20fc-08ddd5d3c4f2 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:27.5265 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0+70L6W+xs4zd0dzWlWrNdtvFUx4lrFc2kZ8jMI2RQE0MMywET6rIAzHdgArD8QvWlexJvLOCD8LO9Mqzw8lkw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591553022124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Event queue is used to send the events to guest when there is an events/ faults. Add support for event queue to send events to guest. Global error in SMMUv3 hw will be updated in smmu_gerror and smmu_gerrorn register. Add support for global error registers to send global error to guest. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/drivers/passthrough/arm/smmu-v3.h | 20 +++ xen/drivers/passthrough/arm/vsmmu-v3.c | 169 ++++++++++++++++++++++++- xen/include/public/arch-arm.h | 5 +- 3 files changed, 186 insertions(+), 8 deletions(-) diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthroug= h/arm/smmu-v3.h index 3e3a6cd080..820271a413 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.h +++ b/xen/drivers/passthrough/arm/smmu-v3.h @@ -354,6 +354,26 @@ =20 #define EVTQ_0_ID GENMASK_ULL(7, 0) =20 +#define EVT_ID_BAD_STREAMID 0x02 +#define EVT_ID_BAD_STE 0x04 +#define EVT_ID_TRANSLATION_FAULT 0x10 +#define EVT_ID_ADDR_SIZE_FAULT 0x11 +#define EVT_ID_ACCESS_FAULT 0x12 +#define EVT_ID_PERMISSION_FAULT 0x13 + +#define EVTQ_0_SSV (1UL << 11) +#define EVTQ_0_SSID GENMASK_ULL(31, 12) +#define EVTQ_0_SID GENMASK_ULL(63, 32) +#define EVTQ_1_STAG GENMASK_ULL(15, 0) +#define EVTQ_1_STALL (1UL << 31) +#define EVTQ_1_PnU (1UL << 33) +#define EVTQ_1_InD (1UL << 34) +#define EVTQ_1_RnW (1UL << 35) +#define EVTQ_1_S2 (1UL << 39) +#define EVTQ_1_CLASS GENMASK_ULL(41, 40) +#define EVTQ_1_TT_READ (1UL << 44) +#define EVTQ_2_ADDR GENMASK_ULL(63, 0) +#define EVTQ_3_IPA GENMASK_ULL(51, 12) /* PRI queue */ #define PRIQ_ENT_SZ_SHIFT 4 #define PRIQ_ENT_DWORDS ((1 << PRIQ_ENT_SZ_SHIFT) >> 3) diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c index 3b073b9dac..7a6c18df53 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.c +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -44,6 +44,7 @@ extern const struct viommu_desc __read_mostly *cur_viommu; =20 /* Helper Macros */ #define smmu_get_cmdq_enabled(x) FIELD_GET(CR0_CMDQEN, x) +#define smmu_get_evtq_enabled(x) FIELD_GET(CR0_EVTQEN, x) #define smmu_cmd_get_command(x) FIELD_GET(CMDQ_0_OP, x) #define smmu_cmd_get_sid(x) FIELD_GET(CMDQ_PREFETCH_0_SID, x) #define smmu_get_ste_s1cdmax(x) FIELD_GET(STRTAB_STE_0_S1CDMAX, x) @@ -52,6 +53,35 @@ extern const struct viommu_desc __read_mostly *cur_viomm= u; #define smmu_get_ste_s1ctxptr(x) FIELD_PREP(STRTAB_STE_0_S1CTXPTR_MASK,= \ FIELD_GET(STRTAB_STE_0_S1CTXPTR_MASK, = x)) =20 +/* event queue entry */ +struct arm_smmu_evtq_ent { + /* Common fields */ + uint8_t opcode; + uint32_t sid; + + /* Event-specific fields */ + union { + struct { + uint32_t ssid; + bool ssv; + } c_bad_ste_streamid; + + struct { + bool stall; + uint16_t stag; + uint32_t ssid; + bool ssv; + bool s2; + uint64_t addr; + bool rnw; + bool pnu; + bool ind; + uint8_t class; + uint64_t addr2; + } f_translation; + }; +}; + /* stage-1 translation configuration */ struct arm_vsmmu_s1_trans_cfg { paddr_t s1ctxptr; @@ -82,6 +112,7 @@ struct virt_smmu { uint32_t strtab_base_cfg; uint64_t strtab_base; uint32_t irq_ctrl; + uint32_t virq; uint64_t gerror_irq_cfg0; uint64_t evtq_irq_cfg0; struct arm_vsmmu_queue evtq, cmdq; @@ -89,6 +120,12 @@ struct virt_smmu { }; =20 /* Queue manipulation functions */ +static bool queue_full(struct arm_vsmmu_queue *q) +{ + return Q_IDX(q, q->prod) =3D=3D Q_IDX(q, q->cons) && + Q_WRP(q, q->prod) !=3D Q_WRP(q, q->cons); +} + static bool queue_empty(struct arm_vsmmu_queue *q) { return Q_IDX(q, q->prod) =3D=3D Q_IDX(q, q->cons) && @@ -101,11 +138,105 @@ static void queue_inc_cons(struct arm_vsmmu_queue *q) q->cons =3D Q_OVF(q->cons) | Q_WRP(q, cons) | Q_IDX(q, cons); } =20 +static void queue_inc_prod(struct arm_vsmmu_queue *q) +{ + u32 prod =3D (Q_WRP(q, q->prod) | Q_IDX(q, q->prod)) + 1; + q->prod =3D Q_OVF(q->prod) | Q_WRP(q, prod) | Q_IDX(q, prod); +} + static void dump_smmu_command(uint64_t *command) { gdprintk(XENLOG_ERR, "cmd 0x%02llx: %016lx %016lx\n", smmu_cmd_get_command(command[0]), command[0], command[1]); } + +static void arm_vsmmu_inject_irq(struct virt_smmu *smmu, bool is_gerror, + uint32_t gerror_err) +{ + uint32_t new_gerrors, pending; + + if ( is_gerror ) + { + /* trigger global error irq to guest */ + pending =3D smmu->gerror ^ smmu->gerrorn; + new_gerrors =3D ~pending & gerror_err; + + /* only toggle non pending errors */ + if (!new_gerrors) + return; + + smmu->gerror ^=3D new_gerrors; + } + + vgic_inject_irq(smmu->d, NULL, smmu->virq, true); +} + +static int arm_vsmmu_write_evtq(struct virt_smmu *smmu, uint64_t *evt) +{ + struct arm_vsmmu_queue *q =3D &smmu->evtq; + struct domain *d =3D smmu->d; + paddr_t addr; + int ret; + + if ( !smmu_get_evtq_enabled(smmu->cr[0]) ) + return -EINVAL; + + if ( queue_full(q) ) + return -EINVAL; + + addr =3D Q_PROD_ENT(q); + ret =3D access_guest_memory_by_gpa(d, addr, evt, + sizeof(*evt) * EVTQ_ENT_DWORDS, true); + if ( ret ) + return ret; + + queue_inc_prod(q); + + /* trigger eventq irq to guest */ + if ( !queue_empty(q) ) + arm_vsmmu_inject_irq(smmu, false, 0); + + return 0; +} + +void arm_vsmmu_send_event(struct virt_smmu *smmu, + struct arm_smmu_evtq_ent *ent) +{ + uint64_t evt[EVTQ_ENT_DWORDS]; + int ret; + + memset(evt, 0, 1 << EVTQ_ENT_SZ_SHIFT); + + if ( !smmu_get_evtq_enabled(smmu->cr[0]) ) + return; + + evt[0] |=3D FIELD_PREP(EVTQ_0_ID, ent->opcode); + evt[0] |=3D FIELD_PREP(EVTQ_0_SID, ent->sid); + + switch (ent->opcode) + { + case EVT_ID_BAD_STREAMID: + case EVT_ID_BAD_STE: + evt[0] |=3D FIELD_PREP(EVTQ_0_SSID, ent->c_bad_ste_streamid.ssid); + evt[0] |=3D FIELD_PREP(EVTQ_0_SSV, ent->c_bad_ste_streamid.ssv); + break; + case EVT_ID_TRANSLATION_FAULT: + case EVT_ID_ADDR_SIZE_FAULT: + case EVT_ID_ACCESS_FAULT: + case EVT_ID_PERMISSION_FAULT: + break; + default: + gdprintk(XENLOG_WARNING, "vSMMUv3: event opcode is bad\n"); + break; + } + + ret =3D arm_vsmmu_write_evtq(smmu, evt); + if ( ret ) + arm_vsmmu_inject_irq(smmu, true, GERROR_EVTQ_ABT_ERR); + + return; +} + static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid, uint64_t *ste) { @@ -114,11 +245,22 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu,= uint32_t sid, uint32_t log2size; int strtab_size_shift; int ret; + struct arm_smmu_evtq_ent ent =3D { + .sid =3D sid, + .c_bad_ste_streamid =3D { + .ssid =3D 0, + .ssv =3D false, + }, + }; =20 log2size =3D FIELD_GET(STRTAB_BASE_CFG_LOG2SIZE, smmu->strtab_base_cfg= ); =20 if ( sid >=3D (1 << MIN(log2size, SMMU_IDR1_SIDSIZE)) ) + { + ent.opcode =3D EVT_ID_BAD_STE; + arm_vsmmu_send_event(smmu, &ent); return -EINVAL; + } =20 if ( smmu->features & STRTAB_BASE_CFG_FMT_2LVL ) { @@ -132,7 +274,7 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, u= int32_t sid, idx =3D (sid >> STRTAB_SPLIT) * STRTAB_L1_DESC_DWORDS; l1ptr =3D (paddr_t)(strtab_base + idx * sizeof(l1std)); =20 - ret =3D access_guest_memory_by_ipa(d, l1ptr, &l1std, + ret =3D access_guest_memory_by_gpa(d, l1ptr, &l1std, sizeof(l1std), false); if ( ret ) { @@ -156,6 +298,8 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, u= int32_t sid, { gdprintk(XENLOG_ERR, "idx=3D%d > max_l2_ste=3D%d\n", idx, max_l2_ste); + ent.opcode =3D EVT_ID_BAD_STREAMID; + arm_vsmmu_send_event(smmu, &ent); return -EINVAL; } addr =3D l2ptr + idx * sizeof(*ste) * STRTAB_STE_DWORDS; @@ -167,7 +311,7 @@ static int arm_vsmmu_find_ste(struct virt_smmu *smmu, u= int32_t sid, ~GENMASK_ULL(strtab_size_shift, 0); addr =3D strtab_base + sid * sizeof(*ste) * STRTAB_STE_DWORDS; } - ret =3D access_guest_memory_by_ipa(d, addr, ste, sizeof(*ste), false); + ret =3D access_guest_memory_by_gpa(d, addr, ste, sizeof(*ste), false); if ( ret ) { gdprintk(XENLOG_ERR, @@ -183,6 +327,14 @@ static int arm_vsmmu_decode_ste(struct virt_smmu *smmu= , uint32_t sid, uint64_t *ste) { uint64_t val =3D ste[0]; + struct arm_smmu_evtq_ent ent =3D { + .opcode =3D EVT_ID_BAD_STE, + .sid =3D sid, + .c_bad_ste_streamid =3D { + .ssid =3D 0, + .ssv =3D false, + }, + }; =20 if ( !(val & STRTAB_STE_0_V) ) return -EAGAIN; @@ -217,6 +369,7 @@ static int arm_vsmmu_decode_ste(struct virt_smmu *smmu,= uint32_t sid, return 0; =20 bad_ste: + arm_vsmmu_send_event(smmu, &ent); return -EINVAL; } =20 @@ -271,7 +424,7 @@ static int arm_vsmmu_handle_cmds(struct virt_smmu *smmu) int ret; =20 addr =3D Q_CONS_ENT(q); - ret =3D access_guest_memory_by_ipa(d, addr, command, + ret =3D access_guest_memory_by_gpa(d, addr, command, sizeof(command), false); if ( ret ) return ret; @@ -577,7 +730,8 @@ static const struct mmio_handler_ops vsmmuv3_mmio_handl= er =3D { .write =3D vsmmuv3_mmio_write, }; =20 -static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t siz= e) +static int vsmmuv3_init_single(struct domain *d, paddr_t addr, + paddr_t size, uint32_t virq) { struct virt_smmu *smmu; =20 @@ -586,6 +740,7 @@ static int vsmmuv3_init_single(struct domain *d, paddr_= t addr, paddr_t size) return -ENOMEM; =20 smmu->d =3D d; + smmu->virq =3D virq; smmu->cmdq.q_base =3D FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_CMDQS); smmu->cmdq.ent_size =3D CMDQ_ENT_DWORDS * DWORDS_BYTES; smmu->evtq.q_base =3D FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_EVTQS); @@ -612,14 +767,16 @@ int domain_vsmmuv3_init(struct domain *d) =20 list_for_each_entry(hw_iommu, &host_iommu_list, entry) { - ret =3D vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size); + ret =3D vsmmuv3_init_single(d, hw_iommu->addr, hw_iommu->size, + hw_iommu->irq); if ( ret ) return ret; } } else { - ret =3D vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_S= IZE); + ret =3D vsmmuv3_init_single(d, GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_S= IZE, + GUEST_VSMMU_SPI); if ( ret ) return ret; } diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h index d6201df06a..1b03222b77 100644 --- a/xen/include/public/arch-arm.h +++ b/xen/include/public/arch-arm.h @@ -521,9 +521,10 @@ typedef uint64_t xen_callback_t; #define GUEST_EVTCHN_PPI 31 =20 #define GUEST_VPL011_SPI 32 +#define GUEST_VSMMU_SPI 33 =20 -#define GUEST_VIRTIO_MMIO_SPI_FIRST 33 -#define GUEST_VIRTIO_MMIO_SPI_LAST 43 +#define GUEST_VIRTIO_MMIO_SPI_FIRST 34 +#define GUEST_VIRTIO_MMIO_SPI_LAST 44 =20 /* * SGI is the preferred delivery mechanism of FF-A pending notifications or --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591527; cv=pass; d=zohomail.com; s=zohoarc; b=heX0tdw6zkSccK/rYFAXFwUubHOLMZSrkkkEOVmpCfVPUGgOd4e19UTyPC2/JEX0+nHN4IFWyffk4HCqT7Y3tn05/kuSk2cuVr3I+0tRo9XuQfUfAJZiyVPZhmk8yEoYPMI2nQJINRhOtqEwNBrvg0sKNeRfKWckEwwm5L+jPoI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591527; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bzIg5GHDCWFcYWZJkLnWl/NOh0XfgRa9h4RfPtk/omM=; b=ZrqjrpsE7f0UKeGcvjnykLPMlKLhPNoUBgq3bZ5LMhM7XvjXs9CQiyUA8l7lrlvmSJBBIGPQR262iNov60RRwTVhcSO7E2SCbcCcVkc9vJAj/Sx9LS+TykuqhkG2WBShRFKH2T8JCjh6sVvIriGpyuwHXvRE9Phah06zp/IEp8c= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591527114967.7198434284046; Thu, 7 Aug 2025 11:32:07 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073351.1436399 (Exim 4.92) (envelope-from ) id 1uk5P4-0002df-86; Thu, 07 Aug 2025 18:31:50 +0000 Received: by outflank-mailman (output) from mailman id 1073351.1436399; Thu, 07 Aug 2025 18:31:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P3-0002c5-Ja; Thu, 07 Aug 2025 18:31:49 +0000 Received: by outflank-mailman (input) for mailman id 1073351; Thu, 07 Aug 2025 16:59:35 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xn-00076W-36 for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:35 +0000 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20a::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e4936a45-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:34 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:28 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:28 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e4936a45-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZtbI+geXYrtGEpMXMm0SiMn211k7uNLwpiIiAsF3BYkDexUbRHlF24hIuWYGTbaU5bZdeVO3mPzuhQfHL+TL3hwjKt0YQyjVVYBy8J4xxbgMUdp7pWXJv/iqTlnmEJkbIDzU5HvPcgWDQdei0aS2xYcDbiDoHsp/m0N5RjKaJEeuR51TIQQTqTj8LpTHRK/wiss+54BfheqxUi54O1JHneCFvXJcmyGCyKsPTs0Z77Y+jeT0ndUBLphNt7qbK1HlARiRP+mFM/RqFQRDvTLHtt5VntgPsEqvC/froyCkIGCtrN5FlqOw3jlc6XCjJpjrs+iXkKdHSY8yR8X6OfO0Qw== 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=bzIg5GHDCWFcYWZJkLnWl/NOh0XfgRa9h4RfPtk/omM=; b=MtFmzOBzFNuuudnp32L9T3tCoYDVTIJ2b9eS9Y/FowrtHt29CQByKOpUrFMWWNF7vTwPltjKMzjeYqiWkYFlpzOD9AUaUyIj2XDILtebJdm/pzPn9ZySOR/8yVxxBQkIAO/Z44KyhY0rBGdkpwRPuIM/cymRBzOu6JE5UHy8JqSAckCSfEYGb4FsBjFssXKlPeN1v02B74y+IEIUg03l51Pio/Hb0AMrha3ae1fSz7TjDO/wOhuUwbtOJ8GzEFuFqSo2OXPcC/jRNWlzLIj+/FpLYA8OYzBBUvpG+Pvi7hQm6dQnf03PjXRpwbP3sxuw/wzc7jz6lnDfpaZktohs+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bzIg5GHDCWFcYWZJkLnWl/NOh0XfgRa9h4RfPtk/omM=; b=hs5V3EcyHzApptAFxZ+NbZCsP1v1gvIryq+eVjRkn0h1esnqB8g+JSLT3CzhOBpjDpzA88f2dlnEH12WubYJtbMma23c2xX0SqPUucj9UQz5IP+24hkITbIHzVunHrRwTqqZK1RP90AMIUa8IMxUJpJQCHJoIlZmyPEKT9851MK1Frrwbc2L1BqiiMfxg+t0AgV9k6+mRIn2znuX70jh4CKZ4gm9l3d0vGNZGS3hTepfoRXDn65/VMJPSR0DprTRjUxsW0ByW9WlP6nudJDGu6DFKxkoWnfVXtcdbEhOqU0w3ihfm0FTqLsejLtV/WgDfKxTYuVCWDA1DSQtL5Fxzg== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 13/20] xen/arm: vsmmuv3: Add "iommus" property node for dom0 devices Thread-Topic: [PATCH 13/20] xen/arm: vsmmuv3: Add "iommus" property node for dom0 devices Thread-Index: AQHcB7yjZjfsfeySMU+j/Wtm9iEvHQ== Date: Thu, 7 Aug 2025 16:59:28 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 27341c5c-d8c9-42ff-b62b-08ddd5d3c58a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?OGQyVTdO3Lf/Szu33R3gUcKJIM2/W1IYPe45qLb3mY80YPFy9m8S9N3RNN?= =?iso-8859-1?Q?3wKhDuyQ48aOhrmrY0ykyH3BYC4rqUkU59j5pbEoXyPeKzWa6gFhZXCcW6?= =?iso-8859-1?Q?IZrGxH5405eRmLPoSJgbZKUQ9CWJP6m7EYSc+6at3hfTlmyWsIiu33d86L?= =?iso-8859-1?Q?TnWi2kvxqZ4kxOJn+uHdcFpJFPUC9o39VuCz5d90zoa+5xAuoTlsmS86q8?= =?iso-8859-1?Q?5FtxzaQND24GdhEWthIyNg73AbG6OvGkHuFifnFvOh53QmEk3t38Whkn8B?= =?iso-8859-1?Q?IHTbIM4ipucNI7+bybi5qz8reU4x3hsyhK2Jc+SuJHD2RaqE3VTs1LKoK7?= =?iso-8859-1?Q?Ke6YXTi4Lxl+FznOVjcI2p2ai6Xdz9wj2+mRgTNwM0TC93REzF2cPCxxPG?= =?iso-8859-1?Q?V8pAqiu26s3RNxWmdGcjbKOVr6ZClh31dRhTvXV5y7HKl2TdE9N+R6GgkL?= =?iso-8859-1?Q?jZ+Id3xzU80kZzVeOugIeGNROOvpTp/oZNdTy4e52skbSTw7pmGjXGjbs/?= =?iso-8859-1?Q?t7YFyJ4g99DTzcFzAB6dBLdJQIgnn249cb/V174nLm31Uocsbll/zGzMCV?= =?iso-8859-1?Q?b9UoGEIP7atWbJmxA22veqhRPt+q6Fwnzm0azn8rBWKK+nkX1SskXBalme?= =?iso-8859-1?Q?f5K5+q+jg+5QB0UxDc8BNgjFZzpsoroDzmLBqEuJF7pykHW9gaVKtDxJoT?= =?iso-8859-1?Q?4QUvmGEpYxsezTin+ebhVWGHwqJXcQ2ub86zHvca+fgunINHHMczvXxRTb?= =?iso-8859-1?Q?l7+272vfh5y/V8z+ltUmY1/ltGIYCCUzY71esG12hb4ZOMM1bPMNu7GVye?= =?iso-8859-1?Q?RxjQgaqV3pv0F2ZFOPzB3y1W9FFIuQ2lCvfxfpPJKuQAMeeGUmRxW+x+Lf?= =?iso-8859-1?Q?cbbKsKG0kS2e3335K2mG9mJZUc6U2o2AU2LEi0VirdoG9GFg7teOlbhYAt?= =?iso-8859-1?Q?9+xTtTJTvGuBvQXBUwE8ThKqAKkIweySrf9SRLvg6/sxc3RCgBR3yHYzbh?= =?iso-8859-1?Q?GY0+i6mhuPeWT/3OU1B+MqnUb1CdjbOOX8Ixydc1UYJ0m16agwmMJ9/22w?= =?iso-8859-1?Q?giUlhjMGkEcxPJp6qDbPYI7lg2bxkX1QGRD3aZP3HWmY8vHQozL2TOG/8T?= =?iso-8859-1?Q?ROWzOtL//+RF2YEv2Hh9/k2x0g0Zr85FBndwWocY+WfHb4KQaQZ6lyjshi?= =?iso-8859-1?Q?yXgmwMwib1OHPbALfUqImRLCdKD02F5V3M7nKRMDH6VPHVzjhmTo+9hUse?= =?iso-8859-1?Q?qVrT7ffvuyv4d3v3D0w59iQQo1ev+Cc9cYbI9FtybZD8zOfuSp257RpCR/?= =?iso-8859-1?Q?VMcysK93WQpkoJHfATkL2N+dfB4fLASP7Gl3pVdFBLXlovqRmjpLDJP6Fa?= =?iso-8859-1?Q?sKOfr1Q7FO0IEk69BQUcprg7Ccl/8rjnf23Hg78F9qf0zbBsnBYKA47dBz?= =?iso-8859-1?Q?grMYQSCXpF1qSxNDrukXBhL+FRtjhhI9ASUGzeZxufkVen23gML2XzgYH+?= =?iso-8859-1?Q?gwex5GEMPcYF39w4jpc3Ksz7hEdIbwecgyLMmsbUIlkQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xcRE77neETtlOnNm4NV3Z5JiLmAZ/r/EWs9plLih1K1sptLV+V5dzlTxwW?= =?iso-8859-1?Q?IFbGBzDAC0FbTL4ZLdaeCoy9jCKC7FpAC2nPllexpN/zM/UBxGofMsNWwU?= =?iso-8859-1?Q?INQrmcQPl7x3hQKgO8iCRxM2Xj3d5B7fjJVhO4sWHyr6R4lZEQTq1N4+J/?= =?iso-8859-1?Q?0xzAqukcDv8BJERInMQTTZxHENx1ucY5jBdt1nHLWRAQ4N4oZH9hWi+nyq?= =?iso-8859-1?Q?69yteWMHVxlgHYuiZCGn2LBOjiHfVuTaOi6F1/X/3LmckdTilAEw9yoFvX?= =?iso-8859-1?Q?1NF0sDQnfte4lLFKywe8BYLI/G5U3w567j+oj9z0C7lSueRgnQpsqTNDDH?= =?iso-8859-1?Q?BxmK1HRS/oi+DggVRy+QbJl1WgY8gMhYcni55XobuEO7De/cdX/kbtNzyX?= =?iso-8859-1?Q?FaJoFz7aN1d45qE76/l0IkDC72MayKyPfNVzuR0QbIr46afOyDWtse02z7?= =?iso-8859-1?Q?2GJ6SdGyuvkBSJIwwyp2rRLWioHYK/3iLT7sQtElOqRvyndN3IV7rps/65?= =?iso-8859-1?Q?twyok6x7td03Ej2KEgCjEaoKyd+ANbx8TUoiD8eHmrshwKRgRveJEKJtHI?= =?iso-8859-1?Q?ffgyXG5ya/LRLd3CsLJ6o+X1OIyYu8J+BiKh2/aCXV47nGmLxbcdmFzrWU?= =?iso-8859-1?Q?vt0llUER6bSGeyT1YobCTtMDOpCIfUK32xNPXwHbXXnzMjOdXOXecTSOv1?= =?iso-8859-1?Q?Yrt8GKhlMZnZ1oIUl+nX54JgIpBteJGgSejUt8aIeftMIiZsAey82S7hol?= =?iso-8859-1?Q?iBaxQ6l1TV6bLXjqrMP8FFr+42nEe7AM9IOvzzdRSOIXKZtzZzkJsMdtHM?= =?iso-8859-1?Q?g0jnshh1wlTWgMEfzueKpDz7c2k0beO47uxZ+w9v0We9lqN8Cv6SJFwk0l?= =?iso-8859-1?Q?/Cwl7qCEncyR1781Ev/MNQZT8blGUtDZMiGtULlPeVKvG9dbT4p5VD/JXE?= =?iso-8859-1?Q?tX9NakFiG53w9Lj3A6uiR+/fpEGAkOMc3Iw2C99NIZ+6yDzx2uKWvVnPAS?= =?iso-8859-1?Q?90SnWsQn8z8XbGMg2Ng/6S1WIeWXEe6nWeGvsknO7942FD7uwFXEOk/smp?= =?iso-8859-1?Q?0mIDTYZ9iuXsB/7JYo4t2k/h37aZ707/XmQIeppHey158B3E0Kk7N8wfpS?= =?iso-8859-1?Q?ZE6fa6GeqEVb17HPitCA/fXHZy7X8D7ybV5beSXyLmmH1DjPIJ0U8qUTef?= =?iso-8859-1?Q?GV7KDk1SD56sJKRCahEPsW/7NwJoS+Kr1DdFuSrJyNiXI9IvnC0CTn+F6K?= =?iso-8859-1?Q?wF6PVZujJcetL6MvyiSOjuFD4IKzcw6IKF9SumnFC6CcCKu4ETY5TmnCFJ?= =?iso-8859-1?Q?dFdmb/B38TOI7tpQaooQwHJaXvCMAS8Y2e/qV+M4l4CICtKpKAseFTfcoA?= =?iso-8859-1?Q?43Dk7sHq8PGwQ4W15qY9oH39n5nuJkQ7hLribqIbEfTF4vL1xKsP67T+JR?= =?iso-8859-1?Q?7x5yeTtjOeavzmB4jqQexeyYM0zdq0j9uxeHw+BHJUWn+pz8e841QieLe8?= =?iso-8859-1?Q?vYMAsKZr+twkZFV2kggcsZ104he43z1oAXVAmzhpsazqdP7e/fRek81+JP?= =?iso-8859-1?Q?r6Xs31f8T57vWzXwHRlEcClFqDF0MKpPDN648uMTxCGXfncpBJCzzCYLR3?= =?iso-8859-1?Q?78b02Usa2Z+YNGo1q2cZw3o26TRewyZyH0RkDF3CXs3+3cZb0+PEWbjg?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 27341c5c-d8c9-42ff-b62b-08ddd5d3c58a X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:28.5033 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Eyy9dMI9904W4IufNdjF5pRUIzpqECV9Swc0nttKmPh4HpSSOxsT+qVjbZtLeiy5ST0YsM+i4pEjllq3e/iZvg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591529659124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh "iommus" property will be added for dom0 devices to virtual IOMMU node to enable the dom0 linux kernel to configure the IOMMU Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/arch/arm/domain_build.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 50e4f5fee4..9d2b0ea928 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -537,9 +537,12 @@ static int __init write_properties(struct domain *d, s= truct kernel_info *kinfo, continue; } =20 - if ( iommu_node ) + /* + * Expose IOMMU specific properties to hwdom when vIOMMU is + * enabled. + */ + if ( iommu_node && !is_viommu_enabled() ) { - /* Don't expose IOMMU specific properties to hwdom */ if ( dt_property_name_is_equal(prop, "iommus") ) continue; =20 --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591532; cv=pass; d=zohomail.com; s=zohoarc; b=kpF5iwP6hppg2GHvJ8p/eKiMfxH7QEZVHZYaX3nED/pTAb56TAA6jJzIQ/MgL2Q1FjApg8arSkJRRntv3FBaWuQb68igTqoRrVm/X9T5TynYrkTORfXV7eMsQffnrhzoKfC5aObF0snawo3E0wRu/FN5NzTTIKQ3c4wA3mWESsw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591532; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5OBPEBLSadQAGgVsqDpXNpr3niqH2AxeuuS4TFN9R9c=; b=P6Bq28qjvwpIQWfnbernVn/S0StY/TJwsfLMzV0waFJBkFcvYEmeTZnlcDweYWiDoteW2AHRL8CMcSQsAxT+GJwlcZy5jWqfJ1wk6TLHqpqLsf7IlNjLRbhMxgYvmigWlrFvg+Z1qUr7NXHCT+AnDwWgM7WXUINcOauqIqqdDyw= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591532574341.28387799609754; Thu, 7 Aug 2025 11:32:12 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073353.1436407 (Exim 4.92) (envelope-from ) id 1uk5P5-0002ts-5V; Thu, 07 Aug 2025 18:31:51 +0000 Received: by outflank-mailman (output) from mailman id 1073353.1436407; Thu, 07 Aug 2025 18:31:50 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P4-0002oZ-DO; Thu, 07 Aug 2025 18:31:50 +0000 Received: by outflank-mailman (input) for mailman id 1073353; Thu, 07 Aug 2025 16:59:36 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xo-00076W-3P for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:36 +0000 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20a::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e4cf57d6-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:34 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:29 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:29 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e4cf57d6-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MdARz9YZHH9R86xxx+WlN/widb1iN5V1vq2JUm9qXHfLlqPF5o2ePgjEDKlToNs8CK1xdLhKYdbXNnpnFTSq78wQD31sUrxppnYfS/gOMh6Og9EBf0vrETH5i5ArSGL7DLbxvh3MNxk4b1kdkIl5TKE3AycgNvDz5Y++o1dIziKDXCTE2a/YMPfC8bDS9oefbGKQFsIX17MJHaeVnBMS1r5eaHCEpqK1JThFSvZcnV8Zp0BLS+Kbxa1mcLbYwxePIAyLUQjK11J71uNVTMm88IL20nBs5tkqDS1H4f+VG+H+7Flq6dGEwqHUVDne63QnFVO2QOzvFspwpHf0TH1O9Q== 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=5OBPEBLSadQAGgVsqDpXNpr3niqH2AxeuuS4TFN9R9c=; b=I6Wsa0D3pT3z/2AtJ6TdZtCVrHeHvNQXMTIjo/3FfNUtjQ0Jc77idqILHT5nLfkc3/8IIYiEY20xmRZVpylv/elSgcG2pyET38CzknjKTFLMSTtFfVRMppF/D9GerDGhK+NnQ7cL/vaP97+1tnZVUYFWzwDoIsRMNQ/GniPhnJJFh9f21SIN6Darua3b3XR+xBTD4pDThozR/dMezUAx8onVHPggG/d/lUnAzSNHYH9MtxHRw831NDoRhEcR1AJhyvfj/IZOuatdlJvHwImelHfCHA9Q+1lzpbB5Di84gdtfDlNruTsmcoMstvJz78thEIsr3P4BYG2gdRevUpUK/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5OBPEBLSadQAGgVsqDpXNpr3niqH2AxeuuS4TFN9R9c=; b=U2hsHvVkd2EWlm9kQRhAeMk5s6ufVWjWcstZDkLsZu998tac8xfYXoR4fTcxOoDG1KVkqaKc7zAZlyvr+xOhr3HWM/v4kNU9luYtfNIO4HG4H3/MFbI2xNHo5t4XTVwzT435M8eHX2F8C5LEmxUYFlSlZgFIx3Dd5TLVrDib9zMHpdv8ydm98IA9x6qzoOyZv3il4AdP1jP3ZPR4VDn4O7/+k+8Mjoj71QeylrSUJ5eQp8ym3HW2xC3H+g98zMsWagf7OdvAWaQmRcGWsi3yuyDmYutAYFM21i0znlo5ihNW2ogy1OplHfRUrqNVbbOyTeane14qZ20ww6/IDV49pA== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 14/20] xen/arm: vIOMMU: IOMMU device tree node for dom0 Thread-Topic: [PATCH 14/20] xen/arm: vIOMMU: IOMMU device tree node for dom0 Thread-Index: AQHcB7yjVZWSIfKg2EWj5KqbQYkZRQ== Date: Thu, 7 Aug 2025 16:59:29 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: a27e1c5f-8182-4af8-bbd1-08ddd5d3c619 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?vx8ht0I/phsmPbDtWLtomODWn758u2VW0HTy8Sb9vT+iycMWFrd7xV9aqK?= =?iso-8859-1?Q?p2gT5fG0NYdQEeyDEm7uFRfi6ntUd3H6K2uvcwlEdW0XkWGyY5HP8PHJPD?= =?iso-8859-1?Q?SlyP/dR6Kh0pnpIYpa5EvLZPp4N0dMjBncSqfLlTDAOaH28+/3w+nraFTQ?= =?iso-8859-1?Q?gls3uTUfflRPTAkNWcH1XGdKptjho0XNGT/Ohu/WPK7cD03hCsDlH78/GL?= =?iso-8859-1?Q?AHemYC7kMEB9Nte8xLCzlNIFOjwu2K3GRlM5MLoNlyZu9SaAmq7Auan4Z1?= =?iso-8859-1?Q?J2DbCZN6k2U1lBU4TK0btUZYYp+uA9NJEdQtd7QmuGJvVLcXjVCy+f4xcU?= =?iso-8859-1?Q?yqnI9i/H8YUzTXyOKTieAYv7fBGom9kdudpRfgWro8kQfm1Fqyv82LIJBz?= =?iso-8859-1?Q?H8jF5Zk6U+m5d+79pI+WsL6UkMfu0O6c4MF7Zj1fV3AOtP/uJFEKtdOG1z?= =?iso-8859-1?Q?bOPqwVxMJTQlQTnynKP7LCiiOf5TZ2YSszwqDeINsSGv7GhwjmNrrDFf4v?= =?iso-8859-1?Q?eQHf4plqZLM3Nz5hVg5UUQn5mDzPhLVhsgSaR1vR+DvszDfZ3j4dpnK2Ct?= =?iso-8859-1?Q?bA5FjgPh+8zypya1LwVp/qn12ZevDtuDM/kEeXRTORxeHPqJmuMZmFIhjl?= =?iso-8859-1?Q?wlUbsSH+yTzypYX42r3eQBBRjH71O4Ng0UZXHBUEXvM+9fGE/i7Y6Oto9e?= =?iso-8859-1?Q?D8vVYcYxBMdJ5zzuxF3G09QftzOLleQ69G+Vvk6ZUlqOSHWQrKiNGq+6zm?= =?iso-8859-1?Q?C2ruHjZ5X8KdHe3TZIwtcox8BS4bcmaKSrTl/Zart44c5VySB/Zezu1o5O?= =?iso-8859-1?Q?0fOT8xI456YY4mau0uEP2mXhXMEL9+hFUPZ/RSu8mLUg/sj8MPXj2Abbkx?= =?iso-8859-1?Q?CfmGc/35pujBZkjhPhfgEf3pOpeSAaYs95B4FfN/cbJJiwrR3JSyv3VKra?= =?iso-8859-1?Q?ge4NAvxQ9Bi15eYyhb1Hpk0c4rwyHYUSwmrDtlxUqxkgngLYzMFp8IkKs1?= =?iso-8859-1?Q?MbzEjMuQO7A3bod8XYX70dU0b4F26ihltooGlEqD+N9wWi2/hFKcwKqW0P?= =?iso-8859-1?Q?Z7tLlQPWi1wJ8+0AyQ2c2BV0B1AaWa8eBxpOfN784fy91ht/Wso5LyqUJZ?= =?iso-8859-1?Q?CvdgnH/NVeiZC3IWIStBu2M7/ZOO6ZCKybLtKzXcra05XA164luRYlDW8Z?= =?iso-8859-1?Q?8Z4PKzZZ/AMuz6zmTmA0c/WPbi+jTbWHffLgUc7Yea1VIHvYVhhOVaM+HR?= =?iso-8859-1?Q?y+avjHS4a2kDuXeSQUTmRYbX3EuCTjLGEqxznrIqsn5a0/Y1Z9w+CtCP3D?= =?iso-8859-1?Q?jqGUmaAGZGNRgJcUIrg0UItvFTykyLz0LtYHV3VLqmzB1h7IfBaJ0+yfIi?= =?iso-8859-1?Q?p2KgjaJrgt9mzInv3tjLEWukx4Idd8SoAVXwe4dHtAHXWqtIIUTXp8VLaZ?= =?iso-8859-1?Q?YCdw4j6F4Zo8ykIMEOBcySmoyrWLTh9turc6Qx1xeAUAU+aPUI0T7VuKxA?= =?iso-8859-1?Q?3lSqt1n/SmpwIUQhAgLo6KBzUUwACNHMJi471en1et6w=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?HgeC1+Rq4fhKH58OPL4SIJoM0r/uOh/Ti4qFKBt31u5vEoXK5Gu4xeG2Zv?= =?iso-8859-1?Q?dGp9faSGNuFUjZe87n7Ri32hLmAY3F5BJe7/9mzDAvQb59375vc5MO0yp3?= =?iso-8859-1?Q?rSOUHRB7GUUy1OkzjPgeV3JVXgGWESp9bivHCRqcbydsiD3VPVHr82w6KQ?= =?iso-8859-1?Q?AY9BecfVJdYfu8FnGCpWMGcCKqdHuFIZsUF5fKfnkt7WU+Jle1EZ7f84tQ?= =?iso-8859-1?Q?qA1f5EK+EEyW/9tbneDtrr02EOte069+ogK6Ivm7t34b1cJHSDKgIQ8egG?= =?iso-8859-1?Q?GJL95KB+z9aMP+H5K6aP0uHoXStow4eM/bt75KR6W5zk7+ZlB4GgOkS3RU?= =?iso-8859-1?Q?ODWXZvmFr/6OvZXV8oXMx8KPWnoXWDlg06rB8RGvfegl8ghP2iq0gSqwYk?= =?iso-8859-1?Q?ONmz+vdDgHaMB8D6zu+aQC+EDvBjzRWt7rDserzvgaYT8iqnH1rPCq8P8A?= =?iso-8859-1?Q?EWaNHlh8ZQBYBqO3q9vOAH+YD2S5gLe+w7WBgcfnieC3S3phZsBEG3/W0p?= =?iso-8859-1?Q?DEbG9/tr28xUMTyEdwQ565kFBabavx15dNpxaHmVNNYYAfAoRuBEzrWLuJ?= =?iso-8859-1?Q?WvrxCHNKgusTTQcdvPqXmegwq1s/bcjlQM2s54/lkJizc7P159E3i0hMFe?= =?iso-8859-1?Q?fd7jrF/DrBMmcviB+NoQ69/h4sw0T8jVytTpN6ebW/JrRDEkKkOr1zt365?= =?iso-8859-1?Q?nfDnJBxGYwmXTAlIW9pqJzw+xFtZlw+KT15hk4yZL8H7zj7DSQtp5xotc2?= =?iso-8859-1?Q?Lf6THRkbhqEBjLBaCl8k9EpUJdkZ2uf+QuaeOtTcQvPb1dnQjYYsAyJAIs?= =?iso-8859-1?Q?HUsEBD0woZR7/CtrGkgIoeUksGammS4+HrcrpuQwovvYu3MrmHvBRPwsrp?= =?iso-8859-1?Q?y1Hc4l9Ubg4oDPQa0/vjJyIXnWy51zEzeK7PRb9c9DLtswImuv36hlev/i?= =?iso-8859-1?Q?u+6MoJ9r87Y7uEyQYcXJqjDHDm3JdoShZt89g+rDOPjSfP1Z2zGha6Jx8D?= =?iso-8859-1?Q?y6wgKPBwTdKLOU1ebg987wAh5mzSEaUY6OuCHoYWJDAv4juM+M7JrQAUG0?= =?iso-8859-1?Q?Q55SZbwmnvnBNA5ToziVE6pjB1xG8hvgc7xuW01cLVSlNsUaOk1kBRlmDc?= =?iso-8859-1?Q?4eAfmkrq/23u2651DNiG8OFyN8fZfoUuOaVDXwyHtxPo2mZGhA1ATBOCEX?= =?iso-8859-1?Q?BIYlkZudPzx6zLT3j0GTMPJ1Sw5OsPQoQZQhSYBARKglW+VwAqSRfW2wN7?= =?iso-8859-1?Q?+Mt0EVVGB7QG5EphX94y13QviXq6oXEJrcaFL5YU3xv3PFYdsdwAAuYxpA?= =?iso-8859-1?Q?LjuPWmWhR6zpeH0RdQOY5Kok0/t0FSr9GSiqzDbCwnzfWcacmjpu6KAQqr?= =?iso-8859-1?Q?6Uc2iG2fYfH92y4ke2+ch/NFMeU8N07RWoW0Rbk2noVbkXFddjRG+ZtPWS?= =?iso-8859-1?Q?1V3EgP7UD9tF3ErcEIQQYM3CLyf71EOFLuo6kiU3d0wH+OrsJPsY0NuykQ?= =?iso-8859-1?Q?YGgZHp9Ke76/KIwXMeUH4CO6lWdXj8aSZEDgPqCt7ZdMOFrBWEJMbdoA8x?= =?iso-8859-1?Q?6r+fjM5MZZ7rVockg6uL2qePs4QfpXJs5mVExOY7EP54t9JWEt3OytmDdy?= =?iso-8859-1?Q?YCtdGW161p/dsu0dQP+FwQPuB3NM6y7pml6d6/XxRCHJLdltWT+5FQmg?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a27e1c5f-8182-4af8-bbd1-08ddd5d3c619 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:29.4780 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: X4I64MS3a30bM3UtXqKGwkzKQm2Nj/vxTz/y/dMkPnJKOltLPi410wfxJqZLvNJ/iNdXcEEAcBcoFS9vMyJ0Yg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591533346116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh XEN will create an IOMMU device tree node in the device tree to enable the dom0 to discover the virtual SMMUv3 during dom0 boot. IOMMU device tree node will only be created when cmdline option viommu is enabled. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/arch/arm/domain_build.c | 94 +++++++++++++++++++++++++++++++ xen/arch/arm/include/asm/viommu.h | 1 + 2 files changed, 95 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 9d2b0ea928..aa2b3bdfcc 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1559,6 +1559,95 @@ int __init make_chosen_node(const struct kernel_info= *kinfo) return res; } =20 +#ifdef CONFIG_VIRTUAL_IOMMU +static int make_hwdom_viommu_node(const struct kernel_info *kinfo) +{ + uint32_t len; + int res; + char buf[24]; + void *fdt =3D kinfo->fdt; + const void *prop =3D NULL; + const struct dt_device_node *iommu =3D NULL; + struct host_iommu *iommu_data; + gic_interrupt_t intr; + + if ( list_empty(&host_iommu_list) ) + return 0; + + list_for_each_entry( iommu_data, &host_iommu_list, entry ) + { + if ( iommu_data->hwdom_node_created ) + return 0; + + iommu =3D iommu_data->dt_node; + + snprintf(buf, sizeof(buf), "iommu@%"PRIx64, iommu_data->addr); + + res =3D fdt_begin_node(fdt, buf); + if ( res ) + return res; + + prop =3D dt_get_property(iommu, "compatible", &len); + if ( !prop ) + { + res =3D -FDT_ERR_XEN(ENOENT); + return res; + } + + res =3D fdt_property(fdt, "compatible", prop, len); + if ( res ) + return res; + + if ( iommu->phandle ) + { + res =3D fdt_property_cell(fdt, "phandle", iommu->phandle); + if ( res ) + return res; + } + + /* Use the same reg regions as the IOMMU node in host DTB. */ + prop =3D dt_get_property(iommu, "reg", &len); + if ( !prop ) + { + printk(XENLOG_ERR "vIOMMU: Can't find IOMMU reg property.\n"); + res =3D -FDT_ERR_XEN(ENOENT); + return res; + } + + res =3D fdt_property(fdt, "reg", prop, len); + if ( res ) + return res; + + prop =3D dt_get_property(iommu, "#iommu-cells", &len); + if ( !prop ) + { + res =3D -FDT_ERR_XEN(ENOENT); + return res; + } + + res =3D fdt_property(fdt, "#iommu-cells", prop, len); + if ( res ) + return res; + + res =3D fdt_property_string(fdt, "interrupt-names", "combined"); + if ( res ) + return res; + + set_interrupt(intr, iommu_data->irq, 0xf, DT_IRQ_TYPE_LEVEL_HIGH); + + res =3D fdt_property_interrupts(kinfo, &intr, 1); + if ( res ) + return res; + + iommu_data->hwdom_node_created =3D true; + + fdt_end_node(fdt); + } + + return res; +} +#endif + static int __init handle_node(struct domain *d, struct kernel_info *kinfo, struct dt_device_node *node, p2m_type_t p2mt) @@ -1627,6 +1716,11 @@ static int __init handle_node(struct domain *d, stru= ct kernel_info *kinfo, if ( dt_match_node(timer_matches, node) ) return make_timer_node(kinfo); =20 +#ifdef CONFIG_VIRTUAL_IOMMU + if ( device_get_class(node) =3D=3D DEVICE_IOMMU && is_viommu_enabled()= ) + return make_hwdom_viommu_node(kinfo); +#endif + /* Skip nodes used by Xen */ if ( dt_device_used_by(node) =3D=3D DOMID_XEN ) { diff --git a/xen/arch/arm/include/asm/viommu.h b/xen/arch/arm/include/asm/v= iommu.h index 4de4cceeda..e6018f435b 100644 --- a/xen/arch/arm/include/asm/viommu.h +++ b/xen/arch/arm/include/asm/viommu.h @@ -19,6 +19,7 @@ struct host_iommu { paddr_t addr; paddr_t size; uint32_t irq; + bool hwdom_node_created; }; =20 struct viommu_ops { --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591537; cv=pass; d=zohomail.com; s=zohoarc; b=N9eeDrkWO1m/y/aCQc5nkTBYdZ0jDOFF76sHW94GWABj/dYhjj9oTqUAqw0lREwMkIyM+CLoe5wIKHeTtVANK3wdnNI4oeClixcWEoJmVc2D5OJdWZwrkHZn4lR4rUxsf+0/Cou0UcBBXkbFqC68TXKMz0T50AmH5+gtq+h30lw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591537; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=i0wLAFBe2B6lmF1G1qgjASfVwAIUTNN68hmplMu9YVA=; b=fhtKIE6yvNHBoRr1szebY0c8UIUhdae5QWtZh8Gr71zc8MuaQWeThroSEQyyjCql1JqdKpm8TnLldGdnIpqCp2Fxwmgkm7CPa8inJ9ddHHBycH85MZ0dEROM1g+eRqdrClBtA7MuyEG0/YeKXnQovI7nFiCvkZ82Ycd6k/V2H/w= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591537776804.2994248651753; Thu, 7 Aug 2025 11:32:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073355.1436413 (Exim 4.92) (envelope-from ) id 1uk5P6-0003DU-Al; Thu, 07 Aug 2025 18:31:52 +0000 Received: by outflank-mailman (output) from mailman id 1073355.1436413; Thu, 07 Aug 2025 18:31:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P5-0003AE-N8; Thu, 07 Aug 2025 18:31:51 +0000 Received: by outflank-mailman (input) for mailman id 1073355; Thu, 07 Aug 2025 16:59:37 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xp-00076W-3c for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:37 +0000 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20a::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e513b6e4-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:34 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by AS8PR03MB7336.eurprd03.prod.outlook.com (2603:10a6:20b:2ec::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.16; Thu, 7 Aug 2025 16:59:30 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:30 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e513b6e4-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HGcIWVJAgzSJ7SDTPk84jg2pvaskaLRYXIEcNDjTwQn5DUIGqSFDhtitobO2Zvj8rfdIrmdnOJRhzqdWBGho/OIzdFBllO4uEnIOLVIAnerr2eQ8F6JqDmd5xj0KAr8jSKYcGdJz4mlH9RNoURLRf4iH4visn3qKJwFmwvBGTIqnc6HIrMsrklpd5n+aXf/qV2xXVwHJ66psBduhtQCOpQEgo1hNO9Cn+dvssQNXPbifuxGaxrcM2e5TB14Bm6DYkrO1bKyQq5BIggD2mo8B1qKTm0xndeDXinVB3ntFnuiZB/MlHhyIc1c7AvpVptGEKyPeQhLiWR8U3F4ymGtTwQ== 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=i0wLAFBe2B6lmF1G1qgjASfVwAIUTNN68hmplMu9YVA=; b=BdIJzCmkCHHYr5z0qNQOxUT1WgTYw/rekpiMq+SribW4vzH1ZFAzFYx3DnHS9tjwA/s1zqAtyzxwoiPNN0FJchJDWkwxFXU9zqYoM8u8gUMtvGaOhIVIgFfy2y/zJb7/LVChp8UQ+dbx62l9nSZzJ5pWK+zldjt6o6tg2ZO4f2Xn27UyZawuh6Ss03VQGCq1ONjZLUmTsS0Y0kM6mLAiyaiIoccpS+O4GPA75UOshAsDT+NE8SKjrbhFa89tw/hxmbdXzYseRDo4vqTdpOm4tP6lmcWCR7uHwhLTjXquv1F9l8pGL1UkYmyzGCqwhL4slRtZcriUlpMejp8wHS4kzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i0wLAFBe2B6lmF1G1qgjASfVwAIUTNN68hmplMu9YVA=; b=BJg37zTeOjOgdTuDprqjLZQBFPCz8cU3gdLr6x/AlnShneL45HIRt+cWsAiBllOWLdIY530eN9TIAsqHbWpbH2ipjCpLgNoGAVTyVHHcTntO7ElMATrYby8kA+2klBIf+Q52cixZT4qnFShfEcsAHT6VsXA/9PeAEiprSZggaZFsKBjudFbnDsBYV6iYWeNFtkC3DZXZG3sdducBETPK/ZxZaJ7Y3E92ZFwYVkfJpZbH5KHxtMbYmq+RiN5GJH2rrYi//wEm13tJYCi3ve6MiLkqEDPBjthOE082dmEJXExXvLtBAwQIk0n7u8t0/0k3m7Qq60G23Q4CAGmceGMxDg== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?iso-8859-1?Q?Roger_Pau_Monn=E9?= , Milan Djokic Subject: [PATCH 15/20] xen/arm: vsmmuv3: Emulated SMMUv3 device tree node for dom0less Thread-Topic: [PATCH 15/20] xen/arm: vsmmuv3: Emulated SMMUv3 device tree node for dom0less Thread-Index: AQHcB7ykWuFnTntxcE+YZDhqvaBxqA== Date: Thu, 7 Aug 2025 16:59:30 +0000 Message-ID: <0be8cd7abe1c3b2fde6cd4a0004e443f14f99d92.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|AS8PR03MB7336:EE_ x-ms-office365-filtering-correlation-id: 06e2b492-ee99-4c72-38d1-08ddd5d3c6ab x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?0CzW3FYuGQdkUuk7YOPgePNQufbmtKL2y2dWL3sfwGBvv/Ncg7Qa/kgfGx?= =?iso-8859-1?Q?/ejnFXv9UTlo8zkQiL8TIbwXVJezIt94tZkv4tGtTboXQvganot0kgtI0g?= =?iso-8859-1?Q?nMLgtb27k/ThR0Qv3jKDsuJvO2WXhRoAGMXmfRcUiwQjMqgUfjdYx+W/7j?= =?iso-8859-1?Q?94Sk+nj5Vlpa13WK2o3iQQl1+5mF8SPQ453T8kBRLYO8ekoiHMtsj3JDmU?= =?iso-8859-1?Q?olJRszZ4NCL3C++ctIMwb6LFuvt0oU+KAxUCpyvjmWTZaPU9NHXl9dtHHt?= =?iso-8859-1?Q?pz+mVcbp1XG1HF0rtLDDqxuP1twKew4f6fdbTtArVSQq2VYYQhtq0nKtFR?= =?iso-8859-1?Q?OV5xaOYi9CGAyT6NSsAZWQpt8kG+1kX8diX4QF3PoY4JRmXkr4lP7hyXS1?= =?iso-8859-1?Q?Lr+cA/uCHJtvbhol2kxD9UKN/E/IdCk1JrtlA8yuGURygBkmHygJqAueDF?= =?iso-8859-1?Q?vMIrrlLwMkT34ZPWY5OrmW8yHegUNyV9iK/ln+Iz19N8yYU2XVx/1c6MLA?= =?iso-8859-1?Q?psuvwHiEbMB7gT+fWjtXw439hv9ht3F1gSHwZn1zUIzVFoPth93qVPLl3g?= =?iso-8859-1?Q?tJzg6r0dL8xlan1DDfShpKs7Xvboq/+sXMZohQYik+2vkpSp2PskZWox/i?= =?iso-8859-1?Q?K1w5tk3qKlBEtc1IjI/LPHKyFEpMMS4gGhsxCD7pXp22E/jgvBwmeMalFv?= =?iso-8859-1?Q?1kZO587+OBRoiacEMG4edIbSoNPosXU7iFCewV/mzkWv3FQTLLo79rUpq+?= =?iso-8859-1?Q?Ze4BpmvnafcBqUJJ1yVyWzExWKu1N+tdpC45xIuf6ntf2shjfd8PSpnDlz?= =?iso-8859-1?Q?3Mthds/tf7aM/I8sKoaFsE6X+Z+g+iV3EKRJrFtmXDGnMehcWaFR/rYn03?= =?iso-8859-1?Q?Av3ddbLdxwStNBpO02g72/V1X8geVcgF4MBvyRkTxorBwigSaeQrhnqgzO?= =?iso-8859-1?Q?1GLksVHxWn+bzaRTE08vM0Yo2Vxi5VLLPjnssblcGfa5xMtf+XBEcp+PBU?= =?iso-8859-1?Q?5WRXPDPHTfAexpFy5wT4gpQpmCIvPeVffZRSh85bO4lWD1IJ4uFNuiIYEE?= =?iso-8859-1?Q?AGfrrok9WsSUgtENIhWFvylUppDuLLzb3pp07aCrf2iYQItYK3C++Prhcq?= =?iso-8859-1?Q?3c77S27LauUcM/puQFf+KvBaH5z9dwD849cuU2uyrLRZNEkVTu5pge5L+N?= =?iso-8859-1?Q?7lAIwfu9uBxPitzOk/k8dF9AGXS6NkxQgAhfJEmARD9aiBhzoRk2YCZcF9?= =?iso-8859-1?Q?2vzNplLFmElRcTIc3YRnme9MkqkGg3ykMDtH4FeIV/G53y2A2EFIu+waZO?= =?iso-8859-1?Q?/B9pr79ohROTuRjBz1cu9TVrQKdIh1KmUuEIzyi2k0WyMdbpTBz5y8KTqg?= =?iso-8859-1?Q?+EkczRymnxpUQqwc5NZAwiS4MykPYGmbOgqswAwzS0fB9Khegzs8mgJJvc?= =?iso-8859-1?Q?qKcIyyNv9QM87k7/k/7ROekAsaHJKsrdc2lKGGnxSS0MyQCFdBagdMNSqG?= =?iso-8859-1?Q?dEk9TIA7CpUy820bWsyXlsf8t275BKkFJ66nKbBij71g=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?d7faCe9I/Z75OX0aI4If5Rpruzx9XL+8dZIOM29ouHBS3FEy3tP5/zeWEo?= =?iso-8859-1?Q?btFzs3L/2DukZANeGB4ejI9cAjwB3ZOSF4agxzeIXLc7mvXeEdA3mG9yVB?= =?iso-8859-1?Q?mI2Us9KHZVVhomM3oEnJ1gULGLQAN9PU3/gDIKxUM6iAmYEfkCX2FrQT9a?= =?iso-8859-1?Q?topv1X3YXPJ1DBo8y4riWraT8Vkvk07SJSULw5sBQ060Y/v3UASD7ifUaO?= =?iso-8859-1?Q?LJbrcVf1Y5OZBs7ZQ6PC9X8Ky4V6kMtMk2jLajxpnPneFhpPRMGv/tSzsc?= =?iso-8859-1?Q?k2MTP+z817jZlm7w9KlNOfARoioe1MvqdhCJxuUGhpoJxtghmdjaVO/UpM?= =?iso-8859-1?Q?tMtK7esEPa0tt5VbrOAkTCT0vUvS20YR25PQh0Mz8exZxtgMlUUE7CrkuP?= =?iso-8859-1?Q?mcB2jdfKAhdlkktEwAkLll5O2OL7IkFBes5iobkl4jxXR9LEJA1emHvqpf?= =?iso-8859-1?Q?0iOicG4CDucphujeB9oIoAB+7yVDWBB/igyE8+f5jg82mIk8P4MTCDfN5X?= =?iso-8859-1?Q?259WnX0Q7hfpQbOhmusrWciZ1Jyv4Nj9kPETWEMIj0121ny3pnkAMu3qmz?= =?iso-8859-1?Q?a737RPIXlgeD/wewrxGf2pqoO0hpeaZ4VLP1OFZ7PkDVXeeRz9q7CEk2K+?= =?iso-8859-1?Q?R/hTWTCYyLJ/83UD5cSgKQdN+CYau+aRCcahFaxXqplScrnfvt8eE7/PQ3?= =?iso-8859-1?Q?SOUCMuOkAYXl0uIKJddJQpGuUwr8WBgjJMae8uC2Kxk2c1e6kh1mr+Q5O2?= =?iso-8859-1?Q?RunkF9lw8mIfgr6AQTMrvwuLRYGF0jo7gSIKaGbJ67Zpdrd/UdycT8XACO?= =?iso-8859-1?Q?XEz7UmYBGxQnpNgavo7QfEund2TwTCVC177fwY9BACM0TC0aqROx87ZoGk?= =?iso-8859-1?Q?3LU6bqXhHgZErWEctQHjpvIvzkzrUkslLkmG2+nS7r8Cu6TCpplyFa5PbN?= =?iso-8859-1?Q?d2Rq01qw1pbFD/SSsVSDqWC5uP74MBJMJTBEzmPeV2RzCL1jdQ5fPsMfer?= =?iso-8859-1?Q?eueyCNFYpmg6bYRMdaHGEgfthNj2oiBU1rnz088x28xon+1KnlNngNbNtv?= =?iso-8859-1?Q?+5pPqviQxdMIF48Kc1xss4pn2E/uyOCrfRwkremUYWqPJe3ZMRCsoKjRyf?= =?iso-8859-1?Q?XQSKrLG0bwLyixLojrxDNgU+LP20GX5TanZlAZBSNdhigYkkqPMGY6dg+C?= =?iso-8859-1?Q?CJjJZwA3JypItv6YfaHHpfP2E7l6q8rLbbaO8njmh/FadBCB18hOi/FVmU?= =?iso-8859-1?Q?9O7Q72Xn7e4nPDAW+J+kkTC6K8bWM+txj3Man3BJSsYB+zIMBPYLNn/PyY?= =?iso-8859-1?Q?FeDpwBsr3yg7glb5rvykzYgsd1wBSGo3mp4XIuyeC/fKrTRu/DbH+xho/h?= =?iso-8859-1?Q?OfjFasaz5Xb6/Hik98NKB9NjRaZLm2SAz+hPRj9wWDi+GergIYrw0CYlYw?= =?iso-8859-1?Q?GuL12xuhFsVU3eAicT/3jKVJAeSCGxg8HvFMkUTEL+CZtJfgIDLu+zfick?= =?iso-8859-1?Q?sHz+tdJTAxz+PoBBYnwAvnzynADrmu8yjn5fQX0YyN5FyduP72TkHMF53o?= =?iso-8859-1?Q?lGxt3G02W4SXhnvPgCWhHU98Hv2pPpQjpMH/uSPLvX2Z2fBJmegPFNomxn?= =?iso-8859-1?Q?nbwd0ACEdSuRxf+bnSUraaMDuR7LpOtzIpyOyH7+hbiZS0sK9769MpmA?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06e2b492-ee99-4c72-38d1-08ddd5d3c6ab X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:30.4106 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CKgTFF5H+wlbIq0Yr9mmupQZG1v3keFLYwzG0rvLWrUAySSCO9yOBFmLs1Ix0Q4jpgPc/IjWqkd8K8k8RS9DhA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB7336 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591539680124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh XEN will create an Emulated SMMUv3 device tree node in the device tree to enable the dom0less domains to discover the virtual SMMUv3 during boot. Emulated SMMUv3 device tree node will only be created when cmdline option vsmmuv3 is enabled. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/arch/arm/dom0less-build.c | 53 +++++++++++++++++++++++++++ xen/include/public/device_tree_defs.h | 1 + 2 files changed, 54 insertions(+) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index 1fa6df214b..1e526c10de 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -217,10 +217,63 @@ static int __init make_vpl011_uart_node(struct kernel= _info *kinfo) } #endif =20 +#ifdef CONFIG_VIRTUAL_ARM_SMMU_V3 +static int __init make_vsmmuv3_node(const struct kernel_info *kinfo) +{ + int res; + char buf[24]; + __be32 reg[GUEST_ROOT_ADDRESS_CELLS + GUEST_ROOT_SIZE_CELLS]; + __be32 *cells; + void *fdt =3D kinfo->fdt; + + snprintf(buf, sizeof(buf), "iommu@%llx", GUEST_VSMMUV3_BASE); + + res =3D fdt_begin_node(fdt, buf); + if ( res ) + return res; + + res =3D fdt_property_string(fdt, "compatible", "arm,smmu-v3"); + if ( res ) + return res; + + /* Create reg property */ + cells =3D ®[0]; + dt_child_set_range(&cells, GUEST_ROOT_ADDRESS_CELLS, GUEST_ROOT_SIZE_C= ELLS, + GUEST_VSMMUV3_BASE, GUEST_VSMMUV3_SIZE); + res =3D fdt_property(fdt, "reg", reg, + (GUEST_ROOT_ADDRESS_CELLS + + GUEST_ROOT_SIZE_CELLS) * sizeof(*reg)); + if ( res ) + return res; + + res =3D fdt_property_cell(fdt, "phandle", GUEST_PHANDLE_VSMMUV3); + if ( res ) + return res; + + res =3D fdt_property_cell(fdt, "#iommu-cells", 1); + if ( res ) + return res; + + res =3D fdt_end_node(fdt); + + return res; +} +#endif + int __init make_arch_nodes(struct kernel_info *kinfo) { int ret; =20 + +#ifdef CONFIG_VIRTUAL_ARM_SMMU_V3 + if ( is_viommu_enabled() ) + { + ret =3D make_vsmmuv3_node(kinfo); + if ( ret ) + return -EINVAL; + } +#endif + ret =3D make_psci_node(kinfo->fdt); if ( ret ) return -EINVAL; diff --git a/xen/include/public/device_tree_defs.h b/xen/include/public/dev= ice_tree_defs.h index 9e80d0499d..7846a0425c 100644 --- a/xen/include/public/device_tree_defs.h +++ b/xen/include/public/device_tree_defs.h @@ -14,6 +14,7 @@ */ #define GUEST_PHANDLE_GIC (65000) #define GUEST_PHANDLE_IOMMU (GUEST_PHANDLE_GIC + 1) +#define GUEST_PHANDLE_VSMMUV3 (GUEST_PHANDLE_IOMMU + 1) =20 #define GUEST_ROOT_ADDRESS_CELLS 2 #define GUEST_ROOT_SIZE_CELLS 2 --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591533; cv=pass; d=zohomail.com; s=zohoarc; b=NRLGFALk+DZ+cO8R3V/+ugAamEY2pSqLoSrOK50DYEWL6/as8phDB8YDVcUqNNmSp6w3E7QAU3otaedWsSbAIjWk79zNswiFeKLaVDO9JCUV+FE1u08IxQLMmVNSVxFyhGbQoJsyBorg15WhFLInntsLRhA5fNHgwrLJABV53k0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591533; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kD+Qf49VbgsplfZFP2D9e4GX39Tp6TJSZUfS2DxkCFc=; b=kdITsCQBgS/jWq91bSYnKgG9OkKE+nWRGFzQFX+v73B9ud1U0J9dKYuAPeizLCxjHSeY4Zy5C4LLMgc0gwuWU3Y/xIQKmiIuZQyAlbid/3pXpyBL95uAiDnne+zHjWo6AymnFC68aYE5jLRPFY2Tm7OKmXfhPi8DT6o7t7oM/rc= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591533240570.6984169191161; Thu, 7 Aug 2025 11:32:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073361.1436451 (Exim 4.92) (envelope-from ) id 1uk5PB-0004NB-Qx; Thu, 07 Aug 2025 18:31:57 +0000 Received: by outflank-mailman (output) from mailman id 1073361.1436451; Thu, 07 Aug 2025 18:31:57 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5PA-0004Eg-NC; Thu, 07 Aug 2025 18:31:56 +0000 Received: by outflank-mailman (input) for mailman id 1073361; Thu, 07 Aug 2025 16:59:40 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xs-00076W-4E for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:40 +0000 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c200::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e62dc112-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:36 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by VI0PR03MB10757.eurprd03.prod.outlook.com (2603:10a6:800:267::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.21; Thu, 7 Aug 2025 16:59:31 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:31 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e62dc112-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wg2eFhkhwYLhxWUBmc4QsNui7q9c/OA/fDw8StCRD9diilh7POY6NTIJQOhZbNaB30BoYCQeYspJDzKxtAxZ6jn8THb9AoJSM+BuU66XePT1bPqUNPJR9Gv+e7dAN6vRv7X/2WBA3lfN7aFxMfxVRXf0K6TFPjdKXVPhWkuF8YDDiU/RDljJvtmg76P8KQq7sATM0T11B3Cpaq1u4n4dV50NYDwGtsreaVHtjzqXNqnJLndWcfq6a0lApFGhLvrmcQb8kU6Ra1Zp4r/3puLSFbaa2ucvEwJn/YjmZ309ic+DL/wCenRpmsLT80VplGwfy3EiIPrX0lAuHkMEd3RSzg== 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=kD+Qf49VbgsplfZFP2D9e4GX39Tp6TJSZUfS2DxkCFc=; b=SPXQMz92stH3QPtQGqTvWC/vKsJ1HT6QOlhIrOKfY/4SpoqDrzQEyqWTBKPhNFaIfkOqK2CvXJAlzrzxl+MMF1HdSkTEHTy0SnEQGqidoWDhkMD/hO88wfRUyG3OqzPopmBuAP/0tGuxo+BX1SJGqm3cb1YMFJmSV2+MS4DZcCuNPDbhH46ViICVI+ANOGvMDcc4C7UxLCEoZA3chBphyXkg7EXMoHS8g2g62WA0ZCwWDJeoGAWmfK0e4J6z9/tEc3AaCarkR9/UfH9FbF2vLEVQhUb6txpHvuQYVo3Wqm2/iBEXC5Y1dMY8hhdZlAqEVwtnwWXVVYTpJg+49P7Y7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kD+Qf49VbgsplfZFP2D9e4GX39Tp6TJSZUfS2DxkCFc=; b=pGA7RvPGZ6emma4SJd8AqFtXNm4KmN2GqETa13grdway6uWEjJB2hTBtHOCvnkChdKROrLYJjIwymE6LAtMaSv84f4csYUC7rkY/DEF5+i094LB+xPAIU08hazwD1nxMrPMLrttfrbiA1IsTPa3cKJpR6h44l4/ARYXtKK8WVT/7bD4kZEfHGEPEKWWAoI+V/SxyfVBBzeCmt0dVsmRTI+FbNvQQ+exoF6bmtWFbfBKnNzjiNdYvxhrueHcVbQ1ykVNv+REaicJZ1QYkDOX45UW3BBqCe/SoB4Dil0UtQ9HiO07Nyl1HLPnvrsVToMRL8UdXZ7GHWu1d2H0RPlvVLw== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Anthony PERARD , Juergen Gross , Milan Djokic Subject: [PATCH 16/20] arm/libxl: vsmmuv3: Emulated SMMUv3 device tree node in libxl Thread-Topic: [PATCH 16/20] arm/libxl: vsmmuv3: Emulated SMMUv3 device tree node in libxl Thread-Index: AQHcB7yktmBVQsC5I0iGGX/Mv/uKhg== Date: Thu, 7 Aug 2025 16:59:31 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|VI0PR03MB10757:EE_ x-ms-office365-filtering-correlation-id: eef87d52-da43-4036-4403-08ddd5d3c73a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?8bUOP3IciHzj68GMJmyjTTwCQMKBXssZZXs0JB8gW3u6H8sQ6I+9jLZGKz?= =?iso-8859-1?Q?BPKtPINwhrx/8teIIPV7PKZrokNk/R+YIN8blWKhsGYHH9jEGLFWtpuTSk?= =?iso-8859-1?Q?zebqFEuBdJL//DLj3/pdwFWpIvIVvnV1BIMZSkyymUIMgD487eAUJcm5pP?= =?iso-8859-1?Q?J/qVKLaV0jxk3zyXFpHz7hjFrhj3iLabXuOnItQNkuFTCHdevAeTtb8zVu?= =?iso-8859-1?Q?2e1mEhNmwKy6HcadoFc6t/6B4auA1lPKvp2kfLLA4RTBM59O77WxKxIvbA?= =?iso-8859-1?Q?j5q9GvNRF0DnRI2sgW5r+9s42fo2fdq6pE31jjd+B4RutFivLoXnasiZSr?= =?iso-8859-1?Q?noPw38+MUfeLCV37EwGR0LMntAyblYpjBrYFKLAvpQU3agwbdZEPGtF6Wq?= =?iso-8859-1?Q?hfwQz1eoucfcY+xraRCYtjhp63rsoRnGOFZKEkyXpviRRJjG/cM0DKaUde?= =?iso-8859-1?Q?IntREAMNMUxDg38PPFzaMnhkHvamBa+RDd4yI7Zj5iU3LHxXPba1yIhZ1A?= =?iso-8859-1?Q?MkFe5vC2h5EaaCe63gIjc2sF6KTSnAoEHDTPFRXBKM2wTwOYLshZrR3Qix?= =?iso-8859-1?Q?iTf10ro1PofCL7L1HxQD9a/aiAey5E2Jdd5U1qO5y/pF2wDRdXwesZhS6y?= =?iso-8859-1?Q?C1h3z72JXdfn2DzcTWNX0sVskCwSEu9MOhsyHjjBoUhMTtaN6QcZu+wVhf?= =?iso-8859-1?Q?ASpiCGzjpkk1oanWTh5fCVLIWN60CeLKFnhjyksH0FqVKCnX/qghrOMkyh?= =?iso-8859-1?Q?qTTioxruWC6ls9ECjoJLqtKj0MTS61bgF1J81m6TI4xTpFPHcuEC80Z+WL?= =?iso-8859-1?Q?WdE3ZKOw2/gJcGrOCAxq1j9BxZZWmpEf0kLGdADSLGlvRii9bz6VXtqK2d?= =?iso-8859-1?Q?OubyQpe5gX3OScblvyVAok2/WqLSbUswfrzLSX3bin9RO7GzJAAvbYtFY4?= =?iso-8859-1?Q?CjxX9DyqovQ6UYPpZbueR+xykJuQMkEaeyM79LjKzTqP+lrmizCMCQHptk?= =?iso-8859-1?Q?kc6W/4YmE7erYmxbTD2kRc2dsyovRSQc/WnhhyGfK2An8jsmj5v3VkO2M5?= =?iso-8859-1?Q?vxCVDQRlfDvj6TVNI7FoO8wW+ZogUJYl1l35PQqMavwPLL4hvgDE+a1aSh?= =?iso-8859-1?Q?2QluiknxsmNm4RO9BTbaSiV4jhRShRvrTYs7OYsclRVIGOa2eDZqtsB8U7?= =?iso-8859-1?Q?KSExcuDOdQIeol0rl+h7RhmzMu4l2xm9SAvdOCtx+8dDnh7PXnr/dkl+nl?= =?iso-8859-1?Q?oo7mcwkmIq/Q7KMGq0abRJsCGSh7oakr3HJeAPeRjf81Dv0n5T+pIxUvmH?= =?iso-8859-1?Q?CGeK/TZ94HWIlaeBMAwjyiZtmORtYvBIQUQCyB6+amUgZ5eZU2ZPijNYfC?= =?iso-8859-1?Q?6TzuAsj22nW55a+i/Yn1YGsUXnJH0ZCEdBuTnr9YgiIr3IJarebxWoH4nx?= =?iso-8859-1?Q?PpS2StnjYAW5QsZfPu9DSak8DSKqsgWgqvEqjA7RZ8P0vpnvOaOc2MqMXF?= =?iso-8859-1?Q?mNFW/gDsmtCAkv53k8ZvCH9sRSCgdOvCAwebp0C4/fqw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?CuJtiYpM0BTIsCiBHDEeGzTXTemkdzxBDjQPI5ARTHvMhAetF1/nahT4qq?= =?iso-8859-1?Q?hpi0sC1PoXAJJQDhAGaRWDYv7nh+bJdEmBhrV6BqrC8ZiIV35OBrSjiPDp?= =?iso-8859-1?Q?R+0MEdyK2ooSz6syAuOoug0VJtU+I2mtpXD3jUoYdNlqLe/zLr3nPcj5ke?= =?iso-8859-1?Q?FY/+nUQdP2tPNAM42wATIxAAVxo+NGlj/OJTGfL8zcrxDMA5dec463HAX5?= =?iso-8859-1?Q?DmZj49fviUgzd+bZD9xJJhqArgEj1dh5xSuhrGTe1rbUsVTlT1xSa9TrJ8?= =?iso-8859-1?Q?+UTG76XEke6S3vWoazNZQN151xuyuUS/LAILFEfvPK1SrWxqwuYgr0CVRo?= =?iso-8859-1?Q?n9JeglvKQkoukFviYo3VatiAY1JccCs3S7ZMII+WxeiK4NBeDF56T52uAv?= =?iso-8859-1?Q?PBIUD7l4SKieizOyvGX68Ol/7TZjJ865JxJ/1yAiVsK9/GkbTa6hzMcnbD?= =?iso-8859-1?Q?puD4qDY5PYoO9NW8zKQLLSVJCNuGbDw0LoxPDBaSr9XPkE8s1lBmPPFT9T?= =?iso-8859-1?Q?TzlZQlTLvjDgVEnUCe3XEe1M6qeVIorWKHJY2LFgMFjdwvoEVwV61FOFKP?= =?iso-8859-1?Q?aX24XFpZ25izC4iLhIoirvoqmBKJ/oukyriHZaBu2moKbH9wCQl7JgOlxc?= =?iso-8859-1?Q?ssoLuNiVRtGcAv/H2Auq9N9i0KnHzE7I/u40V0cxXZdtlU66eJU2EQx9CQ?= =?iso-8859-1?Q?wWWe8tXLXieW3eV9S+xu/t+z5y7Y2w069FJzGbh8UFSAU+EWX/3WWRUejS?= =?iso-8859-1?Q?d2RqxYsxkagDOdWMEz1HV9oaP5PnhX7m6MxJdp2zyhLage8d4yeVLX26LQ?= =?iso-8859-1?Q?r5mpaJW2SOj4Y+f+tSqb20JhDYtoHQ9uNbBpN8loXZrGzstFTQPMHTMGua?= =?iso-8859-1?Q?adydg+D1+vaJqFNS3pGQf1+7uQz70tb8Lr32pMB8cXmqZZYoSDEptJKaRh?= =?iso-8859-1?Q?OFPgISpX/uJ1PjYTav/SSWzihfHapX4WnmNFdoh2TdFwe3F375rpapUYLr?= =?iso-8859-1?Q?e16/R+8uLJ0qfUM4g3/xsVNhmM72muKd1r/euAWMAtjSOKsubI74D+5UTU?= =?iso-8859-1?Q?BhjgmuoUaC2BqxtMsclrXrWBMo6VFSOnxdhTdcbuirBXx35QD0zFCVWBF8?= =?iso-8859-1?Q?9/c0xLSY7PgAJIMAO3td77DczZAm13r61zsRqCX9wz4diBXaNS0FASOWer?= =?iso-8859-1?Q?ozqvHMLLKr07EAikqr/r7zRX86aebHTje4viO9trtfCd5sIA2V6bfn0duG?= =?iso-8859-1?Q?w9vUdD8uaQBwdq9G9yDedZKDhZyt5YrrwmdlQFbZ6LUfLvQxz4ecVOIdfl?= =?iso-8859-1?Q?oxHSOvzfs1SiyERODd1dKignLePEZ+a6+RB/gCSeJhgPHzDKVQ2mVIn0na?= =?iso-8859-1?Q?AOanw+++ERZKf+LJEjIPdliUUP+XpovAmaiBHBE+NBiDnAA08WJ0pMmLiv?= =?iso-8859-1?Q?28AlcBaVCnptMVbJrDIlV6beuT5q9FfjXNGIAIbwhDb8cAvjT2Ppyo3L+8?= =?iso-8859-1?Q?m4L0QpRNJ/cMD9cCMQtRygt7X1WdyRvS9yh+WvnwrtNNZrpClip2GkxQig?= =?iso-8859-1?Q?BcSBeLQw2uc8FPTi5bKg0rbpAKk9JQ4buj2mY91heuBGuylJGJwgUJp8Pn?= =?iso-8859-1?Q?8UY2CtX3VpEO3qheL4m/uFqrzsj/2ld0I5bHhnC67VDkQiNGD9iT+9mw?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: eef87d52-da43-4036-4403-08ddd5d3c73a X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:31.3519 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1N2r8UALrIN+PA3mEjzNheIuUEwv0ohNfLjZGiWn2jOA5s9ozogPYHiR31jEf7E1W6BjMQCn0E2prER11gk3fg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10757 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591535265116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh libxl will create an Emulated SMMUv3 device tree node in the device tree to enable the guest OS to discover the virtual SMMUv3 during guest boot. Emulated SMMUv3 device tree node will only be created when "viommu=3Dsmmuv3" is set in xl domain configuration. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- tools/libs/light/libxl_arm.c | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 44b7bcd672..c8255d8d4f 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -887,6 +887,36 @@ static int make_vpl011_uart_node(libxl__gc *gc, void *= fdt, return 0; } =20 +static int make_vsmmuv3_node(libxl__gc *gc, void *fdt, + const struct arch_info *ainfo, + struct xc_dom_image *dom) +{ + int res; + const char *name =3D GCSPRINTF("iommu@%llx", GUEST_VSMMUV3_BASE); + + res =3D fdt_begin_node(fdt, name); + if (res) return res; + + res =3D fdt_property_compat(gc, fdt, 1, "arm,smmu-v3"); + if (res) return res; + + res =3D fdt_property_regs(gc, fdt, GUEST_ROOT_ADDRESS_CELLS, + GUEST_ROOT_SIZE_CELLS, 1, GUEST_VSMMUV3_BASE, + GUEST_VSMMUV3_SIZE); + if (res) return res; + + res =3D fdt_property_cell(fdt, "phandle", GUEST_PHANDLE_VSMMUV3); + if (res) return res; + + res =3D fdt_property_cell(fdt, "#iommu-cells", 1); + if (res) return res; + + res =3D fdt_end_node(fdt); + if (res) return res; + + return 0; +} + static int make_vpci_node(libxl__gc *gc, void *fdt, const struct arch_info *ainfo, struct xc_dom_image *dom) @@ -928,6 +958,10 @@ static int make_vpci_node(libxl__gc *gc, void *fdt, GUEST_VPCI_PREFETCH_MEM_SIZE); if (res) return res; =20 + res =3D fdt_property_values(gc, fdt, "iommu-map", 4, 0, + GUEST_PHANDLE_VSMMUV3, 0, 0x10000); + if (res) return res; + res =3D fdt_end_node(fdt); if (res) return res; =20 @@ -1394,6 +1428,9 @@ next_resize: if (d_config->num_pcidevs) FDT( make_vpci_node(gc, fdt, ainfo, dom) ); =20 + if (info->arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMMUV3) + FDT( make_vsmmuv3_node(gc, fdt, ainfo, dom) ); + for (i =3D 0; i < d_config->num_disks; i++) { libxl_device_disk *disk =3D &d_config->disks[i]; =20 --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591538; cv=pass; d=zohomail.com; s=zohoarc; b=V1Sn2/c1UtyMDPyGx/OoniTN1SWaOPMie4klRLaeVJ+F/8FOTq5cvnDn9ZxaoUls+5l1/5Tcw0p3P0R3uvnt4Ne0aBr8SEpIieGlDg1DiXBeKLsg29atT0S9ewIizzSnISlYHsKiEgxBgCRsteQHzXnLMYtfXQ3SeMPZrV012pg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591538; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GBM/Oobt0LXDf7iN7IAMUwzJ2Wbk8CrHV22+yrEMYhM=; b=FFS0Sqf5E5DQ4lMRTJoUFmbnDMtFMXJ1g2wyGgs7G+OlaX/qlR8qLw56lOYdcfJ16sbHMH95c7Ki6kzaVmVjAI6Wb9vWBUET2QVPe/gL0zwynNKy/b+bQjM6WV3iRUKRhe9SGDdN06b+XtqnDUj1u/OIFr+DByL0dxO26sDplvE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591538418744.4884146183423; Thu, 7 Aug 2025 11:32:18 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073359.1436440 (Exim 4.92) (envelope-from ) id 1uk5P9-0003xw-W1; Thu, 07 Aug 2025 18:31:55 +0000 Received: by outflank-mailman (output) from mailman id 1073359.1436440; Thu, 07 Aug 2025 18:31:55 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P9-0003ux-4E; Thu, 07 Aug 2025 18:31:55 +0000 Received: by outflank-mailman (input) for mailman id 1073359; Thu, 07 Aug 2025 16:59:39 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xr-00076W-4D for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:39 +0000 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c200::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e5d92072-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:36 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by VI0PR03MB10757.eurprd03.prod.outlook.com (2603:10a6:800:267::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.21; Thu, 7 Aug 2025 16:59:32 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:32 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e5d92072-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qb5FtBvPKSQHM6OqDGtRW77un+hF0m/WxKcXk7/w+mrOVu3SAhcqXD6kMxdkurx03G/JRQXu34Q8bbJ+ml7LykVoDwOmX1oDsICXxb5a8tLFNmMoFKovmVE0gbc1F3potxS8nKbxTEnNIQi864L9fyJMvAzVTm7nP3QkqWOgu3vhRZk5f+7qfJdUJ+/S1FcOMMmXgqTc7B33yDBsGqe4YxBww7rz8GgvhOUC7h1O1/ORqGOHYYJgH/JZc9NGuXNNmKmEoFBlErWsJpesep2Nu9QBu8mubCUfDMkof2Og6Y15ARfCV6QE6/J3kFWb20ek92xoYkifohxzQ7ymwXvboQ== 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=GBM/Oobt0LXDf7iN7IAMUwzJ2Wbk8CrHV22+yrEMYhM=; b=SqE5PYhlb4ZXoJ5E6tbW1Ux0AOm2UoMeNtx4rmQBstViTGwP11BhYSjb3pNUxKxX2CdSOwIHZtq51zEqAPrHwLgCkVeC3jOdnYNNsedeJNqfS4MY++dydvc95aR8LZfymE4nGmnlLPCXHsHOkDNYD5PgY1tgeuu340gqhwtvZg4awGWrGIV9qmZil8qhDi84jq2wr6LyvvUyAd+lIL3fj2/a3MuyN79xbRmZVu+pZsY60wzkJq7NprTrOd/yoVu/s2fkgF3TYq3EUT0OEyYc37GgOgQ5Pnzn4L6Nfk8Mglb3GD+CWBjDoXUgAAlC1PjhPLeWqpd67d7Rn4VkIXHAtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GBM/Oobt0LXDf7iN7IAMUwzJ2Wbk8CrHV22+yrEMYhM=; b=tLIBFxoFWce6G9NSIVsCP60GRcWPloTRC86VgxmwwMNmx2vsfCVqPtawoYPS+pwOW1VcifdEH/Lse7IrLcVIQG0Ap+ckPt/rnED3PU9k5pIPcIbXfv0/NNjK+xWrWswMq10JsAuhxlOSgG5aIJiSNRVyDo1Aa/5atD92boZUrwUIZk3xT+M9k544oO4JE0VqFXt5nN+ONA3w77GugNurNzJv2uH/Mq3YVClUlM4Fvytb2MHqBoMFD+LlyO4l5WE3j7nRrpg1JRjmt/zcZuxUu3pIP62qjMyWx0pLJrPVSnKpaOsUUgCS7TrPVFT3zTYGErqBTkfa2+FUqgqykUETpQ== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Anthony PERARD , Juergen Gross , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 17/20] xen/arm: vsmmuv3: Alloc virq for virtual SMMUv3 Thread-Topic: [PATCH 17/20] xen/arm: vsmmuv3: Alloc virq for virtual SMMUv3 Thread-Index: AQHcB7yl9f0v0YO6DkW2QyqxB5OyfA== Date: Thu, 7 Aug 2025 16:59:32 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|VI0PR03MB10757:EE_ x-ms-office365-filtering-correlation-id: b4d01857-a845-4cfb-c189-08ddd5d3c7bf x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?qGPuMi5YVwwyQMLtibypNfAc8205ifubbwQ9EhJe2Pyv52I2r55mvB5sGq?= =?iso-8859-1?Q?F4yxRorE+k8QMqUF+NErF/Fwo79w6ZNQLQTSQCMI/rczGDRoS7/nl+H5hO?= =?iso-8859-1?Q?SuuXH8Jsb9izYGT5qMQQnc8yFiGhH3Sxlko2X090tJX55KAJRuk/Bs0sWH?= =?iso-8859-1?Q?h87CMbpJPTv/3MUJdDYxfAvMwTTWXrti7U//ebxN06vmNF/+qCDAZxVbuB?= =?iso-8859-1?Q?34/aKr5hvs2co8zjcEgJ+mFBBFlBMPivCNu2JAmKIfUkz62wR1tFDi+0b1?= =?iso-8859-1?Q?ZfrCXiBoXJr7V5zsLTduSJVGAyQlYjtM5PitDtKM1PjnUt8kT48TfffCoH?= =?iso-8859-1?Q?i4IuhQxC3LJohPAxu5yoIDa8h1tKge09VY1GgmHrsZz36leCiU++/LnjW8?= =?iso-8859-1?Q?2QXbr6LJdF1fzkn99plDHRwT5DZEs5OXS253QIH6JMLjhGQEYmi+18tfpU?= =?iso-8859-1?Q?AOjwgGgpnNaeKtztgHNg/UQ+yxBDIP43GDl2FJLvvapuqt32Iye3CvEWcP?= =?iso-8859-1?Q?6Fofo8YzkZI8QLNQw0bF3YHTsv4ZsJK++eajmbrZGOGVWtwKr33BKphj6g?= =?iso-8859-1?Q?fKtQt3VAV9KHcYyJ78nes2MSTRknUtT21HeGEeLUC/8BB/2IPwgy9KSa31?= =?iso-8859-1?Q?AMjx/UKn+LH8nRdZhuC8+Vu+Qr6KuM+Fy/G5b6bRFVA/+X/pnrNhfc751n?= =?iso-8859-1?Q?F81nGVaWohriTEWJNH8O+skfvMOb+ugFKdpJ16iZrBrYsoGkC9428v+AYh?= =?iso-8859-1?Q?OvkrK50MDuxmv2LpS4Xtn7AeBhDO3V4PS34456BtISyCkeFZe8qDWI92v8?= =?iso-8859-1?Q?DrVkB2qkVktjDFtGekikIInB2h+zzbqyodsNC09n7FNlGhSYXd/Fj/lo58?= =?iso-8859-1?Q?xE86mvr01IfZdvWe/c1banojsth5LE+4CqlouIcok4MgVsM6Xcfa4zpLh3?= =?iso-8859-1?Q?PuyRyGRqViJxwa8BrLrM5FYKPKKFCIlhFvV6OmlLva9o8/paWPQiZ4iJcB?= =?iso-8859-1?Q?1R1EIIVnmulpP0ZM2rs4X3i3CWtC+QUIocTZRmCTtIzNI450BlH5u5nsv7?= =?iso-8859-1?Q?c+Vjd/lIXva0P08afRyCiKoSK/P4nlcvDHMSZUfkW66bQKuPFP64gIBoL/?= =?iso-8859-1?Q?2ZOZREFB27fS9WiDkJQZV2DK7NSlhMTvAph0a35c6OmU2dp3gYoo9GvzQk?= =?iso-8859-1?Q?ajPQ+xv9b7/V6q90X9P5N4mc/HvRou9tkwQEIHlYaCDqJSpV24P5igdP8H?= =?iso-8859-1?Q?pqXdYe6iVqA+PivH+TSxcZIIpUZlSseAFaUSpNvT7mzKbOaaXQxgSoK63N?= =?iso-8859-1?Q?BQnzJu1IXYNDyNSQjRw1nnOGAamsrlJHE0F0aS7SwolCCqXVmLAESoVuFL?= =?iso-8859-1?Q?pvJUv6i2Cj+C0DSwk0Ab+H8UM8R/Tirzf16eOnBYHBPWwhaLm7cuib25G9?= =?iso-8859-1?Q?ljZWNuF/4RRIrIOnSM9WfkgjJKrcT00WnpYfvcdEEY9X+cd/G+mmD+5OR9?= =?iso-8859-1?Q?i+PzZ73sXV867h4ugUYz0I2S+mdwbRNhxmVqiFaW02og=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?0NUIdagPzrogfuqHA7w/4vfOv5BPadHKGnSGAvBp06KeIQ0yG5FE94Hkt8?= =?iso-8859-1?Q?Ftn+PKXgTVpj1E79x8ePG3t3K0sWUK2W4bqO6OgSbLGF58i1EpR3OJhtOD?= =?iso-8859-1?Q?3bP3S58kIhp3rataefW2sW//jUd/+QEmVtykX1sUCsJDjX57lEQ37TbiKH?= =?iso-8859-1?Q?YoPPlnAHM7ysNr2p2tUOYunSfQh26+P64L96IwAfZ8DIOG3wKAR6HI9XFA?= =?iso-8859-1?Q?m3hKnsvhPZnyFTjX7zd2lV7N3gNvS3brqulcSZnS8kP2ZwsGe/6SePNlA4?= =?iso-8859-1?Q?zW7KVy7DF9pLDi2px67MsKwx5QcwjuqbjTpCoPufHdOZh6Ir6NE77gMMxz?= =?iso-8859-1?Q?dbDYS+Xlm9d0f6jl3QRN0orwpMDqMZRMLTfJgdiWgPHo3qev+iXGeurCHM?= =?iso-8859-1?Q?Y0d1w2z4NdUBPN5MCw149adCD3nGgb/kHcPhyIK5MUBinG7Tdnf6DMng24?= =?iso-8859-1?Q?q5h+fnyYlswPXs+yvj4lYzcqmBYW+0rjmpdGqStkYda4axYssvNplfSgIs?= =?iso-8859-1?Q?gNQAOn5MT11qfN4/YfuYoF1AlPqwtayO07LtdTLvCNVb3qj64ZvAhvlWfh?= =?iso-8859-1?Q?804vI0N/fkG9qyZQ6mftAthxMqVE8QQgyRvf58an9fjXEODkfwGLA5Q3QS?= =?iso-8859-1?Q?8Fp6Y6lNOtD0dbpS9ODRMJdy0FyvA1q7OYGtpELgPwveqfQcTh6cdJwjt8?= =?iso-8859-1?Q?6857mgq1kIbrONfwwwxKhomzFQldmPrU6OktQ2jgl/O1MfmdFvy7j0zVq1?= =?iso-8859-1?Q?Dr3T0YTkaGPOg2JmsVC1jV1CwAzVDNBjGFulRSx+a7s7NGSY3b/nQ4hBOk?= =?iso-8859-1?Q?g0N+uvvv46rL+GNvudyNbv4zyoLt3ddICzzCXQXV9zY8DfNs2Ykx+ObwxE?= =?iso-8859-1?Q?9Qt6iUZuB3jiMCuxBp61fyKyN2v4AI1HoNq+jVmQ66Bhub+6xG0BiKLmKa?= =?iso-8859-1?Q?XkeDDbcvr2TLcpffDvgxXmjlpp9ymFlrttjg/TlpKG+PadgNn/Tjji4ynV?= =?iso-8859-1?Q?+Y0OSdm9w4DMCs/lmt59EmwtOXcHPfxaTffsMvr9qF5arU4H8PwyB6Oywu?= =?iso-8859-1?Q?DcL4MbsRgNIqBQZLGiWb9ftjD0118ufu6k82JmsxPkswBHBASaCQM3iqcl?= =?iso-8859-1?Q?yKqRuAy6WD9+R2HmlMOcRLvraD7Zz0nkOV2WMbmUmKnFN2O97fTUrPWlDe?= =?iso-8859-1?Q?pbI6UJE6sxgSAFE309N8z38G4g7EHDeWjbieLGkov3qGXOTjajQAa+z1J0?= =?iso-8859-1?Q?8W2toujxEnzOAHF6U/ZzGAdLdHkkr2IitYyXjooMLfbgFncbpqrh67VCtB?= =?iso-8859-1?Q?nZgYM4WIgcVTcFTSu1oHAwl6tnn1Qav44jKPOI02JCz0Xd2YLrfAh4g59L?= =?iso-8859-1?Q?qplYMmOkjw1Ow1DUpt/oKnHcPrNC+xZ+5OfbTNR8sOChJMAKdGNPjmc/GI?= =?iso-8859-1?Q?70D2vrhrXeWu3Ev+e318KsG0zyhOwyAd4qeUoqFEx+Zb447ORpM08vp/fH?= =?iso-8859-1?Q?rhrmT0OGCaRXysURyioquhMDbUR+bBtIb/WNKaKvC9pvLqFr07big4EXqS?= =?iso-8859-1?Q?AbV2icXxSEaLBiNjZd4WBX7jJt7Elv6q3veBdRwdJ24a7shnDRoM52QHKQ?= =?iso-8859-1?Q?a/F1YJo58rl4R578g6LD0udM67ie9i9VrTvIjEa7/a3tKnNXi4LB8qiQ?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b4d01857-a845-4cfb-c189-08ddd5d3c7bf X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:32.2435 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ijOeTGxIc2NT81pp1R4dFmxpNSRLRV1qmC1Tbet8Wo8PESvhn3gEfh5QwqSk4vuzC939GuqKFEB6dZd3KiAFdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10757 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591539322116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Alloc and reserve virq for event queue and global error to send event to guests. Also Modify the libxl to accomadate the new define virq. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- tools/libs/light/libxl_arm.c | 28 ++++++++++++++++++++++++-- xen/arch/arm/dom0less-build.c | 17 ++++++++++++++++ xen/drivers/passthrough/arm/vsmmu-v3.c | 13 ++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index c8255d8d4f..55beda8c0e 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -86,8 +86,8 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, { uint32_t nr_spis =3D 0, cfg_nr_spis =3D d_config->b_info.arch_arm.nr_s= pis; unsigned int i; - uint32_t vuart_irq, virtio_irq =3D 0; - bool vuart_enabled =3D false, virtio_enabled =3D false; + uint32_t vuart_irq, virtio_irq =3D 0, vsmmu_irq =3D 0; + bool vuart_enabled =3D false, virtio_enabled =3D false, vsmmu_enabled = =3D false; uint64_t virtio_mmio_base =3D GUEST_VIRTIO_MMIO_BASE; uint32_t virtio_mmio_irq =3D GUEST_VIRTIO_MMIO_SPI_FIRST; int rc; @@ -102,6 +102,16 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, vuart_enabled =3D true; } =20 + /* + * If smmuv3 viommu is enabled then increment the nr_spis to allow all= ocation + * of SPI VIRQ for VSMMU. + */ + if (d_config->b_info.arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMM= UV3) { + nr_spis +=3D (GUEST_VSMMU_SPI - 32) + 1; + vsmmu_irq =3D GUEST_VSMMU_SPI; + vsmmu_enabled =3D true; + } + for (i =3D 0; i < d_config->num_disks; i++) { libxl_device_disk *disk =3D &d_config->disks[i]; =20 @@ -170,6 +180,11 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, return ERROR_FAIL; } =20 + if (vsmmu_enabled && irq =3D=3D vsmmu_irq) { + LOG(ERROR, "Physical IRQ %u conflicting with vSMMUv3 SPI\n", i= rq); + return ERROR_FAIL; + } + if (irq < 32) continue; =20 @@ -893,6 +908,7 @@ static int make_vsmmuv3_node(libxl__gc *gc, void *fdt, { int res; const char *name =3D GCSPRINTF("iommu@%llx", GUEST_VSMMUV3_BASE); + gic_interrupt intr; =20 res =3D fdt_begin_node(fdt, name); if (res) return res; @@ -911,6 +927,14 @@ static int make_vsmmuv3_node(libxl__gc *gc, void *fdt, res =3D fdt_property_cell(fdt, "#iommu-cells", 1); if (res) return res; =20 + res =3D fdt_property_string(fdt, "interrupt-names", "combined"); + if (res) return res; + + set_interrupt(intr, GUEST_VSMMU_SPI, 0xf, DT_IRQ_TYPE_LEVEL_HIGH); + + res =3D fdt_property_interrupts(gc, fdt, &intr, 1); + if (res) return res; + res =3D fdt_end_node(fdt); if (res) return res; =20 diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index 1e526c10de..66ef3dfa1f 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -224,6 +224,7 @@ static int __init make_vsmmuv3_node(const struct kernel= _info *kinfo) char buf[24]; __be32 reg[GUEST_ROOT_ADDRESS_CELLS + GUEST_ROOT_SIZE_CELLS]; __be32 *cells; + gic_interrupt_t intr; void *fdt =3D kinfo->fdt; =20 snprintf(buf, sizeof(buf), "iommu@%llx", GUEST_VSMMUV3_BASE); @@ -254,6 +255,22 @@ static int __init make_vsmmuv3_node(const struct kerne= l_info *kinfo) if ( res ) return res; =20 + res =3D fdt_property_string(fdt, "interrupt-names", "combined"); + if ( res ) + return res; + + set_interrupt(intr, GUEST_VSMMU_SPI, 0xf, DT_IRQ_TYPE_LEVEL_HIGH); + + res =3D fdt_property(kinfo->fdt, "interrupts", + intr, sizeof(intr)); + if ( res ) + return res; + + res =3D fdt_property_cell(kinfo->fdt, "interrupt-parent", + kinfo->phandle_intc); + if ( res ) + return res; + res =3D fdt_end_node(fdt); =20 return res; diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c index 7a6c18df53..a5b9700369 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.c +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -733,6 +733,7 @@ static const struct mmio_handler_ops vsmmuv3_mmio_handl= er =3D { static int vsmmuv3_init_single(struct domain *d, paddr_t addr, paddr_t size, uint32_t virq) { + int ret; struct virt_smmu *smmu; =20 smmu =3D xzalloc(struct virt_smmu); @@ -748,12 +749,24 @@ static int vsmmuv3_init_single(struct domain *d, padd= r_t addr, =20 spin_lock_init(&smmu->cmd_queue_lock); =20 + ret =3D vgic_reserve_virq(d, virq); + if ( !ret ) + { + ret =3D -EINVAL; + goto out; + } + register_mmio_handler(d, &vsmmuv3_mmio_handler, addr, size, smmu); =20 /* Register the vIOMMU to be able to clean it up later. */ list_add_tail(&smmu->viommu_list, &d->arch.viommu_list); =20 return 0; + +out: + xfree(smmu); + vgic_free_virq(d, virq); + return ret; } =20 int domain_vsmmuv3_init(struct domain *d) --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591533; cv=pass; d=zohomail.com; s=zohoarc; b=PPc9n+y9WY+V94kMpQ3k5WQRHDD6m4IAc0zY6E8JZ5sXLuQjCQdqeMKGCQRFdCFbtM5OAx1D26sywW60UCKFIgq1O0qYo1369z8YgnGDHcgsfT3Gir4fRFTi1+XGAdxR/V3uAl1LJwe2+U2TpJUzWW+HpDFuhQxKbUsb4hoXkB4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591533; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LRKz4SORhM6Udu82OMwS2LwE/KWoTxc6MuWquW1TEVY=; b=WX5GO0vY1ED3B+dnDJWQHr5yNWrW/aHgSDXzObjcZ3ozpO/2cFOhOhvgUMq6olUO1h8pREeOdSCHBuuhNr4kxgWV3t45J7RC3LMbpb3Y9cWPXbYluUBhpVxgsAymUtzTO0a2s0zjDr9VUa1xgR45geGobpQEXmjV3QPIZ2b2fkY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591533502529.099252740842; Thu, 7 Aug 2025 11:32:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073357.1436428 (Exim 4.92) (envelope-from ) id 1uk5P8-0003VY-7F; Thu, 07 Aug 2025 18:31:54 +0000 Received: by outflank-mailman (output) from mailman id 1073357.1436428; Thu, 07 Aug 2025 18:31:53 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5P7-0003QR-3a; Thu, 07 Aug 2025 18:31:53 +0000 Received: by outflank-mailman (input) for mailman id 1073357; Thu, 07 Aug 2025 16:59:38 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xq-00076W-3y for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:38 +0000 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c200::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e55ca74e-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:35 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by VI0PR03MB10757.eurprd03.prod.outlook.com (2603:10a6:800:267::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.21; Thu, 7 Aug 2025 16:59:33 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:33 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e55ca74e-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yFpuBRn7HLjnX5gNJT2PBswLUn0uuw7Qph+u/FMkZJMti14v9V+HovCntAw4rtgawedSxbRWvPGLkIYxGi/cOH098vThCdzA88j+ygOn+OfSw1Xmwl0BNRdFh2yTKfxgNyxWKG/pa8KtVPUbkVyJB7V+TUh7Vs+wbXlVl5tpqtw6YDIxE9jsiA87l3J0NDc2qgPkthVgWdxf2xCn5GLn9Ydk5F+4jMPuP3BIIboY+Mh9opcEyj8VB7wKRI4KZBJSrUxAADS/YleIpyMClnYVPJFqptTDKpXQjPy1ExxjNlPWhUZ4E4S7HNxHIbdxqo2wuuQyYIbCRVnYmPHDRqSbBw== 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=LRKz4SORhM6Udu82OMwS2LwE/KWoTxc6MuWquW1TEVY=; b=x+Ow/p2AmEa+cP+GEbILxHSTJCGsrnaPuXgtn7ipyXVAMgFfvSdT5XSBQcuKyYZybfmfAgApebkYCgrPl1qhtp2Aeve/VUCeu5qOhFW1YMII4sg3bx3k973wop3tVi8PVDPDfLanBe5vY+iiQOMsC59wG6QjAX+j6HNhbaxuozBgNdVYt4wV0TiTOWYw4vTs7hi6nlXQ6Q2+Ao3EHWAdrjgrcP4bi6La33eBBDvbM+EiS0WDkTpTkFU5iTQGEykUItoGpOtcfRUialKT9D1HoZUkViWntf86aoEWme5ZZMDVwQqdDSrZXabXG5bTw+fyQDbjlsZiWVeEbwTvApa1Bg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LRKz4SORhM6Udu82OMwS2LwE/KWoTxc6MuWquW1TEVY=; b=LGsOaPVhOhCZC8YEP3kljAZKFyAC09y7eq2359+MWDnXKU7x8CD9auq//yvUosMytBAoGmqf3TUEpSuCyUxDAnGTs+YiPA+86KAmTlZ1GE9LIZhBFxxEZUcVUZ2nmAB4hYPchY9jDBkCnUjCLRbh2PKeDDia6hnxeIYnz07b7Uj8OizEYaeebkeHNt4YHWYf3N8ylLA7D7rcxzs5YPe1xx4CA0w618L3KnWfbegNUhR4GId0ywZ9FQuJ7u4AMla5PcZ1drNTklpUysBl5FPkW8ME7WSAEEedSe3Ow0ES5+/HjOzEURHDpPAXITjesEQFy7T/Kqgfgx6CtiEC/fa2cA== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Bertrand Marquis , Stefano Stabellini , Julien Grall , Michal Orzel , Volodymyr Babchuk , Milan Djokic Subject: [PATCH 18/20] xen/arm: vsmmuv3: Add support to send stage-1 event to guest Thread-Topic: [PATCH 18/20] xen/arm: vsmmuv3: Add support to send stage-1 event to guest Thread-Index: AQHcB7ylYt7xb8ek2UKgm42MUihrsg== Date: Thu, 7 Aug 2025 16:59:33 +0000 Message-ID: <0ca83cfb5d360d80813fc4ebbd3b038a3195cdd1.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|VI0PR03MB10757:EE_ x-ms-office365-filtering-correlation-id: abb1c569-035c-40fc-a5fd-08ddd5d3c863 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?xjCu5XOMhJFyizGpQNV5v4FQbKclPggDRA3zWqR1A8kw/Wg1huIw1SO1LU?= =?iso-8859-1?Q?bZ2k3wqM20hwS8yL5YO527XaqawcdQtkmvDJWu7aqpFQKbvzGBujgrjkwv?= =?iso-8859-1?Q?uo728EELxF+kxfBLt3PpuzbTWA2MK/CvOMlMozMOmBCKJ5UJBrQK2xyE9U?= =?iso-8859-1?Q?YdwvSu/6Ug9Mw+VqXZ8pZv0lMUxwTm+Le3cJdOrBh9fPzmhPmW2PAz51F8?= =?iso-8859-1?Q?yzZZPieqGfVKdnL8hFxx1x6iaRDWX9/tmFb9625FMKvMGn1Zc6/DagnBNR?= =?iso-8859-1?Q?LYNLX+CAyf7e6XaqJ0Y0Wr3jhA5eYjD2kE4F5hPhArShy1KOd+sze2lEY7?= =?iso-8859-1?Q?nzF1z5SuRLmMHFd1uWufmOLCbrNK4/jEI4JiRBOQWC/lGcoDVVNaHKXxTj?= =?iso-8859-1?Q?kMOEQQeGWXwbQKtBoiVYC7tCIbNRblrb43qoaysthdY8zn8OXc53GafqoO?= =?iso-8859-1?Q?f7aInloj1pVHffFDNNfX8XVVYQQ4Pw36RKfBE7Lv44197P+wQTAkhQu+F6?= =?iso-8859-1?Q?JVS3tp/E0ywasNdtbqktJpRv0T5xWMqHPFQuy+phMFjZzdQ4WaPhVLAyTr?= =?iso-8859-1?Q?1DzwSv7e200tlNglvVLee9kRvE1/Z7M/NV5K9dA+xUQ08lsTi3ShVNtxY3?= =?iso-8859-1?Q?/snalATBXoIHmM8YxyfseNk3q/pGAGM3F9cludzT+mro4b0ZfCrAFEzHqr?= =?iso-8859-1?Q?3piC4F+uWa4XtZgKBx0Jep4X/KR+8BIX11IDrbM85eJE5bzUfhbNXEaVsM?= =?iso-8859-1?Q?dPQC+PqXuN8wn0sV64Zjpt4n/WmNLgUcHYjk/SJIS4GOS54hHXGJ1hZafc?= =?iso-8859-1?Q?UdCVsV9GSctYTyegKGIbFuE2jFgaCNWpJhfYWrTXuLkvpZEKiNlzHe9EUH?= =?iso-8859-1?Q?fGZldpnjNti1FOHbxGhZYXB+xNGIGEfS+hWtDDPio/Ml9h3/OaeHTDfP1A?= =?iso-8859-1?Q?a8ouzsdC6HVJLZMgA31QHrO/sarfo/KUCeO2qhsX7/0kIIu3kaO4qjIzbi?= =?iso-8859-1?Q?5L2TynbPqqC/81sYEMG+l5L0IkKlLvL1ZmprVsPja/wB4guZJu81b/Pttf?= =?iso-8859-1?Q?hx+DIuvCfdizJ3770kq/pNqyFqWqlF936C/mg+9oIb1BqyK9MFGy7WE1E8?= =?iso-8859-1?Q?EAX3WQ2zPS0KWZP3+CT5FDfutHJkmRf/dXIxcMaW88sh5CR0zqy/BtNAeP?= =?iso-8859-1?Q?RPe0t1ELWgMXPcuUTpJJH6hDNr16p5xNHXrY5lTQw0wV+FloPC0cBF/D4W?= =?iso-8859-1?Q?cNIsAr7wWgiSwkTtXDzfRiyEWROOyEp7gPUvFZz1M7NlXweDYITUWDkd3a?= =?iso-8859-1?Q?9EA2eDVtxFIkQYCPenCRvRrCWxe7Y0RReeLUdejyb2OkRnCEVO8+/ybhKA?= =?iso-8859-1?Q?er3Z25FOFhS/EV2+kgZYYwVwQMvHpxuXkx9NGJ0IrNE5LgnZZC5fZ41jDy?= =?iso-8859-1?Q?MqjvgdfK0gLoqzC6YdhZz6C7KpLUETWjpD6tyVu2cE8o5z8C9LXtsp+gSJ?= =?iso-8859-1?Q?6E24QKEK4iW3X5QWsMWFhwFeyHF7li9eMQ3YTxO3OnRw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?c+VQZ7GYqMN7NcWxL6gGgcUiOdX0igjKbD6ErubDr8epbuuq4zcVbGbqL+?= =?iso-8859-1?Q?ZTh2DWFjz+nLyNjJZYapG8N6y+DPd1QZrzflGnxXyIA0wzWbud6UngYxTh?= =?iso-8859-1?Q?obNSVXfhoKhUyRU5iSZRJOf3sF7MMsoFJO51DNdYLnSNjxqkMwg0zZQT82?= =?iso-8859-1?Q?hrV1N4MC4om4g0rg/xGC0Ljwhd9Wpors+5EcMvVw6/b7luroJRwx7rj9H4?= =?iso-8859-1?Q?6aEbyH4yi4uanK/SSDFM4EpzvgXey5OP0ir5ubIIsN8dllf2QoFxvil/go?= =?iso-8859-1?Q?NB6omKoQKpf56WsT0QWC/UTcw81tyP21jXLSyB7EqNxtL4gWcBMO7HLZd/?= =?iso-8859-1?Q?SBAij6+Vfx45szWiVCkn68WZxRORaBAZK4oV9uTBCLKfAXiXFxBAbiFi2E?= =?iso-8859-1?Q?kyJIAIFHybftur8Gs/JLhoKZTDdvGR6MUnVTZ0bA3I+WZJKhR8ajbX0Lnc?= =?iso-8859-1?Q?zggizehem33dSltbf+xTAdK4/+KIQ4SPtJPR6dLrk8hDI1Ocb5RixihhVK?= =?iso-8859-1?Q?R/2gP8Woo+4VFThsrGKfOsfvW6P04wBHecByQg1ayU3QZEQQf6ApIyd706?= =?iso-8859-1?Q?ely3uMN0dkeN3qeUs6v3IJoFWwJcQyFySbTr5Cdlxldzh8/Uy4yqrpWoEF?= =?iso-8859-1?Q?hrxquA6E8MQ9/q8u/3IrBeAgaBmIb2dz+HchzdfDExYmT1kPKkJkyhh70O?= =?iso-8859-1?Q?9Mo0IO/0vBbKZYD4Puk3idnA36Bd2YwK/TNSJK845WiES/OzocwoUqFK6m?= =?iso-8859-1?Q?gwOzOOPapRQOlmQrLWfL0AmXDXo4VS4HBWsJsMAbGGn5MVKEg1HFs1Jc9/?= =?iso-8859-1?Q?u1Z0He4gV8SwxnjDZsrMxGIcoszl3pVzScbrsckyVB2ySgHPKe7MAgxXnq?= =?iso-8859-1?Q?Xl5JPq3I5iVebFYPhUYztP8LzNV/PpH2wiBIyY3q+ED7nTvWClaAQBqoYV?= =?iso-8859-1?Q?UeP6jA+ZqWBv4vSiqaCwRRNVxjGHy/uSkqlSYuIQ3VcsnIKJzd3nuIn7++?= =?iso-8859-1?Q?Q3jkyoB0wJIhXeazrGeF8G9RAgHzijooZqvKlRavDesjkOqjBsYw8YyjyV?= =?iso-8859-1?Q?XFqTrAQ4bVmU6IadPVxSEKPAHGxb0EHZSYln3Kyyq/zH0fXjf6k4Z6gL07?= =?iso-8859-1?Q?RutzwYhPgKisnQ2yFAMi9MzRhpnc4j9akKLYCPPxS5WSOxj0g+ZZl1r1+f?= =?iso-8859-1?Q?EsDp8Urq2rGXNBj7BaH0hhcJh8yfHUH06LEl4qHnKpt9VFEDyOFNmgTHXk?= =?iso-8859-1?Q?SPsv7twecbeKbf0wqnf0erqFNZg08F7U9uFMiguyOPT+yvUR+6QV4dpro/?= =?iso-8859-1?Q?tuDZ8L8yQ+HUAMGil7DodsCDtq1t1FRZrma7U5gxfVtIpxL3UkW8lvnEDF?= =?iso-8859-1?Q?6sxiSQ3WkShGyL21Ssz6iyUYIfZ8pqvmC8MNEO2LdiBjOGJmMJcsHFwsXT?= =?iso-8859-1?Q?B+YRaC1kYRgYnITfCKcACfHMmhVyOHxFHWGkZxStmxLXLpdas0D/b1CNxn?= =?iso-8859-1?Q?zSNaxXYtkamhSPHeixov83TmdLpHgNBAsL8fd2t9vdvZZVClMDPN34My/D?= =?iso-8859-1?Q?zOoU7Sn6c89yoDlHV1hECYD9GNbvw3CJU34VZ8LebBTUOMqdy87qs9DoJz?= =?iso-8859-1?Q?zeZC5C7WLjmOcNEiIKeJ0YKDskzPpkKk+7+9nzuRTRUBR6cVtcwRQyZA?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: abb1c569-035c-40fc-a5fd-08ddd5d3c863 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:33.3082 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: gvB9AJQd4j1OvI08YFcqKucu2zRzbdw16/VC/CPnjQas9jNUSgJB1Q0Vc9VXITbSWjvgkmMyVPvbphxF/ktB2g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10757 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591535186116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh Stage-1 translation is handled by guest, therefore stage-1 fault has to be forwarded to guest. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/drivers/passthrough/arm/smmu-v3.c | 48 ++++++++++++++++++++++++-- xen/drivers/passthrough/arm/vsmmu-v3.c | 45 ++++++++++++++++++++++++ xen/drivers/passthrough/arm/vsmmu-v3.h | 12 +++++++ 3 files changed, 103 insertions(+), 2 deletions(-) diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthroug= h/arm/smmu-v3.c index 91bf72d420..4ea3e90c11 100644 --- a/xen/drivers/passthrough/arm/smmu-v3.c +++ b/xen/drivers/passthrough/arm/smmu-v3.c @@ -853,7 +853,6 @@ static int arm_smmu_init_l2_strtab(struct arm_smmu_devi= ce *smmu, u32 sid) return 0; } =20 -__maybe_unused static struct arm_smmu_master * arm_smmu_find_master(struct arm_smmu_device *smmu, u32 sid) { @@ -874,10 +873,51 @@ arm_smmu_find_master(struct arm_smmu_device *smmu, u3= 2 sid) return NULL; } =20 +static int arm_smmu_handle_evt(struct arm_smmu_device *smmu, u64 *evt) +{ + int ret; + struct arm_smmu_master *master; + u32 sid =3D FIELD_GET(EVTQ_0_SID, evt[0]); + + switch (FIELD_GET(EVTQ_0_ID, evt[0])) { + case EVT_ID_TRANSLATION_FAULT: + break; + case EVT_ID_ADDR_SIZE_FAULT: + break; + case EVT_ID_ACCESS_FAULT: + break; + case EVT_ID_PERMISSION_FAULT: + break; + default: + return -EOPNOTSUPP; + } + + /* Stage-2 event */ + if (evt[1] & EVTQ_1_S2) + return -EFAULT; + + mutex_lock(&smmu->streams_mutex); + master =3D arm_smmu_find_master(smmu, sid); + if (!master) { + ret =3D -EINVAL; + goto out_unlock; + } + + ret =3D arm_vsmmu_handle_evt(master->domain->d, smmu->dev, evt); + if (ret) { + ret =3D -EINVAL; + goto out_unlock; + } + +out_unlock: + mutex_unlock(&smmu->streams_mutex); + return ret; +} + /* IRQ and event handlers */ static void arm_smmu_evtq_tasklet(void *dev) { - int i; + int i, ret; struct arm_smmu_device *smmu =3D dev; struct arm_smmu_queue *q =3D &smmu->evtq.q; struct arm_smmu_ll_queue *llq =3D &q->llq; @@ -887,6 +927,10 @@ static void arm_smmu_evtq_tasklet(void *dev) while (!queue_remove_raw(q, evt)) { u8 id =3D FIELD_GET(EVTQ_0_ID, evt[0]); =20 + ret =3D arm_smmu_handle_evt(smmu, evt); + if (!ret) + continue; + dev_info(smmu->dev, "event 0x%02x received:\n", id); for (i =3D 0; i < ARRAY_SIZE(evt); ++i) dev_info(smmu->dev, "\t0x%016llx\n", diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.c b/xen/drivers/passthrou= gh/arm/vsmmu-v3.c index a5b9700369..5d0dabd2b2 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.c +++ b/xen/drivers/passthrough/arm/vsmmu-v3.c @@ -103,6 +103,7 @@ struct arm_vsmmu_queue { struct virt_smmu { struct domain *d; struct list_head viommu_list; + paddr_t addr; uint8_t sid_split; uint32_t features; uint32_t cr[3]; @@ -237,6 +238,49 @@ void arm_vsmmu_send_event(struct virt_smmu *smmu, return; } =20 +static struct virt_smmu *vsmmuv3_find_by_addr(struct domain *d, paddr_t pa= ddr) +{ + struct virt_smmu *smmu; + + list_for_each_entry( smmu, &d->arch.viommu_list, viommu_list ) + { + if ( smmu->addr =3D=3D paddr ) + return smmu; + } + + return NULL; +} + +int arm_vsmmu_handle_evt(struct domain *d, struct device *dev, uint64_t *e= vt) +{ + int ret; + struct virt_smmu *smmu; + + if ( is_hardware_domain(d) ) + { + paddr_t paddr; + /* Base address */ + ret =3D dt_device_get_address(dev_to_dt(dev), 0, &paddr, NULL); + if ( ret ) + return -EINVAL; + + smmu =3D vsmmuv3_find_by_addr(d, paddr); + if ( !smmu ) + return -ENODEV; + } + else + { + smmu =3D list_entry(d->arch.viommu_list.next, + struct virt_smmu, viommu_list); + } + + ret =3D arm_vsmmu_write_evtq(smmu, evt); + if ( ret ) + arm_vsmmu_inject_irq(smmu, true, GERROR_EVTQ_ABT_ERR); + + return 0; +} + static int arm_vsmmu_find_ste(struct virt_smmu *smmu, uint32_t sid, uint64_t *ste) { @@ -742,6 +786,7 @@ static int vsmmuv3_init_single(struct domain *d, paddr_= t addr, =20 smmu->d =3D d; smmu->virq =3D virq; + smmu->addr =3D addr; smmu->cmdq.q_base =3D FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_CMDQS); smmu->cmdq.ent_size =3D CMDQ_ENT_DWORDS * DWORDS_BYTES; smmu->evtq.q_base =3D FIELD_PREP(Q_BASE_LOG2SIZE, SMMU_EVTQS); diff --git a/xen/drivers/passthrough/arm/vsmmu-v3.h b/xen/drivers/passthrou= gh/arm/vsmmu-v3.h index e11f85b431..c7bfd3fb59 100644 --- a/xen/drivers/passthrough/arm/vsmmu-v3.h +++ b/xen/drivers/passthrough/arm/vsmmu-v3.h @@ -8,6 +8,12 @@ =20 void vsmmuv3_set_type(void); =20 +static inline int arm_vsmmu_handle_evt(struct domain *d, + struct device *dev, uint64_t *evt) +{ + return -EINVAL; +} + #else =20 static inline void vsmmuv3_set_type(void) @@ -15,6 +21,12 @@ static inline void vsmmuv3_set_type(void) return; } =20 +static inline int arm_vsmmu_handle_evt(struct domain *d, + struct device *dev, uint64_t *evt) +{ + return -EINVAL; +} + #endif /* CONFIG_VIRTUAL_ARM_SMMU_V3 */ =20 #endif /* __ARCH_ARM_VSMMU_V3_H__ */ --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591542; cv=pass; d=zohomail.com; s=zohoarc; b=b+7PWs4QTNP+Q6lR7XP6WY0pO+DaU1kR7K+FXbjSHeXbdcT+fE+lipYU5iN4oRL0qn5Y4y0CvhoRUrFHJISFE6XoYHCVLNR707aO/+M5jl/oehpUBrdiiQroDsf46lMTPMv6NLjjS5ivRKahIPDXDVwoVQgvZLqwSFRHUzncGBw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591542; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mgbEu8g+cR8hWWcI+vmWjbFyPNSrKMsI150S5qEBQE0=; b=Mt8ujkdL/RoubZDKr0k2H6uG6bADFbE8E417WvSuZJnYLx/ZHQD2hVEm6YSp/KxtpFtb07B849QXgOx9bXFsMTFnKn8h6WN3N4TzgFjvXsKk+vq2p4GvN5Cu4Q/npom4v6+URKv0s8aXSg1+hAvO+d2ypKUc83b6HbT1IA+Rk6g= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591542343626.1984518968274; Thu, 7 Aug 2025 11:32:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073363.1436460 (Exim 4.92) (envelope-from ) id 1uk5PD-0004lI-GN; Thu, 07 Aug 2025 18:31:59 +0000 Received: by outflank-mailman (output) from mailman id 1073363.1436460; Thu, 07 Aug 2025 18:31:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5PC-0004d0-Gk; Thu, 07 Aug 2025 18:31:58 +0000 Received: by outflank-mailman (input) for mailman id 1073363; Thu, 07 Aug 2025 16:59:41 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xt-00076W-4Q for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:41 +0000 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c200::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e67b1a2d-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:37 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by VI0PR03MB10757.eurprd03.prod.outlook.com (2603:10a6:800:267::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.21; Thu, 7 Aug 2025 16:59:34 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:34 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e67b1a2d-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NajIWZLffrca0TmSh0u2AtMJo5oLQxUJqDhGvtdoRyrh0qIIhw7O+jskLuPmWYl0AGGE0wHAi8+K88uo3DOIs0YTZQ3UsSljo9wf++TCASdPIwWFAalpMkuHB2gFf0HcabO3LcZJ8hDAQQQqYS/jTEOKQaFG/wVW9yu0cta4gYoWDRqiFMYPNdxn+gP07UU2Al2D4rmUrCqvL/qGnBGLQjoH6i8lX3g/Qges9A6Fzlivnt2mCz6c1j1LGqR6Wta/wW8qMePi1UdRZh3Y11CObMzQYcsxshgQHroLABCDum0foD+SmHlNE/dhpPcpoHzVjAHclAU5MSioX1A/t/0v9Q== 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=mgbEu8g+cR8hWWcI+vmWjbFyPNSrKMsI150S5qEBQE0=; b=DXSbnBr/U/YwMSQTjj2iz5A56230ct9mqBtqh9BJkvJM1Jv+O6vlsyN3fZAW/51fXuDHSReqR6WDsiLVlGCwN13awEqpD9ZCtYzSqIRf3KDR/cfxn9A5vcflWWUK5VtmIfaeBvqRKFaZimkUtedFDuwC+blt25Z5mhwSiRPbkHxp4NehmE0bwYFBW+n12XnbPpBjfDKoqGqL//RLvQ2M+hxzRtTp8KkZqHBUhXoY0RV4GxmCke+cPJjdwsT5721P3HdPHNP/MuRhT6A/fi3ulAzbJ1G3K/0XtuX6oR4Z22cDaMoaJEk/aZDUL4qqwgYKU/NEjzQbrNyUPcTJ5rOb6Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mgbEu8g+cR8hWWcI+vmWjbFyPNSrKMsI150S5qEBQE0=; b=jvjhKcqt2EhBC3kffGH+untvrK69GaxYJ9PUY+sF9fCvnN3uTQRUCNeC/bWCiYYYKX0B9hXH4BV/OV+F2E1sJZeEw92wxO4htC1DYGURsXDjC8NM7fZGc/LawkL6kk1v1vy5BUaEcvSJ6CeF3YysST8PubWPQ2mVKE2HKU/EGf8xtEgav9NWEnKfyaGXNutmavSwbimcW+ntd/6MkOfUYPYr3z39IckdRSoDWNGoO5L/LGfIizn3+dynPBUqt3y7UpAjcp4aPv0YDw1O0SPKXe9Nhuhv0K9QxrDDzg2FsnpZ2NjnaiScrJuo2c1gPDVIPt8GuACN9dZDrWcX3sqRZw== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Anthony PERARD , Juergen Gross , Milan Djokic Subject: [PATCH 19/20] libxl/arm: vIOMMU: Modify the partial device tree for iommus Thread-Topic: [PATCH 19/20] libxl/arm: vIOMMU: Modify the partial device tree for iommus Thread-Index: AQHcB7ym3rNlr743m0uxb+sgzlQOeg== Date: Thu, 7 Aug 2025 16:59:34 +0000 Message-ID: <93021553689384d7c0dbbb41466677adfe331fd8.1754580688.git.milan_djokic@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|VI0PR03MB10757:EE_ x-ms-office365-filtering-correlation-id: ea134fe5-c68f-481c-00ca-08ddd5d3c913 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?e91ESCL/h3C45GynofHgb4w8DZc41ERMwNmUN1aoJOgSospcgsycsABRDL?= =?iso-8859-1?Q?Ne7HOWp+SNsXNalwxERxhv7fyeEXf6XswOYIwglQPaWMsdhW5O8xEsqWce?= =?iso-8859-1?Q?73Xh3ENEAbJNxkfQZeXCj/813N3OuP7FINN8MeVufDA9MEDljztHkkqp4i?= =?iso-8859-1?Q?8g/5rZ+8kAyn7NOnXBI3lx3DC/amdT1pyOFEPRNGAz93BkGeddXJUPtPjZ?= =?iso-8859-1?Q?otyTVWjULPUa3UBmZn+OBhbqZyQTLyESKTO3mFbH1XqrYbQwNGDysK0loS?= =?iso-8859-1?Q?bLfW7d5zihZMdGbBlLAqw9plFtblw85Q3ynhsdRLaFL7C6nOEYV/84X415?= =?iso-8859-1?Q?AjpLOJ0XtCXqOUs40hR/G1+qZ31lnYKJ4PqqCPThPg1+2FbdcJF/Vk4XfV?= =?iso-8859-1?Q?/x3bVOGA4Tome6owNRacGgB4tauJGf0AoxXk6dW4bAdV0yYnyJ0mI9DOGU?= =?iso-8859-1?Q?y9yQ7YlWDzSWTHC9EVRvtoDs9xZoZIg+wKB9FI7NEaTHSGd+saPNP3gmjI?= =?iso-8859-1?Q?gjN0uyF0N00rbJ+1uNCUQo4YW/KBN02cboibo7OYC0TuNVoMbL6x6h2XUV?= =?iso-8859-1?Q?WERZygFibaW+ZeVJwouW+1vpyJEkBOZ3LkmArsFYRhMsczG7x8KTmjc+/t?= =?iso-8859-1?Q?N8J+dD2XpJlqxVQXN/jVxQKmi961pK4fYq4ZBGQMlWYBALQhGWvddKJUAv?= =?iso-8859-1?Q?/kaIvfdiAwWvnqgeVOgVSbrpSNiTfknx0ZhJIWSNWPQEHXPn3jEYImUIyy?= =?iso-8859-1?Q?2nEXhqCIWp6l3T3YYjbKJj6WwJ62aFJnBu6tx4miei9B98M7hsoTE83tNB?= =?iso-8859-1?Q?WWOQGWZTwN+zvEQNIQp0mwrqpu+t+9upa0nWUgmOY6/mEouXnM1BauV6NN?= =?iso-8859-1?Q?LbSgSjHpRz198lXxuv7CUgfJIiZUFen5FraJul/QbRk/wWDQ1AnOJrcp2l?= =?iso-8859-1?Q?lU5pEXZVhrD68EWnWVJRSbjD3kP+psjfH5189K6gjjoGNU1HUkCA0Ci2i7?= =?iso-8859-1?Q?4SiyEcKXuCiz1kThCpRGADZMTzJU+eZ6iHII+mZZZq1NKfC3ZKYco995Qi?= =?iso-8859-1?Q?GACL/l9a9kVI81zpgGyoV7Dx1R4yEeAAL6kn9fGbpK/2jNhvb3c1h6KHUf?= =?iso-8859-1?Q?Wm/LbzrIQvzUjFGon0WekIHMC0Rn3g1LvC8HYt6tdqDwvDelQ/nkroJKw2?= =?iso-8859-1?Q?aMt8INU13pFDTIUlpNvb7nqY3Nb+4qVKBDBjYnFmyYeEDmUTB+f7WyJ3Xc?= =?iso-8859-1?Q?C6rD+TpHI1vsS/AWoKUa0J0zuLt73+k9C4nYrMa2PxDpAHnL2Acpdvf1gB?= =?iso-8859-1?Q?/Up/mkV3Dibepa9nuFPXXn2JwZ5zRmoejU6LcaLrJ9Tvn1hyL+ZOkgwXVs?= =?iso-8859-1?Q?MWQMgJxNnKcWyImD/N8VBEyIqRhkz2eZtj2DUPGhKemnOLdTHdp3mpWnmF?= =?iso-8859-1?Q?PVeFT0jlP3HWHoKxuEv0wqVrOgckyHz3v5BmzxuHsB7/svD3TVvfmsBnNy?= =?iso-8859-1?Q?7cReajSJ3omqe6gS4yhc/AQkDXlwmjczHbh1RJE5liLg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?wKREvlsBtqGNjU3nrciv+mTzatP7I6B9MT+7T912Y8aZU+Rv7OnbZGW/h2?= =?iso-8859-1?Q?ecoJe7LJ8CZBWFSO2Rqvj0RhQtOgfKgPPVEZUggOYbVB/qBq+DBpk5XODt?= =?iso-8859-1?Q?lJjro+IOUIVYMQQbgSWOLTZgaJLR0wv5BEioLnEXviME3vETWX/r7GY47f?= =?iso-8859-1?Q?QauNIV4uiZciMvl2+KYO1DazYE/TlEPWbmfgmBof+BQnKlXFnvgtwdkexJ?= =?iso-8859-1?Q?WaYgoYQPqwOsjQvPA4gcRKLCIN6598KmihAX3l8Hg4MS/vopWOFRenn8wQ?= =?iso-8859-1?Q?1U3xsxsQ0+e6pTiQlfCMBwhDNnlVIXZxafJJX3h3Ns0Iq65Zh0YCgqf2pz?= =?iso-8859-1?Q?paLPbILkwEcI3St0eiJb8NEXFUsykrKzMoMWcdanHTNJ+bIjU+ZNYBrQaH?= =?iso-8859-1?Q?QYp1ljLNVOqAW7gPuBl47SwrgudFB2RLVSJ8iH1CjaX4eLIAOFC5MLDcY3?= =?iso-8859-1?Q?2LCNanpoZw25gYmgVtHhO0kP7w2Klry/GMjvN2VrfQ7qSaxiWj5iaycH6w?= =?iso-8859-1?Q?k8Gkp0DVWO/s5xrIwjeUSm8I6FJnla+OterosnOPF581biViBF9R0BwDm1?= =?iso-8859-1?Q?8Tt+tqJWfM03fCyfhrdt6hODyUi3dIWhd5fTrWMPG6YaRkDIeOORzGAkwG?= =?iso-8859-1?Q?3iBQeE2nlPKQpKFJ+IgrqoVTF3ildj1Cl4lN3xgbwVV+XLQ8aT+S5vCo4y?= =?iso-8859-1?Q?4a3UijjTXjJ6wvFBAnyK+NwNBcBkx34iJtv33KPVVnH9f0USGMaVQpiH58?= =?iso-8859-1?Q?kDqdSwXOc5okuIyzLh4EP1ATdDb3AAINPElZF9/JgKGqmLPw0gySPm0JNa?= =?iso-8859-1?Q?RRgB2u35Es7j5mPm2dHClsDTTUdbMGAY6Srg7aWdmnac9CwfagZ0Pvbu4i?= =?iso-8859-1?Q?VyWLeq3DEQ9IbLlRThYNWmK6JuIZxpb/npjE/m2WOjEgAG/O0pjnOTd1Sg?= =?iso-8859-1?Q?IiulGs67yHTdZlQLRIqHMa1W/PLW+lmo91zEMrQZnroUXrchFNw2kaNvKs?= =?iso-8859-1?Q?OLr4yujdT2UeEH9OAnfruwhRLtyeAc5319kekVwsmpPwzsqerVZw1lkTBS?= =?iso-8859-1?Q?KSMJhgaAwcJsxncwRZgMuOS8Niio7Trt6Q+ixEcp6X5qM1sVWMqccNumDp?= =?iso-8859-1?Q?nwHIz7UKZt4Bz8bTHxFurfEKqfFsl/XTmo7m5utFOKfZAIq1k55Z2qykK0?= =?iso-8859-1?Q?dRENe2JA7CdnK8w7GeIDuRZ32Fjj1x5WAH9Dv9M6PdR2gtkGr5LCA2eXRT?= =?iso-8859-1?Q?sYM46FnVOC0GF2u4YFrXXpMNXK4/1Qu4B97uQXCnU5gd6LsavMlEmC9uRA?= =?iso-8859-1?Q?NqUpXgEP7HgcogDY33dvsvjRz7usIsD9EoofyyjQKX01GjF15pwYIjaxgk?= =?iso-8859-1?Q?snI0uEmRUGnmgkwosU4LQn6i/y10a75QCuJAdoc1JCypT5pQZc6x9bCQVj?= =?iso-8859-1?Q?NXhCJ7tZNVnuTys0IrZRwUUDIcZKqJH7jXXHmupy6RICqI5aLATKxVbJxW?= =?iso-8859-1?Q?TOKUWHDNhZJFyU1Ufe5CSRGPG1i8Zx6o3V7isKH/ROytW3whdAE2sQkzr2?= =?iso-8859-1?Q?VYVEL29PlyvCV/Y5ekDLZtrE4al0aBMMGeELe7jVany38Abhp19HU6goj4?= =?iso-8859-1?Q?ZTFnpPV75yIob3+corXrRGiU54NNpCmsTCL6z9DGknTcqzIvjY0vJjGA?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea134fe5-c68f-481c-00ca-08ddd5d3c913 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:34.4204 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HS5uz8LCLWlndQrSzCtskKaoonZvBpOfwePBUeQfThoCLUfvcg7HWcxCX0uya/ZtQxU+N0rBPMRtdpd3eAlhIQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10757 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591543741124100 Content-Type: text/plain; charset="utf-8" From: Rahul Singh To configure IOMMU in guest for passthrough devices, user will need to copy the unmodified "iommus" property from host device tree to partial device tree. To enable the dom0 linux kernel to confiure the IOMMU correctly replace the phandle in partial device tree with virtual IOMMU phandle when "iommus" property is set. Signed-off-by: Rahul Singh Singed-off-by: Milan Djokic --- tools/libs/light/libxl_arm.c | 47 +++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 55beda8c0e..d99f49b831 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -1312,6 +1312,41 @@ static int copy_partial_fdt(libxl__gc *gc, void *fdt= , void *pfdt) return 0; } =20 +static int modify_partial_fdt(libxl__gc *gc, void *pfdt) +{ + int nodeoff, proplen, i, r; + const fdt32_t *prop; + fdt32_t *prop_c; + + nodeoff =3D fdt_path_offset(pfdt, "/passthrough"); + if (nodeoff < 0) + return nodeoff; + + for (nodeoff =3D fdt_first_subnode(pfdt, nodeoff); + nodeoff >=3D 0; + nodeoff =3D fdt_next_subnode(pfdt, nodeoff)) { + + prop =3D fdt_getprop(pfdt, nodeoff, "iommus", &proplen); + if (!prop) + continue; + + prop_c =3D libxl__zalloc(gc, proplen); + + for (i =3D 0; i < proplen / 8; ++i) { + prop_c[i * 2] =3D cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3); + prop_c[i * 2 + 1] =3D prop[i * 2 + 1]; + } + + r =3D fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen); + if (r) { + LOG(ERROR, "Can't set the iommus property in partial FDT"); + return r; + } + } + + return 0; +} + #else =20 static int check_partial_fdt(libxl__gc *gc, void *fdt, size_t size) @@ -1330,6 +1365,13 @@ static int copy_partial_fdt(libxl__gc *gc, void *fdt= , void *pfdt) return -FDT_ERR_INTERNAL; } =20 +static int modify_partial_fdt(libxl__gc *gc, void *pfdt) +{ + LOG(ERROR, "partial device tree not supported"); + + return ERROR_FAIL; +} + #endif /* ENABLE_PARTIAL_DEVICE_TREE */ =20 #define FDT_MAX_SIZE (1<<20) @@ -1452,8 +1494,11 @@ next_resize: if (d_config->num_pcidevs) FDT( make_vpci_node(gc, fdt, ainfo, dom) ); =20 - if (info->arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMMUV3) + if (info->arch_arm.viommu_type =3D=3D LIBXL_VIOMMU_TYPE_SMMUV3) { FDT( make_vsmmuv3_node(gc, fdt, ainfo, dom) ); + if (pfdt) + FDT( modify_partial_fdt(gc, pfdt) ); + } =20 for (i =3D 0; i < d_config->num_disks; i++) { libxl_device_disk *disk =3D &d_config->disks[i]; --=20 2.43.0 From nobody Mon Dec 15 11:29:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass(p=quarantine dis=none) header.from=epam.com ARC-Seal: i=2; a=rsa-sha256; t=1754591538; cv=pass; d=zohomail.com; s=zohoarc; b=idVog7hFuQUEGOBdDRhbNGM5hgyqh9PYr2VKXaQQycHnxbHd5F2+F5qkO+fa+YfOthnCV3l/sQLDy7olH/ZPat/Fhg7I6fdmTlb4xwynEmRvvvv1hiNIUrntS2vyVnVZ4ioBL5JIolmt0buD72Ozz2HOzogFEYvUsthpeNBZPCg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1754591538; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=N139GbhE8zRhemLrZtoyLCg0r1ZmYt9NvxgUFa12HIU=; b=d9DUhgQ92QrhjCFae0mHul0VvYaxL7KYYNJQ+LyQzUT+AjE6u0i6eeagvjpfLfliWaOSVh6cK8wrvlOBX4N5aQVuEdXwOsv7rnvqCmG64hvyqaU/EwK124KzjysfFMJjMK8YPH2x2pUfyBKkcLnDDOouAOnYW562mV5H8YVi3AE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=epam.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1754591538232672.8559519173391; Thu, 7 Aug 2025 11:32:18 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1073364.1436470 (Exim 4.92) (envelope-from ) id 1uk5PF-00056z-SX; Thu, 07 Aug 2025 18:32:01 +0000 Received: by outflank-mailman (output) from mailman id 1073364.1436470; Thu, 07 Aug 2025 18:32:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk5PE-00050a-Ct; Thu, 07 Aug 2025 18:32:00 +0000 Received: by outflank-mailman (input) for mailman id 1073364; Thu, 07 Aug 2025 16:59:42 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uk3xu-00076W-4g for xen-devel@lists.xenproject.org; Thu, 07 Aug 2025 16:59:42 +0000 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c200::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id e71243a9-73af-11f0-a324-13f23c93f187; Thu, 07 Aug 2025 18:59:38 +0200 (CEST) Received: from PA4PR03MB7136.eurprd03.prod.outlook.com (2603:10a6:102:ea::23) by VI0PR03MB10757.eurprd03.prod.outlook.com (2603:10a6:800:267::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.21; Thu, 7 Aug 2025 16:59:35 +0000 Received: from PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f]) by PA4PR03MB7136.eurprd03.prod.outlook.com ([fe80::36fa:728b:e216:6f6f%6]) with mapi id 15.20.9009.013; Thu, 7 Aug 2025 16:59:35 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: e71243a9-73af-11f0-a324-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W0VhczSh8b1n66G6+pDtD4QUIJyDY4+65PQi18x6yY41CWARNwBCzyLbXbosyftaxIl44vV0D1mSXvBLB6aioVCguYDfB6UOdzC9Z6N65TFBOkpLQCEip3tXBW3mBNtiRmKLTdDbdC4IY5T4edxat+4JQpJA6JEoXir0LV9oadDuB7mWTbioPmJniBrApKHGojQx7cgdIvoLkbb24sA1N4BYSenlHWgta37sNbZWrVSYValkMqaGbjyhL9sRQCwXmSsAjeM4qTVILaR03l64QC19VEg1Jhi888KKMFSMlyJP5fTtrBwRwpko4cNAJx0RRJzMstIuumyyyCtRqr7qhw== 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=N139GbhE8zRhemLrZtoyLCg0r1ZmYt9NvxgUFa12HIU=; b=PwA70XNqIFG3T0Fji25/fV99Ffst+QIFy5HS4pQkBUSwaiuI9AwN3DVnUigzH/PXWHH56+K9dB5r0YN0u61e5RNsep3/bqrsKHY+OTJToxv72rODOg2T1conFSEgEmxJgUcc83+R9+OlL5jgbwkGoeCdjI0XQoLAC89gFKEB0CROtXEeLXSPhQYHqxgs3NVTgq9c9N4GecKDQVw7RROLbAwNSN5R6rujWPShect659AU7V5qiCvagmUscj3ksdYsSercP71/Utaeo5BFQv6tSkcv/oHkCdETIeJiWO47N8JQeHSGu2NAl13D+ZCf3aOulGNfHe8LLyq8Jsto1cODOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=N139GbhE8zRhemLrZtoyLCg0r1ZmYt9NvxgUFa12HIU=; b=XCvUyNWX67kK/d+CdBkILPz0ZDhLG+UQhydC7ATSt7TyMufjpOoYJKcR13/hCmovK0VKDyDTpEt9VBlJOptIq2t8LqLdcRyY3YOZixrqTpqqZ55VrMTuk/BBw6y/LI6HHI9OxhhHZc1TbKaR2H9pX+JyJgMELa9DJxdfKP59r01ifjl2sSUvg3kjO1xZFJ+0iAFyhrL4wTfhQei2ODliimERFOdTzGBAJbW7UpnefJ/Bjh/iFj9arGG0lju7EX8ZJzIrqgZCx5ZP+po3afH33o4PjnuHfp+CtQsTuntYh08OsUupaYQEp3lhPXfOu1f2z4HxijSlEXL8wGik1DXe6g== From: Milan Djokic To: "xen-devel@lists.xenproject.org" CC: Rahul Singh , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Milan Djokic Subject: [PATCH 20/20] xen/arm: vIOMMU: Modify the partial device tree for dom0less Thread-Topic: [PATCH 20/20] xen/arm: vIOMMU: Modify the partial device tree for dom0less Thread-Index: AQHcB7ynr3/KXhUzEkK9AiVwODSe+g== Date: Thu, 7 Aug 2025 16:59:35 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PA4PR03MB7136:EE_|VI0PR03MB10757:EE_ x-ms-office365-filtering-correlation-id: 5af17c9d-a294-44e6-6ce5-08ddd5d3c9b4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?MHyszSv8bSPZCq5g3+sS1JN650X+9m5WjIcbusTKHG4E87DlXF23xbGymf?= =?iso-8859-1?Q?FlLJ0cKxy/nFL1AnSph6cmNlJde2+aZ+3I+OFi1CE66NIYRHXmoXJ5kcoz?= =?iso-8859-1?Q?tD+a1kSZzhGQHff0iKzZ9P5ieM0DgMrqEPLkzkJMyReOio/Tmgl8ymtMba?= =?iso-8859-1?Q?VsKjD78Fw/9F4hXnGae9Abo+lrHnMHdD7/I9nPDIv2FTy3fIDFV0ETxnNS?= =?iso-8859-1?Q?3HnDjQh8+vckQol1lIFjfdsv4e6MKkHCniHSGSC9NK9djaSaVGDm5P7jje?= =?iso-8859-1?Q?o4tGjYZXg3XhQ+fCNVyyW1THp0WBK06tfheU09l7xR5/XoCJM6He9J7ORM?= =?iso-8859-1?Q?LUshEWEpnHE1F3cOOMGLvl0Lk3FsnvqoLQ5WdXrZnO3d9TJikEvNRKTjw4?= =?iso-8859-1?Q?doyvnrE+3KW5rmPicSkI6c3l7h+hJb4KghbI7mwYTq9RlOtTembLizbvG+?= =?iso-8859-1?Q?c4TR6xuPY0FyRYkF21lpbXy0WkZTDfuBz78sMjyZoOtu780iHua8xXiloq?= =?iso-8859-1?Q?/3YxRw8cQOdRFWdO+fdmDDvbFnj1Ol6Mls0FTHzKQ++VDBGBgh1Y0drFeI?= =?iso-8859-1?Q?/AP7SfoLL12b0PABdTck0BUzrgkpxtL7bzH450iyQBUXDcvHpSNWs+u6Ff?= =?iso-8859-1?Q?1wdHxR3A9HI0QwWBgT3aTAqJ37IOGdEGjVdOF7ILPLFrvv3Eidswnyzbrb?= =?iso-8859-1?Q?RNkEPdtzI9lf2SnCVsZQqqYmZilyYxhEL/rnhrZ723eVWhXjktCMDw52Qu?= =?iso-8859-1?Q?+DznvBHGIKb17qhaxVqMgBv6elHfz1RF91errP6bPu5WnhO76gu27NGyiu?= =?iso-8859-1?Q?pcKJNETES8Mi9iq9e05FxPdqJ5QoppK4+FAkZbzS91SKI4xsrWA5YviQny?= =?iso-8859-1?Q?FUpu04gQNyY+malthQpizyIUjoNbObkPsi2W6pJSuNu1rzf91ozJgjAirG?= =?iso-8859-1?Q?y/p8uxy6EQtOAbYKNOKta3KV0zS63GQQLOk4PH1sOLgG4dZtBAqAhqa1Gw?= =?iso-8859-1?Q?43pLY3u8SCNhte5ocCJE25RmbhIrfK2IJYs35SXroKUiPV/UDgg7aItFPL?= =?iso-8859-1?Q?AwF8Ryn/Cp55ZyESuzS0nVhxgsmzK0kjo6tXr9itScmMmMDFJ5KZv08A7z?= =?iso-8859-1?Q?zxEV9F0I/+/eaZReYUB0FynkW8TcmB7UuFCOhooLfsddESExO0V06pLG9g?= =?iso-8859-1?Q?EZv8QAHPYLKUBvsxdVyMiBa2SS3oQ2fwjjbkjexirqdtMzDYfLyNBwPNZ0?= =?iso-8859-1?Q?RpWPYAjm5NRTZN16fpOr1VXcSplcRrCYF1NWS/Xd1AkCNKOXLy7zCyHHrg?= =?iso-8859-1?Q?V1QTwly9ZmhCngLOZoeDuAsIXpvyjdqbXxg8Q3yL75hYGVuuFlnG/+lVIR?= =?iso-8859-1?Q?CKKUEQJrIY9st72r4EXZl4vDlRaNJhWh7clCGZVOq/K7bcmM8JwaQMmrAR?= =?iso-8859-1?Q?EBUejOppCU9V6ahNMahMv8C9cxuHjb338pkx7cOf/wvKhXGrWPcKMZrKml?= =?iso-8859-1?Q?X+u9s/UGTPksFVNpPwbmMR9OjJYWEsXXiEN7bwh0E93A=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR03MB7136.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?b+n7hy1ljQn09teDJ8LT8lj7RMIQqeykzP3THCV6gc7rhuX+42drqWgjxk?= =?iso-8859-1?Q?JMICThJNAeVCPd88Dv4XAmmRLqUNeBbweectBEMi0/vSaDKB8qXeqsAtkX?= =?iso-8859-1?Q?HFKMXIS8ZdxgABkuJ4Vcx1MaPWPI1dXV6MCIHtrpU88jj2vZzXYQp/uQKb?= =?iso-8859-1?Q?kfczS4UpNTcuNUKFa8/IwYIQFHe1gDC0JMJ4wEu39yt5l4dzKsuKk6IZaN?= =?iso-8859-1?Q?7rpsRsC+fWysSPTQnEskr10x8y4D3ogaIYRIEMCkwv/TK+xOJKAAhYoLDk?= =?iso-8859-1?Q?XT0LmFAYl/VED2WlL4C+SPmguNYb/OzkasjBOofjKUK/Mjwx0aSSFh4Jsg?= =?iso-8859-1?Q?LHGBD+gxObSJ3llZXqbygv0wUlaKqMm8e6tuttH5Fne++2Gw39OgEAZTxa?= =?iso-8859-1?Q?sVD+pgrPUACoyHp9K9o9NqG/WhJrkpzsnp88pVHOGDSDtduDzP3oRbBq84?= =?iso-8859-1?Q?2OcbtqtNczRfEDQBcJQj3ZsfyrAQsbwIvb42gdqCskVK8D5YASu2nQ0Oju?= =?iso-8859-1?Q?gXGCihhXED4zWGhI0y7sOmQKFLQlUdKYTcTqFktMEUwZia8jgovZW5kiHW?= =?iso-8859-1?Q?h/KtFMS8H4P7s+dJLGQTaoz3ugwnNZILAdNkkx1JHfTwoecmEJyJXO2Ixu?= =?iso-8859-1?Q?fmN9+Qa1h6qRswUTNoUKfq7mnf5rp2Gqv2sqcQArpPaFilQHJc8Hekdx+e?= =?iso-8859-1?Q?oAGqLocLvnPM56rP803A2lGURHFTg2/iRatbF8CRt7Lv8W8VCqdL48IwJp?= =?iso-8859-1?Q?C8pLK9ScHlAVJZhhq443NB4yvoMdu1URJlrElFdP1+R8hAPejerEbqLL7o?= =?iso-8859-1?Q?WLQUoKki/UPnW2/O6v7fPIydN1Yq68gBJ025gyjsdPwBdVvCnPjVgjmNvs?= =?iso-8859-1?Q?ZccsyGw4uubfM4nmMr79ZeBvV7wssUX4SgKCskI17tkomx7EkPAxiOej/9?= =?iso-8859-1?Q?/YFEcHiW5Z3EjQdwZGfBTEzRmBF/nm41eEJlbDCA0nT6B9jFhpF+pyvCXu?= =?iso-8859-1?Q?UlthRpHA+crBqKqMqx7RhpsKhTRz2nJo4ifveNFKjdFDM8E1fvd9J3fDpY?= =?iso-8859-1?Q?ExvPijN2Ub0ql151eaT86HnbQCsmz5Q31k+SF7gH1iHWbiZZVY+r86T62A?= =?iso-8859-1?Q?Pq5ahZArFt0j3XX3wFW6xps7FAjDTlJPPuUcoNz1XN5vqMOsCb6JZlrN3p?= =?iso-8859-1?Q?l9P/y1ovOqauc/4BGlvAhnMImkju5I9K7Ymc5RYUEpnfoZGgLJRFHmie3a?= =?iso-8859-1?Q?2/xNgFx+P9KLjhK1Z+A6yxbK9TMeNbvDBflKLJqV/W4mMRbhOrIJdRwdGM?= =?iso-8859-1?Q?iivmQXnwl5N5te7990m4cksPYp2P06aI2RjpStU5EtXAsbIiB9DJPsZdlN?= =?iso-8859-1?Q?GnPOT4bn6ICbkJxH0HruRlWpkn6lwysYkDdPbs3rjklw4nxSIuHIVG3BUN?= =?iso-8859-1?Q?8JmaT8AzmpWvoFtgLWFmOtsYJj4A6ssqBQcjP/TgCG15HhSaSxt0UwTXUk?= =?iso-8859-1?Q?zKieDUQQTtumKGdH5QWcLTFyY9wJ4nfmi0pNeS3CJl2KyjaTzURahJLpHg?= =?iso-8859-1?Q?n+r/A17UKbLSBGarX4Yl5uy018KhWTxBoP5J0wZeyI0QcWuzvqXKdaAObr?= =?iso-8859-1?Q?zQ2QzulECYrvKCu3mY7ShrXqlVEtAI0o9RvF1/fXpuGFjxHPgwBRZ53g?= =?iso-8859-1?Q?=3D=3D?= Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PA4PR03MB7136.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5af17c9d-a294-44e6-6ce5-08ddd5d3c9b4 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Aug 2025 16:59:35.5097 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ehSu/DYwzUTdg51mcRV3NurZ7OjTMwLylPpsuStBCWSH6XnNhEH7Pcat0uUBjqimihbbrNUImA5wMq3oE3KqpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR03MB10757 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1754591539216116600 Content-Type: text/plain; charset="utf-8" From: Rahul Singh To configure IOMMU in guest for passthrough devices, user will need to copy the unmodified "iommus" property from host device tree to partial device tree. To enable the dom0 linux kernel to confiure the IOMMU correctly replace the phandle in partial device tree with virtual IOMMU phandle when "iommus" property is set. Signed-off-by: Rahul Singh Signed-off-by: Milan Djokic --- xen/common/device-tree/dom0less-build.c | 31 ++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tr= ee/dom0less-build.c index 6bb038111d..3cfffa6581 100644 --- a/xen/common/device-tree/dom0less-build.c +++ b/xen/common/device-tree/dom0less-build.c @@ -314,7 +314,35 @@ static int __init handle_prop_pfdt(struct kernel_info = *kinfo, return ( propoff !=3D -FDT_ERR_NOTFOUND ) ? propoff : 0; } =20 -static int __init scan_pfdt_node(struct kernel_info *kinfo, const void *pf= dt, +static void modify_pfdt_node(void *pfdt, int nodeoff) +{ + int proplen, i, rc; + const fdt32_t *prop; + fdt32_t *prop_c; + + prop =3D fdt_getprop(pfdt, nodeoff, "iommus", &proplen); + if ( !prop ) + return; + + prop_c =3D xzalloc_bytes(proplen); + + for ( i =3D 0; i < proplen / 8; ++i ) + { + prop_c[i * 2] =3D cpu_to_fdt32(GUEST_PHANDLE_VSMMUV3); + prop_c[i * 2 + 1] =3D prop[i * 2 + 1]; + } + + rc =3D fdt_setprop(pfdt, nodeoff, "iommus", prop_c, proplen); + if ( rc ) + { + dprintk(XENLOG_ERR, "Can't set the iommus property in partial FDT"= ); + return; + } + + return; +} + +static int __init scan_pfdt_node(struct kernel_info *kinfo, void *pfdt, int nodeoff, uint32_t address_cells, uint32_t size_cel= ls, bool scan_passthrough_prop) @@ -340,6 +368,7 @@ static int __init scan_pfdt_node(struct kernel_info *ki= nfo, const void *pfdt, node_next =3D fdt_first_subnode(pfdt, nodeoff); while ( node_next > 0 ) { + modify_pfdt_node(pfdt, node_next); rc =3D scan_pfdt_node(kinfo, pfdt, node_next, address_cells, size_= cells, scan_passthrough_prop); if ( rc ) --=20 2.43.0