From nobody Thu Oct 30 22:54:59 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=1756483610; cv=pass; d=zohomail.com; s=zohoarc; b=ihxYCnYIA1r7p8GWgLUx4XE8AykTBJfN3RcKQbdAr5Esl/wK8ySErf7TL8+5CDt9Ysy1azgrgJFy/09sB0hj1BC7WEk40GXVjl0s3bPTLuD1Rh0Mh7Xqnko7I21S0ji6fG3YFbOZ0SVop7iOlYG93ZEBHcTkeBF2AzNYxglkIEg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483610; 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=HcLF7BAT9Ubkvibmfe7nlNrM08Cmevf1ChCCx9+RNdM=; b=W+la6qUoAvEVyZWkvRZbzhF4RQCwB61l/uN2UCck1q1ycnDWT4qPQz42SoryDhiRIg4vU0wkmxZzSLWpgs+t51I3CDugv3rS9x7Xl1cghKWRyuxfFHC/4/n3/AEx8RDZ62Lzo3PF+dbJ0VyZL+43CnOHx+m3y1AqTKcB9pSzT54= 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 175648361034563.85443055925748; Fri, 29 Aug 2025 09:06:50 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101648.1454613 (Exim 4.92) (envelope-from ) id 1us1cI-0006OY-Kw; Fri, 29 Aug 2025 16:06:18 +0000 Received: by outflank-mailman (output) from mailman id 1101648.1454613; Fri, 29 Aug 2025 16:06:18 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cI-0006OR-Ht; Fri, 29 Aug 2025 16:06:18 +0000 Received: by outflank-mailman (input) for mailman id 1101648; Fri, 29 Aug 2025 16:06:18 +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 1us1cH-0006O9-SK for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:17 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 17349156-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:15 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:10 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06:10 +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: 17349156-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WQIWUEsXqjsjmivdRX8ItIl1VdfKIjYGOlfpKEh11iakmW0aqj11CAmy4IY7EiabtcNKLs6vBDL80SRVtY/6L3gOKABWeIht5eL5EYiyZwg1uYZtxqPspwR2Xhzy2NB1v7JPIZBQ5mTY4x+5NNOwOeKrF1mLmDvnAiWZjjNYzrx5rxVz3irbUgAqdUCs+B6l4eFs2/MZ+Mw8naM3GUnm9rEdJ98YnZ1FNNlJxkENrN9SqexTBSnWVYPXaa9SmwknaTe3lWXCgOOkFj4l3/0tukND03U7i5ftvtoFFf/k9Z+B50jBm4N01TSkhihbE3ZUgpcg940baITLUFI1J3/hjg== 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=HcLF7BAT9Ubkvibmfe7nlNrM08Cmevf1ChCCx9+RNdM=; b=NhNVieFnZ+62GdW0AZQk9pkgNFxi2bXn84ZOvyDi7crqxY7f2O8ADqrWAs2YG0+rR2IhYWiLXVnl1O2BWbeFNqHjGkIYhB+qZOB5xMCM8VW8jn87mCru2yQaqloueQFCrM9mWMgCYqb4jd8ac6sNS4U94DeY0k2PtVMivPCohEK4Nttkx28x+44IkL4EgQhwEqqSzXOp9VIAtAf9CS8T7Hr453Xf7RV+X1oSTUPDmBel8yBa17cTIeGdEOlechQmQ5fiRZ4l6qGYj1XttlcVp3BGoIegO6Nk1sI04uFjNusiV4Yy8Rr9J7Kv3B3S1LJTF8rH4VgtgGeKko9AY48MNg== 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=HcLF7BAT9Ubkvibmfe7nlNrM08Cmevf1ChCCx9+RNdM=; b=TQYLKqIzu+e/6Ig0s+RykxY0eocG3RTq5sxDfE3yoIJzp6u47UJwfXZ4x6ummUau71f5bUGmz7ptMVHXtAguq/OKsz0FRBJy2BvCQo4qT9nQ8Yt0mecJPgeQgA7lpzAHtlCBOOfXgdvbzvBBwwwWIGxigrvxkWMr6Sm5dsHbutmS0P2MhvLVbr89elbr2IlMcST2xUrCuVDi/j/BtKq5xF6eqHVXgxBbTXvr5SilnqKO60+eCgr9PwDaMIIaBCaew7gok3S0IYlyTv1jtkcrwFtGj/gc1fQ5BT16j/WEIFD8Rz4H9lJBYeO4FG4amhI/bwr5z67OTaHiMHnuplrMhA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Julien Grall Subject: [PATCH v5 01/12] xen/arm: gicv3: refactor obtaining GIC addresses for common operations Thread-Topic: [PATCH v5 01/12] xen/arm: gicv3: refactor obtaining GIC addresses for common operations Thread-Index: AQHcGP7VA43rYFd/50W5xNx+fBJnNg== Date: Fri, 29 Aug 2025 16:06:10 +0000 Message-ID: <7da58b5a27d61f75eaebb749a7ab4c72655a12cb.1756481577.git.leonid_komarianskyi@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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: 74f34297-b6f6-40f1-982a-08dde715f82d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?jStG808AHCWL0GjeG0jgn/JEANu1jdgvlW9DNfVfSQFrQBTwwXfg9w87OM?= =?iso-8859-1?Q?4ZbePdNguj/2T3xsla6DT2B8KTAdYM7NdvTXnKvmY80raMqOfVE0vR4VYA?= =?iso-8859-1?Q?lqh0GMNsUbVXRaWmy2g12s9rlEC4+c8QO9YvkR0iaozTrbDPyRPNC/xVzi?= =?iso-8859-1?Q?WljJMZJh04gGHDJY0S0hMfbfFIFjwHktOvYxluseOM1exip23ZTi3B0L1e?= =?iso-8859-1?Q?JkxqAPXmhIrc3FqbXIMt9QdWnO3jsLZLUftRbKylHQwl3M2nGLkKDNk0k3?= =?iso-8859-1?Q?9OGV8ap53UpJ0VSH+9SvYnDYQu21Jq1wlfa0cSRaeKzX2dCJSVKHMFrxz4?= =?iso-8859-1?Q?sIZjyCWHhRBlh+qMhjqYLJbNR6SOZY8l2Ae3CHQAmgPkVpdV9A6hqNi24e?= =?iso-8859-1?Q?ZeADbaaZrSK9SY1a8eZ+1Eg7bjyhvME+HsImJqbI4QvR0N8m5CZE3J1h8N?= =?iso-8859-1?Q?J1XJbld2Y5XN5v6YQ9tS/f2Ga8kkRAfh1eTBQKSdvjvKwWqXGBEFL3MS9W?= =?iso-8859-1?Q?zflSO7iGO43O5OfLMWiFrRsM0JIwgFzwTwLJ5KPzlWsXkEQ+jrgiePG8T1?= =?iso-8859-1?Q?sQgf+wWf5GgkEZ+XaA9h+sJi3BKSzJDd+6vNZ1ZvoGdgG/BStESvQxL4WI?= =?iso-8859-1?Q?0Grk8MN9uapuyP9puzo/H4KFdEhM8svlhYbGzOmXISLSy9oeo+30VqGEaj?= =?iso-8859-1?Q?g19tIMJHZ7twwXzergagNCixJjkjYUwh9o7dzulu7fQvyO/KdxW4XiE8Qq?= =?iso-8859-1?Q?6nYk1kUzp5/wG3dSkrXCecDKaDXLCHZpUKWQ9bPdw2Q6yhgJ1YrS5pO6qw?= =?iso-8859-1?Q?QD+y4ydxt717jHW7cZRZgDVbC0bAyEkP7KFHqYXrpBlfQR2R4r76ZCbP9c?= =?iso-8859-1?Q?3sZL912Zw0Q+mP7xXDiH0LI7HjZzm17Pr/hq71lnJ6CJxBJPcJCN7TepwQ?= =?iso-8859-1?Q?QCZKUgaKWXzfiYJcAp3cxtU/oIM8B5vNOCFdjh6aphmAp71fmuCfBvjG4+?= =?iso-8859-1?Q?OcsE7IqdejeHa3x4OwwdM40fRRi4jv7DDnGq4bIOcKGdSyu3g/bGLgqb7N?= =?iso-8859-1?Q?+jloui+dLfMhLDmRPXFPBzKRi4lqtjhd09MJ08mK/IwwekeMNyzgBhEGgi?= =?iso-8859-1?Q?WMjq3M2zGmgf/kh930dUTaPBNdacE/uwezuwgdf6Ge/FzpUU2098gJoWxF?= =?iso-8859-1?Q?IvTsSzwr0SHlq0vvC0lk2K2kbicmMSqRQNHdsWAIxjwTJ+Khd2OP2QgV+M?= =?iso-8859-1?Q?WXFirGI+FJkW6prRKLRgpiaFSKzk3sJrVyLkLbNMcf8jpuykyZ0WQjPtb3?= =?iso-8859-1?Q?D1G2oBToJG++eCwaNiqCH1mHg/dcGdA3IKEh57+3ZP5oflIg4sGR6zudSL?= =?iso-8859-1?Q?XvP7dN/SVXRd9PHBB32NqB2PrLIrIrO2vDQNk+jHbNH8KwuoA2yJNec5o4?= =?iso-8859-1?Q?rnlxdlTKsxVYVfjD/l4Wcd8Vatz6clHrn3qVrN1FwlDSMxUL/bDAGApXfE?= =?iso-8859-1?Q?Q7ECjzS6MWzv+7OHTRl4lGoqLqmgp/yrVuRWrNFFNZrA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?4xh2Fef/qdLg78s0SnhF/StCTVVnCyeG3T12OunXPSnt0TCf255p6IuuJ5?= =?iso-8859-1?Q?cSnfwe/lGEj5nlCVoiN4um/w6j0pbHMvcU06EQmhMvIcn0J54u+uzeeEqm?= =?iso-8859-1?Q?MtKBHo3bsDcaScxMrsG+hnoYnkH8I/rx721fh4FdxgT3p5umPBkBRENVQC?= =?iso-8859-1?Q?TIQvMXjl1WIxg1Ra1zFLGcobq+cN2u6TxR5A2sbLgCqkrjCgiG7RfiTewX?= =?iso-8859-1?Q?eaiQqNEJeKhA0lPbJ0qniIo7uQvaStlFXXiZsvrY4EdiyF0lg6e7J43zBb?= =?iso-8859-1?Q?wDi3x6crsqxz9EUh1FWodN8t+BPaHUpA8KJJBnnWKo16m+sQ/2hBzb51bE?= =?iso-8859-1?Q?90meOs0D26oOugBDY0x38oIzlIO5yJVqWalh0kamq7nVqRWR9b/N/KrczN?= =?iso-8859-1?Q?N3N2HxqEg9C25nzXnkqw8eHaNU/EJRlTmRjIn4OWPmHgmCToRC94+f7evv?= =?iso-8859-1?Q?aG+iynP1eYhVqC6ty+TGtktd4NY5+sfi1v5mKR+q9sOzP6w7OAy6YE1qZx?= =?iso-8859-1?Q?YtWv3LYzs1tvYJ9VjoYUs0Oxv9nPBHVP5I4EMjmXY/0cERQZuO0k1xJ6Bl?= =?iso-8859-1?Q?pAGO/tOutSQOftTiBrbI0v587V6GRpdV2Ed/9FjHrvVrAHAMiUwYkEhEuS?= =?iso-8859-1?Q?KdKlUZwqGXWDK8Nb5YghO/rs22IK5VZXjmX07hmUcSomB20uEecJ/vfCrA?= =?iso-8859-1?Q?6qQzrj3r1Bwrm67KolvjrUnwWSlzNQi1653f2p/Hai42xF1dM2HEowfnVe?= =?iso-8859-1?Q?2rnJYud1gfWQzsfQA1DsB4pbF8aUnzBKcljr9m8/4PedRR3TXXU6h7Y8Yt?= =?iso-8859-1?Q?a2CwDvk1JJeS3zU8W5QqNQY04+4T4rV1OqU2itj8oy+SkpKQyALeR9UVnZ?= =?iso-8859-1?Q?2n56oAkfgB+ilGwVEHI/+VQfIkcRBT1t78KiTQB/S1sbmM5gmnB3M6vvto?= =?iso-8859-1?Q?dCkKR/a5/9M31W6xXaKh8avYZY8xqMDHb8vTlmlwTV9g06oObSL/my+wv6?= =?iso-8859-1?Q?bA4dDX3IWk4oGToDrGETMYQIML3I4U8IczPU26r3/GmWALQuBHT7NSJKoo?= =?iso-8859-1?Q?aZfoHTj7ele+mh+e88vQjjqoQJ3w7O01aoJVecYh963TG8B1D82Aakah17?= =?iso-8859-1?Q?gxJVR0eSgNzz4ZzvTytEJIM5/hkyvFjmn5/gtJATx5MO92CQjeH8SjHE2T?= =?iso-8859-1?Q?xoYHqDou1dezITOzl0BlTS660rt9TprevVfdi3pjt2lJ8R4GIeFacIr0jM?= =?iso-8859-1?Q?VRt4b5KsVhCSbR0vwpYJpGTbsG4WcBbt7HpwlaMaXQn3Ecudc8MkzYcPm0?= =?iso-8859-1?Q?xvwRmViBSFyBwHrI2gwarjtYc2KrvXKkicmXFQ1F8K457iXDWXiCUp7GL0?= =?iso-8859-1?Q?LWg5qVjMQx60lTLOAGErDVqpAnhnKLMFCD2v4tG19vc2r0Ym7ayuA06qdd?= =?iso-8859-1?Q?DpOnLAeiUHp432GzZow2/bZUCn9S+1CEkyjRVCOAnkPAeOUlbmMgFWEWHj?= =?iso-8859-1?Q?X5zve/dFY6SE8WjBxMNWkziMnv8PPKQXsQpVmCw7dpmZffcVu1RKKMNzQo?= =?iso-8859-1?Q?NwM37yWoXxr6e5o4clW/1G+QXJQYFuaTkkFFIOECiSvXCVty1vmdAIcVA4?= =?iso-8859-1?Q?UOGCZGcnpcYapLODQJnCnoXH1Pas3BEIY2FF7QdRws6H1Hpam7zyNGMwn/?= =?iso-8859-1?Q?HBshiFSHLp+fY3WmtSg=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74f34297-b6f6-40f1-982a-08dde715f82d X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:10.0376 (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: QbqN9XlEA4znltUzACnOT0VyOqFZNFbMyFn5AFXK7uKjaxtKsC22OeAsYNg6HHkUf8wTF8wxoX9/veciIvBc0C8ytwX3KKzpCAyCn9mCI98= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483612312116600 Content-Type: text/plain; charset="utf-8" Currently, many common functions perform the same operations to calculate GIC register addresses. This patch consolidates the similar code into a separate helper function to improve maintainability and reduce duplicatio= n. This refactoring also simplifies the implementation of eSPI support in futu= re changes. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall Reviewed-by: Oleksandr Tyshchenko --- Changes in V5: - fixed a minor nit: changed %d to %u in the warning message because the IRQ number cannot be less than zero - added acked-by from Julien Grall Changes in V4: - no changes Changes in V3: - changed panic() in get_addr_by_offset() to printing warning and ASSERT_UNREACHABLE() - added verification of return pointer from get_addr_by_offset() in the callers - moved invocation of get_addr_by_offset() from spinlock guards, since it is not necessarry - added RB from Volodymyr Babchuk Changes in V2: - no changes --- xen/arch/arm/gic-v3.c | 114 +++++++++++++++++++++++---------- xen/arch/arm/include/asm/irq.h | 1 + 2 files changed, 81 insertions(+), 34 deletions(-) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index cd3e1acf79..29b7f68cba 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -445,17 +445,67 @@ static void gicv3_dump_state(const struct vcpu *v) } } =20 +static void __iomem *get_addr_by_offset(struct irq_desc *irqd, u32 offset) +{ + switch ( irqd->irq ) + { + case 0 ... (NR_GIC_LOCAL_IRQS - 1): + switch ( offset ) + { + case GICD_ISENABLER: + case GICD_ICENABLER: + case GICD_ISPENDR: + case GICD_ICPENDR: + case GICD_ISACTIVER: + case GICD_ICACTIVER: + return (GICD_RDIST_SGI_BASE + offset); + case GICD_ICFGR: + return (GICD_RDIST_SGI_BASE + GICR_ICFGR1); + case GICD_IPRIORITYR: + return (GICD_RDIST_SGI_BASE + GICR_IPRIORITYR0 + irqd->irq); + default: + break; + } + case NR_GIC_LOCAL_IRQS ... SPI_MAX_INTID: + switch ( offset ) + { + case GICD_ISENABLER: + case GICD_ICENABLER: + case GICD_ISPENDR: + case GICD_ICPENDR: + case GICD_ISACTIVER: + case GICD_ICACTIVER: + return (GICD + offset + (irqd->irq / 32) * 4); + case GICD_ICFGR: + return (GICD + GICD_ICFGR + (irqd->irq / 16) * 4); + case GICD_IROUTER: + return (GICD + GICD_IROUTER + irqd->irq * 8); + case GICD_IPRIORITYR: + return (GICD + GICD_IPRIORITYR + irqd->irq); + default: + break; + } + default: + break; + } + + /* Something went wrong, we shouldn't be able to reach here */ + printk(XENLOG_WARNING "GICv3: WARNING: Invalid offset 0x%x for IRQ#%u", + offset, irqd->irq); + ASSERT_UNREACHABLE(); + + return NULL; +} + static void gicv3_poke_irq(struct irq_desc *irqd, u32 offset, bool wait_fo= r_rwp) { u32 mask =3D 1U << (irqd->irq % 32); - void __iomem *base; + void __iomem *addr =3D get_addr_by_offset(irqd, offset); =20 - if ( irqd->irq < NR_GIC_LOCAL_IRQS ) - base =3D GICD_RDIST_SGI_BASE; - else - base =3D GICD; + if ( addr =3D=3D NULL ) + return; =20 - writel_relaxed(mask, base + offset + (irqd->irq / 32) * 4); + writel_relaxed(mask, addr); =20 if ( wait_for_rwp ) gicv3_wait_for_rwp(irqd->irq); @@ -463,15 +513,12 @@ static void gicv3_poke_irq(struct irq_desc *irqd, u32= offset, bool wait_for_rwp) =20 static bool gicv3_peek_irq(struct irq_desc *irqd, u32 offset) { - void __iomem *base; - unsigned int irq =3D irqd->irq; + void __iomem *addr =3D get_addr_by_offset(irqd, offset); =20 - if ( irq >=3D NR_GIC_LOCAL_IRQS) - base =3D GICD + (irq / 32) * 4; - else - base =3D GICD_RDIST_SGI_BASE; + if ( addr =3D=3D NULL ) + return false; =20 - return !!(readl(base + offset) & (1U << (irq % 32))); + return !!(readl(addr) & (1U << (irqd->irq % 32))); } =20 static void gicv3_unmask_irq(struct irq_desc *irqd) @@ -558,30 +605,28 @@ static inline uint64_t gicv3_mpidr_to_affinity(int cp= u) static void gicv3_set_irq_type(struct irq_desc *desc, unsigned int type) { uint32_t cfg, actual, edgebit; - void __iomem *base; - unsigned int irq =3D desc->irq; + void __iomem *addr; =20 /* SGI's are always edge-triggered not need to call GICD_ICFGR0 */ - ASSERT(irq >=3D NR_GIC_SGI); + ASSERT(desc->irq >=3D NR_GIC_SGI); =20 - spin_lock(&gicv3.lock); + addr =3D get_addr_by_offset(desc, GICD_ICFGR); + if ( addr =3D=3D NULL ) + return; =20 - if ( irq >=3D NR_GIC_LOCAL_IRQS) - base =3D GICD + GICD_ICFGR + (irq / 16) * 4; - else - base =3D GICD_RDIST_SGI_BASE + GICR_ICFGR1; + spin_lock(&gicv3.lock); =20 - cfg =3D readl_relaxed(base); + cfg =3D readl_relaxed(addr); =20 - edgebit =3D 2u << (2 * (irq % 16)); + edgebit =3D 2u << (2 * (desc->irq % 16)); if ( type & IRQ_TYPE_LEVEL_MASK ) cfg &=3D ~edgebit; else if ( type & IRQ_TYPE_EDGE_BOTH ) cfg |=3D edgebit; =20 - writel_relaxed(cfg, base); + writel_relaxed(cfg, addr); =20 - actual =3D readl_relaxed(base); + actual =3D readl_relaxed(addr); if ( ( cfg & edgebit ) ^ ( actual & edgebit ) ) { printk(XENLOG_WARNING "GICv3: WARNING: " @@ -600,16 +645,13 @@ static void gicv3_set_irq_type(struct irq_desc *desc,= unsigned int type) static void gicv3_set_irq_priority(struct irq_desc *desc, unsigned int priority) { - unsigned int irq =3D desc->irq; + void __iomem *addr =3D get_addr_by_offset(desc, GICD_IPRIORITYR); =20 - spin_lock(&gicv3.lock); - - /* Set priority */ - if ( irq < NR_GIC_LOCAL_IRQS ) - writeb_relaxed(priority, GICD_RDIST_SGI_BASE + GICR_IPRIORITYR0 + = irq); - else - writeb_relaxed(priority, GICD + GICD_IPRIORITYR + irq); + if ( addr =3D=3D NULL ) + return; =20 + spin_lock(&gicv3.lock); + writeb_relaxed(priority, addr); spin_unlock(&gicv3.lock); } =20 @@ -1273,6 +1315,10 @@ static void gicv3_irq_set_affinity(struct irq_desc *= desc, const cpumask_t *mask) { unsigned int cpu; uint64_t affinity; + void __iomem *addr =3D get_addr_by_offset(desc, GICD_IROUTER); + + if ( addr =3D=3D NULL ) + return; =20 ASSERT(!cpumask_empty(mask)); =20 @@ -1284,7 +1330,7 @@ static void gicv3_irq_set_affinity(struct irq_desc *d= esc, const cpumask_t *mask) affinity &=3D ~GICD_IROUTER_SPI_MODE_ANY; =20 if ( desc->irq >=3D NR_GIC_LOCAL_IRQS ) - writeq_relaxed_non_atomic(affinity, (GICD + GICD_IROUTER + desc->i= rq * 8)); + writeq_relaxed_non_atomic(affinity, addr); =20 spin_unlock(&gicv3.lock); } diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h index fce7e42a33..5bc6475eb4 100644 --- a/xen/arch/arm/include/asm/irq.h +++ b/xen/arch/arm/include/asm/irq.h @@ -29,6 +29,7 @@ struct arch_irq_desc { */ #define NR_IRQS 1024 =20 +#define SPI_MAX_INTID 1019 #define LPI_OFFSET 8192 =20 /* LPIs are always numbered starting at 8192, so 0 is a good invalid case.= */ --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483608; cv=pass; d=zohomail.com; s=zohoarc; b=KeM4Q3mDlPmxj2nnyHT9hLYDPPoZh4AOmlhc7386/nekLwnUC/7M5FTlEvp3wHErNDyT7c73sEd/ilYDeT9PzZMplGa6QZc5ussZDX00r4aJZyD443Oxcb8BU7Nb7Ip+1257OsEkIMuP4CykmVkHQwWN2q6zGVWcojqS9pxPo2E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483608; 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=Nk7khFfzSe18EhZ0K4NETdNh6Ro6VTyrixUNQx4Nt+E=; b=DbOpYiZ1JhonXaO58VX5kiSvl48uYxGm2sToFw2G+vZn7rRnGIiIZa7XWyK4h1KVZsL88ukdrrU714k5vmsT4KKFkWRUZuAf13UGhhwBCwtVg1cUG8KlneOSJCRfN+Cow1C0xjGN9fxkhkDVml4/XcQwATOSmjNhRxbWWGTkISs= 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 1756483608040468.31685442862636; Fri, 29 Aug 2025 09:06:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101649.1454623 (Exim 4.92) (envelope-from ) id 1us1cK-0006d0-06; Fri, 29 Aug 2025 16:06:20 +0000 Received: by outflank-mailman (output) from mailman id 1101649.1454623; Fri, 29 Aug 2025 16:06:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cJ-0006ct-T4; Fri, 29 Aug 2025 16:06:19 +0000 Received: by outflank-mailman (input) for mailman id 1101649; Fri, 29 Aug 2025 16:06:19 +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 1us1cJ-0006O9-3j for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:19 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 1867a15a-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:17 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:14 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06: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: 1867a15a-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z9i5qlG+IVYrfgYLzt+V+AkKnZF5n4j1lZynypm5CQ9F+0dQT3StguojV9eL8xba0qXa4/y5UKflMtGERNMHx5sARsJ0h0p6QAXA0vc2x4QhOn5l23sxi+VT+4vMdxcXWkqjXoJsp53MGTXEAT35wP/Z4iLWzRxBpdQroQgfFQHSHbeCKGgrsB1cLf1CqmYXOARWSEmYKdPmnm5JAMWlc4bULPOIcVlDqMoxXokDdwZMD4NyAAGVmaoWXN429JSZ4UiKZn1EeqmxJ27fccal8/bLFRUlt/qQrjHvftf1AZD1GmD3pf3iTpjL1pLwOtU3Wl6hpkmE8jp+KRt26gpHig== 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=Nk7khFfzSe18EhZ0K4NETdNh6Ro6VTyrixUNQx4Nt+E=; b=cN2OG+czfsYD/VwfainepvbC2FiDXucVgGTZrmdymcwP4/OT8RRdwvKNFB0ETF7AC/YhWjZ5dTf+UG7lywko2AgDfgVcJWUzXzp3hzauJ2wpAB3m/rLJZdTcHpOK6Kcs7vmYVisOPlRZZrATUy7K2cMDC3CIjQok/YEXd6AJ2N68NaekUXl7nwaAJq5q82LT779y8n4unITFB9Z1gn5AYDllWxzBniC1oLu9ClWWKk1qPihDMtlYlfJzyd5Im5ZGaiQoXrSfoN9nB3Al6Eipp0vIsZJ04RwZL6gseQklIR/+Skpl0qxJ+LiDlq8V7W11kU5sVgIC9hKv57jBoyTi3w== 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=Nk7khFfzSe18EhZ0K4NETdNh6Ro6VTyrixUNQx4Nt+E=; b=vjXvvYsu1f57nZhPOzrpOqZlvhhbTnED1sAX+rptbm15BunSgaEyrnLkbq5xM1ohKa6mHwMn29vBs3y4d7FVl4N4YyQ+SlDhLJle+E6ckTX0LHEALdJ6o7z5eSlRqOS/aSfFqOlU6X0mXw6jHgDrfakftk+vz6tDp3SUnfmmf/Y9uVALfaqi9G8Yxl4Y1votyi5SfYfYvTrnh6yi6rLleveQ5icMuuJUioMF7q1vxjtL5IdTCIFVC85/HqgwTsUL02J+14VhfeStNEWGl79r5o+p+wTSD0uNkyedxpKmi63mxdriaJ94P/P6defaV9KXyhYgfGaPdWwUajj0x2iM/g== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Julien Grall Subject: [PATCH v5 02/12] xen/arm: gic: implement helper functions for INTID checks Thread-Topic: [PATCH v5 02/12] xen/arm: gic: implement helper functions for INTID checks Thread-Index: AQHcGP7XgADFYzc0NU2aQr9cJjulKw== Date: Fri, 29 Aug 2025 16:06:13 +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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: 59b4d118-73d4-4bff-b087-08dde715fa6e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?tRjGvpSTpU2J1wGbvLW2ZF/B5ZmhJ/2vXYkbAIoSSwp7p7T+r6V6/hyvUH?= =?iso-8859-1?Q?nYq8S6ALb5+k+OrWA2UlM2yYq8e/DXdX6zTph5+LAqksJ0VHBp83Zz0wzq?= =?iso-8859-1?Q?enbCYrYITzBCVHlNJg6Gv3+9PP+sEjt6NiXzPKdk6LgG3HD1a9kbBRHsDK?= =?iso-8859-1?Q?Yc2VXoWuIXC388kzlbr7XtcgS8rIv83tJeDos/dUlNQgm6f/02rq2St1Tf?= =?iso-8859-1?Q?XJhaUABpq2MxbfJ5K6Qtv98GGM10ft5yAeEFhQG5okIU/Hxrlchfj6BLqJ?= =?iso-8859-1?Q?6Lff5hsFnjY401QyTJCUOrM+4mIf1WESVXvd93zBp94W6nes3MWLq+4Bpr?= =?iso-8859-1?Q?+5E0TFizeYJ60sYfZy0oUQtQ7srxeDPHULoOC/vM7OB7OC60HyY3J76SVP?= =?iso-8859-1?Q?tb+QvIh8VnIOo8RZBqZUZUHPpizO8VcsCQmsGX2/rWf2oNTDJm/3zemk0F?= =?iso-8859-1?Q?OpWtg94eLdvnmHqjSIdW2D55kPWA4+8zBoQ1hzdixgF7QMtWyhhIFvzIMv?= =?iso-8859-1?Q?7Jp0EsvZkbmDtmgsk7KBxfOqN2MJh4GkyINCkeItbqPI+pXnDlNnfb+8qV?= =?iso-8859-1?Q?4FCFeVQsa5YpMpwqy5RZDb0tuKUqglfWU4IHtQFU2wG71QsXYXWC0RzgZr?= =?iso-8859-1?Q?FTirvGzhggvTGz3iAze7d7pojVRdrFcXRZ/FR6eNxEAQ/x0tTVGPiTqTSK?= =?iso-8859-1?Q?BCLNGzEOLTMr6eYXZFtiVCj368wrFHHch0XJwkeV9zKPjXSjfKU3YFB7qt?= =?iso-8859-1?Q?wdP913StqVCB7Q+PLDKL8lHeyhFZNiGX4RWzhB4c41Oq3xUsr0+4piT4jT?= =?iso-8859-1?Q?9odQ4jPzm2nWtlvRkanVaA4ankir4/U/+l2/+VH4UI6UwDbHiMttFUCXwt?= =?iso-8859-1?Q?ZtlYrabT/8rBhc98d/xmZy7MUcl1C9R+mB9DKgPNIorWRbp9ikXhl9jcjv?= =?iso-8859-1?Q?npQNwQV9kp61ALydlg5iH4MIn7mCDkJcaWjQQjuMZEpefcnA+yPZLwZCuL?= =?iso-8859-1?Q?NVdwO+3SP6uA9u09HJzrNN5KV2pMU48Erq15DH0bRi6wdSVTyTATS9QyPY?= =?iso-8859-1?Q?LsJ8LLeAqVlmmO6qv7k7vKAV/QZGCovQgDDYMzWJJ3QhzCGeaHF3gBiR5z?= =?iso-8859-1?Q?FrVHGrA8upKYYGersYV58yLmDbNOoDLi3au6n0VdzNEtIPQwYEjXYQR28j?= =?iso-8859-1?Q?tx+9Vp5Aq32TpxPuQ4n8ZWSMfAB47ryRpttm981+Z8Y83PnOqQKHJjSB1v?= =?iso-8859-1?Q?hexpFkGkzpKFPttN/lEkesKEnYeqdk5VcFdo6M99q2DirGkCvSuN/yiNrZ?= =?iso-8859-1?Q?8UTt33toB+M89mOnEm5h9LN1pSSH/kykzMdUwipfxBIuXjSksL1vifxULu?= =?iso-8859-1?Q?iEUSM6sqxFTlbdPJ4FKW3htQJfu7Uy1eLb7B28gqBzfPJZBOQAz1TNWNVF?= =?iso-8859-1?Q?Pj61DO9rEZM1eecf6W5KkVt3LAmi+MkFLDoxW7zA4WZIe6WglR3qen3nox?= =?iso-8859-1?Q?e3QDsyMZMAAIYqesUhx+MPD2fJxUviHPe2w7Wp7aF4Dw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?PBvpXDbbLArpW1gh2CgZzY3BApi3q07nG+5vZ2rbF3LDbmwb/RKlv+wLGJ?= =?iso-8859-1?Q?rveeUFn5QbEq/PAf3VvrA8kWbfIhbaQpTX9sTUJGdsMTt/9K6havRI9vPp?= =?iso-8859-1?Q?eGvKpAwj8q6ENYNfoO+0O/KkteDgbI+qG1I6USLnO7S3QSi8qXhRLqxd6a?= =?iso-8859-1?Q?K27bYWcppws63sHeViEWSif4Td57YbSeFX6B3/+/+uCdxFnKOYtSeDrXHs?= =?iso-8859-1?Q?l+XuDhA0nv+a/zEKYfejM/x7wvNs2q8JfzDfoZsYoq3VGTdjje3ZuL0MFM?= =?iso-8859-1?Q?FL8t/2FecGHzbiOpy36/FtixA7YOePFOHun/hX0OWFXbewWENNnQ6UbHcb?= =?iso-8859-1?Q?zl6gGmeK1OfwoNjXW5QIi69KqgbA3fLCM23DwNStIwxgB7HUTaVEJXI8Cv?= =?iso-8859-1?Q?cXkX7c5/7zWZou22wYfk+VnpfvYFkURfZyaDwcQ0Mvx5oeH7QGdTHccSTU?= =?iso-8859-1?Q?p/H6rKF3OqZdLXDzNeYH2VVnyFIjyd2cZcq6/ZE1KNlXTQClU6XmhAt9eV?= =?iso-8859-1?Q?g5HMdhYDp8KQKagC9iV8xonx3wfFabK6+y181ozKuSwG4/pj7IJq82oRYs?= =?iso-8859-1?Q?eXlJows8VdD8JQDfAvvCGUZJKBee/vy3rc0N34lyc7XHnGG4xzn8WjqFVi?= =?iso-8859-1?Q?ptvTxUTjUwhbj8SBFYYHWQSGAxWbQgLBag6aPfziu6Fhs3uyXFiGGwALqA?= =?iso-8859-1?Q?mSAPiY1962fQ4tGUUnXDD/5O9/PjhXlGxfTcygXL1n1LmAVCkjp6jtB1xx?= =?iso-8859-1?Q?84C6+68LcbNvXbW4MAC6gcw0ETkFl3tdDQC/yUbtE6kpo6Z/GIQTuffOAR?= =?iso-8859-1?Q?cC4mtDXhKk8HPiSI6l8iVcSudpvGXPHmmfyf/rHnp9fj8E7VcS5l5SVDED?= =?iso-8859-1?Q?KtLRtJqQ2rsa2oXjjRdrZxz1maEzZI+UEJ3M6EXOyWXEUUtP2jqTSiRwy6?= =?iso-8859-1?Q?k3i5CvfJy6k/V0cxLcY75hrlz75qocU9UFuXDckZ1Y9jPSbiJzVzcwkwk3?= =?iso-8859-1?Q?cP8n1EpOmKWjXbmy4WU6D78K9goaG5ClDFMg+gijxBxTtdeZeJg9QBdntr?= =?iso-8859-1?Q?6WYu+vK3ie5fcv2NIjgyLUuIXLPqvnpdBkXvUA3hOxELTy6RP1ogaH8DOi?= =?iso-8859-1?Q?C/4VMNvbpWhVSzJrATzl4i1r1dSJFp9voOQfwlW1R99TP6cIgv6eITSh5m?= =?iso-8859-1?Q?ST9giRUvL+9cCNDMCAo49KiHVIfqrJg8Axq1E4D6IElqh2XFWq9sjVTS26?= =?iso-8859-1?Q?Qz3a1tZqGECH6GK1MQ7jjFecDWj6U4v9Ey7MkIPX7u40qUf4vEkKzLYpSn?= =?iso-8859-1?Q?oKcUsV94DeDfp/e8VFWKEuSWNrTPX6pmVYZanwgIIPcUprtl6WrO3ro954?= =?iso-8859-1?Q?qpneRQaO25JrJADSV5grGK/0m5HGFiVQjULQ54cjd1iVT42vbs0ncDuyE/?= =?iso-8859-1?Q?pFQq5zi0A7W3C2Yb9o/MpsWhwWVYJxwUk2axaSQRf9qZgkxtSNY6IaTsyv?= =?iso-8859-1?Q?yWO4yMyHPyzAKAF1tHOIgjZA5vSqJbEIvB41jtwkrbm1SNWM5TzgO3sek3?= =?iso-8859-1?Q?ZzyxcO4KTmQDablWwg0CoGB852M8yCMx7gDsPuF57UPqyie3+fPYwQdTDV?= =?iso-8859-1?Q?NgnOMupcDeWANamGrVY4Di0R8d44PTDDkn1UgKc/f/CSqqb+jUDBpCMPt9?= =?iso-8859-1?Q?uVwTSgc+zZw6NYDnpvM=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59b4d118-73d4-4bff-b087-08dde715fa6e X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:13.8308 (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: 9E5WrPZ5+VeKljSJk1AHEK75HK5l8Yo9nh1G5lOywOmIezwNST0OpTROEfSI1oZINy4LqJ6SKNMqRTjJDGz1BTQQheZOUl4aBxR2Y7fsrSE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483610123116600 Content-Type: text/plain; charset="utf-8" Introduced two new helper functions: gic_is_valid_line and gic_is_spi. The first function helps determine whether an IRQ number is less than the number of lines supported by hardware. The second function additionally checks if the IRQ number falls within the SPI range. Also, updated the appropriate checks to use these new helper functions. The current checks for the real GIC are very similar to those for the vGIC but serve a different purpose. For GIC-related code, the interrupt numbers should be validated based on whether the hardware can operate with such interrupts. On the other hand, for the vGIC, the indexes must also be verified to ensure they are available for a specific domain. The first reason for introducing these helper functions is to avoid potential confusion with vGIC-related checks. The second reason is to consolidate similar code into separate functions, which can be more easily extended by additional conditions, e.g., when implementing extended SPI interrupts. The changes, which replace open-coded checks with the use of the new helper functions, do not introduce any functional changes, as the helper functions follow the current IRQ index verification logic. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall --- Changes in V5: - fixed a minor nit: moved the existing comment to the line above to fix formatting that exceeded 80 characters - added acked-by from Julien Grall Changes in V4: - removed redundant parentheses - added reviewed-by from Volodymyr Babchuk Changes in V3: - renamed gic_is_valid_irq to gic_is_valid_line and gic_is_shared_irq to gic_is_spi - updated commit message Changes in V2: - introduced this patch Changes for V4: Changes in V4: - removed redundant parentheses - added reviewed-by from Volodymyr Babchuk --- xen/arch/arm/gic.c | 3 ++- xen/arch/arm/include/asm/gic.h | 9 +++++++++ xen/arch/arm/irq.c | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index e80fe0ca24..4bb11960ee 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -111,7 +111,8 @@ static void gic_set_irq_priority(struct irq_desc *desc,= unsigned int priority) void gic_route_irq_to_xen(struct irq_desc *desc, unsigned int priority) { ASSERT(priority <=3D 0xff); /* Only 8 bits of priority */ - ASSERT(desc->irq < gic_number_lines());/* Can't route interrupts that = don't exist */ + /* Can't route interrupts that don't exist */ + ASSERT(gic_is_valid_line(desc->irq)); ASSERT(test_bit(_IRQ_DISABLED, &desc->status)); ASSERT(spin_is_locked(&desc->lock)); =20 diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h index 541f0eeb80..3fcee42675 100644 --- a/xen/arch/arm/include/asm/gic.h +++ b/xen/arch/arm/include/asm/gic.h @@ -306,6 +306,15 @@ extern void gic_dump_vgic_info(struct vcpu *v); =20 /* Number of interrupt lines */ extern unsigned int gic_number_lines(void); +static inline bool gic_is_valid_line(unsigned int irq) +{ + return irq < gic_number_lines(); +} + +static inline bool gic_is_spi(unsigned int irq) +{ + return irq >=3D NR_LOCAL_IRQS && gic_is_valid_line(irq); +} =20 /* IRQ translation function for the device tree */ int gic_irq_xlate(const u32 *intspec, unsigned int intsize, diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index 03fbb90c6c..7dd5a2a453 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -415,7 +415,7 @@ err: bool is_assignable_irq(unsigned int irq) { /* For now, we can only route SPIs to the guest */ - return (irq >=3D NR_LOCAL_IRQS) && (irq < gic_number_lines()); + return gic_is_spi(irq); } =20 /* --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483602; cv=pass; d=zohomail.com; s=zohoarc; b=Z/CGHzb8kHaP0MFHirI4BnqxWF6he9SY53bGWlr3/OT6CmCO+/94H4DBi7iRfQh1MTcc8sCQaxXBc/l2Bg3K0yuiHjDdwEWCwN9GEGNDRCNyS1wAD0zsT8Rc4CstjhNHrMw9yOeKowtxJI6ZcKIXtqiHGp3bS3RY64sjEwv2f4o= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483602; 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=dskB0B0eE1Y40O40K/ixPtdYqmAwbFF7zEh20dywNZk=; b=MT4Nr/MGu8kbFPl01mIGlEbABF24sAR/PAu3TOErJ4f7OuXmnlZ+vBvDZjNAJxNbhPHRg118AjusAZrH+NIem3yJs632Lm4AjZNu3qJrzY8/p9zH1c9aCEekOPRcFN6e4CT0sCZRfxeExOdOVsTZPcS+/9Yixve6Y1ZACASAC7s= 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 1756483602308753.1693205121513; Fri, 29 Aug 2025 09:06:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101650.1454633 (Exim 4.92) (envelope-from ) id 1us1cM-0006sM-71; Fri, 29 Aug 2025 16:06:22 +0000 Received: by outflank-mailman (output) from mailman id 1101650.1454633; Fri, 29 Aug 2025 16:06:22 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cM-0006sB-3u; Fri, 29 Aug 2025 16:06:22 +0000 Received: by outflank-mailman (input) for mailman id 1101650; Fri, 29 Aug 2025 16:06: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 1us1cK-0006O9-MI for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:20 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 19546c98-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:19 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:16 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06: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: 19546c98-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R02WH9uVO6ci5Kqnlp1rbg6aZTCjSmNuX3gtEt9NPcW6V9ijxIqIgOIrByaa/g6eMczHbswa+fe/iyTK7AfQ5b8Oxb+rSZaFrQBvRPBBe4H9ze3fwWFgp5PRlco+AP2lb22apWsp249st+r3mxp3Ts1hU7nBApIWKClIlQbQ1t7GJ+UFQKZHeETzGVLAw1r4903x17YHc1sjxIFGIae68B+/ihWLZSFAm1Xu0L5cQG+yHCb0ros6tskymSkLSYqbG+0ceHEMNqCngrI8XfuT4kOgmQvWLj3ZxK+MtTef083FqArmcGZvOrfmfe5XGMkHTmqbfH2yHQfBe58Q6zCn9Q== 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=dskB0B0eE1Y40O40K/ixPtdYqmAwbFF7zEh20dywNZk=; b=A4hz4Y1Jm4owrnYOjhQ/X6qeGl0OioAd+sqfiQuMYqmnTtWRwVEkUeZwdPFE3WTOaMagzezpTkYuwnKGlY4bu6IjmH24It6Oonbtdy0Y8IXsxXGzlpLaZefCJkFgplwsWhuhl8WDsM3U9ixy7dhMz1vy3so+3X8nY4m8Jdp2EdK4vlvFeoSq6KFLxCsMW8td+Mmow1qjre49zaj3PExdCGmQZjQSZ5lDZlFAYruiX6SB3aXD+dpt1cz4C3PsDYPz2JwIUdsneh3/kHT54+i54eF2PJhVra0tAAAtP5dx79gyggl9SGOW+wLW2I69fBInRNevru3TNTXCsyO5qC9fBA== 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=dskB0B0eE1Y40O40K/ixPtdYqmAwbFF7zEh20dywNZk=; b=jGQAGs3yg957lH+OeCQgKOS1gIN90c4TqsMX5Pg12ThfaSlK9fd5X7yfEoVKKxlsei8ErqPqFKZATE9+ntZ6fJdR24OE51Cmt7lXNeD5HyaZC/vVCN0yX987BXgQlw6mut5EBt+cGaFu6G0cIjBxz/EyoNEIzjQzfua//zB46iYlh68PPzuEjWbwXfMpDyQnBGjFqtDJo8OTTuqSnN6NkLmpXSlrso5DJB+UDq2gAL1b/ueXFn7nyUM0U58kHZmd+pW2ut3meenxeXT6p/yNz1/chxFS/+erbjyygLRob64gWVunwcN/Ie810cNjNW/kPLMvLtaIMPBxTiP5oVkTgw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Oleksandr Tyshchenko , Volodymyr Babchuk , Julien Grall Subject: [PATCH v5 03/12] xen/arm: vgic: implement helper functions for virq checks Thread-Topic: [PATCH v5 03/12] xen/arm: vgic: implement helper functions for virq checks Thread-Index: AQHcGP7Z97jSCMPN5E6tDOtAPST59w== Date: Fri, 29 Aug 2025 16:06:16 +0000 Message-ID: <02148c202b3083646b0feebc8b56f1984e4ac8e9.1756481577.git.leonid_komarianskyi@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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: 0b1d1758-344a-4fd3-76df-08dde715fbee x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?iB6j1+XqRC5bT0UsSJh7NUoPIC5+qmzzy3bI2L4TncAy6DOAIYS8LjGTTX?= =?iso-8859-1?Q?WvEHz77mIW52ssM5i3+dEL6MFdz7P8PK+E+Y7isLtM1KROvyitIBqzPb2H?= =?iso-8859-1?Q?2QmxFTocoKEWZiBiAUwANj5FjLH8GDYPg68QRKU8KmHyFJFPAGRmB74MW6?= =?iso-8859-1?Q?xp98kGRzK6/aKnQfZekid8LCOx09HmqhSMApeycJ08e3qfB1mN/6pTQ46C?= =?iso-8859-1?Q?7Ox+CbPfzUWTHB0FUKsjiUlWuF0Qq4Nz0I8r1lxzsgdXBsCMQHkcCbJQEX?= =?iso-8859-1?Q?+cYHKOhSJQ9hJ6aFKz4mIZR8gVyIxOP/IeUHcUDxaZhtEDlErAdhYeHuyv?= =?iso-8859-1?Q?MSLOWU3Khm7SzfMazX5aFv8gshuc2++JCCgapnigJJlp/Q66b0vSZh3rHN?= =?iso-8859-1?Q?R1q1xi8Fiq7I/GRtbbu8DlNfvdpvdP75WcJCZd7o9X0o5MEWKmTNAB5h2v?= =?iso-8859-1?Q?zg2arjB5n7TxRN1v/c+dtV7K6dpf8r4G6VQhqaZFpOeVayL3CNj+V7ch1Y?= =?iso-8859-1?Q?/10xuEE//F2WcypNDG/bV8bGP/fxEjKeU6Ps9qDG80Lj3OOHGMEu3ZWTI2?= =?iso-8859-1?Q?tr1sjWDLdWEWG2GcIP42kDkZlDQRdWE81ij+2+X52HurbiSUhVePgNuXkL?= =?iso-8859-1?Q?ie93q2qbPd48d/YJQw0o9RMPDhnAJOS1JYzbN2DiBuREc56IfxUSTDX23A?= =?iso-8859-1?Q?VjPgXfiDO39+UCo8UZOiPkxnoaisu7dDJeWBAvifQfFtzgvYSm2aqf9t31?= =?iso-8859-1?Q?dW/9XITw6w3/bXAt8JB4fY26red44rq4twby9WiG9FmOth0xkSJHF6LC5i?= =?iso-8859-1?Q?374WrU5tD+xcNUxvSk0OghVLKW6/duy8g7FPereaap335W9PiurjNPYesJ?= =?iso-8859-1?Q?Pi50LQmyM3mc9FLVIZXHGc7wLKLsXrPMhR1EYxavc6BLmp+55FcH7xNV2g?= =?iso-8859-1?Q?vGFh5D6zyq3GfBarILQxipRbyaWWLlp4ptJtSFActooVmI3v+IprP6Aswq?= =?iso-8859-1?Q?xs9ZtSKQ4Y2yPP6PyHCu4c+45dCQNDChKBbQxecV5Hj7Enyv6VnlsDgop7?= =?iso-8859-1?Q?ZhpfAsli6ZP/0K99Zfu/dTE3sdpo5Gan0QVWS/9qMtRImWLAxXpI1h8c+V?= =?iso-8859-1?Q?xJXJsJWXzt2BWXdKYIG0Yr95LRHf/yvYUyCvEzsHQUSHMB03OTFsUvx2+I?= =?iso-8859-1?Q?G0a1DNE8dkK3hWADMfMc7KgII2bx3wk1V+hpU+UoOA1aCwWb4UUqU4ym8/?= =?iso-8859-1?Q?+20aCxEOODoUI4FMSRE7xT0PFX73IGAC2WIOeIM0GI23Y6ztlFFqq0bbk+?= =?iso-8859-1?Q?qNV/+IXFAW7WPYZHEsh+aZFfZu3t64449JOG4o93aA2T+D66syo5PCWfoM?= =?iso-8859-1?Q?xi0v508B78sLtFZ44ptIpsSFQ1KrXGbfi9wrn0YrlFgCHstrA2BRcPYgNX?= =?iso-8859-1?Q?wV+FGnmzDtW3901V8FQqet6GWMgPlH7kmc7cEizCcxCw0/D3S6Y8/uSl24?= =?iso-8859-1?Q?wSVkU7lhO8puCyDccAz3Fo8CA/0oWAK10vImVFkbnhGg=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?KZOzrgB2FuJLdsZKJcxyu0d7l4BfFXRSHHZR7YDvkvEPxVj9ANpZbMeQjl?= =?iso-8859-1?Q?HjUMlQeICsrHKX8ghlaige/qlxVLq3yhkYyX4JbvjfZUqtge5+NI16Ae4p?= =?iso-8859-1?Q?p73YREZk0zlbI6Oq1IbiN5Lw6of+Lsg8DjaPaD2STIFuVinUBlnzSFYFmj?= =?iso-8859-1?Q?Du6rFPexfmRPnOuuHufR8FyBJnKmlgrzEKYRFQMoU18IFezz+5/waZGtoj?= =?iso-8859-1?Q?Sid2t3M1XighpvJPOiVDMpkdK9fBxhUVJC1fy7hhAhAV9Fbcodfgz+lN7Y?= =?iso-8859-1?Q?f6qHDynAhoGOU1JL6EbNrrRfhPPgoUUYBde5JbJ2QSyq7NL04LzsayVzUS?= =?iso-8859-1?Q?p24q+Rh7kEJcIpc4hLy7UoBLp8mSjmL3VqVTcBL+9Tgragh0FnMUvN51KR?= =?iso-8859-1?Q?M10B2QTjeyQVJKU/PgA7QTk5YGYFSzIEw88UYPPI0lGIgt5xqfgwkUyjAu?= =?iso-8859-1?Q?m1W0AjecTEPGv8T1QY/49PgT7id+r807j/n5gne6Xe43cSTdqEROxmJF8k?= =?iso-8859-1?Q?3u3LDL8NCPO5j1nbtOFDAMoenCK7Ls+8Cd1HfaEgyHJWuYh8rqHoVA6IhM?= =?iso-8859-1?Q?WnjsW2kYPfSlOX6cU8bDVCmV2gFPhGNB0f4oNdKIbWlptR4l82P8U2qMsm?= =?iso-8859-1?Q?PLhhK4RbZSYRqWvQrce2Hu7nGiDcHYNGOd0C6K9EAVv17XTbVTwJSnR3UH?= =?iso-8859-1?Q?ieALFvmJP8/XKP/AJP51NckZoiFwl2qZeTlaX1uYd3vsXOheQsetGabyVO?= =?iso-8859-1?Q?HhukGIsgGV0cjS1oXf4QSDnD8nqibsDqKMicBtTxy5NG+RGUqw0W5J/Yn2?= =?iso-8859-1?Q?97ghJSKozvDfBDe3Ru2cVe4O8LWdl8UZjqdb1rCDLPKdIgh4T4IPaW0lcC?= =?iso-8859-1?Q?PgbrxqrFr+PjjEnIm4vAi4GkXUTsUerJPB7WfqYIR5pMLlBriyy2oFmj0m?= =?iso-8859-1?Q?W9K8iX3o7QEdWQebyJ8hkmoREGvupbZ9uK7aIrpjHBijLddgPx4U83OhU6?= =?iso-8859-1?Q?t2+orggPZXg8+wKT5fNuv9N0l0PMnXDxgtASBkz/aVvtz1o+2Ah2gbSP3L?= =?iso-8859-1?Q?mRTgkqeNseboBbb1MCcTpOstEtQPfg4pPSa7rQsJpAbRGK+EY8/OOTMI00?= =?iso-8859-1?Q?JvV5KqgwyuZCHcq3/ZwgGBQ60V1oTr8/byIAR6emQcxho9Ne8U522njyBe?= =?iso-8859-1?Q?uO4Kc/NlYgdzDkzulD/Ksrc3m9CvpylaKWpLpg2d7YcoTy+Yhk4zgAO16K?= =?iso-8859-1?Q?+TkhNYW5r67QV13s/+AxkhdLkvC3dh530/Nx5R6lzs7P0DxIci74Cgogdx?= =?iso-8859-1?Q?uItB0pkfQl5SBCx9LiaqcoQZnkE8WVNhvPGPR4bfoXifn9W+oUxWRwIAsO?= =?iso-8859-1?Q?yt4sEXz2oywvoVm0jGw/I3P3IEmHAOKOYfKpdZdG0zYjLMrm42ib9sFPKu?= =?iso-8859-1?Q?hIqwteokWZZIy1o4cBbukKidJwIhKDhkvYm7I/kbXwjNuRbmFyV8vpYGaf?= =?iso-8859-1?Q?oT9FrJOcguWn1n9DRH7U3k2DIGlFUOnTwyQ6YpEfBpqMKrummYqYglvq3Q?= =?iso-8859-1?Q?Gh+gk+13nVyzQTNPoTQqCuHaXu4OSx7odUmAfgosQFUEAIsrd1JV6q9iqA?= =?iso-8859-1?Q?O3r9qNMq+YUDHGptt1vcbFKa7rG1V7NEw8nxH4Ny22W1PpNaFx/lyU4X+E?= =?iso-8859-1?Q?wu5VTywqbW4XsyVwLy8=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b1d1758-344a-4fd3-76df-08dde715fbee X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:16.3413 (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: 6EjBFQheazyL4ZpNZgQt/uVMFfmbZ5o9bcxjOr5+5MFW0VAJ9DvpOp+E5BY5Ojp6au8HfKO9P7mDRJ0Z35dVZu7m+qbDLzmqM//0XXEpBKs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483605103124100 Content-Type: text/plain; charset="utf-8" Introduced two new helper functions for vGIC: vgic_is_valid_line and vgic_is_spi. The functions are similar to the newly introduced gic_is_valid_line and gic_is_spi, but they verify whether a vIRQ is available for a specific domain, while GIC-specific functions validate INTIDs for the real GIC hardware. For example, the GIC may support all 992 SPI lines, but the domain may use only some part of them (e.g., 640), depending on the highest IRQ number defined in the domain configuration. Therefore, for vGIC-related code and checks, the appropriate functions should be used. Also, updated the appropriate checks to use these new helper functions. The purpose of introducing new helper functions for vGIC is essentially the same as for GIC: to avoid potential confusion with GIC-related checks and to consolidate similar code into separate functions, which can be more easily extended by additional conditions, e.g., when implementing extended SPI interrupts. Only the validation change in vgic_inject_irq may affect existing functionality, as it currently checks whether the vIRQ is less than or equal to vgic_num_irqs. Since IRQ indexes start from 0 (where 32 is the first SPI), the check should behave consistently with similar logic in other places and should check if the vIRQ number is less than vgic_num_irqs. The remaining changes, which replace open-coded checks with the use of these new helper functions, do not introduce any functional changes, as the helper functions follow the current vIRQ index verification logic. Signed-off-by: Leonid Komarianskyi Reviewed-by: Oleksandr Tyshchenko Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall --- Changes in V5: - added reviewed-by from Oleksandr Tyshchenko and from Volodymyr Babchuk - added acked-by from Julien Grall Changes in V4: - removed redundant parentheses Changes in V3: - renamed vgic_is_valid_irq to vgic_is_valid_line and vgic_is_shared_irq to vgic_is_spi - added vgic_is_valid_line implementation for new-vgic, because vgic_is_valid_line is called from generic code. It is necessary to fix the build for new-vgic. - updated commit message Changes in V2: - introduced this patch --- xen/arch/arm/gic.c | 3 +-- xen/arch/arm/include/asm/vgic.h | 7 +++++++ xen/arch/arm/irq.c | 4 ++-- xen/arch/arm/vgic.c | 10 ++++++++-- xen/arch/arm/vgic/vgic.c | 5 +++++ 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index 4bb11960ee..9469c9d08c 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -134,8 +134,7 @@ int gic_route_irq_to_guest(struct domain *d, unsigned i= nt virq, =20 ASSERT(spin_is_locked(&desc->lock)); /* Caller has already checked that the IRQ is an SPI */ - ASSERT(virq >=3D 32); - ASSERT(virq < vgic_num_irqs(d)); + ASSERT(vgic_is_spi(d, virq)); ASSERT(!is_lpi(virq)); =20 ret =3D vgic_connect_hw_irq(d, NULL, virq, desc, true); diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 35c0c6a8b0..3e7cbbb196 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -335,6 +335,13 @@ extern void vgic_check_inflight_irqs_pending(struct vc= pu *v, /* Default number of vGIC SPIs. 32 are substracted to cover local IRQs. */ #define VGIC_DEF_NR_SPIS (min(gic_number_lines(), VGIC_MAX_IRQS) - 32) =20 +extern bool vgic_is_valid_line(struct domain *d, unsigned int virq); + +static inline bool vgic_is_spi(struct domain *d, unsigned int virq) +{ + return virq >=3D NR_LOCAL_IRQS && vgic_is_valid_line(d, virq); +} + /* * Allocate a guest VIRQ * - spi =3D=3D 0 =3D> allocate a PPI. It will be the same on every vCPU diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index 7dd5a2a453..b8eccfc924 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -442,7 +442,7 @@ int route_irq_to_guest(struct domain *d, unsigned int v= irq, unsigned long flags; int retval =3D 0; =20 - if ( virq >=3D vgic_num_irqs(d) ) + if ( !vgic_is_valid_line(d, virq) ) { printk(XENLOG_G_ERR "the vIRQ number %u is too high for domain %u (max =3D %u)\= n", @@ -560,7 +560,7 @@ int release_guest_irq(struct domain *d, unsigned int vi= rq) int ret; =20 /* Only SPIs are supported */ - if ( virq < NR_LOCAL_IRQS || virq >=3D vgic_num_irqs(d) ) + if ( !vgic_is_spi(d, virq) ) return -EINVAL; =20 desc =3D vgic_get_hw_irq_desc(d, NULL, virq); diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index c563ba93af..2bbf4d99aa 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -24,6 +24,12 @@ #include #include =20 + +bool vgic_is_valid_line(struct domain *d, unsigned int virq) +{ + return virq < vgic_num_irqs(d); +} + static inline struct vgic_irq_rank *vgic_get_rank(struct vcpu *v, unsigned int rank) { @@ -582,7 +588,7 @@ void vgic_inject_irq(struct domain *d, struct vcpu *v, = unsigned int virq, if ( !v ) { /* The IRQ needs to be an SPI if no vCPU is specified. */ - ASSERT(virq >=3D 32 && virq <=3D vgic_num_irqs(d)); + ASSERT(vgic_is_spi(d, virq)); =20 v =3D vgic_get_target_vcpu(d->vcpu[0], virq); }; @@ -659,7 +665,7 @@ bool vgic_emulate(struct cpu_user_regs *regs, union hsr= hsr) =20 bool vgic_reserve_virq(struct domain *d, unsigned int virq) { - if ( virq >=3D vgic_num_irqs(d) ) + if ( !vgic_is_valid_line(d, virq) ) return false; =20 return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c index 6cabd0496d..b2c0e1873a 100644 --- a/xen/arch/arm/vgic/vgic.c +++ b/xen/arch/arm/vgic/vgic.c @@ -718,6 +718,11 @@ bool vgic_reserve_virq(struct domain *d, unsigned int = virq) return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); } =20 +bool vgic_is_valid_line(struct domain *d, unsigned int virq) +{ + return virq < vgic_num_irqs(d); +} + int vgic_allocate_virq(struct domain *d, bool spi) { int first, end; --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483603; cv=pass; d=zohomail.com; s=zohoarc; b=d3MIo2EH9qp/MnUEyLDcNNvXlXxomZzi/2LaySnZspg5ZFZAvydR31HiqrfbzDVR/3R31dIjVsO/xp0LKdxEAZyEa6DarZuXaGXvvZKiavPWe1t4/ehh4vw+ewNOcI0wYsAqm1RE/i4VquvyMYoBTDzY0UPEbA22JCWL9KUUp24= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483603; 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=mBNwg+KGru3hWYAd6jh+irYJNu9K0e+2+vVOy3gd/B4=; b=NxLKsaI/5eOVhULyontwiv2vuK4ayKX7nBl1XmUTY7mo5c43KGIVU5+inNMxvEGjoR6u+W1QOD7nfRxBSbRuPyRB5qEFZlOd7HvvCXHlromEiVM1ER1cW5wLSCb4xjhbd9KZi7VIgrUdLvQPExlwc55LHlnOvVpodha5cqcYUo8= 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 1756483603301975.3073542143771; Fri, 29 Aug 2025 09:06:43 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101651.1454643 (Exim 4.92) (envelope-from ) id 1us1cO-00078i-Ku; Fri, 29 Aug 2025 16:06:24 +0000 Received: by outflank-mailman (output) from mailman id 1101651.1454643; Fri, 29 Aug 2025 16:06:24 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cO-00078Z-Gw; Fri, 29 Aug 2025 16:06:24 +0000 Received: by outflank-mailman (input) for mailman id 1101651; Fri, 29 Aug 2025 16:06: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 1us1cN-0006O9-On for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:23 +0000 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazlp170100001.outbound.protection.outlook.com [2a01:111:f403:c201::1]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 1b089fde-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:22 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:19 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06:19 +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: 1b089fde-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MpH5yI9NoQgrXGiqMqAy5N5RRvj7ZYOZIFpvL7pB223JqT2SDgeQNusei/jBSIYFgQc+Hpz108y/bHX9QaZELi8yYAqyz9O/cIwoUZ0bH4yt23wqImeSm8P3wa9H876B3jg4B5Y2OcclMx5CN0QRRL8FnC4+FXfYqDNEYg4GUrBX7VXIWDvV2RXKF971dLGwALNwVZFeYSYHGUluv5lUiEQ3jgv46CLkrKoLOXBOew5Y9+VtgxggpDC5bgdCkdIXGzyuiEu/ZFnCmcUQlYnui9xmJoFzNl98bNLBSqCZ926WiOKrkTKHbeJp+C1z2y91bEBVDg9WAnlGtgzPyl+d0g== 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=mBNwg+KGru3hWYAd6jh+irYJNu9K0e+2+vVOy3gd/B4=; b=DB9DoNVUGH5Tb5UOZQkoym16e1cxdUbrU3LCe1d0gcz3NQq1Pd83fT5QKIteiQlP9fqRqdBbzNeVLNkPhE5VmRFegI2Z99eOYBTcqmQJGT9hV9yu+kjUQYeNSVLCO7GeRp3oHXiWvlyhYVCwHqJ5yQL3kkxzVJ4n2G3PIHUlTxLtHBX/BBOon2171LsS6APDIrKT5y2369osnOqQkmtzebkmo2DaErpurSbe9ZMmjxRL7sQSBlupso94PPW2kU/zCcKyEBagiOcEppuPGzkeeyuiz2DkbYs0lmDOgg/dusoOCcSQm1/R/0ya57tzuH573khWaWAAjkIghxZBi24AmQ== 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=mBNwg+KGru3hWYAd6jh+irYJNu9K0e+2+vVOy3gd/B4=; b=rteZTAyev6oP08x7xjdAxKtHLkubnaTsN/MshPMe0MRSlYNnut8GEGCWtZs6/gCz2Y0pQSGKlJFZzrPSMly17d1zm6fyJetz0T3ue/qfSBXXiesP/24pbjSij+QS4y1G1Drs2gZxt7tWG4R9KKH8xkuFh3TqZsFAODq/VuBZMlqWSL9OkdyMJtbX1czRGwWqltM0C8x6W8SP/X1ZgcSxolyZuLpjyRacFYrjomnshxFAHv1Lr/g6/Yvh+utK/n/35poFgo9qiDqpIyULhebQG1Gw+FNMSCruXe1yVBYQc8C6vvjNzEQpYuhySy0SnkElaImxIVhMdKNZJ31MEuN2nw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v5 04/12] xen/arm/irq: add handling for IRQs in the eSPI range Thread-Topic: [PATCH v5 04/12] xen/arm/irq: add handling for IRQs in the eSPI range Thread-Index: AQHcGP7bBiDA5fxWR0+DupelLQbe9w== Date: Fri, 29 Aug 2025 16:06:19 +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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: 71c82f8f-b53a-4723-5684-08dde715fdea x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?GmMYvs7QBVb2Glhe267+wwDKwbFMpLJXJnBDiX6T/2hcaGogIFYEh3qfRh?= =?iso-8859-1?Q?lI/oDuaTnc3Lq3xzvXiJqN9VWTL935Wvl7YpcyHN3k6LMUqlMux/Vk7s1C?= =?iso-8859-1?Q?hOnk9pRVrzltHSEnn1ZbEbk4CStx2mub1Bf8IVdaXugwZLnUgPNem1HJJV?= =?iso-8859-1?Q?PYvoNHKDkwrIeGcIscdGGSZWq8P6YHX4pqZde8V3IThiPF+TihcNk/y31V?= =?iso-8859-1?Q?WZT5WLLpSJNYyAxYJT2bgrXDL5GEJVQjGJ+N2JPQWGnGJofAiqvXrgMQBx?= =?iso-8859-1?Q?vc7vwTGPwOjeKcBl0wu0aI4qWNYK0XPk6K9TLsjd1xvndgRHHQZLvMzWx6?= =?iso-8859-1?Q?/kFd4VwqVVGsW7PkTqI66IFmp3/end8lC1k9hoZwhycmvUFJOKB5y8dwUm?= =?iso-8859-1?Q?A4IxXuh9P2gnYQES+aFgAETjIvDHvIapKuxIdS4dJzZyrYoS5igKzIguqD?= =?iso-8859-1?Q?mriIHMll3jnIDZBZTLecTTqf9uDeZxucbqnHpRW0x4j6rIuBWZHolk3o0y?= =?iso-8859-1?Q?Sx6jZD/Nd4qLUJQ1edI5AlKQ1elrFr+yIWdN/zhb0mY0QTXojysihcfpyp?= =?iso-8859-1?Q?wxa1c/5jBOwTH9hVDgpdTk9AuTpmpx5613afyZgn+lDyjYQytYRgLsivC3?= =?iso-8859-1?Q?+VEEcehGPjmhXp7CxFNnQfBTc8Eu+xbIawd6OSTCZ2/xFonkO32KNT/do8?= =?iso-8859-1?Q?XRnumFxpggpHwRLReCNJZlzRcUm8uoeHlWxudqwOqBS7LJPJ5lU3xaUN/1?= =?iso-8859-1?Q?xDXU0vH0WLJgZbWKvlOG1XMsZ3eTWZKxGrqLtThXfpf0Gd4DV7mtf5emBc?= =?iso-8859-1?Q?8bUb0OojoK/ygjUo/dPplUpc3gfMLc9fxZCHWjkrBdc8qlwBSVctPHaNLC?= =?iso-8859-1?Q?G8WNTHuAisTOC1ldtfeypw+DFu+IOT+LkdwpDtvI3NfKrAAOIUVMZlznfH?= =?iso-8859-1?Q?ZD267PBQ0RonntKXitDyiztcY9ISxNh5KSoAlzJ7W9VSFkQsi9BKwLMsii?= =?iso-8859-1?Q?mtiiDEBZFDiNbeUa9rGHrIqoMkmxQ8zJ4+i16vJn5g7eG9Ts8/FIk6dbEQ?= =?iso-8859-1?Q?LmZMSJyhvFXSBniNWTVolu+dzgrAp9KyBWb0W2vDxP/VrE3m1LoYKSPcc8?= =?iso-8859-1?Q?6RBy6TTVOZziCsC925M7tMaCL3xL9RXwM3O00ssVbiev135dXlZttBR2v6?= =?iso-8859-1?Q?jNLWW3hSpyXmIcVgoTLSavbgVfF6skKI5qHM/MZtD/Ee6v6H+8EhCu2dA1?= =?iso-8859-1?Q?Zyh+mVQCcG9tNVZ1XQCM8rAjZr3gFY+BA9lWMxkajF9MSU6qB6CP6Fxrqj?= =?iso-8859-1?Q?krFwJswzGw201pPq+NcPRbmTqf1m3u4oTtKClyftOpqBXTXN2UQWJtKnD/?= =?iso-8859-1?Q?QNZmrEXFoi2RLHVGdR9ujKUSoh1DqyARNqOba8+t3VR0KcqBtg6dm4Ac6+?= =?iso-8859-1?Q?s9/OInevYwrHmTu5psJfdc44lw6S3GXPKC3ofwsdx76O5xPwyHGYZa/pAY?= =?iso-8859-1?Q?nueiyaBcvcIaCU7q4JYaNxKOqy9JS4QtdlX3FJPg+iQw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?yILoahaGn5IjL6PWm+nXsRjpXVmcWiiie5/opnsaGR7NeXZVIeTQkhp48A?= =?iso-8859-1?Q?+CaHgEIILNfkYALugGf8aUmHDOzH2+HBxgACHEXD/NVFuABalxjB1DcmDP?= =?iso-8859-1?Q?tDQjuBugomS/ltiACrjJbxKbO2+DyoGm6E/j+KqKWwvRPA4UkNGwSqaUIf?= =?iso-8859-1?Q?TTcZXNJZpveDbm5vnIsT2zSdYju8v3rSR/UUoJwoV+hZlP2vlQvrB28JZY?= =?iso-8859-1?Q?o7EYOfWhos4Sm+yaBFIvh2JXBpJpSPZf0nAblNz49gunFwCmwE2C3/81YI?= =?iso-8859-1?Q?AhNjey9zztZ2kZB1B0rzlQ8HU1ZnJ6wf14Xzqi/bIUEgUxHFL82yMDN8gr?= =?iso-8859-1?Q?Jk+oKn77oXoXlvtxho3sJ+wQ4VAUTup7iQAEEKlBo1sTAL7ws8hjcUM+iK?= =?iso-8859-1?Q?vYVnRotxINT+YcMLPBA7WvAvZVWvgv6zk4i6f8+nHFSrmkD3dZ87OkvNfo?= =?iso-8859-1?Q?2y60x6JTfKVNVp2KBGbajTAgxaWTH2LZhYstyqbmgkqxIqf6XUJRoxr7oV?= =?iso-8859-1?Q?D5I5WOir1lsGPC+kvAgY4PlPw137TviT0K/HkYiLglNVMXOImJ48L2cMYE?= =?iso-8859-1?Q?K6YIIYE7u0u124g1Qyq6dPSymFUQl/YakMbv+veEgAw7L7rVGoZe1Do/hE?= =?iso-8859-1?Q?iVDRlaYmW6UKb5o+ovVa/H3Lwy0LxomKoz69Pdm7AXF3jXRymTPR3b9K1F?= =?iso-8859-1?Q?ML/LDOQ531kuiOfWZ+6zw/VN5keikOIyY/Dx9ymYtI9JD/x3aU1/Yk9174?= =?iso-8859-1?Q?ekUj8lX8/AdWDjLGY+A/r3INlVoqX0ZQCo7ZZ8j6TeR4lcCRYEdZv9w5jk?= =?iso-8859-1?Q?NOxKjsKFyYcYa3xtAzBSfZFHO5F9ELFUVyXzIZAUeoVFZLZLdysZQQdet6?= =?iso-8859-1?Q?zoBqCCIS9D5jmY7nhniPWjN126r5ktcG0HJQr1y3MLwGEnrURf7dmmFH/c?= =?iso-8859-1?Q?BtiBaEbGHb+OArfo9trGcnV/Kn0ofR6HyqceaS43wZT6JadYwlM+hqhp/e?= =?iso-8859-1?Q?Zo8e3SxBTgMbv9gwov6wr3YkH1hY+IoQqgQJ+64C5ehlcM8vH2vIFN5fFk?= =?iso-8859-1?Q?r4mPiZ52iUY4mOiFI9IvCWezHoblZERG55mZA+RUSR2f5aSiQlphPW6nNG?= =?iso-8859-1?Q?VU44t5kugT5Kz1DMWdHgQ5J9QlhVr+fVShfKzVt4aKSluvsyziT6LcPWbf?= =?iso-8859-1?Q?HL2jC+8sCT1uvneKBKuwTHsPatoqXfowN6/+0vEKQS/0CJkyKczFQ55EY1?= =?iso-8859-1?Q?w/8WpcLCAKH2lwgC/ZJ/fQWzMbi+/AfTLgZtJUyGZ9SkOsn5loXJpDEeuO?= =?iso-8859-1?Q?ID4AtZo5nGw9F6Ei2sY5PQiOhCarVFtuFr+TsozHkypHsU+wtjttnyEDuU?= =?iso-8859-1?Q?vOvcqPDc6GDnANm8MGj3tt+yKT0R8kyqqkfrOb9IYCgm8ZVaCAVbHP8alA?= =?iso-8859-1?Q?IGb4nfM7mODke1NOLgf7m8wQpSYMEsbilkoi0z7K0CpK5xyasiVT11Om71?= =?iso-8859-1?Q?HAnfsyBQ4v2fUbGQvN/KBQNj0FT9EFNny01EDOIdNbied8P1KSIDKLtqgD?= =?iso-8859-1?Q?V9maaMpayt88ZWF4qFdfA8RMDSsXQ5WXAoB+2xYj18T2KAz4VM5+qztOVa?= =?iso-8859-1?Q?Og6oLw36b3PWg7hnnFZloqJxdvqRwc+qiKqgtJy06Rp1f79pXRzNFUFoFX?= =?iso-8859-1?Q?docTXj+cuU/G3MpQHn8=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71c82f8f-b53a-4723-5684-08dde715fdea X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:19.6531 (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: jxqsFicrPQa3DsYA52T3yoWkyuKAQdoXVEPN4YmNSwJU9JqhgY4Wclg0v6dBO8w/VekoRf4G8efE0vwvgG0woZ5nWSy2UsVpivk0+N1+LXA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483604919124100 Content-Type: text/plain; charset="utf-8" Currently, Xen does not support eSPI interrupts, leading to a data abort when such interrupts are defined in the DTS. This patch introduces a separate array to initialize up to 1024 interrupt descriptors in the eSPI range and adds the necessary defines and helper function. These changes lay the groundwork for future implementation of full eSPI interrupt support. As this GICv3.1 feature is not required by all vendors, all changes are guarded by ifdefs, depending on the corresponding Kconfig option. Signed-off-by: Leonid Komarianskyi Reviewed-by: Oleksandr Tyshchenko --- Changes in V5: - no functional changes introduced by this version compared with V4, only minor fixes and removal of ifdefs for macroses - added TODO comment, suggested by Oleksandr Tyshchenko - changed int to unsigned int for irqs - removed ifdefs for eSPI-specific defines and macros to reduce the number of ifdefs and code duplication in further changes - removed reviewed-by as moving defines from ifdefs requires additional confirmation from reviewers Changes in V4: - removed redundant line with 'default n' in Kconfig, as it is disabled by default, without explicit specification - added reviewed-by from Volodymyr Babchuk Changes in V3: - introduced a new define NR_ESPI_IRQS to avoid confusion, like in the case of using NR_IRQS for espi_desc array - implemented helper functions espi_to_desc and init_espi_data to make it possible to add stubs with the same name, and as a result, reduce the number of #ifdefs - disable CONFIG_GICV3_ESPI default value to n Changes in V2: - use (ESPI_MAX_INTID + 1) instead of (ESPI_BASE_INTID + NR_IRQS) - remove unnecessary comment for nr_irqs initialization --- xen/arch/arm/Kconfig | 8 +++++ xen/arch/arm/include/asm/irq.h | 24 +++++++++++++++ xen/arch/arm/irq.c | 56 +++++++++++++++++++++++++++++++++- 3 files changed, 87 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 17df147b25..43b05533b1 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -135,6 +135,14 @@ config GICV3 Driver for the ARM Generic Interrupt Controller v3. If unsure, use the default setting. =20 +config GICV3_ESPI + bool "Extended SPI range support" + depends on GICV3 && !NEW_VGIC + help + Allow Xen and domains to use interrupt numbers from the extended SPI + range, from 4096 to 5119. This feature is introduced in GICv3.1 + architecture. + config HAS_ITS bool "GICv3 ITS MSI controller support (UNSUPPORTED)" if UNSUPPORT= ED depends on GICV3 && !NEW_VGIC && !ARM_32 diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h index 5bc6475eb4..4443799648 100644 --- a/xen/arch/arm/include/asm/irq.h +++ b/xen/arch/arm/include/asm/irq.h @@ -32,6 +32,13 @@ struct arch_irq_desc { #define SPI_MAX_INTID 1019 #define LPI_OFFSET 8192 =20 +#define ESPI_BASE_INTID 4096 +#define ESPI_MAX_INTID 5119 +#define NR_ESPI_IRQS 1024 + +#define ESPI_INTID2IDX(intid) ((intid) - ESPI_BASE_INTID) +#define ESPI_IDX2INTID(idx) ((idx) + ESPI_BASE_INTID) + /* LPIs are always numbered starting at 8192, so 0 is a good invalid case.= */ #define INVALID_LPI 0 =20 @@ -39,7 +46,15 @@ struct arch_irq_desc { #define INVALID_IRQ 1023 =20 extern const unsigned int nr_irqs; +#ifdef CONFIG_GICV3_ESPI +/* + * This will also cover the eSPI range, as some critical devices + * for booting Xen (e.g., serial) may use this type of interrupts. + */ +#define nr_static_irqs (ESPI_MAX_INTID + 1) +#else #define nr_static_irqs NR_IRQS +#endif =20 struct irq_desc; struct irqaction; @@ -55,6 +70,15 @@ static inline bool is_lpi(unsigned int irq) return irq >=3D LPI_OFFSET; } =20 +static inline bool is_espi(unsigned int irq) +{ +#ifdef CONFIG_GICV3_ESPI + return (irq >=3D ESPI_BASE_INTID && irq <=3D ESPI_MAX_INTID); +#else + return false; +#endif +} + #define domain_pirq_to_irq(d, pirq) (pirq) =20 bool is_assignable_irq(unsigned int irq); diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index b8eccfc924..61c915c3f9 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -19,7 +19,11 @@ #include #include =20 +#ifdef CONFIG_GICV3_ESPI +const unsigned int nr_irqs =3D ESPI_MAX_INTID + 1; +#else const unsigned int nr_irqs =3D NR_IRQS; +#endif =20 static unsigned int local_irqs_type[NR_LOCAL_IRQS]; static DEFINE_SPINLOCK(local_irqs_type_lock); @@ -46,6 +50,53 @@ void irq_end_none(struct irq_desc *irq) } =20 static irq_desc_t irq_desc[NR_IRQS - NR_LOCAL_IRQS]; +#ifdef CONFIG_GICV3_ESPI +/* + * TODO: Consider allocating an array dynamically if + * there is a need to enable GICV3_ESPI by default. + */ +static irq_desc_t espi_desc[NR_ESPI_IRQS]; + +static struct irq_desc *espi_to_desc(unsigned int irq) +{ + return &espi_desc[ESPI_INTID2IDX(irq)]; +} + +static int __init init_espi_data(void) +{ + unsigned int irq; + + for ( irq =3D ESPI_BASE_INTID; irq <=3D ESPI_MAX_INTID; irq++ ) + { + struct irq_desc *desc =3D irq_to_desc(irq); + int rc =3D init_one_irq_desc(desc); + + if ( rc ) + return rc; + + desc->irq =3D irq; + desc->action =3D NULL; + } + + return 0; +} +#else +/* + * This function is stub and will not be called if CONFIG_GICV3_ESPI=3Dn, + * because in this case, is_espi will always return false. + */ +static struct irq_desc *espi_to_desc(unsigned int irq) +{ + ASSERT_UNREACHABLE(); + return NULL; +} + +static int __init init_espi_data(void) +{ + return 0; +} +#endif + static DEFINE_PER_CPU(irq_desc_t[NR_LOCAL_IRQS], local_irq_desc); =20 struct irq_desc *__irq_to_desc(unsigned int irq) @@ -53,6 +104,9 @@ struct irq_desc *__irq_to_desc(unsigned int irq) if ( irq < NR_LOCAL_IRQS ) return &this_cpu(local_irq_desc)[irq]; =20 + if ( is_espi(irq) ) + return espi_to_desc(irq); + return &irq_desc[irq-NR_LOCAL_IRQS]; } =20 @@ -79,7 +133,7 @@ static int __init init_irq_data(void) desc->action =3D NULL; } =20 - return 0; + return init_espi_data(); } =20 static int init_local_irq_data(unsigned int cpu) --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483610; cv=pass; d=zohomail.com; s=zohoarc; b=Np75H09Gcf2AFLHvRy8qvDguK7wVkhpfglsGcnUOL0TXi9vh0FMIlOTxvQzDORp0mDLWISM3IQ052dv0W4fCeZECkLo7xKkwjCespvc8KOmn1qOuliQALEMoPhiBXIIzt/0XGHAm1oy8xedAcoiaKnjuIP/ZgBay8tmRZFsFHYU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483610; 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=i5QwYTw/j4bGgt4Y0MD6Se116cG8hO2bnQOx/ER1aaM=; b=C89b6aeP1HHNMdcIbOGCb3yLcHKz5yV6AXjXYHrseFvbJsrzRTJwSrbOcCfW34hmf3jCQNF0s31DWBT2MOnEDJ+5ODb+eoLRYQoYfNax4no3g38h/xo0vrtCJB/sz4QeE2B0ivYh4amDuV8LTYHzoZ/u2fOxjE6dOHHXkwnYoxU= 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 1756483610595447.307349140675; Fri, 29 Aug 2025 09:06:50 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101653.1454653 (Exim 4.92) (envelope-from ) id 1us1cR-0007Ta-UB; Fri, 29 Aug 2025 16:06:27 +0000 Received: by outflank-mailman (output) from mailman id 1101653.1454653; Fri, 29 Aug 2025 16:06:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cR-0007TR-Qr; Fri, 29 Aug 2025 16:06:27 +0000 Received: by outflank-mailman (input) for mailman id 1101653; Fri, 29 Aug 2025 16:06: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 1us1cQ-0006O9-M0 for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06: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 1cb5f65a-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:25 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:22 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06: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: 1cb5f65a-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aNjuibfyj3KkvfvHhny0Mz+y7rvWiQaxpfqHJoInAywcpgULfok05An7vyh/Yu4Jx88k9xtQEGbwNgLfNO+xzu/5j4CU0RUjUhyl1O9/atv17UEGRm0Dreyn0S4NiGE5HcxLZBeFsthUN9xZCBugtMhyc43nog4NVIwBGzEPUpr5n31pKmYYgpD6drP6UlIagCdT7tSuSxgUFfd7Ob2NeDWj4D6qwQ2uiXqe34pCmPTtyYMksb5sqmd41cffRi5ThhAujQ6SIDKlEeeb+956ysPu4U5vGJhuhiWNOBOui1RrvGLu2nanmFMHRT2t/8LIpaseAmY6SqXxB30dw5RUIw== 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=i5QwYTw/j4bGgt4Y0MD6Se116cG8hO2bnQOx/ER1aaM=; b=uhU8Xg7Qt1bq2aw0BbNupVdx3rWJTLW7tnWJVn1wFb/lN30rx2+rS5nqmxwgVsuWEtZnUPGRO1kqqyblSq4r8qYAJG2kY9RGCYwcJLGIXYK4n09rCJ9m4//1VTFjxFXh8NoyIH7kAaHZlgIeH7v2fiSA99P4mj1vAtVaMBkyqEleemooHCXqSj30xVVHuHwDhhTRabV6fZ2XjDV+vjfRIvXXs2q13yNQnjn5+2HiDpVhYK5zuO5A4KOgV8ZwHyDNVJxUe8QjJry87s79IqpdUYNUqa9KS9u7YTZaxzjuL42aBQ+8uBRGrPyNDDQbof7mAaZrOsdYjW2ZYKj9Y4IcOw== 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=i5QwYTw/j4bGgt4Y0MD6Se116cG8hO2bnQOx/ER1aaM=; b=k7EBvr2/4IKZdelfu5rpf/QlfyWoYELDIrBrG7/Qc+if6Kcyppq/D67JZ+PaXuCy4I4uW6rDt+Cnm3Yc/aI88k6x9FlkuqtpnlqszwowXGPoSutjWuoncqSgNxOMGSfiKJ3vmOCQJ9hxU8SQH5LtpHlW9HSiGJVKKRgruMIyv5xLDCOHhcbc5CuXAOo2oLI3AiMn9vOledzc4alq/iT3IGg5KjS1Rcbkt0d14G1o0vVps3dZjJ+jKrHXOseTy3MTuTAUFbUNDZItqGi7SNGl4OV5KFDACiovITYN2NY9JiRg9eJ9H09jABPIqOeNMNsYmmmEU+JZMY+IwDaxcD6jbA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v5 05/12] xen/arm: gicv3: implement handling of GICv3.1 eSPI Thread-Topic: [PATCH v5 05/12] xen/arm: gicv3: implement handling of GICv3.1 eSPI Thread-Index: AQHcGP7dC7+WoEN69k6endDrwJ322g== Date: Fri, 29 Aug 2025 16:06: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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: 7e9347c9-ebfe-439e-05dc-08dde715ff9a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?w59NCQ0maozUbOIA3eI7kHby2v8WVFRnxq8s+8jqB7c+KM+CDxsNd4lpQ7?= =?iso-8859-1?Q?XCREf/2VEIwJw2Uby6ltTG6yJqUn/+Y8HfnH1tzvlytoDZwIkkRhd26cZ2?= =?iso-8859-1?Q?I28QwEqNag5RiPrePbClvaLELJTJQ4D+zvnEOEIbI504MI4ONR1Y2CIMnY?= =?iso-8859-1?Q?mKaEsJlv0xAcWO7YarP5ZtA35/bP2uTFgVQX13HDt4EN1+MFgoDx1uhhpS?= =?iso-8859-1?Q?DeeshLlGo7U2bmYUdOsgAGAf4GDb85qwjHarLtcPAhr6Qyrp+HkwIhUa7a?= =?iso-8859-1?Q?pdZkt9fNME0xt3PeEteIDHjke7U3fnBa0uuwhzx2096UWogzQbeK6AIbnA?= =?iso-8859-1?Q?PJflgBvrFamePnrrMlN13SZo3drlz9ojrjmUMvMW5UH2Hu2MpcbYU5XwsJ?= =?iso-8859-1?Q?o9HhJwgJT642HWC5PIat3vbNgPqH7c2qq0gxKM/zKOjXtV/fc4Brg/jB7P?= =?iso-8859-1?Q?HrFchidzz6vmxnszFWPNXFK8CcN+7mWdF8s+tZZrhV3YsE7ci7XH2X98Sz?= =?iso-8859-1?Q?F3h41/LsfLoVkqa5oyRW6RcYxKmoxzwsZmCA4Q/FOpMbhqBklGY2q10ylT?= =?iso-8859-1?Q?zkuG/cvUqLFcxY2525MyLx66L1PEKtg7Q5eP+xp8u+cP0pd7SFSU5WrtqP?= =?iso-8859-1?Q?jIJSOjw5gwovkVTAuiZ6ESgAKW7J/d3VvDjo1NR00MX+nDPvC7aZY4HS3Y?= =?iso-8859-1?Q?c8mpeKmDh6uEr8SWc8sAmskwthiSaMXVFjiIMC0W8VNVUIsj0BRIFF7FNO?= =?iso-8859-1?Q?ECq6fJC7Sh5m6akwSO2NovLlHw/uSCf1uxH1wcG/vPKiuqtUHczsNM7HRd?= =?iso-8859-1?Q?36A+xrXPvWGZkRpIMndwL56uqjlp4EE8tCtXUyhHQAyvoyQ1noldq+e8FB?= =?iso-8859-1?Q?bV+vqXGbRIZTyt3YYpTs70TFu/gSvghCXRv91ZbjGujjB/M0XNorTjIxTl?= =?iso-8859-1?Q?lG3NRLfn65BLe4z/3/LHgsUBmpAJ0z8YzXT81st/t8trNHS0+mWajwkFO3?= =?iso-8859-1?Q?aDr0ZE0OBNlK1G6oTRS0MYQ74IUqYW88lGXkkFNbWXatGL9qSpcagGFEUN?= =?iso-8859-1?Q?KN1sr6Y18XSisFSzC88JSFyyFXx0pLlKuh14SVm7sz4+Mevis01TnEiqSM?= =?iso-8859-1?Q?NZaDcDIGMwOYyPywwi6DUR6OSVdgkcPWpZLrnv7qHghqgvOZajf+gho7jw?= =?iso-8859-1?Q?B+cnnWWKfVWDLbbkOiP7cNAbwQi/NnV/8IliMIhkEYniJ1hWzcQWF2qR7x?= =?iso-8859-1?Q?SA3lps4INYDVnaX7lHWhbD6iLxycHBOAl8TFEcFhXdKqmT0Npe/u80GI33?= =?iso-8859-1?Q?CyAszFbzvhiXvhxs3T28bXJfaT1TfYdu6O2ou7/XrwUgKSipXv5Lg+sNTm?= =?iso-8859-1?Q?amUXaLnu/9RdX30fEUi+mxFo+mJSDu98evAFIt9ymYoFHS13IOpP1Back4?= =?iso-8859-1?Q?Nt6xV4oJB7uhum7u6qhLJyNc/dcUIJDNivE1jwMfGOc+J9erYONnf84San?= =?iso-8859-1?Q?pxip4AOlAiKk+xAUdP/EXDsZOtxoRkq6Amv5bqgxJToA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?kze2a6G5uzVx3XinnCEc4cP33xF0HSVHaiTW8YxvA+w4KX6lS03H7f4Bu6?= =?iso-8859-1?Q?W/bka77RmOnEHsh5YaYR/QE4vIQAFm7D3l6NmXH0mYHJYZwnDe5c4XDG1W?= =?iso-8859-1?Q?aIfFOl5ZMZivsCflzjT/5YVkUpWjJCi2cF8CvHNZUFhywwAFHAjeWuKr0V?= =?iso-8859-1?Q?iEAPNus3fWLZI31BMqCx8PDpv9eEhEhev5s9oxeLUtv+snyccs0lYMwaAN?= =?iso-8859-1?Q?EYsfxRx9n/bHKZ90ESZUvJClmCxMojJZL3aOgm8KQjjri0fujuk3EjE8j7?= =?iso-8859-1?Q?w/vmHf/QCuW3nkNlife0I0CZEG7gSiixUPbO3Y6d4NwAiomJDd2sr0O0CG?= =?iso-8859-1?Q?6O+toFmr9J5TzO5F+S7jZInc3DKmXi4O0Oe2D6yNONtWtzRUTV4Fn9+6aN?= =?iso-8859-1?Q?SuhIK2ZqA523YNXHGdlRBrz1U7l1iUoqR0GJDdoIsUSvMQhcR6aDUbxwhy?= =?iso-8859-1?Q?qURWE8su1Sbms5s3JD4bYUDukW3O1V3OFXoZKvrogcuJYziS38Sd0z8phQ?= =?iso-8859-1?Q?G/IoaRyYp4Zq7BXkIYF0xGWBVpbdlSE7GOfh/Xlfn6GEnNy0pp5e5mhapZ?= =?iso-8859-1?Q?7x4mQOQON/k/rLCvvAur+X3gReMRI5xlZyWUhxF8NK/Rg8csHDh7ElpheY?= =?iso-8859-1?Q?WaqzGxuRJEPz0IwrV5aCfqevYQ6Lly8H4Ozc0d9i+6YU2b+qGPOh08FjHb?= =?iso-8859-1?Q?B/eVM8Z3ON8WygMHAdJaaBDv0MRQv46/s4v3HGehnMmgCasgmZupFlEEs+?= =?iso-8859-1?Q?abzEKWy37I+wnTMQV03yPOPXKn0miSoYpVmVDfZLsRIgrGkdDC4e/nAh2N?= =?iso-8859-1?Q?gXvspjr3Qum/MWMbB1tp5lQCY2LAvFg8DTPUuucLztAJG4XJB9bAcEcXJr?= =?iso-8859-1?Q?ereFuhNs5uB45UkELMAeMWuZAeZsoVG1clWAjSToJ0UrjsP9FFK017vKr1?= =?iso-8859-1?Q?ckORjRtFUy20pyF/3nHcm72oFtjr+SBlMIa2w/w+EIDorpPYqmDu8+Rb/f?= =?iso-8859-1?Q?hGnw8TkjFfqkvgrfx2E8VJGklFrMtbnL9pFi4YiBlxiFUSXQ5x16SNScld?= =?iso-8859-1?Q?P/TDkCcTyZrSO8FwfpW7WAAOgb42ltC4+KGuUuwgLE3H3n4h14OxI6S8tc?= =?iso-8859-1?Q?UrLjbCaUHtaiDRWo1nK6fkOo2zXgEyxC+LgA1X+vDTmISpeKSLCdBxWmLi?= =?iso-8859-1?Q?+/5PRhIH1hbogLeATcfs9DHmYengNimwokPjcVYGXyvks/SmGiiZ9kpSa6?= =?iso-8859-1?Q?o4IXb4CkBzNgrMGchyzwPhYP4lbNAbx1dkRt3z67dCpuKUsSwS8GLLHbh+?= =?iso-8859-1?Q?E1AtN4EP8E0SRQmEzKkP3CeW/tNWN85H96vQdK7RsaQb1bj/e8PkzdPTzV?= =?iso-8859-1?Q?m0KqNkSwqdiLwuaqKQ1rdLehEoxkapdVMzGF6HwX/7bqm9T9BoeobadUZa?= =?iso-8859-1?Q?PrkOIUE25A6SYXrpKUtHaySJxyNyUJQazOKGkxjemQkTUJPvOdSCt0CY37?= =?iso-8859-1?Q?kbFw9daRyI6z3mjGNB4xxyDnc4yrYcS7y8b9McgQHE3NXJ0l8ycj8jKKmL?= =?iso-8859-1?Q?hihiztzB4eXrmIBlTUQ72i2X61kFx/lbFYIPoavewO/89jhACDHgKt88nH?= =?iso-8859-1?Q?Wwi/RNYqPP4xcehEidgd2Os+2kiTCA9AvgehljgQ8OI+Pax6g5Gsgo0tmY?= =?iso-8859-1?Q?0GU/stx5JxklOj9Rkq4=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e9347c9-ebfe-439e-05dc-08dde715ff9a X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:22.4478 (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: NACDyN+sRmUUEdJFSjyFcy+nfyaw79SrytOM9EK7BALuB/7Er55DDEiuSOWJ69iZfcQDc1uGpEw5oUhDcjd5l0Uh3dbkixPDVI/VUYqB/fo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483612327116600 Content-Type: text/plain; charset="utf-8" Introduced appropriate register definitions, helper macros, and initialization of required GICv3.1 distributor registers to support eSPI. This type of interrupt is handled in the same way as regular SPI interrupts, with the following differences: 1) eSPIs can have up to 1024 interrupts, starting from the beginning of the range, whereas regular SPIs use INTIDs from 32 to 1019, totaling 988 interrupts; 2) eSPIs start at INTID 4096, necessitating additional interrupt index conversion during register operations. In case if appropriate config is disabled, or GIC HW doesn't support eSPI, the existing functionality will remain the same. Signed-off-by: Leonid Komarianskyi Reviewed-by: Oleksandr Tyshchenko --- Changes in V5: - fixed minor nits, no functional changes: changed u32 to uint32_t and added a comment noting that the configuration for eSPIs is the same as for regular SPIs - removed ifdefs for eSPI-specific offsets to reduce the number of ifdefs and code duplication in further changes - removed reviewed-by as moving offset from ifdefs requires additional confirmation from reviewers Changes in V4: - added offsets for GICD_IGRPMODRnE and GICD_NSACRnE that are required for vGIC emulation - added a log banner with eSPI information, similar to the one for regular SPI - added newline after ifdef and before gic_is_valid_line - added reviewed-by from Volodymyr Babchuk Changes in V3: - add __init attribute to gicv3_dist_espi_common_init - change open-codded eSPI register initialization to the appropriate gen-mask macro - fixed formatting for lines with more than 80 symbols - introduced gicv3_dist_espi_init_aff to be able to use stubs in case of CONFIG_GICV3_ESPI disabled - renamed parameter in the GICD_TYPER_ESPI_RANGE macro to espi_range (name was taken from GIC specification) to avoid confusion - changed type for i variable to unsigned int since it cannot be negative Changes in V2: - move gic_number_espis function from [PATCH 08/10] xen/arm: vgic: add resource management for extended SPIs to use it in the newly introduced gic_is_valid_espi - add gic_is_valid_espi which checks if IRQ number is in supported by HW eSPI range - update gic_is_valid_irq conditions to allow operations with eSPIs --- xen/arch/arm/gic-v3.c | 83 ++++++++++++++++++++++++++ xen/arch/arm/include/asm/gic.h | 22 +++++++ xen/arch/arm/include/asm/gic_v3_defs.h | 38 ++++++++++++ 3 files changed, 143 insertions(+) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index 29b7f68cba..4a7ce12f26 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -485,6 +485,36 @@ static void __iomem *get_addr_by_offset(struct irq_des= c *irqd, u32 offset) default: break; } +#ifdef CONFIG_GICV3_ESPI + case ESPI_BASE_INTID ... ESPI_MAX_INTID: + { + uint32_t irq_index =3D ESPI_INTID2IDX(irqd->irq); + + switch ( offset ) + { + case GICD_ISENABLER: + return (GICD + GICD_ISENABLERnE + (irq_index / 32) * 4); + case GICD_ICENABLER: + return (GICD + GICD_ICENABLERnE + (irq_index / 32) * 4); + case GICD_ISPENDR: + return (GICD + GICD_ISPENDRnE + (irq_index / 32) * 4); + case GICD_ICPENDR: + return (GICD + GICD_ICPENDRnE + (irq_index / 32) * 4); + case GICD_ISACTIVER: + return (GICD + GICD_ISACTIVERnE + (irq_index / 32) * 4); + case GICD_ICACTIVER: + return (GICD + GICD_ICACTIVERnE + (irq_index / 32) * 4); + case GICD_ICFGR: + return (GICD + GICD_ICFGRnE + (irq_index / 16) * 4); + case GICD_IROUTER: + return (GICD + GICD_IROUTERnE + irq_index * 8); + case GICD_IPRIORITYR: + return (GICD + GICD_IPRIORITYRnE + irq_index); + default: + break; + } + } +#endif default: break; } @@ -655,6 +685,55 @@ static void gicv3_set_irq_priority(struct irq_desc *de= sc, spin_unlock(&gicv3.lock); } =20 +#ifdef CONFIG_GICV3_ESPI +unsigned int gic_number_espis(void) +{ + return gic_hw_ops->info->nr_espi; +} + +static void __init gicv3_dist_espi_common_init(uint32_t type) +{ + unsigned int espi_nr, i; + + espi_nr =3D min(1024U, GICD_TYPER_ESPIS_NUM(type)); + gicv3_info.nr_espi =3D espi_nr; + /* The GIC HW doesn't support eSPI, so we can leave from here */ + if ( gicv3_info.nr_espi =3D=3D 0 ) + return; + + printk("GICv3: %d eSPI lines\n", gicv3_info.nr_espi); + + /* The configuration for eSPIs is similar to that for regular SPIs */ + for ( i =3D 0; i < espi_nr; i +=3D 16 ) + writel_relaxed(0, GICD + GICD_ICFGRnE + (i / 16) * 4); + + for ( i =3D 0; i < espi_nr; i +=3D 4 ) + writel_relaxed(GIC_PRI_IRQ_ALL, + GICD + GICD_IPRIORITYRnE + (i / 4) * 4); + + for ( i =3D 0; i < espi_nr; i +=3D 32 ) + { + writel_relaxed(GENMASK(31, 0), GICD + GICD_ICENABLERnE + (i / 32) = * 4); + writel_relaxed(GENMASK(31, 0), GICD + GICD_ICACTIVERnE + (i / 32) = * 4); + } + + for ( i =3D 0; i < espi_nr; i +=3D 32 ) + writel_relaxed(GENMASK(31, 0), GICD + GICD_IGROUPRnE + (i / 32) * = 4); +} + +static void __init gicv3_dist_espi_init_aff(uint64_t affinity) +{ + unsigned int i; + + for ( i =3D 0; i < gicv3_info.nr_espi; i++ ) + writeq_relaxed_non_atomic(affinity, GICD + GICD_IROUTERnE + i * 8); +} +#else +static void __init gicv3_dist_espi_common_init(uint32_t type) { } + +static void __init gicv3_dist_espi_init_aff(uint64_t affinity) { } +#endif + static void __init gicv3_dist_init(void) { uint32_t type; @@ -700,6 +779,8 @@ static void __init gicv3_dist_init(void) for ( i =3D NR_GIC_LOCAL_IRQS; i < nr_lines; i +=3D 32 ) writel_relaxed(GENMASK(31, 0), GICD + GICD_IGROUPR + (i / 32) * 4); =20 + gicv3_dist_espi_common_init(type); + gicv3_dist_wait_for_rwp(); =20 /* Turn on the distributor */ @@ -713,6 +794,8 @@ static void __init gicv3_dist_init(void) =20 for ( i =3D NR_GIC_LOCAL_IRQS; i < nr_lines; i++ ) writeq_relaxed_non_atomic(affinity, GICD + GICD_IROUTER + i * 8); + + gicv3_dist_espi_init_aff(affinity); } =20 static int gicv3_enable_redist(void) diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h index 3fcee42675..1e747dcd99 100644 --- a/xen/arch/arm/include/asm/gic.h +++ b/xen/arch/arm/include/asm/gic.h @@ -306,8 +306,26 @@ extern void gic_dump_vgic_info(struct vcpu *v); =20 /* Number of interrupt lines */ extern unsigned int gic_number_lines(void); +#ifdef CONFIG_GICV3_ESPI +extern unsigned int gic_number_espis(void); + +static inline bool gic_is_valid_espi(unsigned int irq) +{ + return (irq >=3D ESPI_BASE_INTID && + irq < ESPI_IDX2INTID(gic_number_espis())); +} +#else +static inline bool gic_is_valid_espi(unsigned int irq) +{ + return false; +} +#endif + static inline bool gic_is_valid_line(unsigned int irq) { + if ( gic_is_valid_espi(irq) ) + return true; + return irq < gic_number_lines(); } =20 @@ -325,6 +343,10 @@ struct gic_info { enum gic_version hw_version; /* Number of GIC lines supported */ unsigned int nr_lines; +#ifdef CONFIG_GICV3_ESPI + /* Number of GIC eSPI supported */ + unsigned int nr_espi; +#endif /* Number of LR registers */ uint8_t nr_lrs; /* Maintenance irq number */ diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/= asm/gic_v3_defs.h index 2af093e774..3370b4cd52 100644 --- a/xen/arch/arm/include/asm/gic_v3_defs.h +++ b/xen/arch/arm/include/asm/gic_v3_defs.h @@ -37,6 +37,44 @@ #define GICD_IROUTER1019 (0x7FD8) #define GICD_PIDR2 (0xFFE8) =20 +/* Additional registers for GICv3.1 */ +#define GICD_IGROUPRnE (0x1000) +#define GICD_IGROUPRnEN (0x107C) +#define GICD_ISENABLERnE (0x1200) +#define GICD_ISENABLERnEN (0x127C) +#define GICD_ICENABLERnE (0x1400) +#define GICD_ICENABLERnEN (0x147C) +#define GICD_ISPENDRnE (0x1600) +#define GICD_ISPENDRnEN (0x167C) +#define GICD_ICPENDRnE (0x1800) +#define GICD_ICPENDRnEN (0x187C) +#define GICD_ISACTIVERnE (0x1A00) +#define GICD_ISACTIVERnEN (0x1A7C) +#define GICD_ICACTIVERnE (0x1C00) +#define GICD_ICACTIVERnEN (0x1C7C) +#define GICD_IPRIORITYRnE (0x2000) +#define GICD_IPRIORITYRnEN (0x23FC) +#define GICD_ICFGRnE (0x3000) +#define GICD_ICFGRnEN (0x30FC) +#define GICD_IGRPMODRnE (0x3400) +#define GICD_IGRPMODRnEN (0x347C) +#define GICD_NSACRnE (0x3600) +#define GICD_NSACRnEN (0x36FC) +#define GICD_IROUTERnE (0x8000) +#define GICD_IROUTERnEN (0x9FFC) + +#ifdef CONFIG_GICV3_ESPI +#define GICD_TYPER_ESPI_SHIFT 8 +#define GICD_TYPER_ESPI_RANGE_SHIFT 27 +#define GICD_TYPER_ESPI_RANGE_MASK (0x1F) +#define GICD_TYPER_ESPI (1U << GICD_TYPER_ESPI_SHIFT) +#define GICD_TYPER_ESPI_RANGE(espi_range) ((((espi_range) & \ + GICD_TYPER_ESPI_RANGE_MASK) + 1) * 32) +#define GICD_TYPER_ESPIS_NUM(typer) \ + (((typer) & GICD_TYPER_ESPI) ? \ + GICD_TYPER_ESPI_RANGE((typer) >> GICD_TYPER_ESPI_RANGE_SHIFT) : 0) +#endif + /* Common between GICD_PIDR2 and GICR_PIDR2 */ #define GIC_PIDR2_ARCH_MASK (0xf0) #define GIC_PIDR2_ARCH_GICv3 (0x30) --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483610; cv=pass; d=zohomail.com; s=zohoarc; b=BocVEhZDzWIlqbdmXTyar3owwQldlQCbMrt5HKUcpmK65JRMDwTDsOxA3XOsPBLnZOtbkJ+YOkxYR+6kgXmw6o7/hIljvt+XE/SV7Gv3oln8mVYf+I5CsEHUly4hqw1sHVwYuKClSbqM9BLRnb+wiQNJFN7ZBsZDgUi2ZknhXaM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483610; 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=WAB47z1uuBIE2JzTvdTFBqibyuGo+r3x71Man4KXMUo=; b=gm2q9NZN2mycreJcFsZo0/ck+FcWcERfNf9//sFrHslK+0pxb1mv7MEN/k9RZOROiVkko8TvqMVwuuTxOWPP/eff5PKUKlPDPZmUCsN01PkGe20HjtSbjh437Bpa3qNyb8QaIYF4gDLpOw/3hsfxlLPuSq6VGUYOFwH9vlYNUoM= 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 1756483610584970.4376024667705; Fri, 29 Aug 2025 09:06:50 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101654.1454664 (Exim 4.92) (envelope-from ) id 1us1cT-0007km-EO; Fri, 29 Aug 2025 16:06:29 +0000 Received: by outflank-mailman (output) from mailman id 1101654.1454664; Fri, 29 Aug 2025 16:06:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cT-0007kR-8l; Fri, 29 Aug 2025 16:06:29 +0000 Received: by outflank-mailman (input) for mailman id 1101654; Fri, 29 Aug 2025 16:06: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 1us1cS-0006O9-3w for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06: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 1dd58780-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:26 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:24 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06: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: 1dd58780-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NmV4x1G7CVIAqUf59F15xmoOesBe0tiaRSS4BTyUcopNs7Or7MabF/+XP7MkZXx+nWGyTWIL5p8CVj0uAph/41decQnPu+MC/uRNll2sMBwrhFVd/yj1BMwHhpfXSsAoDquS13eNQ05wI6L2WB1fiWMXgGftqUKPku0VrnUyX8LBaRam5E3C+NbXMWfWrh+30QmUQC/lfEC64Mav4Q6U/RdjRr03N6pVLcfbJPoO5V/VSEJX17H6EBBRgln8EY5Iv5bN5dynRG0vzT+Ym5/WpB8aHftgOkeGQvKI7uwljZcD7PtBaNeZyGLBE0rssNJY6sZ99/h7LIN1kuMEUkja9A== 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=WAB47z1uuBIE2JzTvdTFBqibyuGo+r3x71Man4KXMUo=; b=Wu3bdIF+oRhhMNpGn1PbBEI2wyX88HLX4CNmvW+9IVa35B+K9EKpVrzWYnZa4V1ZAUEFEmN2FVvLYrVvKfBfbEsOs+80Nr6M6RvQHLyvBKAvsPJ26+PxrVA+uQnc2BZ2/liy6Y8xBO22TVaksU0haumLUj+74b8+XN+0jgsiiYVCAzhqIuGF4dz5Lyj1rbx9CsNec/bVis7tEAb1oyzj8ja3Z+ZJRExlIMF8bQMCe0GK6BBIfmFUaNAJI8ruxHEKcklpAP5yVzqw2x8URtqiskp995qS3aGkNgy5WrLlaRH1LyeCCG4QwdjV59urnZbBDflIVoIp4YtOKr0k92c08Q== 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=WAB47z1uuBIE2JzTvdTFBqibyuGo+r3x71Man4KXMUo=; b=I0hsjI/mQ8bEqmpOudbyPtzmZANbH0qLTJoGQwsDwkzYwHbnVWxjpNM9ADPJo/B8JKkbzbthN52vPDZ1rhtCsL+uw5/XKeR+guqcqHC+C6NiWIVeEwGLZ94o2eXjS3xakvsF/6Wi7pae3wTK1w+ZgaspT37OwnA25NS2gBLm0WGy5wRnniCKLrBNI1Lql8hU1CTrM64IUH9VGDj/aZzA8DwpTt2HKZXCbTZASD7aWTdeIgvznyaOUOYMVgaO6n37vY0QIOTvi9x7Ik1mGt7JnQHJD2wTPGkKh2WCfsO682K6hA0kNyv9CTTAeRr+sH1IqGuex4BG/F1mbU8Ynq11yA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk Subject: [PATCH v5 06/12] xen/arm/irq: allow eSPI processing in the gic_interrupt function Thread-Topic: [PATCH v5 06/12] xen/arm/irq: allow eSPI processing in the gic_interrupt function Thread-Index: AQHcGP7eN+yGlYwKSkircjBNqV5JFQ== Date: Fri, 29 Aug 2025 16:06:24 +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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: a6b71faf-17ad-49f4-eb7d-08dde71600e0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?RU3+nmw3HcefttD3uNNU9ewoIbQkzJ5CNInk2w0oqxU5d63kECCDOBjd1z?= =?iso-8859-1?Q?/PVUEOKo/H0TKZQDRDBw+OshAXrfc13Klz6iJ/tw08L89yorY7dGnYCBtv?= =?iso-8859-1?Q?WtHU9NgpiTNoRyP1CAgPDETwEg8P0x+ksnMScBT2Hzfoi1ijbepum3qUwt?= =?iso-8859-1?Q?uETpFRTrShgqqprWnZs0pY0byd50otb4oLqxlkqh4Ucx2G2YF+XuRbLT8x?= =?iso-8859-1?Q?E/hIYlszuR566Of3UAtP4cIF3yszPkEoDC0YNd29bQh8KOR1mR03i1QojU?= =?iso-8859-1?Q?IWZepOxam0aq8uKFQWQ+937EGDwNcpYSZGQHitmXm0odDx0G+qhEpA2Di4?= =?iso-8859-1?Q?SRzw1UjrjRKkuNb5K64D5aY5bSS+rVK1PtpshfZwG8FMbXTGvq22S+0PHL?= =?iso-8859-1?Q?TkcH2mMwb5QAx/oV9j6nJLJfnmD4FyHV150M2ohKqE4hI7gHglYpaVE1SR?= =?iso-8859-1?Q?7qpZAxB7o5ew0KAB78G2pPNuOSM2Lr0kCdCwzgE/ccVoEUKzUFjDNVB2ly?= =?iso-8859-1?Q?l4u+WLSl2aTNzTHk7N9HHWoi6d0RkkjK9oVxk7HEj+IvH4XEFy0lpRSABI?= =?iso-8859-1?Q?iA/57j1Cxz5FMXd7k+ZI70hXqnW5V+kDkcImIPWPj9QJORQUJmI/zZVyOl?= =?iso-8859-1?Q?yOGTolfBPaP+b/Kc2SxUBqin+BL2QqbLRiurtLmiuaAvQd8YRgC136jwx4?= =?iso-8859-1?Q?YnHvWhzmS0Ebw+NjxRNJvsdVM11LixJvM4A4yaO1mAKhZOpSBcUvA2YBXx?= =?iso-8859-1?Q?q7EmW88dVyJdHyOt+X1mMu5yUS+43wdqgXF6E81DSrRh+X+1LL+DWGJi3k?= =?iso-8859-1?Q?7cuKGNAcXGxpjIlHYobYVUtUa/pt4WTuIkXa/TmIT54GZW27qlcAvoGcg8?= =?iso-8859-1?Q?naBtdUs6P0BT5A4UN7iq7xq6U2SeWWXojui/ZI8IqmBYXr2ByPaJgYvSbi?= =?iso-8859-1?Q?MXp53C+1Ffq2NJJuzIXXwCnH9YkrKZ38NkrN2ggZkEEEY2pIBf7uE0bE50?= =?iso-8859-1?Q?Vc26GEdvmm5Lp/zI0VJyTnUxrEWmNmwEQf/rBpjYKBSfU9PZ4hYrocfb6q?= =?iso-8859-1?Q?cLE1y1doNshrQ0O4SOWQF1sgG/n74P4BFbOOYLNwWUZaPV6nAEGWF15RoD?= =?iso-8859-1?Q?vwJNlp9Eq5ryGcF5WLHJq0clUozoSArOT2uMqdlfx1PC+k34KNtp9OKaZg?= =?iso-8859-1?Q?KvRoQD1KjfaKdR9hiOX7cxfCA84MhTPHDk1gbOJ6wR4pVoB7p5O7ayx0z3?= =?iso-8859-1?Q?J1tcrMsno1SSmN5XAWb01IA1EzQ7mYHVM4gaL65bhZUPhaGOHBfXIRQmmS?= =?iso-8859-1?Q?DkA37taHfex2cNV9yMYPjImOQcn6AxBL4/isyrY4E8WRR9COu09+37mvja?= =?iso-8859-1?Q?6bbRv1MMyW71gDdhHX0Pxjvdw+UXpxZPr62//LZb+UibkrHgHSJjphrJHq?= =?iso-8859-1?Q?8hIalb/ohwPxXV2t+eaGAeWJkTTVESqQxcPpzlDT+E75IYaCYO8a7HK4I4?= =?iso-8859-1?Q?PiWXVaIqUNNn1lxAS7ZDviK/MwwFQPt7NNSVoYZEfAjA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?rtoKTEKKzSf4Bmk+ujOaIYKGQIgfjSmgdsyJB7FWbTBd+0JpwRhjx9Ty2t?= =?iso-8859-1?Q?cBCAjV2gHXQ7jQg1DUOdP/e0Y5RY6zNG90LNRdBvn3RJiQw2V8Q9N+fETe?= =?iso-8859-1?Q?jYsKkEFU0fwM0MvS7EPCOI9mP52M+kXL6zck+w0zavDOG72rC4RvgmLZWV?= =?iso-8859-1?Q?8pwYbtBvZdHJOlsMVBaI+/gC4715GeTZMq5phPDDdM2qmngx1zEsRY9dcN?= =?iso-8859-1?Q?U7EaKq/MUBEVcE04AWyh+lgBxzSxkln+JOllTVC5OZWOZSwG6fCBvc+YjV?= =?iso-8859-1?Q?nwjlaccC6idn4PzZLsuEq9AX0dwZoyLKW454wFVxBxSKJpsC2ZcBu1ZN3S?= =?iso-8859-1?Q?eu5aKRSTJRcsv9Zt1NO9daiQ4gNPN2/CdI7v35W+IF6qOydgGeXXextHpI?= =?iso-8859-1?Q?MAmRPzzOLjc/PwxrzeZWtnim565iulKZVdpllFJYqOyQdy/ZBYilEntPES?= =?iso-8859-1?Q?1ubZx8mL6ZDED1ChhCab6ksnbLyP/9eIytA7vZzuucTp7fwXpwL/06Psta?= =?iso-8859-1?Q?LZVyFYi57KroJGXSrkHEXf/QH3YhBAmW6ilBCh2j6+Z/vYD+1NqKz4vt3t?= =?iso-8859-1?Q?ZMKx4tBo/kNRqe6aJDKa75NxWBCrMnVsStB3kIzPxqcjODGJ1rd3xCqAh3?= =?iso-8859-1?Q?G3f3Q1rHzOkHE4c9Y+m8evzolpbRNtt3jkiSvqEuXvwP/DJ5cPERu7DwL+?= =?iso-8859-1?Q?rmw8kXfj8SeigcGDT9G7bC2+pZKaJDCiNDrwkTNOCmN5S/uqLec87UOAO8?= =?iso-8859-1?Q?UlIyQT8TgsdEOMfqDoxg7iGi3NB8CiJcdAG3NPc16TRoE6eJhL1BG8roqd?= =?iso-8859-1?Q?NZMSb3ic3nFHJU0r7uJlzSv1dqBdL1wKDA282J48qlqe8w95GJgl7VIQKv?= =?iso-8859-1?Q?ywc9stTXFMcSCE9TMwCiBkBsDLUtxrGgZ18YRdTKdF4WGQuQgoBZYPJeSa?= =?iso-8859-1?Q?XXuHPFjR4dUAVN8Zy6fIcR14Lm/XURcd7DzLm32429nuMY3wf6lQheTVup?= =?iso-8859-1?Q?x/Pf8MxN2/npsLz02hy11L63b7uZkyT7Xx8XXgcORt+nS/q0jWU5kZkxte?= =?iso-8859-1?Q?pPSwfScGbuRKebo2I1ri4kad2+iF6Y6hH+0+h0xla59Sp5T3juPshwiRQ2?= =?iso-8859-1?Q?PasddL8pp9NBWStV3VsTna7o2e1Qluj9/uDdNRotTOZFa0G22hXVCYL1YV?= =?iso-8859-1?Q?y6ijilK7HeGGBfRZLq8V1X/947578o3JmY6yPfaimWKqR7i2ZkRzCC12vS?= =?iso-8859-1?Q?vd/Wl5d9C+d+KI8myLDeGnZN8rUFVCtVS8KC+UOQnrHRenTOf1cvc7OO65?= =?iso-8859-1?Q?g+YcLB1GQsSyLFDxx5tyG8lpy9AIZbKoj5SBA2SJebGvyGqYLcS9ke1CRI?= =?iso-8859-1?Q?kWYbcEruPoOMi1Mi0DaA4Van62V4aZdCtmPHztpz6Kr+4x8gObH7otBdZV?= =?iso-8859-1?Q?ioya02WWNp91VmSYb/SEiDjCrU4QBmo8k/UqDBl3Zv8M01cXKxrIhmj1t2?= =?iso-8859-1?Q?UorPbKcff7v0BjJN8KElnLu2+BesK8xty9DojO12kN/Yvx4ncz83J/7RmU?= =?iso-8859-1?Q?afjwijxv79l/p9KN1ehDj9ZmOqjJKFq/rzOJe+S+OpvV5kMRQcExaiA3RZ?= =?iso-8859-1?Q?OAlDgdcUZu3ivcJwUeFa2bp1ZEIQHnzuroRSpJpL7AGAh4FGDTvNVbH9fW?= =?iso-8859-1?Q?Sm63/D5h6Qdp5aRhDuc=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6b71faf-17ad-49f4-eb7d-08dde71600e0 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:24.5982 (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: VBqgpWPvBx0r32vDvVhLYO+D75cRsMTuXzu3GS/AXA7bewljFe48jXfSn7Ay6vVwrRf/UVkn5fZAJNUWAOCU42foKXyouazjqUvWsdYwm/g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483612041116600 Content-Type: text/plain; charset="utf-8" The gic_interrupt function is the main handler for processing IRQs. Currently, due to restrictive checks, it does not process interrupt numbers greater than 1019. This patch updates the condition to allow the handling of interrupts from the eSPI range. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall --- Changes in V5: - no changes Changes in V4: - fixed commit message - added reviewed-by from Volodymyr Babchuk Changes in V3: - no changes Changes in V2: - no changes --- xen/arch/arm/gic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index 9469c9d08c..260ee64cca 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -342,7 +342,7 @@ void gic_interrupt(struct cpu_user_regs *regs, int is_f= iq) /* Reading IRQ will ACK it */ irq =3D gic_hw_ops->read_irq(); =20 - if ( likely(irq >=3D GIC_SGI_STATIC_MAX && irq < 1020) ) + if ( likely(irq >=3D GIC_SGI_STATIC_MAX && irq < 1020) || is_espi(= irq) ) { isb(); do_IRQ(regs, irq, is_fiq); --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483609; cv=pass; d=zohomail.com; s=zohoarc; b=i3Psbr85g4jjpKRuEyfkyzZ0iqkeLL344Shc9mkNw5hUauzmc4WCF92KSANjVwYbFBV562sn5bYnPhidrpXjX++UBYg1rzfTeJWnAAg5rO9MIEzQT2RvRyptJSJ4aqq1MzbahSqsw6zp/kGAwulqu8Odln3rMOTJ4m3znn2kIJw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483609; 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=YMgOHXZt8/GuF5BwMPodPqG6Kq/EPwOK0n+W+0/lAO8=; b=JqPxAOUw/2enW/PlqFpLoeeJDDPEeodxk/J02dgo2IHfkHUHu8dyOeeTJpc8c6p0ex8BuKGCNKiOAbovamzxXA+1j/8w7EQjrs6eHd/6fyv77uhicSE981i5Q1xSik+iX4HcGFZySwFGRPZ8NJHNZroH+f+cgt7uJfP1Gfzf57M= 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 17564836098187.715296470218846; Fri, 29 Aug 2025 09:06:49 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101655.1454673 (Exim 4.92) (envelope-from ) id 1us1cV-000848-Mb; Fri, 29 Aug 2025 16:06:31 +0000 Received: by outflank-mailman (output) from mailman id 1101655.1454673; Fri, 29 Aug 2025 16:06:31 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cV-00083x-Hf; Fri, 29 Aug 2025 16:06:31 +0000 Received: by outflank-mailman (input) for mailman id 1101655; Fri, 29 Aug 2025 16:06:29 +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 1us1cT-0006O9-Ih for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:29 +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 1eb1142f-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:28 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:26 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06: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: 1eb1142f-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FS8bHCz/O82+a3qvXR+0w06AMgO3YGYbivb83dix4cBPj5yELvZX7csIjne57ZZc132XsVW/up0Zz9Y54Uzy9kyBQaOJ/IMRqQA13vPJjfzkwlPMdeqDTWKYK2NH93S+sIBef30kY4yzN7eKeKVn5CHqlURhf9wP7mVJg4KstGG1pAjHk/4ma9vtN8Dfp+OyqU8jQlfBKUkzdFciiVj0vjnHTBGSL5tzYUkA7PVBbOvfkwt9ZqJgdNg+C0pWI3r23QYn1UyQ6tgRd9AkkxBGYptlaEhCdx7NeKoS1tWrOjs6XmmuNq25RUfnVImgqCuXshl0U8CAnC9scEAzgNM8eg== 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=YMgOHXZt8/GuF5BwMPodPqG6Kq/EPwOK0n+W+0/lAO8=; b=KQ9mJv4JlRt31R9YfbQGSdjXj3+DsqLfX8o9fPn4ncGn3aKBxi6MLQIdE9sJj8e84fu3owRRFLTScSw4ygpjTX5e3ph2aJYxwSPuN2N52GignKoj0tK9ePiJMPza7vCsZR7PwYfYnPJdBjCAlVUc4LWUm954tK99E5qbKaDDF2vYZgdh9aGkcGjeJpExk7BYhFI1A9GuWv0Kb9TXM6gRG9CH9lhVBeRI7cYCD58EYOc4mlqhavgg4E3ZU5fFEeksmEoh1xg+DYS2HpNPnqnHvKve4lX6H/OibcMpiIk7kI3D0D2uXt5CV7EGGs8EHPqK6Yr2nn1bloQ04lvki9FTtQ== 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=YMgOHXZt8/GuF5BwMPodPqG6Kq/EPwOK0n+W+0/lAO8=; b=ko2pr2oOu7Qnbanzfk9x3j7uwYS9G6Hr2HvZsPUQTWNt4+4PyEbQiBhJh3MtaBa/ELY5JEOeXHoW1EFwf8HfErOmh7+X9E956+qOVvMYSNUhy1Y+EMJFBvwAq2Vhp1f8zE8lppZZ+hOuzBh5kp279n5c/lbF3KEb7kpTNf37yd/1+z8LvgyGFx5ASrO/ALWqtgOZ5iU796e+s3PAYKnsnzVpajnJkJLoeToTND69BuyJXQlxWGKLGEgk4yYcP1Eslx+0mLpUXW28DcA4eq6Hb4Ikz/F3hoXEv+XIhvz8aNjb2G7uIHPxiEEthZpHPFd3AeEtjDXcrBXz14SEV1/mhQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk Subject: [PATCH v5 07/12] xen/arm: gicv3: modify ICH_LR_PHYSICAL_MASK to allow eSPI processing Thread-Topic: [PATCH v5 07/12] xen/arm: gicv3: modify ICH_LR_PHYSICAL_MASK to allow eSPI processing Thread-Index: AQHcGP7fr2aNz8WgzkeaOcGbW6a0ZQ== Date: Fri, 29 Aug 2025 16:06:26 +0000 Message-ID: <34b86693e1031a3ec786a38a0510f047c6c708da.1756481577.git.leonid_komarianskyi@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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: 9aff33c1-90d2-40ab-079e-08dde71601f3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?xmzVBgkN5cJhyW8JCptWGOHnE1rK6aovA0RvwBTAVMBMaHupr7dNzfivLm?= =?iso-8859-1?Q?jHMbvzT+Sj+VbbFfx/Vu57dCpnMg5z3W7VkNL0tcS73b7UbJDh8pLcs2I3?= =?iso-8859-1?Q?L98bpSBW0JqeBh3RU2U6EVnNfICyHM2Eo2P/7dnCSXaccVnvew4ddgnvzY?= =?iso-8859-1?Q?eEe8pSa6qYvepCW05u66CGCZMrB1qDPBlJi0I1K99tsLz5ntCRCgiUOc+5?= =?iso-8859-1?Q?1zklgDOu6bS7RZL/lpJiK3TtVvI8qfdc3em8wqBM9c0AKffOnZ9VMxh92z?= =?iso-8859-1?Q?U8tC5xX+vqa5iJmaDod3n2/sb8QrIEfylpgcZmTx9xEt8bbaUAgaQNnkNq?= =?iso-8859-1?Q?QV6a0B1QoJgUI2wEBzkC2ZInxGPDaE/NmRAdNJmTGbYrhzvLXub8ie8e8/?= =?iso-8859-1?Q?6NK1avENpWP2ZJ5X/geMGzieN7+QGLXhMe2mn9a7xcx87lwGc7Ns7pypNf?= =?iso-8859-1?Q?V3GcJAztthJugbiPcGDq3kUG8QJlfM8kDrMzOMopWKJdYYpmV5l1+U37Ry?= =?iso-8859-1?Q?0fhbFgh+6U0swMwz+xbVRcesca5Z63TS2Ib/HzOToMaPxqP1LwBV2yB2oI?= =?iso-8859-1?Q?Arxkph/J4Rr0AXfUVnaKYmIsBmEEatLTt+kmyX1bDdbBMQ/ee92aKFtL04?= =?iso-8859-1?Q?ta0jySQykcJB9DN7F+FIKxk7yzKY7dpzA9ld2NaiJNmr/HXrCJDlXpevB5?= =?iso-8859-1?Q?/fvwFYSgH/4PiAN4EtQH4SRtdE5jYvhUSzp+CIooYyGaVqAsqOjA9/0IBm?= =?iso-8859-1?Q?2DwuR7rlkJjeXH53wySkkksBV0x/t/TW+wDf3BU1I8X60V2ioTVPDCFskX?= =?iso-8859-1?Q?winn4eAGFiAxgu7dQnjTx3Zcu5V9YlBZdqaPC/f/8uds2fOeTICC8Yzf4y?= =?iso-8859-1?Q?2bTHwyhC0Wf4REVeYLSjEZ1mCSySS5QppQta1RQfmt/AUaCvOJQ5ycEB8K?= =?iso-8859-1?Q?cb1goG/zjEDVcZYeDP3OBv3jzvBipbNBDnTMBw3d02+G85gxyGiIr7TAQN?= =?iso-8859-1?Q?Driu7BPZsT5aVJ49UlSUavIG2P71HzgYL0n5BOpSwKKe4cDi8+xNyO3nK4?= =?iso-8859-1?Q?Qax9a76xRQRsO4phnRqCqtXfcSMH2woWrIOEuzmJ6MelltgpynGdMTQXPh?= =?iso-8859-1?Q?EJEp/RmdHLPvdrTF8h+bnLOp7b6BqAZQ6URZ8wILLiYL4V6DZP/s9gSEUK?= =?iso-8859-1?Q?qcn5tNeMdtYeEGkB+kmBqL9YlyGWthhuos30DduHDIdUSdMYuIZRQNm+3s?= =?iso-8859-1?Q?PD1HS2aDIlz/RJyZzWIR+pOSt9ZAcnnJk/5L40wML2k4d7BtUOABdTTEWS?= =?iso-8859-1?Q?wENjaEvtTtCsWykt/z2NqALZhlTydpjlwCi2E+l9GeAtrSvrb69YYGe6NU?= =?iso-8859-1?Q?ELGO5L1T6qagOePGexP+1DwiKa5Efy0lULMguzDSwOoVq+T5XCKmP8yj6W?= =?iso-8859-1?Q?fvlDVnF587C4FxqsgLBoCGSrOYC7LWsuP/ElArb9YG4bLQsR8m92ZcdSBT?= =?iso-8859-1?Q?x5jwD0816swilTMEFrnjjnVdaILerhMzUTUJDDY22tZQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?3cLXN9PMBQMalXvKtoxOAGofzXDEvELfrSgpR6HNC9QBkmr5utsK1/qZTo?= =?iso-8859-1?Q?KjB5k+nEMy0/FLzBMgzGVxPGHaACl14Ka1bk3Cy1ru499Je0Cmf3n1eTuD?= =?iso-8859-1?Q?U/vwNKnYGBvpybnR5IsORVAKQkXPP8kttFJKapI5nfx92JG3yAo0TqxxxB?= =?iso-8859-1?Q?9IJFUGxVhkhoBb9g9VQWtCgWxvcvZXr0Z9vitVNXhkaQeDQTGnxDRRKOJs?= =?iso-8859-1?Q?PCqFmXruaKXKDsxLT7cI8b4h1ji8Wuvyy6ktsibjlSc/sQ1PbiZL3Qrmeh?= =?iso-8859-1?Q?8vSDi9jB8oTYKLnHmZjda1gNZ22tUum1i5h7+tbCkdVNxkI/caOKhv1dHG?= =?iso-8859-1?Q?S5pWk6lh/b4EcvMIhAWePYjnKGN9Ov8F26t4CmL+iN1msYUS81gV9RdM/D?= =?iso-8859-1?Q?JyON9gKCHawlbUc9vSUFMrAs7cIPN2CNDpQh4qkoosZpg1FsxpDfgWxvPJ?= =?iso-8859-1?Q?E+KUpKG9CMMeQEelqUlyfA+M2U2pREBOdPZ8naV4bUKA3jgS2hrbu46CC2?= =?iso-8859-1?Q?PoFO4b3G/PdE+OyxAUErCej3d1HanuOmpHq9CjFwZCn4w3ZSXf/SdAhh+w?= =?iso-8859-1?Q?lkV1F5vrtbb6w5snYJIFO3Zqk2hJsZ/SEPm3IQ+IUYqJwGZzvJoqdn+xs6?= =?iso-8859-1?Q?K2Awna05HEZXjt4nQG3tSRDgmMuwJjSw72pmANu24BwObwgGVye7o0Slrh?= =?iso-8859-1?Q?vveqkQepf9UynlrGHqZimWMR85auZ/CaZzgYvbVU2z2I51MyRnkDyIxoFU?= =?iso-8859-1?Q?A75R7Mb2OLf9VMiaW9lQ34JQfq3l0IolK7dVMiC5VXKqh0xgvrqK9FgkUO?= =?iso-8859-1?Q?/RjSWsZ88V5AltR83tMGWFMi76xP+RbPYATtx907vHsofGJpJfiEhQleXD?= =?iso-8859-1?Q?RHZVMEFCEwnCMN5OC2jd6RqTK1CO6FVTrKWCv7fTfsiLI+ay1orFbHBkd/?= =?iso-8859-1?Q?4f+YQ5QJ+EZvL33oaLZO2l3+0q0WVT1hOGsEelIucm+9MZxg/bMkjr24Op?= =?iso-8859-1?Q?HNyul4mkp9ityU+k5innud/Ruw4rAUrqbhpCh/7a/Yspn00K41Y+YtLhOW?= =?iso-8859-1?Q?lpQ/wUvpJnPmPxXAJnd+amUJw7q13lbrifDK2ZT6vmiALGNLZkGuVF2YAX?= =?iso-8859-1?Q?2Zog25Zt0uop53M0dkvPvR1YRjATUx8xrR6j4tNQuQhGxgTIUOGNKmInhz?= =?iso-8859-1?Q?gqFsruy00bHJ8HnvNPKRJPFR+RdFoUylPPJQU7M7dEK3eZHIA6oLTLc5b7?= =?iso-8859-1?Q?fmymjT5WB/yX5y46/Ds4sG5VUtcD5H+5DMeALuSkUIM67Gqj6AzPiVPG4M?= =?iso-8859-1?Q?ZZsVdLA65T1MFC1aLg4JRkM24c/tf82x9+t6V2iH4S7R7hlxqd2KnK0WSn?= =?iso-8859-1?Q?TB3ggaQB8KcUGqcKQLiHizVPHUVWykN1yMeC0N/jRnLbPtHU8rfmXbiB1m?= =?iso-8859-1?Q?NoarSH2CGxiBukuRz9sIqLpoTf8Pjt0PDNvfp1xC+niAYJKajkGK/LBdoD?= =?iso-8859-1?Q?/Nyax8VwnHhssZ66VefA8PrX+1kH9N5igDSkYPv8PeMFscIAKZdcnZY2rM?= =?iso-8859-1?Q?WvA1n9Ce5Uyec35nD6yLCxHX/7kEjbZNHOgSgvktgpicw80COn9LUJWKEB?= =?iso-8859-1?Q?LcLl2wfaIw7RUWUm1fV20pvJfRtxSG138vqDonzjpejBn3CcYfVEI7VcGi?= =?iso-8859-1?Q?+Ve97DtI99EtNC7lLbE=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9aff33c1-90d2-40ab-079e-08dde71601f3 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:26.4411 (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: LhzG9IRW7C5Ch0glLZB8s5OR/k4C4FeXNBKkngl01kPshXKBqt/KXXz9W2ibgZlHk2ngLxOXtU8GEj4/b66cxPoLPaWgZarawGMctEF3o0Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483610898124100 Content-Type: text/plain; charset="utf-8" To properly deactivate guest interrupts and allow them to be retriggered after the initial trigger, the LR needs to be updated. The current implementation ignores interrupts outside the range specified by the mask 0x3FF, which only covers IRQ numbers up to 1023. To enable processing of eSPI interrupts, this patch updates the mask to 0x13FF. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk --- Changes in V5: - no changes Changes in V4: - added reviewed-by from Volodymyr Babchuk Changes in V3: - no changes Changes in V2: - remove unnecessary CONFIG_GICV3_ESPI ifdef guard --- xen/arch/arm/include/asm/gic_v3_defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/= asm/gic_v3_defs.h index 3370b4cd52..e70c1a5675 100644 --- a/xen/arch/arm/include/asm/gic_v3_defs.h +++ b/xen/arch/arm/include/asm/gic_v3_defs.h @@ -211,7 +211,7 @@ #define ICH_LR_VIRTUAL_SHIFT 0 #define ICH_LR_CPUID_MASK 0x7 #define ICH_LR_CPUID_SHIFT 10 -#define ICH_LR_PHYSICAL_MASK 0x3ff +#define ICH_LR_PHYSICAL_MASK 0x13ff #define ICH_LR_PHYSICAL_SHIFT 32 #define ICH_LR_STATE_MASK 0x3 #define ICH_LR_STATE_SHIFT 62 --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483618; cv=pass; d=zohomail.com; s=zohoarc; b=h8dmZL8XUD7UK/4+Ezu82tFS7iiJlAVhwV0xKp7S2hbb15g5aeWvxHbS+EQFC0/gYq80abFnKm/tUymUxqJ6kbtRV/Twdo0ob6FIVK8qn/PbHH7KcRPVzcpTS3U3j4Y41ItZp8w0Hp9vQCoxYPHFopirrsNQ+YAmEYG7HmE3qAg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483618; 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=rYCvgFFyCTVdJpP4dBMOeGpkcAlgpbx8MCbzfUuiAk0=; b=k0jZ1a1qhioYQg8nvCJw2Ce6tSBnM0NXG3k9Jb+t33na3kQ37q+wkBxzVXEZTLWBfc9i70J4Ej91wpw1XzBnQ/TBszTTNfvGIOEYpjj4YFUTZkSMJoN7xl3YzIW42XKTUq5/CYratHbSUo5o8pIpM/+XXig7D4M+WqqyBk7sDJk= 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 1756483618719531.568930145907; Fri, 29 Aug 2025 09:06:58 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101659.1454683 (Exim 4.92) (envelope-from ) id 1us1cZ-0008Qf-0P; Fri, 29 Aug 2025 16:06:35 +0000 Received: by outflank-mailman (output) from mailman id 1101659.1454683; Fri, 29 Aug 2025 16:06:34 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cY-0008QO-Rp; Fri, 29 Aug 2025 16:06:34 +0000 Received: by outflank-mailman (input) for mailman id 1101659; Fri, 29 Aug 2025 16:06:34 +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 1us1cY-0006O9-4y for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:34 +0000 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170100001.outbound.protection.outlook.com [2a01:111:f403:c200::1]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 204ffe0a-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:31 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:28 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06: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: 204ffe0a-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=d9TW/t4f0zwdRr9dcSUiRgkvBC4U7kpD9BSsvdrG+Izm3YA+5dnokQ9nwcEa1Qobu2q81OV13CTGSEht1mPLncvfDK8zYax2V86/Rx6R4zcyzJT22yc/43Li+KcN5OmdtrVVrt7cwvErcVcA+vhilyS1jbNC2dH4aTnAFeHXYJVmBk4msiCBvHsHzDBoippr72CypuvutP3HRtioHRY40mEm70vz4RqjB6cJ9iuKxUDwjON2+wTppoPhbNueCIGRuuhD70GFPmz7JK2NMRCegL+5czuzr/vbtLJHVjBWOmMKRL/4euuAqbGWujseyUGMkyVcZrRVUm8IRIq7D4Yzyg== 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=rYCvgFFyCTVdJpP4dBMOeGpkcAlgpbx8MCbzfUuiAk0=; b=q3hehr+ZT1cOJxN/xTUiWVhmMGxiNlcHZ0zhPFY+jCxfWIWJ49cnozFSsOh81XsyuInlzx55eqFbrc4HZaoR/hUjTIJ32nAbdaQODESohogx47x7rUFcWVXtMHAYg8TDMdX/j81XnZ3xLo3FPN4XOffra7cUXuAiJ9zEpQh8oMrp3tdvQT/U+lW4p0Fpycht3LePPnseyVIdRrtZry1t+CyU/GN9Gd4rmv+6n+MAC/GKws4R4mX4+Cos7XNMfZ+bk7vrYMm7f/lwM7bWGPAyyp+uacNp9DNZxtN1zwbnDrDqicB14zokyXQjt1dmfaWHeCDp88folI36ElDNjNJrwQ== 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=rYCvgFFyCTVdJpP4dBMOeGpkcAlgpbx8MCbzfUuiAk0=; b=GgjEuXBTFCmd5bfSHScRZenPnngNsdtpnTVW2KLW2zxFTxosi5l1M4/nidsgf0hRMBLCCDPuBy+8uFc2BOaUqly4gewBPO8gS9x/+T8zeZ6YE6vkxIOdROJ/cb/hEhmufVpjmsB3ORNIb4eVcagnFeVWBt3mF0hOrvCZu3W+Q8IWRYF7Ev6Nwxel6TaknByFzJ33I+uIICiqpNfkem+T14HJvHWsWgRVIbfDVBPgnXabdJCG3pEhDv1J4wcNl4LMbfmlxUGNOBLeXePFaVp68tq1d9ZWTd/uXm/0ccNumNe20xc+kqDwHGOHfJvuHfsLtWgaHNLZBFZ+DuTMqgDdsw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v5 08/12] xen/arm: vgic: add resource management for extended SPIs Thread-Topic: [PATCH v5 08/12] xen/arm: vgic: add resource management for extended SPIs Thread-Index: AQHcGP7gzxYtqJZFyUiPTlrb5XV2MQ== Date: Fri, 29 Aug 2025 16:06:28 +0000 Message-ID: <4b13dea924eabf1370d3f31030f3eef48371de06.1756481577.git.leonid_komarianskyi@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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: f37cd360-a999-4f97-2a2b-08dde7160329 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?gK9eo/zKgq8M+/3L+NhD4+Izso2Tk0KRe7tTqTEUBQr5k0P4vNqnykmgEr?= =?iso-8859-1?Q?P7HfeFLgoCeB6YFd3c+Q17OAzl15/ZBgshdL9CdWDGB4IY7WKw3uiohrAT?= =?iso-8859-1?Q?K+W2Stxhbx6mM7r1bdLn5a9Ni/+w1Rdhgav7rlg4rDzGtW99K6pEH6Cl2e?= =?iso-8859-1?Q?mAvsCkHcOJX1/RUlH4XloQABtC34a1iK/i9wG1BVqwY4dU62yESBqrHDEH?= =?iso-8859-1?Q?oPbOZqTWGyaUxuqxy0oAd2xmVFuQOja8Fdjz+lqOXP4s68854I7ahg+Ami?= =?iso-8859-1?Q?AJRguh+fV4laIpnfd/23jpd161RYwtwuURYh+1ssjBDoqQn4BVFbM2XuIO?= =?iso-8859-1?Q?mXTufrdu0Se55c6il90egvOQwEe1Eoh/eKoUwt+rIR9Sin9khKNE4veNdN?= =?iso-8859-1?Q?yrVQngA+EODJcceQ1jXXXkeXcffjngo+uUvWs6YOUjPrU7E2BnMnX0lV1e?= =?iso-8859-1?Q?86arpR6Rn4Y0sjp7INWN1LAXUm7GMLcoJr0pTxybec2PwG4049xpQpf09A?= =?iso-8859-1?Q?SnXJopkgUkEjW9/I+jbWpcnkcmmbbbJ22BHCEXno57nBnZp+o25NIi3BdY?= =?iso-8859-1?Q?f6EN82DkizI006ul5Nm1vkzrI/k+nvpBqri0jJqMr8s7v5dFgtEs98c9zq?= =?iso-8859-1?Q?Ls5xO6ztRxcVGVWMSm7e5ahoIWknSuhCDJcpo1eg8/DuH4/Q6ITM4YZcqj?= =?iso-8859-1?Q?I4OoFKGXw+M1tjbDiVMTuo00M156DviTttLUeZUkJfjSXLuxmZc7cCDW+n?= =?iso-8859-1?Q?Z3OPORDvjOBYl+WuG/nCQlCBZONluW2kYs8mFAiW5bdm27OXNAJkbW2eus?= =?iso-8859-1?Q?QjecPV3eHOOKe4m5NYc4RA3zj1wVhm0KeaRYBQJ4Occ1UsIqgMRZS3Npgk?= =?iso-8859-1?Q?OKMWy710NPty4BDytK9UEQ+U2K2Jb8DpUkwiJsaeZop0iF7IVPS64OVgc0?= =?iso-8859-1?Q?b6y4Cq8u0nltbrSXhY0vfL1pyi1BT+7aOLNDh5KogIi6yhMrk8RUBsOMTT?= =?iso-8859-1?Q?BIwvJ6UclJGsrF37qt9Wi9kiwmEaJqB50MoODfquI4pzH2dV9+Lc08Jfe9?= =?iso-8859-1?Q?wByGSPIeHkmZjDwJXTOfj8iDBNc5KqoXSEOW65pDaNicF235r060Ukvn99?= =?iso-8859-1?Q?4ujKMd23C9I4xkzp61v4IKWcf+3B+xMCKaz6IQGKzFyJ7l8nFO8SLRP02e?= =?iso-8859-1?Q?yFbIE6C680jzzPRjsLnBN0j5t2nLRCHgZlh1oB5+I9iCkiiWZAl7h3zrnx?= =?iso-8859-1?Q?MN+M4aptdLjM5YlPtmSe/gDmSK9+VavTrGhMO4DaznjnYy+gUc628WKkXA?= =?iso-8859-1?Q?4V2dB+uYIgPjc9KbEIIGWPncFQPx8LNrYC2j6ZCdX+bozTPtPS5Nw8Q5nk?= =?iso-8859-1?Q?mrQTgjTC90k/tzyskYIoFO6phyZFJYrJ2QP0lYmwwDQYfcpQD1gKYIaNSq?= =?iso-8859-1?Q?7rg/esUJKR5Md1bmdcxuFZ+IooO9sFPS1x35Lcow/Xqb3OTjKOWZYRYmiO?= =?iso-8859-1?Q?GuNakc2d3ilJ5QEKfx7GAQmf84kGcXmso2iOlSFJpOCA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?o0gEGSK6PofRnahYUNeUfbBgOUKErB0bWQI+l3nxV/gh4uP8NxrtODuprc?= =?iso-8859-1?Q?+Wf7U1vOi7IQLwo/pWnJbCfArXHyIFLotxUDq2R6s1HM4Q+iSRTnl81AST?= =?iso-8859-1?Q?go2flnuZLD+MlFtL9qP63CKr2kAU83O1KS3N0tSnZoyHfcSH88o8ofYZPT?= =?iso-8859-1?Q?mBmmKnirEva5d+QtLrW6GFm/P9pNEaUNENAhIHTb7psOE8TOENNLtOkrR/?= =?iso-8859-1?Q?hQG5p5aB1ILdMhxly6Y9xWpph+SqB4Uw0I5QAj0VJb2T8sFLKaHo2h6QPi?= =?iso-8859-1?Q?RhMfStzBj1QyZxKnFw6vMsFd84BXdClHUI9Z210PMtPeHeVtKTBN0yQrIR?= =?iso-8859-1?Q?xpvCJE79sJNqiuuumDrEXo7ImblfMCo4rOCySU4c6pZRpz+EhnP5HC32eK?= =?iso-8859-1?Q?wEPiz7fvYQ/mA5h16ydcsB34JotO5hDiq1vUy5yfG5ZMuZ1LTRlzBFRNec?= =?iso-8859-1?Q?0/Z1+Y9aFKB+FIH31/vnq1Ahuo15f6HnpGOpHSK0SvxHOLFPnz3vOr8bB2?= =?iso-8859-1?Q?XejzDoVxaACBdgZ5LLIsK6Gx6zIThrMZ0hfR8tOLHDCbl88Y/otSNg7P7/?= =?iso-8859-1?Q?MiNmjKTFcP60rpzA1jI02hnsDg/ezOfzVQImJMBygCeNPE8bYwiB7U0c7P?= =?iso-8859-1?Q?0j8ary4Fns2fpXcG0jngWh1jL5CMUwvxX3xB68SpSgsFF6sS4mk4dwM59f?= =?iso-8859-1?Q?a6CU7OG95ofUfEgYyavO5A7FangwItkCJOw6sP7RkPfH6Q9qnzyilCvNfW?= =?iso-8859-1?Q?SSLCJD6IyKUEVH+llWvbVKEONf54o0cyN5v4O2UE48fzaxaVfkSXqi3YN1?= =?iso-8859-1?Q?xRhpuiTyKwjV9HywjPiPKTSrY/8pt8mWH1r4EKDK81qRAJJ8VIiWuT5j4V?= =?iso-8859-1?Q?T8uJh2h/wY7A1gy9sZocrAVxw/giFP2H7XbmDuzL+cF3gYgqycoMEgc3m1?= =?iso-8859-1?Q?ZwUDR3zdh8N1rWRB5t7S4PcVKH5UwPkA2dpmAB52ukerRL4kZDf1PLIiUX?= =?iso-8859-1?Q?MrMo0A8Oun62LcEcVQmiSjSWcfrvzWEdo/bu5Af/1UVkZpP/XR8nySZwLB?= =?iso-8859-1?Q?pj8SstCtFr1YfmB2+0J3kIaVoBB+urOXoz/e/Iph+Rk1moPwyUYSaLVwNu?= =?iso-8859-1?Q?nhQavEM7Xzi++9RsuaIRYwcdsufMXrxtBZntZWSZ/Yp2ibh3Lr2LoAZ4zV?= =?iso-8859-1?Q?SKpKJjQSninBZ+2dF2PNwyuXcfFvgw1DkfxwDCw80FgGYatRPs2FpRB8A7?= =?iso-8859-1?Q?5AiYhH4JxVFZSncs5bwbSHaahO0X7jKLPwsq1xLCAmjP2FgZsQq9alJWp7?= =?iso-8859-1?Q?orXmf8FiMsaotsK3bLQw4nIBOZntJesAPYK3HDrhd2D5Pj01F3UCb3lpGk?= =?iso-8859-1?Q?XomOnD3IOzHiYfGL8z8goROD8hE5C2RPkuJLZvO2E68pjTU9yRUxJCrrg1?= =?iso-8859-1?Q?FlzkCQegzo4j+Xe1nY7ZZ95KsaZCrFy+7HBs1Vz1mTSymi9AvAuTvFEbJi?= =?iso-8859-1?Q?pKOyXf0O1W6N0jRZ1Xxdf24MZJvDrITyc8xOxln2CDhheGLpjKF35+AiLe?= =?iso-8859-1?Q?amACMMM5WN6fhsAHRsKOioauPv2t+UvnUgdDkv5PIoqnOXi8G45hzo6I3N?= =?iso-8859-1?Q?GmVflt8gDN3e83FY+6Vr6thDNdrmq22IkSfGS/YPZK/o1l5XMZg6VV24kJ?= =?iso-8859-1?Q?7XqIf+UY+WvrgEDm6Ww=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f37cd360-a999-4f97-2a2b-08dde7160329 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:28.4572 (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: trzV33dg8oAqz7jgyX0B+F4uJ/3zIJHkTkuDu0SxuYaF0/XhLQnmcDdK2Yj9Yr3F2+1GpKyqK1Z4A1PKYOvHBqxD6s/xqFKjHH6fjJj4vAE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483620391116600 Content-Type: text/plain; charset="utf-8" This change introduces resource management in the VGIC to handle extended SPIs introduced in GICv3.1. The pending_irqs and allocated_irqs arrays are resized to support the required number of eSPIs, based on what is supported by the hardware and requested by the guest. A new field, ext_shared_irqs, is added to the VGIC structure to store information about eSPIs, similar to how shared_irqs is used for regular SPIs. Since the eSPI range starts at INTID 4096 and INTIDs between 1025 and 4095 are reserved, helper macros are introduced to simplify the transformation of indices and to enable easier access to eSPI-specific resources. These changes prepare the VGIC for processing eSPIs as required by future functionality. The initialization and deinitialization paths for vgic have been updated to allocate and free these resources appropriately. Additionally, updated handling of INTIDs greater than 1024, passed from the toolstack during domain creation, and verification logic ensures only valid SPI or eSPI INTIDs are used. The existing SPI behavior remains unaffected when guests do not request eSPIs, GIC hardware does not support them, or the CONFIG_GICV3_ESPI option is disabled. Signed-off-by: Leonid Komarianskyi --- Changes in V5: - removed the has_espi field because it can be determined by checking whether domain->arch.vgic.nr_espis is zero or not - since vgic_ext_rank_offset is not used in this patch, it has been moved to the appropriate patch in the patch series, which implements vgic eSPI registers emulation and requires this function - removed ifdefs for eSPI-specific macros to reduce the number of ifdefs and code duplication in further changes - fixed minor nit: used %pd for printing domain with its ID Changes in V4: - added has_espi field to simplify determining whether a domain is able to operate with eSPI - fixed formatting issues and misspellings Changes in V3: - fixed formatting for lines with more than 80 symbols - introduced helper functions to be able to use stubs in case of CONFIG_GICV3_ESPI disabled, and as a result, reduce the number of #ifdefs - fixed checks for nr_spis in domain_vgic_init - updated comment about nr_spis adjustments with dom0less mention - moved comment with additional explanations before checks - used unsigned int for indexes since they cannot be negative - removed unnecessary parentheses - move vgic_ext_rank_offset to the below ifdef guard, to reduce the number of ifdefs Changes in V2: - change is_espi_rank to is_valid_espi_rank to verify whether the array element ext_shared_irqs exists. The previous version, is_espi_rank, only checked if the rank index was less than the maximum possible eSPI rank index, but this could potentially result in accessing a non-existing array element. To address this, is_valid_espi_rank was introduced, which ensures that the required eSPI rank exists - move gic_number_espis to xen/arm: gicv3: implement handling of GICv3.1 eSPI - update vgic_is_valid_irq checks to allow operating with eSPIs - remove redundant newline in vgic_allocate_virq --- xen/arch/arm/include/asm/vgic.h | 12 ++ xen/arch/arm/vgic.c | 199 +++++++++++++++++++++++++++++++- 2 files changed, 208 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 3e7cbbb196..912d5b7694 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -146,6 +146,10 @@ struct vgic_dist { int nr_spis; /* Number of SPIs */ unsigned long *allocated_irqs; /* bitmap of IRQs allocated */ struct vgic_irq_rank *shared_irqs; +#ifdef CONFIG_GICV3_ESPI + struct vgic_irq_rank *ext_shared_irqs; + int nr_espis; /* Number of extended SPIs */ +#endif /* * SPIs are domain global, SGIs and PPIs are per-VCPU and stored in * struct arch_vcpu. @@ -243,6 +247,14 @@ struct vgic_ops { /* Number of ranks of interrupt registers for a domain */ #define DOMAIN_NR_RANKS(d) (((d)->arch.vgic.nr_spis+31)/32) =20 +#ifdef CONFIG_GICV3_ESPI +#define DOMAIN_NR_EXT_RANKS(d) (((d)->arch.vgic.nr_espis+31)/32) +#endif +#define EXT_RANK_MIN (ESPI_BASE_INTID/32) +#define EXT_RANK_MAX ((ESPI_MAX_INTID+31)/32) +#define EXT_RANK_NUM2IDX(num) ((num)-EXT_RANK_MIN) +#define EXT_RANK_IDX2NUM(idx) ((idx)+EXT_RANK_MIN) + #define vgic_lock(v) spin_lock_irq(&(v)->domain->arch.vgic.lock) #define vgic_unlock(v) spin_unlock_irq(&(v)->domain->arch.vgic.lock) =20 diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index 2bbf4d99aa..c9b9528c66 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -27,9 +27,82 @@ =20 bool vgic_is_valid_line(struct domain *d, unsigned int virq) { +#ifdef CONFIG_GICV3_ESPI + if ( virq >=3D ESPI_BASE_INTID && + virq < ESPI_IDX2INTID(d->arch.vgic.nr_espis) ) + return true; +#endif + return virq < vgic_num_irqs(d); } =20 +#ifdef CONFIG_GICV3_ESPI +/* + * Since eSPI indexes start from 4096 and numbers from 1024 to + * 4095 are forbidden, we need to check both lower and upper + * limits for ranks. + */ +static inline bool is_valid_espi_rank(struct domain *d, unsigned int rank) +{ + return rank >=3D EXT_RANK_MIN && + EXT_RANK_NUM2IDX(rank) < DOMAIN_NR_EXT_RANKS(d); +} + +static inline struct vgic_irq_rank *vgic_get_espi_rank(struct vcpu *v, + unsigned int rank) +{ + return &v->domain->arch.vgic.ext_shared_irqs[EXT_RANK_NUM2IDX(rank)]; +} + +static inline bool vgic_reserve_espi_virq(struct domain *d, unsigned int v= irq) +{ + return !test_and_set_bit(ESPI_INTID2IDX(virq) + vgic_num_irqs(d), + d->arch.vgic.allocated_irqs); +} + +static void arch_move_espis(struct vcpu *v) +{ + const cpumask_t *cpu_mask =3D cpumask_of(v->processor); + struct domain *d =3D v->domain; + struct pending_irq *p; + struct vcpu *v_target; + unsigned int i; + + for ( i =3D ESPI_BASE_INTID; + i < EXT_RANK_IDX2NUM(d->arch.vgic.nr_espis); i++ ) + { + v_target =3D vgic_get_target_vcpu(v, i); + p =3D irq_to_pending(v_target, i); + + if ( v_target =3D=3D v && !test_bit(GIC_IRQ_GUEST_MIGRATING, &p->s= tatus) ) + irq_set_affinity(p->desc, cpu_mask); + } +} +#else +static inline bool is_valid_espi_rank(struct domain *d, unsigned int rank) +{ + return false; +} + +/* + * This function is stub and will not be called if CONFIG_GICV3_ESPI=3Dn, + * because in this case, is_valid_espi_rank will always return false. + */ +static inline struct vgic_irq_rank *vgic_get_espi_rank(struct vcpu *v, + unsigned int rank) +{ + ASSERT_UNREACHABLE(); + return NULL; +} + +static inline bool vgic_reserve_espi_virq(struct domain *d, unsigned int v= irq) +{ + return false; +} + +static void arch_move_espis(struct vcpu *v) { } +#endif + static inline struct vgic_irq_rank *vgic_get_rank(struct vcpu *v, unsigned int rank) { @@ -37,6 +110,8 @@ static inline struct vgic_irq_rank *vgic_get_rank(struct= vcpu *v, return v->arch.vgic.private_irqs; else if ( rank <=3D DOMAIN_NR_RANKS(v->domain) ) return &v->domain->arch.vgic.shared_irqs[rank - 1]; + else if ( is_valid_espi_rank(v->domain, rank) ) + return vgic_get_espi_rank(v, rank); else return NULL; } @@ -117,6 +192,62 @@ int domain_vgic_register(struct domain *d, unsigned in= t *mmio_count) return 0; } =20 +#ifdef CONFIG_GICV3_ESPI +static unsigned int vgic_num_spi_lines(struct domain *d) +{ + return d->arch.vgic.nr_spis + d->arch.vgic.nr_espis; +} + +static int init_vgic_espi(struct domain *d) +{ + unsigned int i, idx; + + if ( d->arch.vgic.nr_espis =3D=3D 0 ) + return 0; + + d->arch.vgic.ext_shared_irqs =3D + xzalloc_array(struct vgic_irq_rank, DOMAIN_NR_EXT_RANKS(d)); + if ( d->arch.vgic.ext_shared_irqs =3D=3D NULL ) + return -ENOMEM; + + for ( i =3D d->arch.vgic.nr_spis, idx =3D 0; + i < vgic_num_spi_lines(d); i++, idx++ ) + vgic_init_pending_irq(&d->arch.vgic.pending_irqs[i], + ESPI_IDX2INTID(idx)); + + for ( i =3D 0; i < DOMAIN_NR_EXT_RANKS(d); i++ ) + vgic_rank_init(&d->arch.vgic.ext_shared_irqs[i], i, 0); + + return 0; +} + +struct pending_irq *espi_to_pending(struct domain *d, unsigned int irq) +{ + irq =3D ESPI_INTID2IDX(irq) + d->arch.vgic.nr_spis; + return &d->arch.vgic.pending_irqs[irq]; +} +#else +static unsigned int init_vgic_espi(struct domain *d) +{ + return 0; +} + +static unsigned int vgic_num_spi_lines(struct domain *d) +{ + return d->arch.vgic.nr_spis; +} + +struct pending_irq *espi_to_pending(struct domain *d, unsigned int irq) +{ + return NULL; +} +#endif + +static unsigned int vgic_num_alloc_irqs(struct domain *d) +{ + return vgic_num_spi_lines(d) + NR_LOCAL_IRQS; +} + int domain_vgic_init(struct domain *d, unsigned int nr_spis) { int i; @@ -131,6 +262,36 @@ int domain_vgic_init(struct domain *d, unsigned int nr= _spis) */ nr_spis =3D ROUNDUP(nr_spis, 32); =20 +#ifdef CONFIG_GICV3_ESPI + /* + * During domain creation, the dom0less DomUs code or toolstack specif= ies + * the maximum INTID, which is defined in the domain config subtracted= by + * 32 to cover the local IRQs (please see the comment to VGIC_DEF_NR_S= PIS). + * To compute the actual number of eSPI that will be usable for, + * add back 32. + */ + if ( nr_spis + 32 > ESPI_IDX2INTID(NR_ESPI_IRQS) ) + return -EINVAL; + + if ( nr_spis + 32 >=3D ESPI_BASE_INTID ) + { + d->arch.vgic.nr_espis =3D min(nr_spis - ESPI_BASE_INTID + 32, 1024= U); + /* Verify if GIC HW can handle provided INTID */ + if ( d->arch.vgic.nr_espis > gic_number_espis() ) + return -EINVAL; + /* + * Set the maximum available number for regular + * SPI to pass the next check + */ + nr_spis =3D VGIC_DEF_NR_SPIS; + } + else + { + /* Domain will use the regular SPI range */ + d->arch.vgic.nr_espis =3D 0; + } +#endif + /* Limit the number of virtual SPIs supported to (1020 - 32) =3D 988 = */ if ( nr_spis > (1020 - NR_LOCAL_IRQS) ) return -EINVAL; @@ -145,7 +306,7 @@ int domain_vgic_init(struct domain *d, unsigned int nr_= spis) return -ENOMEM; =20 d->arch.vgic.pending_irqs =3D - xzalloc_array(struct pending_irq, d->arch.vgic.nr_spis); + xzalloc_array(struct pending_irq, vgic_num_spi_lines(d)); if ( d->arch.vgic.pending_irqs =3D=3D NULL ) return -ENOMEM; =20 @@ -156,12 +317,16 @@ int domain_vgic_init(struct domain *d, unsigned int n= r_spis) for ( i =3D 0; i < DOMAIN_NR_RANKS(d); i++ ) vgic_rank_init(&d->arch.vgic.shared_irqs[i], i + 1, 0); =20 + ret =3D init_vgic_espi(d); + if ( ret ) + return ret; + ret =3D d->arch.vgic.handler->domain_init(d); if ( ret ) return ret; =20 d->arch.vgic.allocated_irqs =3D - xzalloc_array(unsigned long, BITS_TO_LONGS(vgic_num_irqs(d))); + xzalloc_array(unsigned long, BITS_TO_LONGS(vgic_num_alloc_irqs(d))= ); if ( !d->arch.vgic.allocated_irqs ) return -ENOMEM; =20 @@ -195,9 +360,27 @@ void domain_vgic_free(struct domain *d) } } =20 +#ifdef CONFIG_GICV3_ESPI + for ( i =3D 0; i < d->arch.vgic.nr_espis; i++ ) + { + struct pending_irq *p =3D spi_to_pending(d, ESPI_IDX2INTID(i)); + + if ( p->desc ) + { + ret =3D release_guest_irq(d, p->irq); + if ( ret ) + dprintk(XENLOG_G_WARNING, "%pd: Failed to release virq %u = ret =3D %d\n", + d, p->irq, ret); + } + } +#endif + if ( d->arch.vgic.handler ) d->arch.vgic.handler->domain_free(d); xfree(d->arch.vgic.shared_irqs); +#ifdef CONFIG_GICV3_ESPI + xfree(d->arch.vgic.ext_shared_irqs); +#endif xfree(d->arch.vgic.pending_irqs); xfree(d->arch.vgic.allocated_irqs); } @@ -331,6 +514,8 @@ void arch_move_irqs(struct vcpu *v) if ( v_target =3D=3D v && !test_bit(GIC_IRQ_GUEST_MIGRATING, &p->s= tatus) ) irq_set_affinity(p->desc, cpu_mask); } + + arch_move_espis(v); } =20 void vgic_disable_irqs(struct vcpu *v, uint32_t r, unsigned int n) @@ -538,6 +723,8 @@ struct pending_irq *irq_to_pending(struct vcpu *v, unsi= gned int irq) n =3D &v->arch.vgic.pending_irqs[irq]; else if ( is_lpi(irq) ) n =3D v->domain->arch.vgic.handler->lpi_to_pending(v->domain, irq); + else if ( is_espi(irq) ) + n =3D espi_to_pending(v->domain, irq); else n =3D &v->domain->arch.vgic.pending_irqs[irq - 32]; return n; @@ -547,6 +734,9 @@ struct pending_irq *spi_to_pending(struct domain *d, un= signed int irq) { ASSERT(irq >=3D NR_LOCAL_IRQS); =20 + if ( is_espi(irq) ) + return espi_to_pending(d, irq); + return &d->arch.vgic.pending_irqs[irq - 32]; } =20 @@ -668,6 +858,9 @@ bool vgic_reserve_virq(struct domain *d, unsigned int v= irq) if ( !vgic_is_valid_line(d, virq) ) return false; =20 + if ( is_espi(virq) ) + return vgic_reserve_espi_virq(d, virq); + return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); } =20 @@ -685,7 +878,7 @@ int vgic_allocate_virq(struct domain *d, bool spi) else { first =3D 32; - end =3D vgic_num_irqs(d); + end =3D vgic_num_alloc_irqs(d); } =20 /* --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483615; cv=pass; d=zohomail.com; s=zohoarc; b=ibiuBGlQcGPd/p+tZXLH8/5/X9OYoyEvuXpyRnJ6BFQn18PtbLGB9fyK4D9pasJQwo33sVCigc6DggxzeyodoBdpdcOZQkqCCEHL/Y4IDKCPdsDMHukJ/OHpn6yOpuBVjbSF6QP89hTzmYA5WaUTBRFxq3T4FfGWPfbYyTF+o5E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483615; 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=BcLamhaMGRuLic7G2+8q7rQFj8uWCO1JFGbxrmGBljk=; b=cMYXdu4hAfzVZPus2AdIIvdkrnBuzoQjAZW46rjHpi8W57b/3VwDfu8o6M4m0AB9v2PMOOxfmEbAyTRvy2QkXTWLg2fouTew7YtfdQ8b02mFiZztg4S/eue14XuNF+aQRWyVQB7HON8Aq1wnn+ouDhaikh1dpZExD7IBsqmS2sg= 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 1756483615951219.5799858835171; Fri, 29 Aug 2025 09:06:55 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101664.1454693 (Exim 4.92) (envelope-from ) id 1us1cf-0000hu-Fa; Fri, 29 Aug 2025 16:06:41 +0000 Received: by outflank-mailman (output) from mailman id 1101664.1454693; Fri, 29 Aug 2025 16:06:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1us1cf-0000hQ-B7; Fri, 29 Aug 2025 16:06:41 +0000 Received: by outflank-mailman (input) for mailman id 1101664; Fri, 29 Aug 2025 16:06: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 1us1cd-0006AC-IK for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:39 +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 247dd5d5-84f2-11f0-8adc-4578a1afcccb; Fri, 29 Aug 2025 18:06:38 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:35 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06: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: 247dd5d5-84f2-11f0-8adc-4578a1afcccb ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nrVmbo0R6uihDUoHCUFwE8/JqQgG0m+bsou6YbicHCbTW8FUbckNDlSjFPKEyI6vBnjsvKPI2xECkPNz62UcTzH6GVyRaD/mUF/uPZHzgZb8yjcOcBG3bN7GAXrcQt622umtNmry4xqFVTKSqe/HcKUS12i++7enPLQ8LhNSe9p4X3J0BPFEDyMFvm5PcZU9ppDSPJ2gH3TIEbd+2bSjzXhbVzWLTkxoFFX31s51bndv5FWRxVcf5yXtM46ocQWwWWvJx0MY9YKcUew1hvR60xAe5M7q9tVQezxyNvl96UcmTV4DA2hQeQAJEwxfhDTaRj/JL+K/tBwnvKJW+8vlEw== 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=BcLamhaMGRuLic7G2+8q7rQFj8uWCO1JFGbxrmGBljk=; b=oVgYZtMNJITWKOdu5QjEbWyEZXnicgKdE5V22A5q4hhsRcROTC6/mftxAa3tB9WmWX7bjSBCSRUEANQ7B9GpgyWNzBq8Hgy0Kg8+E53cSmzInhezReeoDXcIN8pC6E30tdaHIl2+DteqFNYpQGZsRFyOdO1RWy4iiR/v/O8lIk1cpJeVx+KitYjhy0Mwg1fRdWw9DTcpMNRi15/epo4IV5ojjvYTBCrkjYGQsuzsMRK6BXLkfAoZ1wLKwstPEx3QkFwt20bgHMtoCVKqmGbZl7nqaUWQQ8t1tqJjAS/SbRoEhlb6afnYtaKzBAhXReP2vXIl0hWes2qlkE/MCS7hqA== 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=BcLamhaMGRuLic7G2+8q7rQFj8uWCO1JFGbxrmGBljk=; b=dGtiqmdNry0O3s6iB6L/K4JJR0fLQDgwa4vfmudjiOXczWN+DMSg82haCmtXcEDDobbL0wpZx5Ia5rx0541uRvYYNRP8peIrjeLT3Fj5oWHKEZXE3BMY25FdRdiivISUWDsxFuyRB/r5EbLwr7VGRzgxg+XYkumcGf7WkQB5IoCLtHrim3bjmRScKDPGidyt2wHlorcOpIYqoYopkBfdYGRMxSW5E/6Ukg1LvBH2lFDAQ9YU2yi6d7bB8Yjf4MaZhPlHMycejWR0IIxLTa8z32vO0DxssEVXt/yN7sGqUgaKzupqjOCGfu3xh+Npq5sc7q37fekop2DOu94lYALojQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Oleksandr Tyshchenko Subject: [PATCH v5 09/12] xen/arm: domain_build/dom0less-build: adjust domains config to support eSPIs Thread-Topic: [PATCH v5 09/12] xen/arm: domain_build/dom0less-build: adjust domains config to support eSPIs Thread-Index: AQHcGP7ji/JPLIO80UCW93TQMdVywQ== Date: Fri, 29 Aug 2025 16:06:33 +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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: b0a8a0eb-1432-41c0-c828-08dde7160625 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?74/phzvzBspFaqo9vwrJapE1/3a7VjTltBWkK9ZkAUsleLtY67hhXi/wiO?= =?iso-8859-1?Q?7C1s1fP5+dKIl4wjw9GPyFMSFhRG0G8A6v48F9BUxvehzC5kSzI/vET8xg?= =?iso-8859-1?Q?+Oekfo74eALNiA8zaMmjVmb/0xUKzzXD3vE1e2Q+bKhiNrq+9nieNhVI1A?= =?iso-8859-1?Q?zxoNqao/dCuS6PmKUz2xW2Ajfiw849dEThieHN+IGpA85TXIzoEX1laH5r?= =?iso-8859-1?Q?rI8bvjpr6cRFJA2JjvefaRny3RgQLQ4bBi24PCvQPv1Kxi+RYmfN+IipGB?= =?iso-8859-1?Q?q9CQXdR+GpmULfy1KF3RmlrBV3gUohmPIUC805nxk6OoQ+sM60PK3k9g3K?= =?iso-8859-1?Q?9tWWy4VKhbGYjf80uJ57WbtdXlqvmIuFrja10POD1NfY1Jf46orh0Wqfjh?= =?iso-8859-1?Q?+SGw1ED5ugqGuPJv4Q8fmaLOf1bgAxIwECCDmvtbPVIiGI7I+kXy5vRtip?= =?iso-8859-1?Q?4SpyS+5Eyo0jNqjcPUChJ4k51ZysuIBMMh8ZvieMZGoyNbKMI+UjwR9iLl?= =?iso-8859-1?Q?Sas1ysyz22N/DYketaUqq1/UEh0oexyYAbq7IGE9DVup5FskIBQrOUFEPs?= =?iso-8859-1?Q?3pZPPubSRt9QnluHRTntIdyQ+r5rcY5iRR4ItZGVs/3s7wZxVAfhoFEu44?= =?iso-8859-1?Q?X5+iDiK+/XmRrtbz+tJDXG6zIvlWbqjcdVCQhAOujkvj8UreD1Acw0d7TI?= =?iso-8859-1?Q?KvQLdqLX9VsCHeYTja7qs3P/S0axAIAx8m8zyQv886bhOuLCRwI0akPSDK?= =?iso-8859-1?Q?eU4VwpjcV7dLqQrDoCHQhr3jAr8aQuw89XvNf497+BzpTc1Jb6K+2nIhO7?= =?iso-8859-1?Q?m911tsXoxwrpzD22a+XePLZK4DcqlearVpqv5BSj2VQ4RvItRFAPfwA8lZ?= =?iso-8859-1?Q?Tv4usE1IZtBbdTrIqTF2kPVGvIunafdtQ6luRj5l1pTngyMMoHVvS4PlL5?= =?iso-8859-1?Q?F9AJpYmb1CX3249ig3nPzR0reBVlGGsiQm3J51CpL0LVrfvQYGYBDRgSHV?= =?iso-8859-1?Q?Cu11/ApFmguTuwxsxoKC61ogY67LjqCF25h6g6o7wbzWOajrZqOThvFo+J?= =?iso-8859-1?Q?BQuX7vAD4nD5DdvINz7w5PcAc17v+1aMc8aGloO84JVVSfA0y87kl7/2k6?= =?iso-8859-1?Q?uP1UOFocgvnOQES7yqSCEMEMNvNxjQwhWw9LU7K9VgranRhY/sUPdny5VV?= =?iso-8859-1?Q?ffnZNttpHTRml9v1/+5Dt6w1f7+rPByVUxtlM0pm4KanL5frdM10SXv7R9?= =?iso-8859-1?Q?8g7dvepklEe7A5BTG4USjLU48cX0VOwbcCQHYVfZd7r8W73FXiqi8CFNr0?= =?iso-8859-1?Q?aT11q8GToxv49mbxM7eIQsLtDt2kg9gQ7qHUNw/wcCBXSMZaBHlJ/8FcZj?= =?iso-8859-1?Q?+NpbISGex8ieHJSsuid2twizkWQy48iV7sSxwGznTeBdRcx2r0y/hEWh53?= =?iso-8859-1?Q?pEw5CM5N2sE/JdUtotgJkdQcRILNNiOZmfVlXcI1572fDzJdC/r7ZTe1JZ?= =?iso-8859-1?Q?dY0daveKNAzU0Vw98glYQzPwOMUjOA2aXQCGfJOIn29A=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Oc9GdxJbs6eFC9XLEHQrxuIe7KMuUUCVBDYLp8jadUhWldTgdPTZU+9kAg?= =?iso-8859-1?Q?s+unOVDReE3wHa/gUf5sAZUAx81ZiU7mQDXo1ATi4HseTfzP/vVuHTs5rq?= =?iso-8859-1?Q?Riw5e+z6LSoCH42LhA67/ouM1t4a2oy/kpd7SfHhCTlfvU6Iaz3DQg0E1W?= =?iso-8859-1?Q?JovhcAZd3OUhjq51kXmG4y/4PKQ/EF95CTziePYRL4fn/bCVLv1M0mq39z?= =?iso-8859-1?Q?ph2BnN4cvj+xCMCFCgncopr3Je7Czx1fQvTty99f7QhHYCeBp1G09nHdCu?= =?iso-8859-1?Q?4EjpHBiO3OUc9/BBtzei8v9YxvChZqGhXgAdc1bHb2ISm/i6nwqKYfNNaH?= =?iso-8859-1?Q?E7WJhgLxYYyOnhfPJ2mDS3p7gQi5FR5/wUTPE8SNmoRSnaDtOjUMjo9mhf?= =?iso-8859-1?Q?Ek5ASxifDeevM4waESqBczoIa7yEauqp5fHXfLqZRe78PbiCnUVf4FQ8z9?= =?iso-8859-1?Q?Iy6SlzLK1nmscCi8R7UTaJXvoQJObVS0BpkTZOhQJwzgnZefP4iUbd5NKO?= =?iso-8859-1?Q?MyK0Gz9ZudvXVfATTMlfZUpBHjPFvJiS+4F3fJc07jN/TT3q4jdSy4YqGc?= =?iso-8859-1?Q?9yoUyTkygYkAddW4DuHaJtWWjwU1dle4gynen8eyYlxy/iOLx9V3Sefz7U?= =?iso-8859-1?Q?nOSBEUPNqj6Z9DNv6ecqEQ6sptpezHph4h/kPtmjTRGtXwPiZJmccTuGjt?= =?iso-8859-1?Q?jwCg0NVYv0hLxp+JEbOUusFL8/AorxgLlIZ5lUNvUsm5zur3MrHbu8P9ed?= =?iso-8859-1?Q?SmHHqGKRUdwAqs7Mbj4Al5P/mtjXLNhw9MK3vAmQIiY9SzodhjgUM2cxGg?= =?iso-8859-1?Q?x5pyQI6moq8mplf/5xV+JH9z9GYHTnXswzgzVzQcT4cZMV0npSoOJOaiwD?= =?iso-8859-1?Q?Z71ooLWkFX4r2KlPCDPHN/c6ZAW/wcbqzQiboz9ydggkU5pmsmsWOsHCzG?= =?iso-8859-1?Q?b+jFANuJrUe/1vGc53Y0LdNLN2e03VE7Cyhav4t3kPSRPB2QH/gjeL4AK1?= =?iso-8859-1?Q?UB6LavSSP8BLC4Qbi/+jM3W+kU7hLRmzSYNjoOzS25x+ONWwU0lMS8UjSL?= =?iso-8859-1?Q?6DMsOY46nSMJrNgYiJqJc3kmSvu/0E6tK6HoHoUJ7S3c1q2eDvJQrzzD0R?= =?iso-8859-1?Q?0mf0L2Gt4/Srk5dAsAXSVrSzg5iG3DEJqLimC26VOrHJf2MUuptwAUOKfA?= =?iso-8859-1?Q?KcGegNTnDYPEeljY+W8V2CNHEG2gOAMV+2+29CaBhO21FqyRSm5/t28qwf?= =?iso-8859-1?Q?GI0dpEWupjBJ3jn4M0/q4XX2Q5I7QBdCVtKSSggGIx9PNnHkbqIMI11Uxi?= =?iso-8859-1?Q?zIg+VA6/jYcX0tTWHjvkXO3ZqCkKEZtiqSZX8Uk5t7dQrxjYHFAQA50DC9?= =?iso-8859-1?Q?De30c9Q219IeE/iBsidD5tnUVRwUZljzCX7hAhc6RbqOh3S56If+6AtXo7?= =?iso-8859-1?Q?UNGCG4uBc9zZKjVoaZp4oge6+S1cBB0+ce1ngJXkaSz8sMsnAjxdc5D1x4?= =?iso-8859-1?Q?lxfQo7hVdsMH2dw3+SeZCnmhgqX6ZmLDSmRopwww2iwHb9uQQcJSYl+gT6?= =?iso-8859-1?Q?judwHxNvLEqsvvPNZGCXXkIBTDIFIlj/m5498P6/wcLKeZ27/kP+hO/CLL?= =?iso-8859-1?Q?0X/T6rrMgKLe2JO/1l32H86V5XenigiqTX9XZ1iC0gZrPNkZuZY0fceF74?= =?iso-8859-1?Q?o5IOE5sA89hcEHB7GrU=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b0a8a0eb-1432-41c0-c828-08dde7160625 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:33.3752 (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: rW/hjgv+jnFRsi9mOXX8AC/K0acM1B5xVfLvjnLmDxq9F9ZLy4crT9RJx6Fy2xIEqDdlemCmYhLx1XUlG4H4cpzUVuM+s9wqC0vcskB/oM4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483618168116600 Content-Type: text/plain; charset="utf-8" The Dom0 and DomUs logic for the dom0less configuration in create_dom0() and arch_create_domUs() has been updated to account for extended SPIs when supported by the hardware and enabled with CONFIG_GICV3_ESPI. These changes ensure the proper calculation of the maximum number of SPIs and eSPIs avail= able to Dom0 and DomUs in dom0less setups. When eSPIs are supported by the hardware and CONFIG_GICV3_ESPI is enabled, = the maximum number of eSPI interrupts is calculated using the ESPI_BASE_INTID offset (4096) and is limited to 1024, with 32 IRQs subtracted. To ensure compatibility with non-Dom0 domains, this adjustment is applied by the toolstack during domain creation, while for Dom0 or DomUs in Dom0, it is handled directly during VGIC initialization. If eSPIs are not supported, the calculation defaults to using the standard SPI range, with a maximum value = of 992 interrupt lines, as it works currently. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Reviewed-by: Oleksandr Tyshchenko --- Changes in V5: - fixed minor nits, no functional changes: updated the comment to make it clearer and corrected a misspelling - added reviewed-by from Volodymyr Babchuk and from Oleksandr Tyshchenko Changes in V4: - consolidated the eSPI and SPI logic into a new inline function, vgic_def_nr_spis. Without eSPI support (either due to config being disabled or hardware not supporting it), it will return the regular SPI range, as it works currently. There are no functional changes compared with the previous patch version - removed VGIC_DEF_MAX_SPI macro, to reduce the number of ifdefs Changes in V3: - renamed macro VGIC_DEF_NR_ESPIS to more appropriate VGIC_DEF_MAX_SPI - added eSPI initialization for dom0less setups - fixed comment with mentions about dom0less builds - fixed formatting for lines with more than 80 symbols - updated commit message Changes in V2: - no changes --- xen/arch/arm/dom0less-build.c | 2 +- xen/arch/arm/domain_build.c | 2 +- xen/arch/arm/include/asm/vgic.h | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index 69b9ea22ce..02d5559102 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -285,7 +285,7 @@ void __init arch_create_domUs(struct dt_device_node *no= de, { int vpl011_virq =3D GUEST_VPL011_SPI; =20 - d_cfg->arch.nr_spis =3D VGIC_DEF_NR_SPIS; + d_cfg->arch.nr_spis =3D vgic_def_nr_spis(); =20 /* * The VPL011 virq is GUEST_VPL011_SPI, unless direct-map is diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index d91a71acfd..39eea0be00 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2054,7 +2054,7 @@ void __init create_dom0(void) =20 /* The vGIC for DOM0 is exactly emulating the hardware GIC */ dom0_cfg.arch.gic_version =3D XEN_DOMCTL_CONFIG_GIC_NATIVE; - dom0_cfg.arch.nr_spis =3D VGIC_DEF_NR_SPIS; + 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(); =20 diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 912d5b7694..3aa22114ba 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -347,6 +347,25 @@ extern void vgic_check_inflight_irqs_pending(struct vc= pu *v, /* Default number of vGIC SPIs. 32 are substracted to cover local IRQs. */ #define VGIC_DEF_NR_SPIS (min(gic_number_lines(), VGIC_MAX_IRQS) - 32) =20 +static inline unsigned int vgic_def_nr_spis(void) +{ +#ifdef CONFIG_GICV3_ESPI + /* + * Check if the hardware supports extended SPIs (even if the appropria= te + * config is set). If not, the common SPI range will be used. Otherwise + * return the maximum eSPI INTID, supported by HW GIC, subtracted by 3= 2. + * For Dom0 and started at boot time DomUs we will add back this value + * during VGIC initialization. This ensures consistent handling for Do= m0 + * and other domains. For the regular SPI range interrupts in this cas= e, + * the maximum value of VGIC_DEF_NR_SPIS will be used. + */ + if ( gic_number_espis() > 0 ) + return ESPI_BASE_INTID + min(gic_number_espis(), 1024U) - 32; +#endif + + return VGIC_DEF_NR_SPIS; +} + extern bool vgic_is_valid_line(struct domain *d, unsigned int virq); =20 static inline bool vgic_is_spi(struct domain *d, unsigned int virq) --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483629; cv=pass; d=zohomail.com; s=zohoarc; b=LinganPjIRaMRilYD7y/gNLK6T0E4NWyDD0pYtJfhmVNVYm+SVfz+lBea7UUu4+QQXoX4yDbH2T1TgqpVqpJzDD+1L990nyalVWHI19D+GFqVPQj2b78QLD+03FgjUkO/IE+xkXRrldNF5P5qUQijaSuhQWvyeZ/BbWMxN3pE10= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483629; 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=26ysfIiJ72vbvI1GzH7i91C/GKYdCtgUiMqtSwVMkNI=; b=nW+fkRl7V8e0j16/fD281zypeVevFj+n6fkDl39R6Tx3vb4jErvNWqgSrk5XT7MhJ4oxHOXR9exCUJDGZgTHajk/004ZiSEGuW8ahc+GgzFwUAqqdLZ32TbTvt6FIyM1skQp22bLaPoqB9b3jrqj7srzY4cfnBpoX6kq+Qjkvhg= 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 1756483629766802.8231397572001; Fri, 29 Aug 2025 09:07:09 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101670.1454702 (Exim 4.92) (envelope-from ) id 1us1ch-00019h-Pt; Fri, 29 Aug 2025 16:06:43 +0000 Received: by outflank-mailman (output) from mailman id 1101670.1454702; Fri, 29 Aug 2025 16:06: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 1us1ch-00019O-LL; Fri, 29 Aug 2025 16:06:43 +0000 Received: by outflank-mailman (input) for mailman id 1101670; Fri, 29 Aug 2025 16:06: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 1us1cf-0006AC-Ik for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:41 +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 24e67168-84f2-11f0-8adc-4578a1afcccb; Fri, 29 Aug 2025 18:06:38 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:36 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06:36 +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: 24e67168-84f2-11f0-8adc-4578a1afcccb ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u2KyeoCFZnjUCIvYfaGo68Sur0kR3CTSrOTEL3q+RpjUDDe57cDfPVyNxUYZ9xA3kfq0+ASVS0a0LMPhqFsThRjLdHiXsikaziUgnjWFvFLv8Fdo3Jceh2sSObJmGnLvLQhPHc6mgyBwBEhHy9BHamuhcvs7Fapz/DB2moP7058Xk28lThKJkzsQOQKhDJ8mxTebBd21ZXlIB5iqhYgkp1VVeYycqFWVsWoSe3xE3vV9FsQIAbknqUOiYFyfBqHoZnqPyZ1TM8r13qkikuYZA69m0Nm/tUFG8ZaH4uk2mglIQA3yjpXsunydiNm+QM73JiirhftuLAKoZrqPiC4BfA== 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=26ysfIiJ72vbvI1GzH7i91C/GKYdCtgUiMqtSwVMkNI=; b=agsLntYIW0CzCMNm/3Y6EUc5VXepkH0FHSdxMt00tSYim6yn6dUvyXy8GxQz1JNWC3S85XlbHyT7FW2taELOe1/sr244wg4n0Hf2556AIAWy4Tv7AMd6LbfqtYFgRinysg2cJ4RUnbzrupzY+EY9dVbednngmxCmg1OpCL0ZWk+x2FeIpjy/elYasZNLBc1cR/pjX+Tma2WWK7jwBj/+wBB20Et6NKPOObTZ0sOBnssd89Je9OkYl8XXoZpZvYz1q8SG0rG0etfS4jj8/z9y1i2zZuyycIZ3r8taNfHB1+uR1tkXgMpFvsxvD3xEdmA/B2veV3OfN9eXXBgUdIbc4w== 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=26ysfIiJ72vbvI1GzH7i91C/GKYdCtgUiMqtSwVMkNI=; b=VDZu1B1OGMNZAxsi8NeC/fYGBsB6/Eb76rAHyLX9LmjsnyBYfVagVpu77FNhuKs50xOJS8mYk90MZzrZKCWK28X3dcdiYMOqFcgpzPhYvWM36XFzbYA8Heibw9mWPfWNqu7Ygo62YKRXyEcJ30tW5XPoB9WgTdpHETYWJ3vEnfDRg/GSBK065aIzgSt2sN/6Glk4e9qeqnUGWGlofKBPUumwEPICOxJ2wTauQLtcYvRCIw26fI/aoxTSlhEDXSPIPhnj6H7Gi8z3pRXYQDkzOXBhOZNFy2hE7yY9z49v+sqcAZaybubGWIL2GghJ/GBUAYimSu8Ia2i/stdgu501Iw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v5 10/12] xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers Thread-Topic: [PATCH v5 10/12] xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers Thread-Index: AQHcGP7lSnKp01vKiUyg8GCh+goOAw== Date: Fri, 29 Aug 2025 16:06:36 +0000 Message-ID: <6fda233a1a2f0362062ff9a6e80ee223d33815cf.1756481577.git.leonid_komarianskyi@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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: 379aa9ff-16e7-4af8-1c02-08dde71607c0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?Cg6tRIMu7T3j9a++iNQ2Cu79l4mu6a4PrOBUQHa0zoPTTso7IPDUR+e9fs?= =?iso-8859-1?Q?1fXuOFrLxiIHFjQzIm8GXJ30mMBdBICoNDPLcFQA/rh5b0tZK5R4lcOBke?= =?iso-8859-1?Q?MmA5yomvVxzqXNDwlzyiAKtnPwhSUjYGMelB+mvVSqahQ4A3j0iakm99Og?= =?iso-8859-1?Q?PvabDEslbgdtygQP/LHVDZvUyQpx1bSQ9/ZmmSZOQEgiYYe0LnuJ+0ovRg?= =?iso-8859-1?Q?POxQ82ggJj0U4vQ4oUfTPBahoHGssocC+Fu+geZPs2KYddXBTSMxVc/blP?= =?iso-8859-1?Q?UNxI9fZGFcTlMnBbr7vAJfWRxB0olA14GOCpnQUbZIT8PBEdLYjQ6SHSfy?= =?iso-8859-1?Q?pVNYP0jfe7qbXTeZwXQxWfmwgcl2qvAG34vVSyXwNKypd/qSrkV/i21N+w?= =?iso-8859-1?Q?2dtNw8qcjzYcvjLJVcK0JgRuNVy7ItJAUbIsDfReR7R+TiCAOByVqEzWIa?= =?iso-8859-1?Q?KHAcDhaDpdfxMqCK2YV7Pd3BELbCYu44v+uvnmtXRF2nfdhbP8VVWeyWcp?= =?iso-8859-1?Q?xMYOWkGCira0qLx16prKXq3ztcUsoJagkf7XtrW8jir3n5GOfQ226QbMBN?= =?iso-8859-1?Q?1UbgwmaAEZa2mj6dnLes4YlRohqUeKXCN4ZrOtguh7o1Zjurt3SGskUleP?= =?iso-8859-1?Q?285B2lY4bM63sTbDX42ouOcvFOC4VDQZCbvu8H9nM9VdoVgHUjgMvFY1Dh?= =?iso-8859-1?Q?SOMhEfXtc7K2AZCHPDn7eAbreMmB3Ew95M3EY8sqPoJnzIi039/Xt9/zcO?= =?iso-8859-1?Q?y8tvhfcBvx2zV18xIeXDs6a9MAIagQJ7XLdcLMi4laZ32jvaUfC6MHYflQ?= =?iso-8859-1?Q?X4TJtPS0UF6ZZ7jZhH0WeYWnoXDguGf9K8V0huymN282NTUwZjNXYTQlGO?= =?iso-8859-1?Q?QL8udUFPleHiwFaep5yu27KTOBgscauYqYU+0ktblmBUpH6WyvQTDi/ARb?= =?iso-8859-1?Q?KDiD7GNVQqmRcZHyyOj4bvw5baPLNY8WdaZRjNV5r49rY4IF3qOikjgx/p?= =?iso-8859-1?Q?InS2oFM4J9ge97MbArDvWwQiWi3io8g/cXv369vfjwDtmYX9gz0W0qWYSE?= =?iso-8859-1?Q?kofAwW6/bBoTgHMver40VheECGmMghehF8z+DC/MmweznkT7Of5pvB0Avh?= =?iso-8859-1?Q?EKxLRvPV8CqO0pfmCrKVASHnHEp7llXGIDTGVyyV5K0XTUGHU7OJznn7Zk?= =?iso-8859-1?Q?aUWAaafBFIXIhDxAQFGYhRW50D4vOTAHZsGRBohXvxnEMk7xIyPOgib+Ux?= =?iso-8859-1?Q?6VIef0EPnPGaq6DwBh2BY7AFmKzqJUvQA/T8U8kCf/lVtEHtSUnisc3tAF?= =?iso-8859-1?Q?TXl90PVnGTT57u95M1V2xwElGJeCqt084VkDc1cU1adRs5WTVIHwnKb7CU?= =?iso-8859-1?Q?gCCowme+KuKDYFi0MENYn8tnF2erzZUG1H5FVj7g/8N1xNQu9ffSQgSg6q?= =?iso-8859-1?Q?kWTtV0vebqbstnjCL+fkTN/AbpQ0iihjWezH4ofR5wtgd4RNLuIIWtSIO1?= =?iso-8859-1?Q?JxzbxzbTqPL82kNumci51E5HoZpz3OdAuHuBnGabGaEQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?r/aOqyQaRwBqjXdxf4ddAsz/rgGIEvw1Td8PAFE7bykDhj4kYTgu0oyB+P?= =?iso-8859-1?Q?C5jjxtGfEhVVA2Eam7i+weRyb1lNmJ46dsUFuef9wUufjw4OsUGoEqAA2g?= =?iso-8859-1?Q?J+fCtat+ToTz/owrfMIBAxf3cRtklBIFtBbkjOu86CbG1BhGyf+c/JDPhc?= =?iso-8859-1?Q?2U7w4zOqc2EX59ILPJ06Fa3p+ZFNqoV335ca/kwZ4z0Kzg81bHl+yQsBnF?= =?iso-8859-1?Q?PdRH9x0mm559qrK/E3Oz0hc/ArzK5VRK8Q5dWM2z+ghebqGiPPcU9a31oA?= =?iso-8859-1?Q?eh4ubDQxwf1snb0TI9r2fU/Quxdp1Igpe8tKxPyYMElnj9Vj8GdMWJzEHj?= =?iso-8859-1?Q?kge4d1vo9YJVjNBuCQKcf3M5AzyS+C4FDzfSrwTju/lRkHIb4T8iOjQVOQ?= =?iso-8859-1?Q?s7woUxRKqYtksvUuvHQgCFKuMRw36FWuXZQKNNoP6HzrepBeYkZ8MuXgK5?= =?iso-8859-1?Q?wOjp2GyY5mV+y+xB0sujRcVjC8lpv39dPnCAPtCRf7dOzATOqtlxp/v+w5?= =?iso-8859-1?Q?UjZVcX1Q2kKIjD5gECW4PoNXlez5R5kNVgzibdTQJGJ1F+VGmKLaFGfV1A?= =?iso-8859-1?Q?NTLzBew0o5dGmFByyzgguWwaQOqM8JECImuPAiayyVajFaoymTzaZQouge?= =?iso-8859-1?Q?w5uGMDYLWtIfcD7CuneAeYltL5Tq86FkiaMSWnMz78Ezfl571k95qv2wzt?= =?iso-8859-1?Q?Wk7XrwvnCVhRpLvkI/R5DVQH0UdmylyQNYpTxgERxAZIBDwoI0laWQNBNj?= =?iso-8859-1?Q?ocu5LgN1zUTL6MA1rq4HXYWlJQLx9ZcagXFpI0ysl87MJ53qq8UpCAfeUU?= =?iso-8859-1?Q?OMpOFZm15v4ClIkoPAAr4+/FShte7rKL0zGPYYc4TMLH0D86EsTJsnAqN7?= =?iso-8859-1?Q?GUATOLUJcxMG7Bxhls0pw0aVUlr19MmXdmZzvcAovKqi8NC0omD2pmpNY1?= =?iso-8859-1?Q?XiL8XyikQmfDaG/Q2JHbbty+DEUbhkXw14sddro6qG0/YfOBPrJCRK+Rv2?= =?iso-8859-1?Q?uaF9xs9ey+6qpCvsjpOhdwPsJ9CeSswBc3KGRKdxQamVuUc70JXMCHp86I?= =?iso-8859-1?Q?LzdrgO77uJdWjwYSjNNuBfqhNk6y1eooYG7/mPlppmDSeE/Q0HxwA93sDf?= =?iso-8859-1?Q?VJImkFh8wwsIdnkVyIBQBHlOOLRsiomrMR7YdtysSyPPJHFIiwEdXOWXaJ?= =?iso-8859-1?Q?JL+AaTYK8x7JsHCaIfpn54Lex/X+q1xo9+Z1ymbw3VXkRuF9tBFoJxIoHR?= =?iso-8859-1?Q?ss6m9higEt1TAPI0KWJ3UQy/u6olSCXc9rwhwiz5dzTu8/9wS80uZMGfcq?= =?iso-8859-1?Q?RAZk6BqDxGIQLNsDLwPMFQYvK3bghvA6S29ltCYbVjfWC+toqZeLTJZ+I/?= =?iso-8859-1?Q?x4Axc1xn1arvq2tnyWTxps6Ffuti+K9PrmoUOeYZk9MVdO3ckCNjEl6Vq4?= =?iso-8859-1?Q?JRQN/XAegR3PyoTR2n3tJaeqSmBTAjBSJNtKZCdeGp4TyNpftERGiJj5zg?= =?iso-8859-1?Q?fcvV0WMG+NthpGsEn/RrzKwfDsNSjWV5l/MoPGalWyrNbsDJHPLPejtnUo?= =?iso-8859-1?Q?Uz7yc6MDzuAqVASLF5QJNC3qjppsF9XbC4AImtJKKHGC2NgQOzL3vFcE4G?= =?iso-8859-1?Q?YXTv91NVInUjTaFVj9gjlxW85XtM03kxXWnfPOjXJreE+vd/B/HNoZaNDW?= =?iso-8859-1?Q?B86oM3mSQ0VtSdc6XlQ=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 379aa9ff-16e7-4af8-1c02-08dde71607c0 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:36.1024 (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: hjsdLPD7iPkhvP0ZLoJWPm7J9nnLvnzn1SZYDGbVgDQTRHv1gVkv+Lhi+H5yAEeUl9CDb01LgD44ONdM2oxTW91zUkrb8Wig444fq4Q4uyo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483630882116600 Content-Type: text/plain; charset="utf-8" Implemented support for GICv3.1 extended SPI registers for vGICv3, allowing the emulation of eSPI-specific behavior for guest domains. The implementation includes read and write emulation for eSPI-related registers (e.g., GICD_ISENABLERnE, GICD_IROUTERnE, and others), following a similar approach to the handling of regular SPIs. The eSPI registers, previously located in reserved address ranges, are now adjusted to support MMIO read and write operations correctly when CONFIG_GICV3_ESPI is enabled. The availability of eSPIs and the number of emulated extended SPIs for guest domains is reported by setting the appropriate bits in the GICD_TYPER register, based on the number of eSPIs requested by the domain and supported by the hardware. In cases where the configuration option is disabled, the hardware does not support eSPIs, or the domain does not request such interrupts, the functionality remains unchanged. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk --- Changes in V5: - since eSPI-specific defines and macros are now available even when the appropriate config is disabled, this allows us to remove many #ifdef guards and reuse the existing code for regular SPIs for eSPIs as well, as eSPIs are processed similarly. This improves code readability and consolidates the register ranges for SPIs and eSPIs in a single place, simplifying future changes or fixes for SPIs and their counterparts from the extended range - moved vgic_ext_rank_offset() from [08/12] xen/arm: vgic: add resource management for extended SPIs as the function was unused before this patch - added stub implementation of vgic_ext_rank_offset() when CONFIG_GICV3_ESP= I=3Dn - removed unnecessary defines for reserved ranges, which were introduced in V4 to reduce the number of #ifdefs. The issue is now resolved by allowing the use of SPI-specific offsets and reworking the logic Changes in V4: - added missing RAZ and write ignore eSPI-specific registers ranges: GICD_NSACRnE and GICD_IGRPMODRnE - changed previously reserved range to cover GICD_NSACRnE and GICD_IGRPMODRnE - introduced GICD_RESERVED_RANGE_START/END defines to remove hardcoded values and reduce the number of ifdefs - fixed reserved ranges with eSPI option enabled: added missing range 0x0F30-0x0F7C - updated the logic for domains that do not support eSPI, but Xen is compiled with the eSPI option. Now, prior to other MMIO checks, we verify whether eSPI is available for the domain or not. If not, it behaves as it does currently - RAZ and WI - fixed print for GICD_ICACTIVERnE - fixed new lines formatting for switch-case Changes in V3: - changed vgic_store_irouter parameters - instead of offset virq is used, to remove the additional bool espi parameter and simplify checks. Also, adjusted parameters for regular SPI. Since the offset parameter was used only for calculating virq number and then reused for finding rank offset, it will not affect functionality. - fixed formatting for goto lables - added newlines after condition - fixed logs for GICD_ISACTIVERnE and GICD_ICACTIVERnE handlers - removed #ifdefs in 2 places where they were adjacent and could be merged Changes in V2: - add missing rank index conversion for pending and inflight irqs --- xen/arch/arm/include/asm/vgic.h | 4 + xen/arch/arm/vgic-v3.c | 198 ++++++++++++++++++++++++++------ xen/arch/arm/vgic.c | 23 ++++ 3 files changed, 192 insertions(+), 33 deletions(-) diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 3aa22114ba..103bc3c74b 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -314,6 +314,10 @@ extern struct vgic_irq_rank *vgic_rank_offset(struct v= cpu *v, unsigned int b, unsigned int n, unsigned int s); +extern struct vgic_irq_rank *vgic_ext_rank_offset(struct vcpu *v, + unsigned int b, + unsigned int n, + unsigned int s); extern struct vgic_irq_rank *vgic_rank_irq(struct vcpu *v, unsigned int ir= q); extern void vgic_disable_irqs(struct vcpu *v, uint32_t r, unsigned int n); extern void vgic_enable_irqs(struct vcpu *v, uint32_t r, unsigned int n); diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c index 4369c55177..b5d766c98f 100644 --- a/xen/arch/arm/vgic-v3.c +++ b/xen/arch/arm/vgic-v3.c @@ -111,13 +111,10 @@ static uint64_t vgic_fetch_irouter(struct vgic_irq_ra= nk *rank, * Note the offset will be aligned to the appropriate boundary. */ static void vgic_store_irouter(struct domain *d, struct vgic_irq_rank *ran= k, - unsigned int offset, uint64_t irouter) + unsigned int virq, uint64_t irouter) { struct vcpu *new_vcpu, *old_vcpu; - unsigned int virq; - - /* There is 1 vIRQ per IROUTER */ - virq =3D offset / NR_BYTES_PER_IROUTER; + unsigned int offset; =20 /* * The IROUTER0-31, used for SGIs/PPIs, are reserved and should @@ -685,13 +682,20 @@ static int __vgic_v3_distr_common_mmio_read(const cha= r *name, struct vcpu *v, { case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): /* We do not implement security extensions for guests, read zero */ if ( dabt.size !=3D DABT_WORD ) goto bad_width; goto read_as_zero; =20 case VRANGE32(GICD_ISENABLER, GICD_ISENABLERN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ISENABLER, DABT_WORD); + if ( reg >=3D GICD_ISENABLERnE ) + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISENABLERnE, + DABT_WORD); + else + rank =3D vgic_rank_offset(v, 1, reg - GICD_ISENABLER, DABT_WOR= D); if ( rank =3D=3D NULL ) goto read_as_zero; vgic_lock_rank(v, rank, flags); *r =3D vreg_reg32_extract(rank->ienable, info); @@ -699,8 +703,13 @@ static int __vgic_v3_distr_common_mmio_read(const char= *name, struct vcpu *v, return 1; =20 case VRANGE32(GICD_ICENABLER, GICD_ICENABLERN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ICENABLER, DABT_WORD); + if ( reg >=3D GICD_ICENABLERnE ) + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICENABLERnE, + DABT_WORD); + else + rank =3D vgic_rank_offset(v, 1, reg - GICD_ICENABLER, DABT_WOR= D); if ( rank =3D=3D NULL ) goto read_as_zero; vgic_lock_rank(v, rank, flags); *r =3D vreg_reg32_extract(rank->ienable, info); @@ -710,20 +719,29 @@ static int __vgic_v3_distr_common_mmio_read(const cha= r *name, struct vcpu *v, /* Read the pending status of an IRQ via GICD/GICR is not supported */ case VRANGE32(GICD_ISPENDR, GICD_ISPENDRN): case VRANGE32(GICD_ICPENDR, GICD_ICPENDRN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): goto read_as_zero; =20 /* Read the active status of an IRQ via GICD/GICR is not supported */ case VRANGE32(GICD_ISACTIVER, GICD_ISACTIVERN): case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN): + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): goto read_as_zero; =20 case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): { uint32_t ipriorityr; uint8_t rank_index; =20 if ( dabt.size !=3D DABT_BYTE && dabt.size !=3D DABT_WORD ) goto b= ad_width; - rank =3D vgic_rank_offset(v, 8, reg - GICD_IPRIORITYR, DABT_WORD); + if ( reg >=3D GICD_IPRIORITYRnE ) + rank =3D vgic_ext_rank_offset(v, 8, reg - GICD_IPRIORITYRnE, + DABT_WORD); + else + rank =3D vgic_rank_offset(v, 8, reg - GICD_IPRIORITYR, DABT_WO= RD); if ( rank =3D=3D NULL ) goto read_as_zero; rank_index =3D REG_RANK_INDEX(8, reg - GICD_IPRIORITYR, DABT_WORD); =20 @@ -737,11 +755,15 @@ static int __vgic_v3_distr_common_mmio_read(const cha= r *name, struct vcpu *v, } =20 case VRANGE32(GICD_ICFGR, GICD_ICFGRN): + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): { uint32_t icfgr; =20 if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 2, reg - GICD_ICFGR, DABT_WORD); + if ( reg >=3D GICD_ICFGRnE ) + rank =3D vgic_ext_rank_offset(v, 2, reg - GICD_ICFGRnE, DABT_W= ORD); + else + rank =3D vgic_rank_offset(v, 2, reg - GICD_ICFGR, DABT_WORD); if ( rank =3D=3D NULL ) goto read_as_zero; vgic_lock_rank(v, rank, flags); icfgr =3D rank->icfg[REG_RANK_INDEX(2, reg - GICD_ICFGR, DABT_WORD= )]; @@ -782,46 +804,81 @@ static int __vgic_v3_distr_common_mmio_write(const ch= ar *name, struct vcpu *v, { case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): /* We do not implement security extensions for guests, write ignor= e */ goto write_ignore_32; =20 case VRANGE32(GICD_ISENABLER, GICD_ISENABLERN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ISENABLER, DABT_WORD); + if ( reg >=3D GICD_ISENABLERnE ) + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISENABLERnE, + DABT_WORD); + else + rank =3D vgic_rank_offset(v, 1, reg - GICD_ISENABLER, DABT_WOR= D); if ( rank =3D=3D NULL ) goto write_ignore; vgic_lock_rank(v, rank, flags); tr =3D rank->ienable; vreg_reg32_setbits(&rank->ienable, r, info); - vgic_enable_irqs(v, (rank->ienable) & (~tr), rank->index); + if ( reg >=3D GICD_ISENABLERnE ) + vgic_enable_irqs(v, (rank->ienable) & (~tr), + EXT_RANK_IDX2NUM(rank->index)); + else + vgic_enable_irqs(v, (rank->ienable) & (~tr), rank->index); vgic_unlock_rank(v, rank, flags); return 1; =20 case VRANGE32(GICD_ICENABLER, GICD_ICENABLERN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ICENABLER, DABT_WORD); + if ( reg >=3D GICD_ICENABLERnE ) + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICENABLERnE, + DABT_WORD); + else + rank =3D vgic_rank_offset(v, 1, reg - GICD_ICENABLER, DABT_WOR= D); if ( rank =3D=3D NULL ) goto write_ignore; vgic_lock_rank(v, rank, flags); tr =3D rank->ienable; vreg_reg32_clearbits(&rank->ienable, r, info); - vgic_disable_irqs(v, (~rank->ienable) & tr, rank->index); + if ( reg >=3D GICD_ICENABLERnE ) + vgic_disable_irqs(v, (~rank->ienable) & tr, + EXT_RANK_IDX2NUM(rank->index)); + else + vgic_disable_irqs(v, (~rank->ienable) & tr, rank->index); vgic_unlock_rank(v, rank, flags); return 1; =20 case VRANGE32(GICD_ISPENDR, GICD_ISPENDRN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ISPENDR, DABT_WORD); + if ( reg >=3D GICD_ISPENDRnE ) + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISPENDRnE, DABT= _WORD); + else + rank =3D vgic_rank_offset(v, 1, reg - GICD_ISPENDR, DABT_WORD); if ( rank =3D=3D NULL ) goto write_ignore; =20 - vgic_set_irqs_pending(v, r, rank->index); + if ( reg >=3D GICD_ISPENDRnE ) + vgic_set_irqs_pending(v, r, EXT_RANK_IDX2NUM(rank->index)); + else + vgic_set_irqs_pending(v, r, rank->index); =20 return 1; =20 case VRANGE32(GICD_ICPENDR, GICD_ICPENDRN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ICPENDR, DABT_WORD); + if ( reg >=3D GICD_ICPENDRnE ) + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICPENDRnE, DABT= _WORD); + else + rank =3D vgic_rank_offset(v, 1, reg - GICD_ICPENDR, DABT_WORD); if ( rank =3D=3D NULL ) goto write_ignore; =20 - vgic_check_inflight_irqs_pending(v, rank->index, r); + if ( reg >=3D GICD_ICPENDRnE ) + vgic_check_inflight_irqs_pending(v, + EXT_RANK_IDX2NUM(rank->index)= , r); + else + vgic_check_inflight_irqs_pending(v, rank->index, r); =20 goto write_ignore; =20 @@ -838,16 +895,38 @@ static int __vgic_v3_distr_common_mmio_write(const ch= ar *name, struct vcpu *v, v, name, r, reg - GICD_ICACTIVER); goto write_ignore_32; =20 + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + printk(XENLOG_G_ERR + "%pv: %s: unhandled word write %#"PRIregister" to ISACTIVER= %dE\n", + v, name, r, reg - GICD_ISACTIVERnE); + return 0; + + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + printk(XENLOG_G_ERR + "%pv: %s: unhandled word write %#"PRIregister" to ICACTIVER= %dE\n", + v, name, r, reg - GICD_ICACTIVERnE); + goto write_ignore_32; + case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): { - uint32_t *ipriorityr, priority; + uint32_t *ipriorityr, priority, offset; =20 if ( dabt.size !=3D DABT_BYTE && dabt.size !=3D DABT_WORD ) goto b= ad_width; - rank =3D vgic_rank_offset(v, 8, reg - GICD_IPRIORITYR, DABT_WORD); + if ( reg >=3D GICD_IPRIORITYRnE ) { + offset =3D reg - GICD_IPRIORITYRnE; + rank =3D vgic_ext_rank_offset(v, 8, offset, DABT_WORD); + } + else + { + offset =3D reg - GICD_IPRIORITYR; + rank =3D vgic_rank_offset(v, 8, offset, DABT_WORD); + } if ( rank =3D=3D NULL ) goto write_ignore; vgic_lock_rank(v, rank, flags); - ipriorityr =3D &rank->ipriorityr[REG_RANK_INDEX(8, reg - GICD_IPRI= ORITYR, - DABT_WORD)]; + ipriorityr =3D &rank->ipriorityr[REG_RANK_INDEX(8, offset, DABT_WO= RD)]; priority =3D ACCESS_ONCE(*ipriorityr); vreg_reg32_update(&priority, r, info); ACCESS_ONCE(*ipriorityr) =3D priority; @@ -859,10 +938,14 @@ static int __vgic_v3_distr_common_mmio_write(const ch= ar *name, struct vcpu *v, goto write_ignore_32; =20 case VRANGE32(GICD_ICFGR + 4, GICD_ICFGRN): /* PPI + SPIs */ + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): /* ICFGR1 for PPI's, which is implementation defined if ICFGR1 is programmable or not. We chose to program */ if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 2, reg - GICD_ICFGR, DABT_WORD); + if ( reg >=3D GICD_ICFGRnE ) + rank =3D vgic_ext_rank_offset(v, 2, reg - GICD_ICFGRnE, DABT_W= ORD); + else + rank =3D vgic_rank_offset(v, 2, reg - GICD_ICFGR, DABT_WORD); if ( rank =3D=3D NULL ) goto write_ignore; vgic_lock_rank(v, rank, flags); vreg_reg32_update(&rank->icfg[REG_RANK_INDEX(2, reg - GICD_ICFGR, @@ -1129,6 +1212,16 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, m= mio_info_t *info, typer |=3D GICD_TYPE_LPIS; =20 typer |=3D (v->domain->arch.vgic.intid_bits - 1) << GICD_TYPE_ID_B= ITS_SHIFT; +#ifdef CONFIG_GICV3_ESPI + if ( v->domain->arch.vgic.nr_espis > 0 ) + { + /* Set eSPI support bit for the domain */ + typer |=3D GICD_TYPER_ESPI; + /* Set ESPI range bits */ + typer |=3D (DIV_ROUND_UP(v->domain->arch.vgic.nr_espis, 32) - = 1) + << GICD_TYPER_ESPI_RANGE_SHIFT; + } +#endif =20 *r =3D vreg_reg32_extract(typer, info); =20 @@ -1194,6 +1287,16 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, m= mio_info_t *info, case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): case VRANGE32(GICD_ICFGR, GICD_ICFGRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): /* * Above all register are common with GICR and GICD * Manage in common @@ -1201,6 +1304,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mm= io_info_t *info, return __vgic_v3_distr_common_mmio_read("vGICD", v, info, gicd_reg= , r); =20 case VRANGE32(GICD_NSACR, GICD_NSACRN): + case VRANGE32(GICD_NSACRnE, GICD_NSACRnEN): /* We do not implement security extensions for guests, read zero */ goto read_as_zero_32; =20 @@ -1216,16 +1320,21 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, = mmio_info_t *info, /* Replaced with GICR_ISPENDR0. So ignore write */ goto read_as_zero_32; =20 - case VRANGE32(0x0F30, 0x60FC): + case VRANGE32(0x0F30, 0x0FFC): goto read_reserved; =20 case VRANGE64(GICD_IROUTER32, GICD_IROUTER1019): + case VRANGE64(GICD_IROUTERnE, GICD_IROUTERnEN): { uint64_t irouter; =20 if ( !vgic_reg64_check_access(dabt) ) goto bad_width; - rank =3D vgic_rank_offset(v, 64, gicd_reg - GICD_IROUTER, - DABT_DOUBLE_WORD); + if ( gicd_reg >=3D GICD_IROUTERnE ) + rank =3D vgic_ext_rank_offset(v, 64, gicd_reg - GICD_IROUTERnE, + DABT_DOUBLE_WORD); + else + rank =3D vgic_rank_offset(v, 64, gicd_reg - GICD_IROUTER, + DABT_DOUBLE_WORD); if ( rank =3D=3D NULL ) goto read_as_zero; vgic_lock_rank(v, rank, flags); irouter =3D vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTER); @@ -1235,8 +1344,8 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mm= io_info_t *info, =20 return 1; } - - case VRANGE32(0x7FE0, 0xBFFC): + case VRANGE32(0x3700, 0x60FC): + case VRANGE32(0xA004, 0xBFFC): goto read_reserved; =20 case VRANGE32(0xC000, 0xFFCC): @@ -1382,12 +1491,23 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v,= mmio_info_t *info, case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): case VRANGE32(GICD_ICFGR, GICD_ICFGRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): /* Above registers are common with GICR and GICD * Manage in common */ return __vgic_v3_distr_common_mmio_write("vGICD", v, info, gicd_reg, r); =20 case VRANGE32(GICD_NSACR, GICD_NSACRN): + case VRANGE32(GICD_NSACRnE, GICD_NSACRnEN): /* We do not implement security extensions for guests, write ignor= e */ goto write_ignore_32; =20 @@ -1405,26 +1525,38 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v,= mmio_info_t *info, if ( dabt.size !=3D DABT_WORD ) goto bad_width; return 0; =20 - case VRANGE32(0x0F30, 0x60FC): + case VRANGE32(0x0F30, 0x0FFC): goto write_reserved; =20 case VRANGE64(GICD_IROUTER32, GICD_IROUTER1019): + case VRANGE64(GICD_IROUTERnE, GICD_IROUTERnEN): { uint64_t irouter; + unsigned int offset, virq; =20 if ( !vgic_reg64_check_access(dabt) ) goto bad_width; - rank =3D vgic_rank_offset(v, 64, gicd_reg - GICD_IROUTER, - DABT_DOUBLE_WORD); + if ( gicd_reg >=3D GICD_IROUTERnE ) { + offset =3D gicd_reg - GICD_IROUTERnE; + rank =3D vgic_ext_rank_offset(v, 64, offset, DABT_DOUBLE_WORD); + } else { + offset =3D gicd_reg - GICD_IROUTER; + rank =3D vgic_rank_offset(v, 64, offset, DABT_DOUBLE_WORD); + } if ( rank =3D=3D NULL ) goto write_ignore; vgic_lock_rank(v, rank, flags); - irouter =3D vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTER); + irouter =3D vgic_fetch_irouter(rank, offset); vreg_reg64_update(&irouter, r, info); - vgic_store_irouter(v->domain, rank, gicd_reg - GICD_IROUTER, irout= er); + if ( gicd_reg >=3D GICD_IROUTERnE ) + virq =3D ESPI_IDX2INTID(offset / NR_BYTES_PER_IROUTER); + else + virq =3D offset / NR_BYTES_PER_IROUTER; + vgic_store_irouter(v->domain, rank, virq, irouter); vgic_unlock_rank(v, rank, flags); return 1; } =20 - case VRANGE32(0x7FE0, 0xBFFC): + case VRANGE32(0x3700, 0x60FC): + case VRANGE32(0xA004, 0xBFFC): goto write_reserved; =20 case VRANGE32(0xC000, 0xFFCC): diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index c9b9528c66..27ffdf316c 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -193,6 +193,18 @@ int domain_vgic_register(struct domain *d, unsigned in= t *mmio_count) } =20 #ifdef CONFIG_GICV3_ESPI +/* + * The function behavior is the same as for regular SPIs (vgic_rank_offset= ), + * but it operates with extended SPI ranks. + */ +struct vgic_irq_rank *vgic_ext_rank_offset(struct vcpu *v, unsigned int b, + unsigned int n, unsigned int s) +{ + unsigned int rank =3D REG_RANK_NR(b, (n >> s)); + + return vgic_get_rank(v, rank + EXT_RANK_MIN); +} + static unsigned int vgic_num_spi_lines(struct domain *d) { return d->arch.vgic.nr_spis + d->arch.vgic.nr_espis; @@ -241,6 +253,17 @@ struct pending_irq *espi_to_pending(struct domain *d, = unsigned int irq) { return NULL; } + +/* + * It is expected that, in the case of CONFIG_GICV3_ESPI=3Dn, the function= will + * return NULL. In this scenario, mmio_read/mmio_write will be treated as + * RAZ/WI, as expected. + */ +struct vgic_irq_rank *vgic_ext_rank_offset(struct vcpu *v, unsigned int b, + unsigned int n, unsigned int s) +{ + return NULL; +} #endif =20 static unsigned int vgic_num_alloc_irqs(struct domain *d) --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483870; cv=pass; d=zohomail.com; s=zohoarc; b=n0W1iK67HaSoUEWbYRgLmi9LkqM4jNjqoVThtJ9OWHADkJUsq0vVRoCR9ceJ+sNMmLtEQZ9YfNZscX5MienZxki9Mz5mR8M4kZXtnUZp95khKw/++dhDbaAIbc/TwnY0DbFI2OW1SBKX2XawYtQFQXXtODZvaRZWLwf9jlov4+I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483870; 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=GONSEj8/1mepKECBs7Vda7Viy+ul1d1/au4fjFSO9gg=; b=MhM4hINmzGzozho4+d5Tw14+2UCaCFPIKKxVyFG0zlRtK5+945q8w6SGER/+DgkZcRQKSJvltpjXdceQ++d14tUnT1MOcJQla8ZTSUH/BwPP19sntIPSZwqDih0RXNKNNCQluGvGiblu0wOV4jafuuT4PP2tSLOXqAjZ/YQeaCI= 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 1756483870053673.803301238219; Fri, 29 Aug 2025 09:11:10 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101750.1454723 (Exim 4.92) (envelope-from ) id 1us1gl-0005Ez-QS; Fri, 29 Aug 2025 16:10:55 +0000 Received: by outflank-mailman (output) from mailman id 1101750.1454723; Fri, 29 Aug 2025 16:10: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 1us1gl-0005Es-NW; Fri, 29 Aug 2025 16:10:55 +0000 Received: by outflank-mailman (input) for mailman id 1101750; Fri, 29 Aug 2025 16:10:54 +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 1us1cg-0006O9-5w for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:42 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 25fbc72e-84f2-11f0-8dd7-1b34d833f44b; Fri, 29 Aug 2025 18:06:40 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by VI1PR03MB6317.eurprd03.prod.outlook.com (2603:10a6:800:136::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9031.26; Fri, 29 Aug 2025 16:06:38 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06:38 +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: 25fbc72e-84f2-11f0-8dd7-1b34d833f44b ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DC4T/Np5DHBSTQPp4yWpi4wuBsP9Eh/0QyaZROatPlgZhEeT55qhlPG7ketlYlfudcNT59tG5mB3br1PKQsTOJG0ekCRJucmJ1+R407HHSpn8KsxmGgRbyd4b1E6VlBwutvwyMO5eBoDnlAR5bIxrhQvUchioR1OBzDQ8f1Y2KHrY7n+2cUbegeXuUlpQBgO2OrM7Osqlm4wzAjYC1TDAXymbWumdYjzyp4q/2VEi9YMcl1ywz+HqE1Odgkd7f1BB5FaOaULaDi4Y1o3SaqHhq7yeiAYEw7Ft6+s/lqXn222aieZ7BRNzN45IiHMcDQjd1/nF3yxaUUkK+uEu6qxyg== 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=GONSEj8/1mepKECBs7Vda7Viy+ul1d1/au4fjFSO9gg=; b=eVIlIk0AM0DcQ9gFDSo4N1KCGeXLX+Ng/tspQQlFeM0vgk0MPZ+xZ+NrDX57787M5gJrI7Ug2fIXUB2Z29eIn4RpZhYVZTOLh1EQQjkuzGt+1oTcH41+ToIvuoQluJ6JAY1n6ZsAq1itPI4oxkx+GTFlCMJMnboAbMdeNAyVVL5JceuHqjhM50Cw04o2V/qfXvibI3F3g36X/320Ke+Ioir98WEO3T4wx3H2WiqlLx7WFlrAfo8J3zU4ZvWJG/Rd572accbFjL4qzEfOQp9njRa8LxQrhe3uPmGfmsscaDuYmiVaXu55DagUjD4Ot8gtMIvnV6b8Rx1ox4cmr/zvFg== 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=GONSEj8/1mepKECBs7Vda7Viy+ul1d1/au4fjFSO9gg=; b=Z+xpaq6xdOEBSdJoiyeovXB5jpssnTpusHyaAYWYIgzYuZJyL5Tz43Yt6bWIFotKwJDszcg5YYxhiKbqmGdyRfUEcvxqkg2EFcsH+Fo0U25SXJeGlzrBCxfLz0LjTxvoWE9DOhby3/r3c371kD14inGe/bQUzCOXV8Cc0VqmFpiS1naudSXyN0ZwEFwupsH5C0O2iuz2CRYs3VXYrCLK8phtIlUuVnQPiP9e8YaLuHZ4+sfrdH4X7sDB1DbpuYtBolCNGw2q4dGJJj/jX/Dl1VLcyDux+xxRmI3GEwGrJl29aeg+I2vHKe8vEzjObzkWCnKg/sHBo0+0oJsViKDsOg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Anthony PERARD Subject: [PATCH v5 11/12] doc/man: update description for nr_spis with eSPI Thread-Topic: [PATCH v5 11/12] doc/man: update description for nr_spis with eSPI Thread-Index: AQHcGP7m6ftj+OqxyUm3COIAuPKuog== Date: Fri, 29 Aug 2025 16:06:38 +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: AS4PR03MB8676:EE_|VI1PR03MB6317:EE_ x-ms-office365-filtering-correlation-id: 837c6ec8-223a-4eee-513a-08dde716090e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?nD9RSJ64wIPpdcxF2+eCkg3yKLoAeZ+CXsGGfKyDrukqzGJOnGCGcBdxPW?= =?iso-8859-1?Q?EsEN5nQ3ecS8A9svRkMEFKZsPJzvWROJ009Y18FV+2SnjwFNfzHna8E1TD?= =?iso-8859-1?Q?Pdy8kyZ8nFK4EqW9mj0DWQ2fK/zS/X4jU1YvYjn7ZsJPHXy9fZMzLcGSic?= =?iso-8859-1?Q?MxbNRdFrEcxcwNyaJoBIkv2O+lZ67s3w72zExFxXSYuOImHTXpmW9qf2o/?= =?iso-8859-1?Q?txqU5or7glVwfKMxYojKLRHyGD9VfDLnB6Z3J4L82vVYnozRJQIiMlIjNd?= =?iso-8859-1?Q?hSqTV04raWJLuN0Gw4+zVXphgf5uVeNbTL4um9b7l96R1pTjZ1ePpo+APJ?= =?iso-8859-1?Q?yyHe//MSiy8PTd6ThJcur7S9XmPl4vsmXb8A/n+mbjNYgouch3mzNLaq4g?= =?iso-8859-1?Q?TPP2G2l4z0EulQ2CKQPuqt+4b2LWfUvGbg/rgLhS1WIXosCXOyl/pZRmyL?= =?iso-8859-1?Q?bimHY6dkVsUMpynxSQk+TdpqQFPvn9Bxbd3qaNNRoNJ3m5PdQG37N3wdli?= =?iso-8859-1?Q?IXEEK8OsnEbaz/x+EIwENLdNFcHwTifiPwQmthtRbhxjWmpAMGBzH5HViZ?= =?iso-8859-1?Q?rzajvR3C/qKmqAFbR9UzwTtYBCSidX3tNszZ5NauLrRTFWVozax8vPrUnb?= =?iso-8859-1?Q?bYtA0OFxanaKyjKSvKLH3vBt9dFAS/J6X0SZSX8yApNX/vIgb2PBbZfTyp?= =?iso-8859-1?Q?JuAyidjozxzVw93nj2OgDH2QM0zrfIq7ElXNN/4Voilvu8a9F7tKWIVlsa?= =?iso-8859-1?Q?5GkfDWHEXX5mam+vMJPoz2qyJWwERV1GbeOcnIy8swdC6cxsIi2CgfG60i?= =?iso-8859-1?Q?eb5kFTLXZaaxRnHHPCPOwyBMfdI7sjc1u86vtolR3Mn6kfIfsWU4OSEzkr?= =?iso-8859-1?Q?Jk96RhaVEPFYqYiuMZJIEBUpbGbjY3bhmE3HBRk9YH1+2a1LGBvRSIOa+4?= =?iso-8859-1?Q?CfZnJVTd6fw3jvAv96WtapPPLfOjBXWSqhN6BUNY5aCDm+wFXBxGMMaiNR?= =?iso-8859-1?Q?MMOoc6GPgwAlhcJeUbtGHFJ34I4l+vysmeV97BbtS+mOu3e1137q+9EJ/g?= =?iso-8859-1?Q?qUaqhvPxmoivd1Fv4XN0BWOGhUP+7FX2wwedRatN6RgN7jtKAYGQRgNLKf?= =?iso-8859-1?Q?i4ZCt4YSTw1ujoZ+MHrRSixabunfAKhawUMth25Pat2ePoFTAfv1qMMPCA?= =?iso-8859-1?Q?jbZdHbHbSAVL/+Q6KZ/1MwG20iuGLPySd6xfVkayyPsYT6+1WlHqdYqh2V?= =?iso-8859-1?Q?8T0mIc1+5GduwetAJvXFlN538pxOoQbERxlfSDk2Ey2Vcv7ilv8pEKjM65?= =?iso-8859-1?Q?Cg5DKiT4VZP/vSrOtTUll8Z8R9pAby4MvtnV/6QWMmW/4jEZdBciSj1JB0?= =?iso-8859-1?Q?tH6Lu63MtqQLQYcli/ps1rYvKPmNzD1trgWSZGYGfPBL2KgCklAOBTkaBQ?= =?iso-8859-1?Q?xl+7+nnk7Nm7T20oIr0Sk+3aGjs0uf99VTXJsBjYx4o33ID4MagOGkAh2G?= =?iso-8859-1?Q?HWMrR67ZYldsO6j61JMHd1dF3RDZGdauqK7aHEmggZfalss0fbtx8S7/c2?= =?iso-8859-1?Q?magr7Is=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?r2LY0Ne3Ke0bnj5ZBhu06+wA27wmAJvX9+WQKyzyOfxO1uNQNdxjoeCm8l?= =?iso-8859-1?Q?YrzMYUs6+vR9u1sAHYKo/6y+Rp/8ke68dHC2gkRrBsw5la4xXQxdMn1zJG?= =?iso-8859-1?Q?D88ep9iSBT6muXrV2QSduDnlJeTlERgjqquslE9rQ5DLPcprWCRr8xb0oa?= =?iso-8859-1?Q?sru1AXmVYq8uDit51e3KNd25u975rSt1xVSvVWcLK4Ks4CR6LjNGqmbwZf?= =?iso-8859-1?Q?CKEJjovt0LeyMi/c40WiI48sk648n2Aei74u3FGv9/7W7ZYQDthERFuu4n?= =?iso-8859-1?Q?ozD06i/Y8fmlk//OKwXvQRDl9vUBad8+ectDPZTif22KADW6FxKRB3bXrE?= =?iso-8859-1?Q?19ksjQBBbhZiRk0iFMfxI9T9Fbgm0EY5lankf008v92lsHrREdMgJHmvZC?= =?iso-8859-1?Q?sKRUwp2+VhVIZ4vvEzxcUx5vZ/ZVhuwJ8HiwJYSVwfRq3RFTEOf5AjLxRO?= =?iso-8859-1?Q?3v4AtSZeju9vTwVB30djmzdvTcjCW/F4a3wFdX6fr/Jifwyp7TtiaMEfHh?= =?iso-8859-1?Q?zKL3wm9i76DHOFVx1juWoqvZxtijD3qXJekTUdp3NAPpdKPSK/xeRpjd8+?= =?iso-8859-1?Q?LOxSdIq3qTEj7fzE8uxeoxOyLliPkZS6RqGEO/Qh9Asm+Wu4ykZdAEK17z?= =?iso-8859-1?Q?buv1Ap7QHdK2whPnm2I+0ztaUY1mZ1iweHL0GqeWgWRu050UpUXIrVwBo/?= =?iso-8859-1?Q?SLVUIByvDMARt/WC4F6JZMBwRR3yH5mELW0OvhF6N0tE3hISAGWtDQTRhE?= =?iso-8859-1?Q?ng7BdU7h2jI8mjcy+g02lsOdROMcqphF8hjkx947kgZEAekVjqmNT2W7nQ?= =?iso-8859-1?Q?QUikGOwFoRtNfSGdZEQWcmoAlj5+X3bPqwe1oJjZHAYlYwQmKFJvuI4lUH?= =?iso-8859-1?Q?GPEk4sz0h6R3s1o+9IvvErX6WwjoiHCbIpQADZazwW4ToSqelnfylwAPIh?= =?iso-8859-1?Q?lVETxi3mdM0V88Sk78YDb1QXPmVIxvSIcJxQ/NGYby8xTlFLG26dM/7N4Y?= =?iso-8859-1?Q?3CMXbg60YiILDlKw63No7nORZaeisSDRpuU3YeTYL3XQawiOg2Bk7M4qmt?= =?iso-8859-1?Q?9Sc55vsCiNhH4d0Ck8aIiRrHadxtgnozR5+taE9E2e/Zu3bp/1XVoskdGS?= =?iso-8859-1?Q?bh1TxmqSTdTlBcFgG108akmUi6ItEWnBWwnvyRmYlWwBd9or9tPDZFGkg+?= =?iso-8859-1?Q?arJfovWyS6+JBCbUEoHyW4talNQLAxuTT8TRRmPEDMEd/us5cXjJhLnRbe?= =?iso-8859-1?Q?RYHv5WWTeXJdRkU4Bd5/iGzEe1jmQHwD8ZdT7dXllsb9G/o0TCNCJ1gqjM?= =?iso-8859-1?Q?ttxk/Qa0bGQpjgRFUbZFml/k8nKI9AIk8tCL5GAMx6R6YZMsGx4d863bev?= =?iso-8859-1?Q?6JBSKegOt0aZPCVYMHpjb8KjrAo6C2tBhM6tpPXEvMYJ0S9QQgrjR/eiAk?= =?iso-8859-1?Q?CqiimeNWunYzxkGHKjOiirW96olL2iz9m25wPD1YgHjI4WQOU8GfBeEU1I?= =?iso-8859-1?Q?qc4MWJB2VtUOadk2a3IjCQ5caueHWo5ovzMoVy9eXCZ6qqqUCPSwGeICAK?= =?iso-8859-1?Q?IUFhtifNBA7ryAFaC2RabsM8YZrSe556ClYtaBHaNWSDFiLQuvXPrNqD6/?= =?iso-8859-1?Q?gTsCiCGVF6gutWshDlz3JQHv2LA65J7rfWOGHERGcMh6AVwx+aAfgxoWpU?= =?iso-8859-1?Q?2pQzJuSGOEyINMSc6BE=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 837c6ec8-223a-4eee-513a-08dde716090e X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:38.3525 (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: P8ap13roLu7tvyhIcF73hHipO+WOpO0aNC8YjB2Ho4jZZAp3Lq0niChFFzYxUlY4gbkXuA9OXlQY6wAj/feU9NTg7IF2El3JPWfb7BE8G0E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR03MB6317 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483870789116600 Content-Type: text/plain; charset="utf-8" Since eSPI support has been introduced, update the documentation with the appropriate description. Signed-off-by: Leonid Komarianskyi --- The discussion is ongoing and can be addressed in V5. Clarification is needed from the maintainers. Link: - https://lore.kernel.org/xen-devel/87y0r4z717.fsf@epam.com/ Changes in V5: - no changes Changes in V4: - introduced this patch --- docs/man/xl.cfg.5.pod.in | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index 5362fb0e9a..292ab10331 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -3072,11 +3072,14 @@ interval of colors (such as "0-4"). =3Ditem B =20 An optional integer parameter specifying the number of SPIs (Shared -Peripheral Interrupts) to allocate for the domain. Max is 960 SPIs. If -the `nr_spis` parameter is not specified, the value calculated by the tool= stack -will be used for the domain. Otherwise, the value specified by the `nr_spi= s` -parameter will be used. The number of SPIs should match the highest interr= upt -ID that will be assigned to the domain. +Peripheral Interrupts) to allocate for the domain. Max is 960 for regular = SPIs +or 5088 for eSPIs (Extended SPIs). The eSPIs includes an additional 1024 S= PIs +from the eSPI range (4096 to 5119) if the hardware supports extended SPIs +(GICv3.1+) and CONFIG_GICV3_ESPI is enabled. If the `nr_spis` parameter is= not +specified, the value calculated by the toolstack will be used for the doma= in. +Otherwise, the value specified by the `nr_spis` parameter will be used. The +number of SPIs should match the highest interrupt ID that will be assigned= to +the domain. =20 =3Ditem B =20 --=20 2.34.1 From nobody Thu Oct 30 22:54:59 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=1756483861; cv=pass; d=zohomail.com; s=zohoarc; b=WUuBUDke6QuoIJGR8YQW4jGx4bniSCl/Xw92vhoQOLAYhQMSQWqa4a77ptKASApcToQQ7mC5WiN648y/TXrr+k8oMCK/LW1wFiiahd+dJIJcGpCQzFVWugqpTfwq/4om2L3iHipjDD6f0NAvyAzSQ9b6RCryM9Q1GjYKw4DrPUU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756483861; 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=PvSfHsHBtRyldG12raaQ+Yq+563Wm7SSCndcxDTlphc=; b=ILLh3kE0g6DsmdkrpB5gM6abrlhtYWoatAYDIqL/YqdsnXhOfm8t21sA24lEni1CeAjApuju20kTjtrLg5w5c0WtA2LocPBIQkuCIwshYz5kAR5pvCuRuoov4JjTs3wINyDHQVmecXj+NVPpXWQTyMpHaoF71jbaBtWraKTeJ6U= 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 1756483861631575.0781911832718; Fri, 29 Aug 2025 09:11:01 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1101728.1454713 (Exim 4.92) (envelope-from ) id 1us1gf-0004lF-L0; Fri, 29 Aug 2025 16:10:49 +0000 Received: by outflank-mailman (output) from mailman id 1101728.1454713; Fri, 29 Aug 2025 16:10: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 1us1gf-0004l8-GW; Fri, 29 Aug 2025 16:10:49 +0000 Received: by outflank-mailman (input) for mailman id 1101728; Fri, 29 Aug 2025 16:10:48 +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 1us1co-0006AC-Ke for xen-devel@lists.xenproject.org; Fri, 29 Aug 2025 16:06:50 +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 2b5fad8b-84f2-11f0-8adc-4578a1afcccb; Fri, 29 Aug 2025 18:06:49 +0200 (CEST) Received: from AS4PR03MB8676.eurprd03.prod.outlook.com (2603:10a6:20b:58c::8) by DBAPR03MB6486.eurprd03.prod.outlook.com (2603:10a6:10:194::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.21; Fri, 29 Aug 2025 16:06:46 +0000 Received: from AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b]) by AS4PR03MB8676.eurprd03.prod.outlook.com ([fe80::c5ca:906a:1ded:634b%7]) with mapi id 15.20.9052.019; Fri, 29 Aug 2025 16:06:46 +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: 2b5fad8b-84f2-11f0-8adc-4578a1afcccb ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wF1BsJnGs0sSuxODNg8jNlxqifEEcyF65HiOByI0pvYhs3y0ZAv5nc8reZNm+JvuFPHg1rQ6Tb9nfDLy0KfeJLuADuXDbLDcIzXlVwcDGE7gMH0lY/PNKrt5P+twDrnZQmos8Q8toHtVgEI1UdKZ83aRlePXXEOV3wMnzlN+BqFiURC1679m+q9kdKyjU9cOBRMo5NlUkHZ1JI0pHsCdzqTe9Da20x2Jehc7ameJedTmNncsdcszJm5cHri7GgMlfioJLyG3sWio5xyPpg+5T45FIG+wAybRGoh7wf8Fk+xjSzSc/TrpuSUP5my89/AxFcF3RlaT4TPz7HW6iC8UtQ== 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=PvSfHsHBtRyldG12raaQ+Yq+563Wm7SSCndcxDTlphc=; b=IpOYtBOYIZoPJoz80h59r7vwasNFEtgQoR3a12cP1xUayeSd7rQn3V/juKAkPs5EgHGddpNbGUG+9NDGqp8MnXFE7Ae6yY/73iW56XCVWrb2sISSiVzeDM2tORTMVgjhTsXK3plDkkFMKsUpyJSViCvRgNcV6mDk3G+5s0cxp5g+/bn6xqkstJ19BYb1zHGPDBc6S268KlKAgrHjxj6Hi0NXGYGAm+e5eEHaRTxBAVaPUIIGYrWAMJ8MbvGiQkLy0LYLcUESbfffteZ3ySF/nPP9GSTUF8kHpRAf777HFqtMWw8QzH+rht8IVY3HjfWddAiwd1Vf3F0jPVF3Ts705g== 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=PvSfHsHBtRyldG12raaQ+Yq+563Wm7SSCndcxDTlphc=; b=P9qUHFAoe7XEIHLAxp+uscxk5ZMgMnl6g/BLvcDCTtgSINZQ2ceOHQA3MONykhBbDH0BaFmTmh/v+dNYoN72XHwJU3NKfogO/Q/tjK9g+qGyP9ZNYo4iGXE0E3VOZIlEINmuKploS5JbWRPBvjO8jpVlf7vgEFQ/ys77YmumG8p8Ecajm4C6wtu5NDoj4+30PoMIMasfJ/GIGHJngRjAb64HnvEBJCNpPf+rwzLHIsbrFRt3YlMlxBQc1GJI+bM43H4zVIg9DFZD76gVP+2RzaAinx0fuLV1YABPKUFYmdG2EtF/z79JUUWaVPCNLpJeEF9bjEOt1Etj5smuLnz0Xg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Oleksii Kurochko , Community Manager Subject: [PATCH v5 12/12] CHANGELOG.md: add mention of GICv3.1 eSPI support Thread-Topic: [PATCH v5 12/12] CHANGELOG.md: add mention of GICv3.1 eSPI support Thread-Index: AQHcGP7r92C2xJP99EKb98d4gv1OEw== Date: Fri, 29 Aug 2025 16:06:46 +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: AS4PR03MB8676:EE_|DBAPR03MB6486:EE_ x-ms-office365-filtering-correlation-id: 757602f1-7bb5-4262-c334-08dde7160df6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?LIOebLgsoDURL4ahXk9xDO0c2r1a2fWwdHBoNbr/R7ZDeVfROE0piua56y?= =?iso-8859-1?Q?Kax2Ecy4dSqDOYF1WKfEbmqrRpcyPbsX7oLXWgDG2ldfkeJ2Y+tgfBGxX6?= =?iso-8859-1?Q?+SQZtXBHg+SM5I+W6NdzdaLM7MxRZRGeZQsCj6RfHuYtqUqi0juX/sC7mt?= =?iso-8859-1?Q?tHh2gCSktCcigyet4JQyEWUN9at8+s22aH040S7Vm+lLL3SYo5XISP1+FX?= =?iso-8859-1?Q?qbPWkUBx0TumZfjKYrmYVGoyyNPP+134RUiksaB+QbXtqbRfFTpVdA1YG3?= =?iso-8859-1?Q?845aHYgFFVCO3b8sHYueevkoZn5Qyq84N5HuPMqypEcemlQXZeFnI27xml?= =?iso-8859-1?Q?kmaaiqoMRNOAFIZ6wQeYBJ3N0CRkTS0L5Ni08NfoR3MZs7BQefK7WG8mXj?= =?iso-8859-1?Q?xEjr+BegITjzTu9xSey8AZZZmbGymfMNRYPMGfb7cMuVJiYyA5VE2+ss6n?= =?iso-8859-1?Q?B5UjQ4NRoZms10jJNwzVG0IXE7n42gQ6RhqBgAiRfbva39aG0eCdLZK+hJ?= =?iso-8859-1?Q?KEoF8zylWFpz9vhQ/tFLKqLBjHQfud7MMeBqpBpYrwRYN9YKbF6KEbB0CY?= =?iso-8859-1?Q?3TLbMC0Y862HlV9Swi+daOOFVubehPvbl9AVus9kOi4b3oFLrbE6MMFW9k?= =?iso-8859-1?Q?/h6c4X4je9tKVeCFff8yjFDQ8yI64bvZNKVbEAyRj99fIuuCcJnojnXABD?= =?iso-8859-1?Q?Uwlqvjj7rAeMmLD6tv8RY4+QxBCTRpL+kxqxV4nKTma6P8Jg1ZLmrVbIDD?= =?iso-8859-1?Q?6nx0NCtbPyFvVvgl4du0xgGeYFpopOz6W3DRXTDq2EOWOiBRHIx7lv0KYv?= =?iso-8859-1?Q?4FGIG+uU6WKWz4HwOMWHWByd1fVco1hYLmdIp4nZ8g19c1lXM8sa+ch5CJ?= =?iso-8859-1?Q?u61D01f8GdkfcpH5LtjmRcFIJyog1uFirnulw3xSw/PzQjUDqcCH/LurVW?= =?iso-8859-1?Q?LW6P42JeXxXlu76P/iOKRU+rrGeP/6zfwokjNIVQEfzpBgxdrrmJye+ZiR?= =?iso-8859-1?Q?Nr6VMC7c9mhDU7vWBSGscGHBXAoSVNmR3PrsN+bPb5tuRh6KIxyMv66T05?= =?iso-8859-1?Q?yM9vCVrNg/2syPWvKjOhkSuDncLOCpDQzF1wiaqEIVfpf2Xgqx8oHWeAch?= =?iso-8859-1?Q?ZsOc+NLhz8Jzj/gWUgJc6E/mo/4pjrSCMkG17TB0q4snw1hxCuv9XMc4IN?= =?iso-8859-1?Q?o4qZQ0pWwA41X3AIR4APghtTo629FT2HFHnHvtUbGXyACvrN/KJuD/F6q8?= =?iso-8859-1?Q?IjGwqonuT3Ar0bzLe9H1OvHbXPcCgtXBn80yCVwmdPYQHiQzHG+htc+8Ou?= =?iso-8859-1?Q?22d6bcZ6OGOygfbIG0CUVuyYtKAHKnpEni6eAbwUHPjjLDc94/SyRFTcgN?= =?iso-8859-1?Q?8nOaEKuPxFFidCWGFnF2gosrbLvrsRRgzlYStlndikQAnGyT5uwbTyFStf?= =?iso-8859-1?Q?KXRXBWBMAC5PvAjyoges+AyelZymfYDLVPzsoB2vC3nHGta0wMLraQD3kn?= =?iso-8859-1?Q?4=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR03MB8676.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?9d1Ud6N9Z1Vqbtc0qPUNyzgF5t3KKYmUxQQt04l4WMbKUH/ogCwEYszVEp?= =?iso-8859-1?Q?zpmW8kouU5QgEW1d3jZ/mOsdakJLJfq/IhPzYYrzo2mhc+EgHedQacEVg8?= =?iso-8859-1?Q?Aa37YK6EViANxZcVacoy8fAfTEnwgNmXQLcdzn9qaFV+QQWWgJ9kBOt2C/?= =?iso-8859-1?Q?XZ+K908SLTKqrlLj6+74F7pJZwM658nzVYZonqNw9BGCEomjarS3Xt5OgV?= =?iso-8859-1?Q?nOQj+H6DSIOPLXckFVQGtbyoSD+WB40N+dsDK4IoC3RUiwSkXU3A5bT++L?= =?iso-8859-1?Q?bnKTKe25VF9xTYarRQhI2b4VU8mArP/tM0a+9haymts/ZVGNXxFe1X5Uo+?= =?iso-8859-1?Q?R8zhMTHrjuVweS7QjSh7fDT2JRpSFtKTxcQ38WYJU+RtVp2crSkoKVRIip?= =?iso-8859-1?Q?KlDjipAjnEipg768HTurCddg+FTG5j+kq9+KPV3lmdvETCLhPoK5PtGAwe?= =?iso-8859-1?Q?J115+L4TjD0s4PEj/DIGRLz8t9hU/glx7GEZJF81hGktLCGLFgX/2sPeeL?= =?iso-8859-1?Q?X4rwELsX5rlSYWe5sjDZDL4EdrmA7lYR9s/y/gBctFnIS5xOKKq2jPFpn9?= =?iso-8859-1?Q?f3Ihz5ofLW7YFoiywSDNylut8eZJ03HMMEP6GbQB2IMTYtp19TbS6Jm+g9?= =?iso-8859-1?Q?hD1Rxdn1aRxD0gcIIps9tCf5N295f+MAhizL2IhyVuSz2ythJFYJcumrdk?= =?iso-8859-1?Q?QSSpEZ+IfLt2pYumesKWZmhG973B916zx7Y+ZU+erHSBxjlJBNB7imlli4?= =?iso-8859-1?Q?Gz7XDLCuyoHp7iRYG2AGqcNItG8f1Cb+TR/6K8qU60gMCBs1lOODtm0zfH?= =?iso-8859-1?Q?+ChbFjKd1x5rqDiOmZwQzPs8vw2XZoboAnJn2PBT4/Avd1ba7MTTadds1O?= =?iso-8859-1?Q?Jo4pFsZ0VM6ip/yu4n4yfW+NU0uvEKfvVh3Rdt53Q6nyUnWY7a+m7s3IW0?= =?iso-8859-1?Q?kVhOXmmTtEAI5gq/LMCfYk6wvLWu6xeWEf8tg875a011BtdyG3HVL39yE8?= =?iso-8859-1?Q?q8Jq5UTNq9hp5fol1mkUDb6XxdcrVwV5YmVKYmFdiTp/1kq9z614cFr/q8?= =?iso-8859-1?Q?Wyy6NK0hNN/ffzDkgpj+HX9BQZylK+MkOjXGiKlTY47q5eW2EDQletcqfT?= =?iso-8859-1?Q?QKxuu4SzYbpCQuWMMGGcqI51EgceJT8CMcgqF5vFFQ9gVH1HGeEDDk0b0L?= =?iso-8859-1?Q?s31yLc68FXQXnuCgH2QfzfPV1kF7xYqdXWztnVkndyyndmZ5771G+LCYnw?= =?iso-8859-1?Q?3uOpW6hMWptkzHu5jQPJRE5KeRZKqQTfjdPLMLVKwDYOE3chplmxL0W6MS?= =?iso-8859-1?Q?U1OoZbBqK6OONdr+rCh74mHG2dAhHJUrEeD6xnuhr+Ksgwwq8FytPE6Br6?= =?iso-8859-1?Q?0SVs1sWeu5PTGYfxBrdNzxvq4zMC1mM4f+GLgl/hxPBA9TsXXlyTQXlinc?= =?iso-8859-1?Q?t2/3zenbuug+Lw+PnOW/d02vGxOOzykb5FF8g4YatoAPA17UbTkVmFkdgn?= =?iso-8859-1?Q?7OYr8505IeR1woSb7EjKlfIhTte+ifkCCKOJU1CC3Y2Ff/ZlruK4NalXLW?= =?iso-8859-1?Q?WlvB0uHb28Q3qqQe0fTMLefsM4RubpXkaP3OCBYEg31t5ANLd1RpKLWJ9y?= =?iso-8859-1?Q?9pyo+0lMDuLNjzSPFX5FTY6AZnk8haa7njU7LkwgKMMX7rzzKYg8yQYMF6?= =?iso-8859-1?Q?af1aDD6xmOsZRnPXqRM=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: AS4PR03MB8676.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 757602f1-7bb5-4262-c334-08dde7160df6 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2025 16:06:46.5767 (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: Kewc83s/mRRODuuLFVRIYRrqku/SYegHlQomlrqq/ERSG2nDn+zycY9AYynPdW8V7RFC8jHKpa/vAVJju7q2aZ2ceUBl5J/a3Zqz6lCwpbk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR03MB6486 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756483864023124100 Content-Type: text/plain; charset="utf-8" The GICv3.1 eSPI (Extended Shared Peripheral Interrupts) range is already supported with CONFIG_GICV3_ESPI enabled, so this feature should be mentioned in CHANGELOG.md. Signed-off-by: Leonid Komarianskyi Acked-by: Oleksii Kurochko --- Changes in V5: - extended changelog update with a brief explanation of what eSPI is - added acked-by from Oleksii Kurochko, which was received for V3: https://lore.kernel.org/xen-devel/bce5e07c-eee7-481b-a833-4d5d8bbce78f@gm= ail.com/ Changes in V4: - no changes Changes in V3: - introduced this patch --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f31ca08fe..31b4ded444 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,8 @@ The format is based on [Keep a Changelog](https://keepach= angelog.com/en/1.0.0/) =20 - On Arm: - Ability to enable stack protector + - GICv3.1 eSPI (Extended Shared Peripheral Interrupts) support for Xen + and guest domains. =20 ### Removed - On x86: --=20 2.34.1