From nobody Thu Oct 30 18:25:56 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=1753369312; cv=pass; d=zohomail.com; s=zohoarc; b=a3BuqE5m7F4GzRBi/tUDNpc8zw6qJ5+3fgoctJorDMHA1DaglPMxN7FDxRbME6s2y8NDt391c66NI5yYh7eExsaNaVCNmsqv8Ev5Jll0o5rtqdUd91mKGDTO4dECr1+HBFrIAcBrHs/yUTQmauaOv38PDmGp2gMNEaNQpwCfDic= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369312; 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=t3bLy5uu0UYlckr92hqRhcJbncFKtI0cZhnWMHbFfWo=; b=XzLv5qZ0OzS2ngqKbmIcwLWJxXKmVFe4CS00t3vDbvsOotROLSc/MVj3GOUZ4XtaPZN6IYFeiequ298ZyFmu9PaVYBf1au9W615eZri3j1pZAEjiRep9jHicVscSXyx2l5Dsjc4IZFuQcuYXwG6WbPL0rxGdsgTlHsYSKYao9LY= 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 1753369312842662.4090444930168; Thu, 24 Jul 2025 08:01:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056227.1424422 (Exim 4.92) (envelope-from ) id 1uexRe-0004UR-4d; Thu, 24 Jul 2025 15:01:18 +0000 Received: by outflank-mailman (output) from mailman id 1056227.1424422; Thu, 24 Jul 2025 15:01: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 1uexRd-0004TR-TA; Thu, 24 Jul 2025 15:01:17 +0000 Received: by outflank-mailman (input) for mailman id 1056227; Thu, 24 Jul 2025 14:57:28 +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 1uexNw-0003AJ-4F for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:28 +0000 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c202::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 8393a6a1-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:27 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AM9PR03MB6756.eurprd03.prod.outlook.com (2603:10a6:20b:2dd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.22; Thu, 24 Jul 2025 14:57:24 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57: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: 8393a6a1-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wNngDmMTmXdeiqush+LF9s4c/LXA6kBHAi1W0QkYVLZhIuJOCs8yQyfBJClSz+C0IHiIdgGtlB2JrTesM+68D6AO0N4ZYbpj8uXbcRQPa6CiBUQOnJBoXy9H0wi/3B2bM71NN52/A0OH8R4pYT5nb2Y/ybkOwrGQO/DG/t8fRajC34caP6KcBpBsmXfp/d6xW5B6uX3NpCe3wS33VM3iAv0eplroXskdaNtRU9X7BT1Qd/t5rahOXI5whvX5FuLljNLx2BeUMyQ1JO9TKfnau9sIa6lfQi2DKpX/TlimwB2E/yw6xe1kACMpA5JdqyvYC14jK+N74wxs1SGCS6/vcw== 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=t3bLy5uu0UYlckr92hqRhcJbncFKtI0cZhnWMHbFfWo=; b=AenZkZD/kLp9nYw/fuprRaC8VRE6lM1AYT7EjGMtHwJe9ZKtxWn89p+H8nunW5EGaCnXixO3R7ZKGpnlUYJALKYZJvfI2zBJgdzNj4D9FX3e0olWhCm9JIbQAdpSIV5nozVaPdXjfSGjIjjAxB6ZcLHFa2d7IBkPFDpaOhflYOF9ThsJ9NtC7gfxS8G/5+hw1vRsnq7iYHT5wL/GYt3HwZpINpshEdTtCEBDlWLzhbWGa9ukdzXbIGpHh0Ce7qeo0oda/hmEQdpy8zfOUJPrKCM+2rXfn8aEgdMJOS7eQDFzPL0cku20S5NbMD95Kvt2sgsaSZr3PNuXKlC+9lA7iA== 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=t3bLy5uu0UYlckr92hqRhcJbncFKtI0cZhnWMHbFfWo=; b=nBQes/JVNf+3qznGbXPYJQZ5HLlRWa0j9a5ij1RFwV94YaCtaHxIZb0q0GwRpidQ4j0P2UQoE3dBuh7faKrcS1ZOs49uJPDKJVp5sRdVztONJ7cuduBV95aDoAloUJNq2saNhlHpgl1D2OPPdCwEEdYFRHZoS8PMmlZD3rmyJTaZ761Xrlkk5fdK4ljcVy3wgeKNJlmn8f9dY5bOoQxQHIXJmDZda07X5xBiZ2wX35RJDnp68ZFz7L82zLj0dPoktpEESl3V9lg0T9BPNKfaWZ1bk0g0il7d/NWV9OOFV7QF9Wbov3fId3BBhDr8l3R0KbA9aGddfUWg3sxLmyxzhQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 01/10] xen/arm: gicv3: refactor obtaining GIC addresses for common operations Thread-Topic: [PATCH 01/10] xen/arm: gicv3: refactor obtaining GIC addresses for common operations Thread-Index: AQHb/KtDaEMC78eM1kywOJDq3vCnLw== Date: Thu, 24 Jul 2025 14:57:24 +0000 Message-ID: <7b53e684d540372f625327f72176a9ff1988e748.1753367178.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: GV2PR03MB8678:EE_|AM9PR03MB6756:EE_ x-ms-office365-filtering-correlation-id: a2a98bb8-102b-4880-a7a9-08ddcac26669 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?3L/VVLP2zMxgOWsN9hrZO5DjmasmtH5HsNrrrRvKud4t+9k0G66uCqstmQ?= =?iso-8859-1?Q?WLI4tCGJoX5F5U0keNgvID7vmdpZpG2HRC7ciAfUQwbwnQeMqA6KIvMLaS?= =?iso-8859-1?Q?dTI8NsH1qe2r+IHcbRU3Q/QWvau/8GaahLnbfMVy+LbBVm/KVfJDCBYtFS?= =?iso-8859-1?Q?8dkxajWekpRmqp7KvwKpgbWlWoGocLhVhRp+M3yKItCrKxzuTtKHyVizLn?= =?iso-8859-1?Q?15rrESRp4W8HQlJ/6xER0p5Zhcb/5rewHDLVIaPmrEXw6A3+Y3jkDKMv5B?= =?iso-8859-1?Q?whtbLFlLGKCePLAtCYLMxJy6PgMQNg7mWsquaVjXIPWEYYV1VWKXAJmk/f?= =?iso-8859-1?Q?Fs+cXBhIsoXyKLJ021QAfJ5HYfwcszsFgGobkQC4KHwendreNPBNv6RkPk?= =?iso-8859-1?Q?24Q2hkgPWdU0zi2TtHxQezC926cIAICqw4OMgfWhHZEJIixyyT1ZBogrCk?= =?iso-8859-1?Q?a8Vm0/4cNW2V5+YLcTDfTn7PuS1EgfdbYfV+eHgCRr3pos/Cug7qOqio3M?= =?iso-8859-1?Q?w2OeffCMr/L2zfApDB4AkI42FRl2Jf//187mwyGjtzceUV5DoceYU7736n?= =?iso-8859-1?Q?rzkfOf8m5yOqeWyOtG6G5+mTRLzmeRQKwuyXGGPTWR4EWKiPPUBBU/cRKl?= =?iso-8859-1?Q?HxiZNbKpuncstLnYI36j1Q86rK7QlreaEfCHeeAE1aJs7fs4KvmzaZDaUv?= =?iso-8859-1?Q?ASkaERSKk8/K9gEHFUud7jx3DwKGzvxN6qb3naVYQpu6WC+aL94TaCR87y?= =?iso-8859-1?Q?WXt1G/+blz1dGJ6gt8MjQfA4hph9edD5PWYkM3uU01lEc0mxIQqgwGN+pb?= =?iso-8859-1?Q?ok/BtC2PJtYvbtzI0BTEyTgDNDmX1AMk9kVnmV6VWq+oRmP/dOEjmNII/f?= =?iso-8859-1?Q?FR4DFpXp1sl810lZCk7cWSG9qJHjHI4EhEoTcRhSUCHPy1/11AZeIo0azV?= =?iso-8859-1?Q?q2HzSzu5fdd78ZxaZTDX04pl+ARadOCArngNdTblWTdEMN2TbIhrP3DHaM?= =?iso-8859-1?Q?iGgAG+YSXlwChdCoOmUZ7MvYgQCumeb7iO0VvlHK21VIVlLbxyZwaduM4I?= =?iso-8859-1?Q?6lSXaDTSdEDwJkPACZxcwxy5brxLWzwWSJ18XJ3woxIaAikbhyPYkPIirx?= =?iso-8859-1?Q?mI584V7u4liPzALIgqc5vsbDHRVl0tX55bD80/FnZ54blaV7wszk2cVkPI?= =?iso-8859-1?Q?MX/x7JCL0fYTB3QM3SacblJBgcg4oNAg/twttfFryHq8JXPRm86BqgqBgk?= =?iso-8859-1?Q?G4PV0JM9Xa+Z2i/QERN/oa0dpr8P4DOnMreTzSW1bMvwy0h9fYnG2whyZ/?= =?iso-8859-1?Q?PftzM6s2cf++L6FJZjdah32b04n/eUEGVWSjxuJeqZ41cptlbUWeSucixo?= =?iso-8859-1?Q?uvaJYPDENeEyj4M0liq9HfWdIm/4GxN8wHKn2x3UKi1ESWcqHpz72ydekz?= =?iso-8859-1?Q?ipGRaawbUxWoa8l2NLYRoz3TBhXB1vcUB+kCbT25aX6ZSg6KsJe2xUnuod?= =?iso-8859-1?Q?i2wqQmhZiRUFjQ43In0K9CZZJg1qy7UIKO4l5LnT/xUw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.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?5Qhz4CJdlVK65yZ6XDxMARxeLtAETA+9zPIi7mVZsT0xLueV9xcDPvqV3C?= =?iso-8859-1?Q?nXk9pxtl5AhB3g/ySi1FL/j2bkJYE6YiqcoDvFbulBmpCmrdySjZWI5uCW?= =?iso-8859-1?Q?R3nEzAAg5F9EAHfPzx6ftQDiYI+8W0CGCjo1QnZBRaHdN9T0Px2C8LoE7m?= =?iso-8859-1?Q?vN4IlnjsSOYUZjPWknXFSXSYnb6eAejbmoDRNJ5uDlztv30hO9nDrKByEX?= =?iso-8859-1?Q?5DUy30tWWmCVpUtmeRTSRcQ/8mRDI6Oda/Hkr8aW4eBHOWxRn8yS1/5kmm?= =?iso-8859-1?Q?Eo0p90tXENQWHRIw9pbAZKqWsTvOSEAGJEsiuz7I2TgWlg4jZnaibT3P2Z?= =?iso-8859-1?Q?GgiGBNtpfaGEHkzdxzURLu283X1neCSJzUyTpvxI0T8g+bfgqXpuVH8dq8?= =?iso-8859-1?Q?yFoKle6PO7teN5has+r7BFLK5yWjKW9uLQja+MHFPx5qY2daY49do+4V7O?= =?iso-8859-1?Q?+FXI6SfM6E5P1c7mgS+xOV56I3uJpyrWsL2WSMkOVEKMW7FaXNKIqCF/hz?= =?iso-8859-1?Q?wjcrdvLN0nEpk0E7cNxS+1WY7aFyBlILZ2h7SnrvviqhvRpjG0exNGVMfE?= =?iso-8859-1?Q?wfVQ+JnOq8V1k44OFTOu/MzBVZ1CKvzNtBK8XvbyM0ool/Hwt4I8gXiq6P?= =?iso-8859-1?Q?C8hw0aBPUqAEDcNT+bG6p4FZoM0Nzt4YzjIPzb9MygNu6pe6RnnKH/jx2i?= =?iso-8859-1?Q?gC2M4CgRlV5wah+mQwUhpo1yuJ/ta7on8B10X3eJWumcsm1ILdTupbd0Kw?= =?iso-8859-1?Q?s5Yvilmpa2CRBxUhRRH4ANrIMorH5eJiQBH6OXSuO60y5G1WgYGWhI5GtH?= =?iso-8859-1?Q?bYv47uGZ/wtTNxcYvWXKZJ4GdXYqjIe7oLzmRqOEJjYK+I1ahG8v+WVim7?= =?iso-8859-1?Q?hblJPzGyUN4u/1T0aRPVOr4AdeRe9tSOs7RDy8FT0bSBdwmfgRN44Lacfa?= =?iso-8859-1?Q?NRl6OMkg9CZwWM6VQbZggIoIKv17XKG3/oif8At45qd5oDKP66V/k5j+Mt?= =?iso-8859-1?Q?M5s980JBUy03aAsGgZetP4R9hlvYUtimn4NEnKjkR461cJx+37usfwQFv6?= =?iso-8859-1?Q?tTgE2s3ioX0GhsDxC/v8GUkC5hFaUHsXF/GJ+pbczI4CJQZbfOhFdZkg9v?= =?iso-8859-1?Q?Y2qyOUUDqIUDylhoqRUZGYjndVPISonHy9SJ10NXf58gOmJ75wIYtkUkMQ?= =?iso-8859-1?Q?9gl+fMymd3UaPzaftbWLJzMta5wqar+9sWJ18g0AutG4kE1kd9EGv5NC77?= =?iso-8859-1?Q?w19MhtxLjcR+iEWmBvPIKt5wBBFqmGasIvNcdEZeS83/gW6hpyl0J0D2S1?= =?iso-8859-1?Q?ta0OS+5eu3GySOwkqdbRUijSY2EzLr3wR11gKcl2DXf3NdbY0iGCfDFXlN?= =?iso-8859-1?Q?7hC/+dachNIzefsfm1xVPb3CuqUZHFnctOst+WSjn/WBcX26wKxSXv6emu?= =?iso-8859-1?Q?swT3W42H6/owTQY6XrqU4V/u+aF7HZRzOqGPRG93zmLQcZcDaEMcGwUzXG?= =?iso-8859-1?Q?eYREwZTmfMTEiUp9mSswaSyE9KpqA8Z3E4m4MoheVYd+b97EsH9LZJeSoC?= =?iso-8859-1?Q?LnBBGpfHvaXtin9VKYfEt1+VIwEoQiQ0yHnEQgvVpjLuDKRueZjl3TVVL+?= =?iso-8859-1?Q?nwhGGoIBAoFY+QyzM4dNi1OcX79umyEybvIfaD37R4UTJSaoD/aTO35I3Q?= =?iso-8859-1?Q?SwSlTgFgIiMyjMFNIXU=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2a98bb8-102b-4880-a7a9-08ddcac26669 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:24.6680 (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: j4t5WZ8iW1OpZXvHqM3EezHMOQ8G/C6M8yUJtXm8B6uP27fV/mImQdZrR9h6pC2oxViKZuZLgbPjGmjIV/ZLVrjl/7dCDk2whiPFFX28Xq4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6756 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369314015116600 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 --- xen/arch/arm/gic-v3.c | 99 ++++++++++++++++++++++------------ xen/arch/arm/include/asm/irq.h | 1 + 2 files changed, 67 insertions(+), 33 deletions(-) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index cd3e1acf79..8fd78aba44 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -445,17 +445,62 @@ 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 */ + panic("Invalid offset 0x%x for IRQ#%d", offset, irqd->irq); + + 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; - - if ( irqd->irq < NR_GIC_LOCAL_IRQS ) - base =3D GICD_RDIST_SGI_BASE; - else - base =3D GICD; + void __iomem *addr =3D get_addr_by_offset(irqd, offset); =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 +508,9 @@ 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; - - if ( irq >=3D NR_GIC_LOCAL_IRQS) - base =3D GICD + (irq / 32) * 4; - else - base =3D GICD_RDIST_SGI_BASE; + void __iomem *addr =3D get_addr_by_offset(irqd, offset); =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 +597,26 @@ 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); =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; + addr =3D get_addr_by_offset(desc, GICD_ICFGR); =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,15 +635,12 @@ 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; =20 spin_lock(&gicv3.lock); =20 - /* 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); + addr =3D get_addr_by_offset(desc, GICD_IPRIORITYR); + writeb_relaxed(priority, addr); =20 spin_unlock(&gicv3.lock); } @@ -1273,6 +1305,7 @@ static void gicv3_irq_set_affinity(struct irq_desc *d= esc, const cpumask_t *mask) { unsigned int cpu; uint64_t affinity; + void __iomem *addr =3D get_addr_by_offset(desc, GICD_IROUTER); =20 ASSERT(!cpumask_empty(mask)); =20 @@ -1284,7 +1317,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 18:25:56 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=1753369306; cv=pass; d=zohomail.com; s=zohoarc; b=JnHyCxb2tmv5r6JwgSSAyujD75Bwg3wYOJAtv2H6ym+5uvUHhc6nARIPoTiJdYktGDSED1CXn0ZkLnh16bNlrf2f6a42D3BwQmfyalhRvWWrvqpRPyZYbvjFiL0RGbnXs4vb2AdBVYbrnhyKnkbFM0SVxEG4sOe7tfqm1diw+iQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369306; 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=UkXMdcYZElU447yfHOg3hHZQC6lnB+D1rzPhPCLCkHg=; b=FTJTftTuagqFJl4n/mDnOIRH7dSpz3ggBZ+hhOg1M8S8turpHXRdZghn+1WMf39/Zn4aSVcuCOf9DQ9su08Zu3geXAjc1RLWLLG6Ik76heIvE6FyskADF8GBmJ+08wgTrIQx38fDOHAm+pBlRIqmXXnElBGZ9hXHBCdKhONMX34= 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 1753369306666236.34534134457806; Thu, 24 Jul 2025 08:01:46 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056229.1424427 (Exim 4.92) (envelope-from ) id 1uexRe-0004Z9-BA; Thu, 24 Jul 2025 15:01:18 +0000 Received: by outflank-mailman (output) from mailman id 1056229.1424427; Thu, 24 Jul 2025 15:01: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 1uexRe-0004XP-4b; Thu, 24 Jul 2025 15:01:18 +0000 Received: by outflank-mailman (input) for mailman id 1056229; Thu, 24 Jul 2025 14:57:29 +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 1uexNx-0003AJ-4K for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:29 +0000 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c202::7]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 83e2fdf6-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:27 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AM9PR03MB6756.eurprd03.prod.outlook.com (2603:10a6:20b:2dd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.22; Thu, 24 Jul 2025 14:57:25 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57:25 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 83e2fdf6-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BNpVKx12R2kR1p/R3U6KRwTyAJi35L1dG+gVlkksCunWe5dgyFw7uavDsclYHKUe84FhKYTT7U3bqNJvUm8i8vS5lrD8pfeyw602Up6LBEvA6mBlk/PUNZL1o2BlaQSDiwHqOxkCi4rMLahkU1AWXZdpnsGPDuO+gFYENGIV6/fvoYvRN7mfftdv8z1PdQGpb2NlsCm6MWjZH1/+mm4jyTvFfxxX/p7CL/2Qqsq/UL/F/bgsFRkqt/E26NUQp32pg+qXnKv7EjdTY1ruFMJir6aapPqzNGbjr1BpSPMwmruoMlsBmw83NZ1RHwnUt/Ejrkw9gndRUGHRPOhxvM1pKQ== 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=UkXMdcYZElU447yfHOg3hHZQC6lnB+D1rzPhPCLCkHg=; b=Yx6Htes1jgDTfXtwlHqpGz+vXnHgUPVA0/V9nAZVdD2g9eKM8DlbI90lz+RQB1sH2+sMxJQZkF6pI2OBcVvAXbQeYGgtqsaBazYiqbj0S5tEbVDu3x/waxVAUeOnksRe7/AdpQWkIWPXKXZKVmhdgCnp+8J1JDyBkxcXljf80uyYfc2945zSVAfB300yEWW/YpwbLnLAlURU62UZfEyBN98K5S676ByHmfIlU58JkoP4TnIS3htrAlypqDSc563kWVXPJ5KB8fVltnjVn4YxuJQlN1X22ikH81YcsJ+hRVdkg8iOQEGVIkp1BPjVBiRHCrv3L2+lfcSClTKNDeV87w== 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=UkXMdcYZElU447yfHOg3hHZQC6lnB+D1rzPhPCLCkHg=; b=p8Bs7dvFM2lI9T9bIs06HKKVYD523dkYNa7eU50sWlawhnAaF3Ie7v6gsh9pl7k2czTFQ38QHV22ewhZ4NMDgs1cb13tgTQK/dt4x6sCsxCsMr8GL3bUIpgBmGUW0In+uGStARC9H98eknQV5akGrIZRpltdhK71Df59RrwHcnZoWDYKETpIWW6UKpz2gCvdUgxUXhyx3t8a+CZNpPi28O7kvTRA6Rw3EVlODQ9B1GvKfT7zsZRtstk4Vs533Gup19jhJXXK6p3u1OeHIXQYMUx5A/3HEub3tSOSVgbFAT+UFqOU3vMeX9QGsLOlsknJ7Z50xskMc+YHlZBldkzg+g== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 02/10] xen/arm/irq: add handling for IRQs in the eSPI range Thread-Topic: [PATCH 02/10] xen/arm/irq: add handling for IRQs in the eSPI range Thread-Index: AQHb/KtEJYrDUu1qgUOuYJsg7nHmQA== Date: Thu, 24 Jul 2025 14:57:25 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: GV2PR03MB8678:EE_|AM9PR03MB6756:EE_ x-ms-office365-filtering-correlation-id: ef0e2596-4733-4f75-9ea0-08ddcac266a2 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?e03sce+CwHkqK1H9v8gWfzdA9uwVgaX2cGcyhihggGS3diQLp7BHonPY2Q?= =?iso-8859-1?Q?ZDq8ouept38CGuiUCOBe2qMcd4IjudC1e5n/bPJ/fxF7NJ11yAQvFhRIUe?= =?iso-8859-1?Q?JUEaZZ9tsOEAa3wJQFALXTsA3JiAzSebX49rzs31q0aoyTKq3dW9b64BXE?= =?iso-8859-1?Q?j6sP7jfIWbAhdkWchNQHTDPhTSgog3xLhsGBd4Bkxs+OEl2v2/XOTXljGV?= =?iso-8859-1?Q?SnRq6uaVpOKJcwoGvGfZ9uT8VRIoDraE4hNf0YT+Dt4BjIDcGtUAfPmDwJ?= =?iso-8859-1?Q?l9CrjLtM8Xn1mywZgwOtFmcEasTi3dytEugR8iw65E+D9Q2E9eztrC8sl8?= =?iso-8859-1?Q?i3lxKR69sYSiheHUfu9J0TNuHHiysANZlPD8eBg6bOhYtup8jbUswVNtJw?= =?iso-8859-1?Q?9Oe9DRyjIufQlNXYeOw54tkV7kfLikgMyyWYV3zuWiofQEbvmzqpCpmHpU?= =?iso-8859-1?Q?UX3zKovSyc6FUK3SdtyMucEjeAmXeT3jYXddlfh69iXSJiopxaw4GUhx5T?= =?iso-8859-1?Q?e/WVHxFsbaf3FU4iUcPpfmtmontiaoanV7B10Gio6o2/pOknaj+vTEaFRv?= =?iso-8859-1?Q?54AoyHf9aAjJZSw7Bw591bXBiuIQBb795ZwrAulU7Hjo/GJNJax7kbWR/3?= =?iso-8859-1?Q?J2ADZJRB04LnfJqOe3C0l/+FTdususCx2xiYBZiwMF4QhPMydkNsErFK9w?= =?iso-8859-1?Q?xy2Gb89rJqODGvZL3W1sxt570gUDL81kTKgnRoYsUyl3OW9U6MAlA5V86N?= =?iso-8859-1?Q?xOcXGMUsGyfuSGGi72IDAjDM7fHf8OyPJhF94mNtbhpOrB/c4EA/8bpsLN?= =?iso-8859-1?Q?dzR1f9bXlbAc5fIKl6ofOhOvqVFu/SoTFCuTUaLKJSD0xHl3YdLvvwG81x?= =?iso-8859-1?Q?4cQSdnCz+r77jtznYygFYfUhmE5pW+lMpUpDcWiqR3/tAUttD9NXa4QSoH?= =?iso-8859-1?Q?0jdlw13pIm5KEaFKcGYaol5n+KvREvo4Hz7zf91BjcdYRsVdBXSVo19C0/?= =?iso-8859-1?Q?NGpdhlgY1Q/vX9HHlXFPpxPOSlPXoLefGhw3/ygNrrOkqSMZGco9XE9K7t?= =?iso-8859-1?Q?IaK13WvMoeRTSx3vqP062dF0vOa6Lt7DqejCUmzZLTVvOeTK5Yzzj4V0uB?= =?iso-8859-1?Q?81X2YYPfJY9/Ee51QZ6cEThN4E4CVbrSvNKOzvWAPa1oWuv+7nUkaX8HI2?= =?iso-8859-1?Q?A/wA72Ic/kwKFOe4MEGs6sIlz7yrL/8Xi+vNiQPDLww5EmsGLLIre4jnTh?= =?iso-8859-1?Q?Iza0Glzo0Xy3Y9OP3GHrgOG/F99UlE8jWwMA0ueTwlF+EPY8yDZIclNWYw?= =?iso-8859-1?Q?ZjTUN18r+jxZQ3vSUuXCCeZXyl37FPgfpe8TGMRZAll1oPQ++HNu/P4Ggv?= =?iso-8859-1?Q?bl5c9iZBaLBmo86cG6QHmePe3rRYIhR9WHqCEVbM+fzWv0mR7MR0/0kqlR?= =?iso-8859-1?Q?kG0u+UXo72DZuX0YsSXz01DvpJdqoAakwufEmbOGp1JCfw3+MMe6l6OJcv?= =?iso-8859-1?Q?M5oOwsxjqmVc3ibnEesnLL7+GsCvjJs8eAnJDMNtBN3Q=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.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?gqQNqeylgXPU954Z8jH4VeczTztBqygvFULlr/FcHjGEyt2CWpPnhlr8oH?= =?iso-8859-1?Q?kZajrvjHpqdwteoQJmt/Vd7aZ46dmZCY9sg88Bl+xsQFgJ7QXRO3+lLdxz?= =?iso-8859-1?Q?UR1LjTdz+czX87+fOhY9TnhlPkOGm+s8PpluS8th1INXPlxTC27tt+aABz?= =?iso-8859-1?Q?rsd63Eh2sCDHaFXb3N2ItYInVGVpRV6s8JbM5TsBiaqllVL/bERL5wJ3IS?= =?iso-8859-1?Q?FYWUB/azhIaURbcW+MxdTcTSOLG6gjZ473n57EYNUduq9hvz80PW5XiCoI?= =?iso-8859-1?Q?RMep58sW1b2uWyMclA+CBMhMCu5bxcOH8hjtSYEfg0SsOSWwznNFqchc1z?= =?iso-8859-1?Q?CN1mwzPuyeFdNgBjZ7My0JzRU3P/4ujRoJ9pFlZ5kDwEz2lcJ6qmD2lM07?= =?iso-8859-1?Q?TQ3QHGbCM5s5TO+MT4aHx9lZwqXSe2yupXF+IeMWYsPe7J95ZzCe/9mxFX?= =?iso-8859-1?Q?QVrCKQTutaZVbUnCjkV/4ZSNOpP9/vQozYkuJlSfLe6zjRVwqlTJUUB0GN?= =?iso-8859-1?Q?Rlz0cVMAjdecJWbYejb4J+11vqbK2hvjs/DjdExQjn6ziCruixZMQmQW10?= =?iso-8859-1?Q?UEJ1B0BnGvhTvuIkXcrZL+N1H+4bIp98eqh1pnCpxyonzRKS3e9VsZVqZ+?= =?iso-8859-1?Q?Z9Dbrkd7q+2qPfSHVIoOBXkiq53V7NpA4tQHfStaLWQD+TQDuvWTRA1MT8?= =?iso-8859-1?Q?V0v8qx1U/RsiJUBHuck2oic0j9IrMuJEZbCtJT/Mb+RW6gzrwP9IV4K9+p?= =?iso-8859-1?Q?6pQf/cvE3D0MqWJE6MTbQ9K5NSre4+VeQnSwo/zoD/W0CEtYY9/jxoz+h0?= =?iso-8859-1?Q?SBPRxlmHfDIP9TP9kkPKB1J3icf7ZWYEwGTfcvvZ4qjTSWSWgkyZvPiDH3?= =?iso-8859-1?Q?jDwDmBdQ3Q6kn55w++No+CZDd/7xFkuK5MbDI6SiXDZPHinrDPE0ZI3ENJ?= =?iso-8859-1?Q?uM+al5nt9f672gZWLNToeBfrCkHK2oObHl2v4mNyCrawBiyvypA/P/qBdY?= =?iso-8859-1?Q?5I6AFsGo5z5R7zvn2aPDGyC5YEZvBC10Xz8XpZK3NDlPDtpCSTXq2LvQfQ?= =?iso-8859-1?Q?8p5HIEiB3c3N+Es/8XKclc1OIhMGKWpjT+FsOcedQqnIXEodpFij+dh+y2?= =?iso-8859-1?Q?muAOwtwuuFFmt21BQ7P4p5zlMYpyH61HhfmkYSKDQ+opJzhtMqs0VPN57i?= =?iso-8859-1?Q?M0OvP4//fFPK15M7jJKR473n+cI1a5a4zhuToJxZg3pQSjgewnp3rFwfS9?= =?iso-8859-1?Q?FPYUCQmKWm6DKhj3NUqRuWivit2tkiRWc1jIvfy7BgOkNxQq1hCmgs9RoG?= =?iso-8859-1?Q?NEktc10SObfgr3m0gZOA/r2Qn3wHWNRkyEM6nF0Vfmy1HBFshl7zMz9eQd?= =?iso-8859-1?Q?6dlnTqGTFWYhtXB4wno5HDImeorcm0ktiaVfjfoZb/sOy+STR22KP7ng4o?= =?iso-8859-1?Q?nwm7hl3BlRxdZDHRr8d1Rbxf+yLU30RkH0AwjVl7o1wrXUifge9CWiyDh1?= =?iso-8859-1?Q?cvGhCdRoZ4Bdszy9VRhdcwyX0gQfm59RwsxdOaYO5LutjxtvCDES0xsLda?= =?iso-8859-1?Q?Ogw+5wjCwo0Z8Sw3id47UHNdEYDuVvZf/X9+22zFfF/wCIk40UyYIJo+nz?= =?iso-8859-1?Q?rRTKpyeQYD7tPk/imoOt2aMdDpzB2oM0BsEmSGFTmv4kz3DAItQJxYqqy6?= =?iso-8859-1?Q?QglHE8zi++iXqsAHMN8=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef0e2596-4733-4f75-9ea0-08ddcac266a2 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:25.0845 (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: a03nkL5mDj/E/nUB0mjVQ2+P6cy2jDU2bHR3ryl6CEtuRAozdyfY3gDTi0TxLNvGT2oLewRNxebOIPLLEXxUAsY1GuokR4qpFz1oZsHs4R8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6756 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369307379116600 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 --- xen/arch/arm/Kconfig | 9 +++++++++ xen/arch/arm/include/asm/irq.h | 25 +++++++++++++++++++++++++ xen/arch/arm/irq.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 17df147b25..08073ece1f 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -135,6 +135,15 @@ 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 + default y + 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..d621f17f10 100644 --- a/xen/arch/arm/include/asm/irq.h +++ b/xen/arch/arm/include/asm/irq.h @@ -32,6 +32,14 @@ struct arch_irq_desc { #define SPI_MAX_INTID 1019 #define LPI_OFFSET 8192 =20 +#ifdef CONFIG_GICV3_ESPI +#define ESPI_BASE_INTID 4096 +#define ESPI_MAX_INTID 5119 + +#define ESPI_INTID2IDX(intid) ((intid) - ESPI_BASE_INTID) +#define ESPI_IDX2INTID(idx) ((idx) + ESPI_BASE_INTID) +#endif + /* LPIs are always numbered starting at 8192, so 0 is a good invalid case.= */ #define INVALID_LPI 0 =20 @@ -39,7 +47,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_BASE_INTID + NR_IRQS) +#else #define nr_static_irqs NR_IRQS +#endif =20 struct irq_desc; struct irqaction; @@ -55,6 +71,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 03fbb90c6c..3f68257fde 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -19,7 +19,15 @@ #include #include =20 +#ifdef CONFIG_GICV3_ESPI +/* + * To operate with IRQs in the eSPI range (4096-5119), + * we need to add the eSPI base interrupt ID. + */ +const unsigned int nr_irqs =3D ESPI_BASE_INTID + NR_IRQS; +#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 +54,9 @@ void irq_end_none(struct irq_desc *irq) } =20 static irq_desc_t irq_desc[NR_IRQS - NR_LOCAL_IRQS]; +#ifdef CONFIG_GICV3_ESPI +static irq_desc_t espi_desc[NR_IRQS]; +#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 +64,11 @@ struct irq_desc *__irq_to_desc(unsigned int irq) if ( irq < NR_LOCAL_IRQS ) return &this_cpu(local_irq_desc)[irq]; =20 +#ifdef CONFIG_GICV3_ESPI + if ( is_espi(irq) ) + return &espi_desc[ESPI_INTID2IDX(irq)]; +#endif + return &irq_desc[irq-NR_LOCAL_IRQS]; } =20 @@ -79,6 +95,20 @@ static int __init init_irq_data(void) desc->action =3D NULL; } =20 +#ifdef CONFIG_GICV3_ESPI + 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; + } +#endif + return 0; } =20 --=20 2.34.1 From nobody Thu Oct 30 18:25:56 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=1753369333; cv=pass; d=zohomail.com; s=zohoarc; b=ZLuuHJliMoMCu0VnX0O60ZmRlPUnesp6hEsVAKTAiHYLMY4BigUm6aeMIePTMmbX5VUDK0XTEhAazyL5Bau17rdqj4eHOYyGIowFrmIfghj9+OVjunSGLlaTLzLdt/YnKsdllq6+9sKs96bcgD/wIlcCBDWehi9VCHlB7NuEulo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369333; 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=/K3SUakFmg6xlGlkpHdz1OtpeXQO9IpQmNbrCTPpuSs=; b=A75nzSt7fPMLTD7IhYL19DXVmY1O+NS+iMrmd9eBBNCdbpw7CUolk4f3d8Hen5EmkvIdoh+RyCcqxPAk5XRrH8AmI+2RI8Izif3+amK8u0hKaXnh4gsgXg6dEWhJwMRSytTG6apTQTv4eLqYHNncTJVLgLMIJZaH36Cv61Ph2Ag= 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 1753369333388248.7793722884868; Thu, 24 Jul 2025 08:02:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056245.1424493 (Exim 4.92) (envelope-from ) id 1uexRi-00060e-Cm; Thu, 24 Jul 2025 15:01:22 +0000 Received: by outflank-mailman (output) from mailman id 1056245.1424493; Thu, 24 Jul 2025 15:01: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 1uexRh-0005vb-Tg; Thu, 24 Jul 2025 15:01:21 +0000 Received: by outflank-mailman (input) for mailman id 1056245; Thu, 24 Jul 2025 14:57:36 +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 1uexO4-0003Cp-8a for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:36 +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 8709381c-689e-11f0-b895-0df219b8e170; Thu, 24 Jul 2025 16:57:33 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AS8PR03MB8370.eurprd03.prod.outlook.com (2603:10a6:20b:50a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.27; Thu, 24 Jul 2025 14:57:26 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57: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: 8709381c-689e-11f0-b895-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xIB+q3xHMg1+DHHrst5X4AS7XNhCs0lmoknc9RmWKRr5XVaz8G5clMUbveOujt5w3j3FIi4McQN+jMSJJmN1AbItrHiMYVkJ3+vDydrifvtF4VHIZGih5j/wphTR1krGdqwq1LhVd7K3lfX+XdVsJrVa1NZqlwf0+6fMF1v+O3kvC8os/yj0OgWO0MGltochq5d2oalhGntHzo4XhGKMUmHQOqiFQNBc8bMgLrra9Zxa7U5ayNsRvA1EE/o+rVXmXloxi538kZrpIF44T7BoYLliebZPPSB8BRv3RNCB1vmnABZ0nR3wwLOfPop6OV7iBh11fbqpE1oYQkLIi/FZUQ== 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=/K3SUakFmg6xlGlkpHdz1OtpeXQO9IpQmNbrCTPpuSs=; b=fvDV/XTWPefu1UxKosH4IrrbbxfqVNwRVZfp9K13mlUACF/DrALJm9gTHjfPfrkxbKSJZ1QkXfPG626AB5DGBqRtLToIXDD9w6vjKKME5rwMz2apGpLApzd2hDdjjZTFqDYwDg/PF4p5scZxEQzU5lM0jG0/i6tdTlPhhKfhOum/EPUpzzNvK2L3S4E43MYtb4rY+iUN838hU0YoUkKMRME59fFzd8FJQVq5drtSPvxgt17jDaWR5T7/IpCpEqVlQ3UV+QN8IBBymob5lXn9ZtigGqXEI5qwcfCt3vC3lgeYfIx3i/CQjL0nwjfq4TxmHYM9zWzrIOfen6LOMSBX8g== 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=/K3SUakFmg6xlGlkpHdz1OtpeXQO9IpQmNbrCTPpuSs=; b=vfiHA3zQFB51L/EZIKFBu/a6UIXEWfhG0KAvriJNA+BM2nqE0hSN9RVSBjEoauUKOi3eX0efC//Fuv7j1AHwc4GR6+vnkA0N/mfzeeML470FZlIX2ZCXb6N4+zUbd6tmkG8hxHaam2gVaVXqtlo3dnsYHfm15VhqhbUE4tU5k3SLYMmXQKKRQSJ1Qe5IXVV/bjXnE0YprugGVaJPkDbfzna9ebcuA3KmXOC2deZ0Ri4df/UyAZWswvYECOBiFkVwNMepfsm21GEIkrqvuzupdnwGvOaXvrKbkCW+/haStU2On/cfkyxnJoqAOVxjUYZku42E1AfDQ8cYCDaixPp/PA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 03/10] xen/arm: gicv3: implement handling of GICv3.1 eSPI Thread-Topic: [PATCH 03/10] xen/arm: gicv3: implement handling of GICv3.1 eSPI Thread-Index: AQHb/KtEYh9SiZdfSk28/CwfX8TIUg== Date: Thu, 24 Jul 2025 14:57:25 +0000 Message-ID: <790b1d3876206c8236986d7237173dacae99cac2.1753367178.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: GV2PR03MB8678:EE_|AS8PR03MB8370:EE_ x-ms-office365-filtering-correlation-id: 6e70a7d4-cfe5-4ca1-e595-08ddcac2675f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?Asabo+sr8fwaiY9O+Tak+vXfCgx8HEAU2xntvBnIYymibpgm2mtSu9cHze?= =?iso-8859-1?Q?dGBTlQRAQeVFfQ10r1wRXS9HGDprLVqvvftq4LLwYUMk1lhyVSH+3Ig8sr?= =?iso-8859-1?Q?KHTlWdCsPSq2WvSy47WHkRBKIyzq9VUSk6wUF+/HD3FY02VbJvReZ+2PwL?= =?iso-8859-1?Q?oEq7UsO5pcjkOvCaHdbskpVbk+AxuIYc0UCTNak6HpoKmq0Aq0sm7JcHxE?= =?iso-8859-1?Q?jq5tux+N0ULx39F6y0DEk3Dk7bkhG1ofePi/HjHc3EtaB3C0T7FNqXhU0/?= =?iso-8859-1?Q?4X0BOT/7zb89A0QXMOuTR1jMQV592zOEu2uJmXzWojJy7O/okOogHcLcbl?= =?iso-8859-1?Q?xTldxGSHtfnvBk02Olc1fv6+ZBj7V1+S/e/VvaNcZtZSUG9JEdiJZxnXBt?= =?iso-8859-1?Q?KryO6D/vaZpebzzpzqwhOk2vHSo5AS4g0msfVFY485Hq9BZLSjR/I8n3jL?= =?iso-8859-1?Q?agaXuwAXrsdekfEeXVLIQl9Rdd1dBELV1IR8KpeN5lnd0G+mEfpSPNxe0M?= =?iso-8859-1?Q?WdaI+cphBlC1a7SGv8K8WTDF10vB1kYCTusynK4P2Ska31eLnyPW0voZDA?= =?iso-8859-1?Q?KhCecMwPyA4JrEtDF01LYB6oN6cH53e+DJvSjYtTK5oVHGUpzVWKKGhVTC?= =?iso-8859-1?Q?qjUgRbifNWlJQY97dWJdE466SpdWdB9djCDU2PV/9AhElJS7SVWSAt0Z0K?= =?iso-8859-1?Q?KRWW5h7tuX6+HgrjcfftqOh6lye9L6zPDeS8eeJkpAJyYTe5cXC3hJxxCF?= =?iso-8859-1?Q?qbx54kmacU/VgGjqPkTq3zCQ97E1FZABEWoHwhpFOM+0Hg9xj4wLSIvEPM?= =?iso-8859-1?Q?4xhjXpOvmpBM6a09PpNHtC3gR7P1g2cQe8fwMfR70FB/vOl86jg7U5DDYL?= =?iso-8859-1?Q?C58NJFq11+Fqt0ZdTUAnLMbbfBRDwx8AVhmSK9C7ZgHFxWtCbibLWUJE8/?= =?iso-8859-1?Q?HiIlt9w/qJKQiyhAgRIGDoeL04o2pY7TV33wpnbggi282iK+evhcRg8hvo?= =?iso-8859-1?Q?e0mRuh75HfNntXZg7GTQ8Ly/3YFfjMsxoltJdm2JFZgzids9quUx1pbd+I?= =?iso-8859-1?Q?KHV5tBNVOSvL2I8e42N6SKw8iCKR52aRcmEDStoG0tXUVdX84pehoGfBxV?= =?iso-8859-1?Q?JdOQE2zrQ3uoNCLq44sLAg+Wt/ftkzHefUWVV4t+eDwhcmFu9suhjEthnh?= =?iso-8859-1?Q?aB/VUchZKuG8hbyRKxaG55tzlOXAbeJHeJm8n85NYVpU2xuxADtDH2Avq8?= =?iso-8859-1?Q?zLWui9wWsJ0iaCuESrzW44YS+Jwfm8dxEpRS9GIGG+nJl3oYmRnnCjOadk?= =?iso-8859-1?Q?V5aqSD4XQFOt/DC9n3Y06QlLlcCVEp8UpBfxGV9XpXPiie+c6vKu+mRntR?= =?iso-8859-1?Q?iRSoyiHMzAOdoNkaW1CSRR7T6H2XvB9XlSxfvyq4GZlj0YgJhV7hpZVNJa?= =?iso-8859-1?Q?l5gsXkChookVWc49ypxLUSFfIwPLlAPHmTA4JOPBk/SbEbMju5O8HBnlxC?= =?iso-8859-1?Q?JQltzGRCe6Kr9uqaGcJPnN3ZcY63VgxDlZ1PBSk/jmOw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?1q55RAMLjQFXx3FsdDLQlzCyM4UEybS7EeXrGG4KrGAdVv3XJFUkEZ0zdu?= =?iso-8859-1?Q?mAhcJ83OPd7Q9WmhUMLTUP9UEksD24ALkbwLqLw0GPprXIIN+OY9qMS4Yw?= =?iso-8859-1?Q?sFaZgNujCQufcT+Rld4o94qSNbHoBgO7UEYaMgME1qslv/k3aHmQvm9G39?= =?iso-8859-1?Q?PZNR2+OnNMcHrPy5D8eNbdLxxskgqeT5dwH30mUC+wqYZZaU6JAAPrmfQ+?= =?iso-8859-1?Q?VCCLjtU00q+zucGJnSCGrvAdz8GMNe3VI6eVyHiwwcU0hBhY67qGYYQEAf?= =?iso-8859-1?Q?de2Bk1k3nB6oob84v4kaT3ulsBnaMFnNaqoISD0zE8I0GQrOM0LSOmhqaC?= =?iso-8859-1?Q?HfdBCgvGcxNLCocmAAF8iJUI8EuN4DZQCZsVvi3bj43JAZJkhcBP+scsdK?= =?iso-8859-1?Q?9AAgOcFOwmD/XrYooWtnsV/PM/kVHILyN+AyrQhmJjOwmqerem8qYEwW+3?= =?iso-8859-1?Q?/bZ7q06A8/b2IWgmTI/42VjgUwtW3PhZg7BqGBx0LcUWwHr7U6JzAOUN9l?= =?iso-8859-1?Q?7TubmQRhuJBa9RdTP0KMMsmdbGycQvV3yvv5/eNsl5ZhKweTIsOfL055Ts?= =?iso-8859-1?Q?GymJuwYFqamdJPAGDrifRSzAeEPnEFknyH1/WXL0a00qVUGNfDWdhW4jVy?= =?iso-8859-1?Q?1OzytVh3lVZ3cBxPthvljd9KwBWTgj1Ev9RXOBKeLgysb13kdD/grRjCSQ?= =?iso-8859-1?Q?kXYlx2mhHrlgrNKSjMSnDqj4Jfkxdohtd9glLiy/7SGTsEMLQTsDqcHz70?= =?iso-8859-1?Q?2aV1PdkeYSwfKqntS9iNnW9BL8D3JUHR8f24y6qmyVSXwacP5Xu7cS5Agr?= =?iso-8859-1?Q?85INJw4BwC2b+2l0z7IXO4in77+MYcQB7BR5gpPkjnSkMzhYHArSrPxfpi?= =?iso-8859-1?Q?7HiRWHdiArpsB4R/FlIzhUhk4Pq1dSa8QaepTRmO+e6YA+VO5Lj+D3BVrp?= =?iso-8859-1?Q?OWfBVCIYX8tyO0oGbi26Hgi631mSf4QrVYMx1EXKv2JT+slLKm3SYnsct6?= =?iso-8859-1?Q?nmTN/SrEUl8ZLRsGLVpgUDsGEt7ka4V+2LZQX9/SDUW3hm6+H33pQly8R8?= =?iso-8859-1?Q?YPvll0W3JkUTpJ17OmsJ9NJZV3CZKR7jfrZK58IQub2KLper/73gxTmEQ7?= =?iso-8859-1?Q?0zhQUHzDfojjrtQravX0NVqs8Njz5OIlr4oGkMLJRGQM0PsHeKMLe5u+1z?= =?iso-8859-1?Q?EX+jV8rZoYyelacCQhn+IsQdUFTKy+MhHRHNV6vRmOb6AGM1paIU+TQ8y5?= =?iso-8859-1?Q?32GkUMkQVG2PIlzB6s+8fk1uvycgMSFPsjAZ/PIO12L+wh3id4cTXC+qUE?= =?iso-8859-1?Q?43PaVbRHlAPtTn3dazzYYtUhAoAeEn8vGSY1N5g0Xt/ijTKKV2jhMWEZoj?= =?iso-8859-1?Q?zC/xxeap95nY8Zbo+mW8ZOAcyKA4kP7EpzgFeSyndLPWNTHh3be4pmG3YJ?= =?iso-8859-1?Q?NgL56qt8Id5f6xZesh5eorHuiX4Bu2N6ioN95tHtxYstDtWxmKsyxHw9lY?= =?iso-8859-1?Q?Kyb1qlhXj9CpxkkcuAMwVwXz9I9FBU1b8ny4Mkh89dH6hJgcSZbkOj7shz?= =?iso-8859-1?Q?wLLxzAKgffqBKOBDtw6qFoATUr/WNGyCHA0273TR6dTXBwIkZmjg8MBza1?= =?iso-8859-1?Q?iNORDFMMO8LysW7wAKowUKn41+6I6qSo3vwVzI6cGqlo8Ij+TxpEideMTM?= =?iso-8859-1?Q?nYZrr2FVL1tEw7alnnQ=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e70a7d4-cfe5-4ca1-e595-08ddcac2675f X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:25.4550 (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: Vz3AmfO4bSbh0VZuLOABsSMBV0xshO7ELoJQKwmcNjoDpl+OGK3YOS6X78wjSPd1r+JutNluBdennElCxVyA5Ct86o6hgRPc/DT18S5me8A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8370 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369336145116600 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 --- xen/arch/arm/gic-v3.c | 68 ++++++++++++++++++++++++++ xen/arch/arm/include/asm/gic.h | 4 ++ xen/arch/arm/include/asm/gic_v3_defs.h | 33 +++++++++++++ 3 files changed, 105 insertions(+) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index 8fd78aba44..476524225d 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: + { + u32 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; } @@ -645,6 +675,35 @@ static void gicv3_set_irq_priority(struct irq_desc *de= sc, spin_unlock(&gicv3.lock); } =20 +#ifdef CONFIG_GICV3_ESPI +static void gicv3_dist_espi_common_init(uint32_t type) +{ + unsigned int espi_nr; + int 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; + + 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(0xffffffffU, GICD + GICD_ICENABLERnE + (i / 32) * 4= ); + writel_relaxed(0xffffffffU, 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); +} +#endif + static void __init gicv3_dist_init(void) { uint32_t type; @@ -690,6 +749,10 @@ 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 +#ifdef CONFIG_GICV3_ESPI + gicv3_dist_espi_common_init(type); +#endif + gicv3_dist_wait_for_rwp(); =20 /* Turn on the distributor */ @@ -703,6 +766,11 @@ 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); + +#ifdef CONFIG_GICV3_ESPI + for ( i =3D 0; i < gicv3_info.nr_espi; i++ ) + writeq_relaxed_non_atomic(affinity, GICD + GICD_IROUTERnE + i * 8); +#endif } =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 541f0eeb80..1c4e3cf31e 100644 --- a/xen/arch/arm/include/asm/gic.h +++ b/xen/arch/arm/include/asm/gic.h @@ -316,6 +316,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..7f769b38e3 100644 --- a/xen/arch/arm/include/asm/gic_v3_defs.h +++ b/xen/arch/arm/include/asm/gic_v3_defs.h @@ -37,6 +37,39 @@ #define GICD_IROUTER1019 (0x7FD8) #define GICD_PIDR2 (0xFFE8) =20 +#ifdef CONFIG_GICV3_ESPI +/* 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_IROUTERnE (0x8000) +#define GICD_IROUTERnEN (0x9FFC) + +#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(typer) ((((typer) & GICD_TYPER_ESPI_RANGE_MA= SK) + 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 18:25:56 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=1753369312; cv=pass; d=zohomail.com; s=zohoarc; b=HTFS+jNtMZzEFyZSFlbYBtAjPKMJG1ezT+xTa7mBygWf/JwiYBefRdfPRqL7T/r51CkYG+VL3+SLrI8p22N4VLhc4XpeFwJbopSf/HqjzmvuhBpeM+FJkUVBh0N9fA2dsMawg5a/zjedSIoJO1W/XOTN5Ynvr9fjfsmL2tPLEvo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369312; 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=1DZZ8WbTzk/Bp/uBES1ei8cu6eCKv7drBE85bkwUtLM=; b=ZfExMUWLh5FqP7dDWIllJfIfQjxPGVuux3LMAVd7aNL7cfJnIwjf3RWAtIGgCc/+cu/1lgKMZO2Giwdh1Y8D+FsDPulV8HxZaC7vB4abf2ZKMRzzMezcdL4aHhMof/wim5IfGthx5Pn6x2w97UPB4ObemwCxI9/btIFVWeBgkEw= 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 17533693127321019.605606655086; Thu, 24 Jul 2025 08:01:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056231.1424434 (Exim 4.92) (envelope-from ) id 1uexRe-0004fv-LJ; Thu, 24 Jul 2025 15:01:18 +0000 Received: by outflank-mailman (output) from mailman id 1056231.1424434; Thu, 24 Jul 2025 15:01: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 1uexRe-0004eV-Dy; Thu, 24 Jul 2025 15:01:18 +0000 Received: by outflank-mailman (input) for mailman id 1056231; Thu, 24 Jul 2025 14:57:30 +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 1uexNy-0003AJ-Ak for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:30 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 8531a0d1-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:29 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AS8PR03MB8370.eurprd03.prod.outlook.com (2603:10a6:20b:50a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.27; Thu, 24 Jul 2025 14:57:26 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57: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: 8531a0d1-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IIO8kW/W/s/L/qfYxi/QDVf4offFztgvzTLrtySJN4et5yddC19y5p8oOX/k0/Hhz0LLxPfOjW+gnZ++VTfI2XwGh9siqiX+dba1JUcAMZ3fy2eJXGJmlUlAYl8ud98+tYrH3XEPYMg1JlLtN4bt58/yxLe3ONv2S8+zfvGPCQZ5vYo/+WeEsM7DWyyUDMqvzI/2L0YDahsF/cdxWfZmuNOHJGLlW/SMaazb5W5KRk/vw9daWCraWN6jd3KPtpC3rhGEJvcNgk95GmdvEKuy9xsHzA1IM6GKn7KHkG2AYmkaezNHD6BgyZj/Ha08DvqdGBrMw+slkNr0LPCAV1I8TQ== 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=1DZZ8WbTzk/Bp/uBES1ei8cu6eCKv7drBE85bkwUtLM=; b=L7xhnRnKCgIbt5qeqFy94XCxnQsrd99niSTu068QiA8OmDA3mVYQAAXh30shgtjoE1O557oehRFPeA9fRKgQD97G8f7cEWQHoLRlwmr0eeuDYZvMK77K0Rqs8INTm+QVD6vwkA9HjE1AuQ2fZGiAUXvyUsNtxcDhUuRLn2TEFGV7MIodSq5Q5uQQVP/vnQTvUlTWoy7fUwQXG2w4enwd24M+H2sMbZD+pObhmDqPwIFLbB2+wvmNDhSf8NBZcwvt5acYU5zBFWrbquthycnCrUv17Z72fS5MImuu8CdO9//SpqmX6uDCW1tkHUw2WoYDG/SrZ2+dPiSJuxT9xP8Z2w== 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=1DZZ8WbTzk/Bp/uBES1ei8cu6eCKv7drBE85bkwUtLM=; b=cFOPip3JgFYZcNLMk8b5VwIXcMALvtQqJroOiSlUhqVUKfpMn/F0cVnCA/7DLU2JIwetkcxgeyHB439mvhSr4c7z48Uz6ig4ZsTf9zMalHEBE3/Q8biPZvXUXiPnMe8ajSdcWL/5oiwp9WSiqgUWtQmurO9828g10exEPlOOROsG7qTR7kVPlHj1b0wjNZz4xg+xlq4w/l7JXgk9ZnyjJi1OpTiB4vGH+liQPI9i4Q01rjZC4QAfHd7qKwOxGkWaQWVB8hEuQU9gyV0OwfzoGpSTadoS3/eCFlex94nTeLK0mgZQOdX7oA7YFPG6YtMAzk4VBoJAyIu8sQeETqKH+A== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 04/10] xen/arm/irq: allow assignment/releasing of eSPI interrupts Thread-Topic: [PATCH 04/10] xen/arm/irq: allow assignment/releasing of eSPI interrupts Thread-Index: AQHb/KtE3QJQw15RRUa5PP48DVugUQ== Date: Thu, 24 Jul 2025 14:57:25 +0000 Message-ID: <126f762aba8b0f6a4eb322c27593f574f877738c.1753367178.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: GV2PR03MB8678:EE_|AS8PR03MB8370:EE_ x-ms-office365-filtering-correlation-id: 2bcc2fbd-74a1-4159-1bde-08ddcac267a6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?6UhmEzrS1aD4wo0zQIdlZAkxosjMckYXdJFge/FR3vUdbG4eTOnKZk9HZf?= =?iso-8859-1?Q?1pASRf+fjaq/rBUnQGHmyS0qbAH7GU7ZuskfpDTCcyhB3eZ7rd9A3zr0JI?= =?iso-8859-1?Q?Y3FelBGfVDoVtgDbJPt7KuQBQGb7DNMYejKP3E6LlsPtts0MieC/Aixngs?= =?iso-8859-1?Q?jZYEVE6rnz9KaCyxfYiwKSo2LIX3m8noWHqXy8aS0+NqKbEVfl0Q9Bm/RH?= =?iso-8859-1?Q?jO9Ei7cL7NeZJZdOBNg4Ah21rKcWizEGz1cdZ2CANMT7u12jEi84c9H4Eh?= =?iso-8859-1?Q?A0gG78qZRXXFmR1zYT9sWQBiNkzQ3bPQtXXDbo1VLRlmiDzBQSAP7fS3Oa?= =?iso-8859-1?Q?TJhvM1KB66o6WRextKdEzuVVo65PdGbjluzYubv7c8BRAYQSy3/I66u45X?= =?iso-8859-1?Q?rv65cPDTVfIIo05GuBJoIptwXU8IyVZHnK0pRMVIgFvmkE8RyhZlDUGwX1?= =?iso-8859-1?Q?n3Xe/J9aohkXODvAxh4jDFLz/0573ElhF/fah5F1kDBM7gwIBgQplMzr9r?= =?iso-8859-1?Q?BoipInupsamu258CSwqmJrwsgQNr8gCSOH/3WA4qjNhXy5d6OkLaom/Bo9?= =?iso-8859-1?Q?awyR6itoKCtplQmdXoM1z9QZn9veA+MmC2gWd9MUdw1D5aboQP25k1t+lu?= =?iso-8859-1?Q?jsevLL+YKREO+HJKi9CNCF/QZCegKA4/YIhiDDpNZX+sNhoqGElQO3EUHC?= =?iso-8859-1?Q?vUrTT4Zwhxuutlii0YdV85/cgJVvikphKMefl6tgdgxod8mR3NM9BQzY3q?= =?iso-8859-1?Q?zNx1rKCnP/cjiNhlqzDfmzxr+uXF6IBOQfS6JfcE93OuF83c0HrBaj40eS?= =?iso-8859-1?Q?SlaGVLGSM8ZduHjFd0zxgL0R01q5nqlmxC/E32mdv3KTDdG+mN5ZSs5Q6O?= =?iso-8859-1?Q?sfQApCu9oyr/Jxz2rnyftnB14S91/reZBf3YYPUg1rIENS2aeeQKBtRdDk?= =?iso-8859-1?Q?+JfeFnguD3wYku6FBaRxgYvkNtIG+vQmZT6Wcpf9PJevGFlF+z3K42EfDI?= =?iso-8859-1?Q?phv6BbYUEBR+HV6mlQ1QeGaI6fS/IlLz5TYNBL1hkcvE/hs0xaclk3g+Ry?= =?iso-8859-1?Q?IObUSr5LHyeTwC1Wx/KrR92djXM0tgBNZ+p5VCaIp2y6byT1Z5wWC2qW6c?= =?iso-8859-1?Q?RFPwfurrlKzEemLLGAmf3M//663iZ1i2ua7PTToQD0Tu/ni+NfT8mFBho5?= =?iso-8859-1?Q?Cig8j9M3tpMaWm6jrYAHAyYB3ptWih6YxTqe19ClSBtRfmvWyCzlVqRNuQ?= =?iso-8859-1?Q?7GR5h9F4kcjbMsKuAOXOktMaD5S/sPf1KWv4KpLVkswi5D6oi97VbCOXYC?= =?iso-8859-1?Q?MrxOBVSN5oMqozGoY3WycSbGHBUGdWCcKpUHe6x+XssLDr7WhRCyXeUPTo?= =?iso-8859-1?Q?5GLpFLzRLT7X9Ipa3+0So++ygXAUbaNGbnjF41E/1yEi0vPOGZrCVl8ILx?= =?iso-8859-1?Q?3ALCT9321tsMWDrM7sHPpI8a225B3Qq88tAoKZZsOd2NroAdICb8w7Cycu?= =?iso-8859-1?Q?AIwK8N4N33AEhcpyAGcdHeUCb10P6PXqzyZwbccohBYw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?1EqTWYKlaJIoNDiEgIzcpnNyddZrgaQcZvtpD1gxGsRCqd0W5uOSYJ/hJR?= =?iso-8859-1?Q?Of3x1LeXdIBmw/ErPgQanc31D1HlFwO1r/SK0ovPkVVsXe94adXrB3kf+X?= =?iso-8859-1?Q?wGN/Gl3k7J7fsv5RnGpfPzN2FD1htF0qgj6L4LU4BDh9pPhc0Pa++CdsA8?= =?iso-8859-1?Q?QZg8W1U97wxwGtxenTRCuHVpijfrRDcz4rLGSYvXkBDCh1Ax84QMDrNWGO?= =?iso-8859-1?Q?g2k0JDxB1Dhte7Czasnmsxk5OYkhnw29aP4kGEfaAmp0pHDGDzM36U6BzC?= =?iso-8859-1?Q?2yGvqnIvq8ip2yjvOptzrG6ietVU0YD/SWA42/05/++5Bd1cHn/B/cYueS?= =?iso-8859-1?Q?dw0q9YxK+QgZZ8VGoh6HYFSKdVuUst9lO9vVk1gDInevwWEmJ/Md6/Ba2F?= =?iso-8859-1?Q?HAyIHDl6XSOlF5alZaC8GNI77jJr5FXcz1+ab7eS9RhBVPeAaJo4Frgmx8?= =?iso-8859-1?Q?ZCbOQ1nuC0CnzA7bL33Hy3MhC/MHOZgKZ/uokrWgv015q2O/EX7LLv0UTV?= =?iso-8859-1?Q?Djni2w86ebs/o4rUrPZTKEt6rzNV8aRjlM/s5CWOnjYdSoVU/ssf1txDAN?= =?iso-8859-1?Q?nF+AhZlFfSmlbKksyh/gFmYMcijN3EriZUyKksgp7aS2Mz8ebN7o8kGYAC?= =?iso-8859-1?Q?AEQbTfl3iC+ZiuolKLR7/gZQF3uILh5WDdOw0fcW91TrMmdvNZK1vWmAfy?= =?iso-8859-1?Q?BhAfo2olHXYlSqCPwRWq8quim0uR5vZwVDFqfwbN3pviFcluSpFw8lqhWV?= =?iso-8859-1?Q?EX0hdQlrZE8B/IipJRGIf8l0JncLAp/XIPjbHUChm249lq+fn/nvWtByq4?= =?iso-8859-1?Q?gefDyWBjSR0d0/1gz5yjaBjjl2GUWDO89F8CfY00mE/pGHOR/tEzVlHN1Z?= =?iso-8859-1?Q?F9uNf+dVXMTgabn6fdG47jTLPVUbi2sP+lbPgPVqsHYXmF9oy0WloRbdi4?= =?iso-8859-1?Q?0/KFVk4lG99GDmhN9r0IgCDwCCwwezYUxkWYFRjNajGqxbJT5zTho74PV0?= =?iso-8859-1?Q?Y3q1qsaM94YU3zq87a4OeKSxseaU7joDcKQ3J+d+tFg0c09U97+HZ1aNbW?= =?iso-8859-1?Q?dZ7VmV9E6Vjd2m9z1IS1YYDVkDWZ/YY8CIibb9hSWo2o5e7wMJo/soF7Ko?= =?iso-8859-1?Q?aF9EuFUs6iQvlTL2itrS8WYuAYuXyqkw4H7yUDD8Brp7IgiYzqSWR/etyk?= =?iso-8859-1?Q?prB8Q47ZcKbsv6Z38W7AcoQjAI7Sz65T0OzWMLpOEgXO35zpq33LNxaM80?= =?iso-8859-1?Q?qzM4wTuf8+7/csJ7gViFgVK4SsuAS7m/nxOk21Nb+KRVT7y7Y4jYgbAoBt?= =?iso-8859-1?Q?IUDaBs+735UpoqQvGpbMzH6DcpaedrvuH8bmEmD7rKA66mV/xmfZIbAg4+?= =?iso-8859-1?Q?sJR9ApnUgO28LbZBltKmQN3Hm9oZn3hPeh05YvHH/bqxbLGaR0+JTfIg1p?= =?iso-8859-1?Q?WPXDvd7GDK91fAjcbix7ob1w+wBO9+NhzWzG/t2qgqBcVf2hnoxKKMmeSM?= =?iso-8859-1?Q?y6SaDnbElqQGLT5KgqPHUjf05kjxjkUfzhn+h3Uh2AlD1fvQqNFLCoDwNG?= =?iso-8859-1?Q?HiJRh02i4bkxiNj3B9Xwa9eSyt+R7Ss6k9ZbW3tak5ViaNqqdBNEqAQALO?= =?iso-8859-1?Q?A0VxH1Euq26yBPdTL5phv6TH5TchThi8YxtlicH/mQsagV1k3FhYB2YDj7?= =?iso-8859-1?Q?NVoa19bSAxRrh9vbl08=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2bcc2fbd-74a1-4159-1bde-08ddcac267a6 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:25.8215 (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: YCn5gNIYn2EngRWTRP83cKOBRYX6Qg3uc4qgOkvcmo8C4Gf8LYzANUi6de7+3/plRNWzvoR8Rz8EgZ5lOQbEIsX+ezZKV7UV77u84rTGYyk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8370 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369313830116600 Content-Type: text/plain; charset="utf-8" The current checks don't allow us to assign or release interrupts with INTID greater than 1024. This patch adds an additional condition to check whether the IRQ number is in the eSPI range and allows it to be assigned to Xen and domains if it is. Signed-off-by: Leonid Komarianskyi --- xen/arch/arm/irq.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index 3f68257fde..8c47eeb7c3 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -444,8 +444,8 @@ err: =20 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()); + /* For now, we can only route SPIs and eSPIs to the guest */ + return (((irq >=3D NR_LOCAL_IRQS) && (irq < gic_number_lines())) || is= _espi(irq)); } =20 /* @@ -589,8 +589,8 @@ int release_guest_irq(struct domain *d, unsigned int vi= rq) unsigned long flags; int ret; =20 - /* Only SPIs are supported */ - if ( virq < NR_LOCAL_IRQS || virq >=3D vgic_num_irqs(d) ) + /* Only SPIs and eSPIs are supported */ + if ( (virq < NR_LOCAL_IRQS || virq >=3D vgic_num_irqs(d)) && !is_espi(= virq) ) return -EINVAL; =20 desc =3D vgic_get_hw_irq_desc(d, NULL, virq); --=20 2.34.1 From nobody Thu Oct 30 18:25:56 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=1753369313; cv=pass; d=zohomail.com; s=zohoarc; b=X225Yr+O1lwJLiKsp+hEVT3OWI/40mOW/zQoJm3VkghIR3cgI3IPvZ5xoqAZX3MrXG3E4LBs88VtyxODb+cQhfr7UeoivHNYkNOYAbJNwXK9Xe/SJcztk9WNqy4aBvFv8Q2qOeu4cplGbnXlPrgRCKJrQbwq6AYL6hx4vDjzZ0c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369313; 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=6S09mXpqN6JFsA+d/cmSMr+x1LOLHHmyPbgmJCCy2GU=; b=BcNY0IuJVZJTNkPAEGqiqmuKMLQhBBLlNz+LHq1R8aPjYo55wCM4sx8FnODUTwvd1V3yIPdyjU04NWdAFfX3sh5B1aX5BK0kpuqXPgiCZRZ8atvQTYHDVWDXBoZ55yhSLUv2XGPeS6zEWxY7+zgsXqeGwVGmGHp4RAkYbA0B720= 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 175336931327793.54381361543574; Thu, 24 Jul 2025 08:01:53 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056233.1424440 (Exim 4.92) (envelope-from ) id 1uexRf-0004rF-01; Thu, 24 Jul 2025 15:01:19 +0000 Received: by outflank-mailman (output) from mailman id 1056233.1424440; Thu, 24 Jul 2025 15:01: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 1uexRe-0004nr-Oo; Thu, 24 Jul 2025 15:01:18 +0000 Received: by outflank-mailman (input) for mailman id 1056233; Thu, 24 Jul 2025 14:57:31 +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 1uexNz-0003AJ-4T for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:31 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 857ed430-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:30 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AS8PR03MB8370.eurprd03.prod.outlook.com (2603:10a6:20b:50a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.27; Thu, 24 Jul 2025 14:57:27 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57:27 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 857ed430-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MvAzEhnh52A18rgg6WKXpfSm2+p4qmfpmTV1jiptdA342zG8gtJ+DT8fjW8FCooEQJ07Cq4vpmwxDimWZYBFqpPn4SRC2L19p16uAMC1ROajMKqEXHMprrHYNXRvYKcoq5S8sCwPC3GSJ3D+4eqI6egxMDTSOgIsOO+QuEuSKP7Te0pLifOiK6TwdP4wxXNj6VO1qrAIGp5zMtCBZvPAUcyH/6U3gELxAUshq2CAA8Wdsd8b5euzKxoYuuzRCF6ohhWYGtariF0QnGfCNLivBKylFLFfl07ppyl5T+0s3yrhGI40EqwK7nl67ZF3Shq3c/1j6s1LvwX7G/7VsksTUw== 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=6S09mXpqN6JFsA+d/cmSMr+x1LOLHHmyPbgmJCCy2GU=; b=CiyljdAEwSSHnBD9V8OhX09fefyIOa3aG7dmDLF+5Bp0qwhFuUYUVzm9EzhZ6tRwQmU7/I/++KW7EVf8EA22MEraEy8gY/5kksVmx9wqn2JjJoB83EqhbkA71Swo63jSSC7PFjsf3DjO+F0MJPAiKEy9JuHGi1OKf/IrcH54DU1bfT7G9PJwfVKzC5n3lW5WkC5jaH6RW/hhoMD3QrX0OhUHqTYzlBR9tdU/PDQG1EX9qFaqxl1mIVm2+KQ2nK4O/91byjF12gf2r7zBfpfDpwEXkJgEvw3ySEm1WTUSJtL8Oq0N3pf/tzwzL2Ea0z3ee/lKFOLcZhBEm/V3D4tBOA== 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=6S09mXpqN6JFsA+d/cmSMr+x1LOLHHmyPbgmJCCy2GU=; b=Xz1geIj9n83B2gzVHVUZcVqMzkyDqxedQP1oAyxgKeGXkuNsuFzTWvUlzyX31XAbEAKEU94gslOn81I6pSXQaJwhsdgK4jcOPjT73kJHo2pq7d0TiSBopfF/RwxtsoMd5bmH4HzEQmAJZAMXJ7Y/TV8Z2lSz+A1SDV06uc1biCyBl1yrM7y7/o/vvzTvpTUFHIcNyqtVpNC6n1TzgIAgsI/GtQtV51T2NLlpdcoyEGOl2MYLnftG+Yj+DlJTt1sCTu+VIjVYK1JqAv+yayN7hgBA4YFkBnF6Wk7jNzVVFixibacsJIMqEgPc7Nqtd16jfoLmzaf2uFdV6VqX1/Yytw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 05/10] xen/arm: gic/irq: permit routing of eSPI interrupts to Xen and domains Thread-Topic: [PATCH 05/10] xen/arm: gic/irq: permit routing of eSPI interrupts to Xen and domains Thread-Index: AQHb/KtE4U8sM114rk+e2GRvEynFEA== Date: Thu, 24 Jul 2025 14:57:26 +0000 Message-ID: <2217fb937ec2cd9e17206233d837118350de75cc.1753367178.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: GV2PR03MB8678:EE_|AS8PR03MB8370:EE_ x-ms-office365-filtering-correlation-id: 6c499ce9-b237-419c-3edd-08ddcac267dc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?X0MyRY0+JKkIqEA8WQFPG83O4mA248WH8X3lp2JPo8nnJdNj9yiXBXsbJ4?= =?iso-8859-1?Q?9X59IwpsERwmAUtHlp7YICW38aAhPDT6WgRjvUAScseOfillDw2ORTUjNc?= =?iso-8859-1?Q?o32EVdrC4HPvJ3T8bwiHc02HBwNyNeCVdE3Muyd08FKvXJ9isjWkHjei3X?= =?iso-8859-1?Q?4e8KZspdJ53IBCysJQ4eIVCrJimj/NjrwIjpTgt0PQvv96C1Libcl0YaRW?= =?iso-8859-1?Q?G3lv2PAvHbFq5U6lr/u4m8nL6k7Vq+hxlzT1L7EhuwC1qcMn2X/F6CJqcU?= =?iso-8859-1?Q?ANSM/bo9t/xJlUTMxBxGO2dFzwgynvD8URAd6IozKr9sfI+k6d7N3x1q7d?= =?iso-8859-1?Q?ijdokOQMaIk8vmKg1IXzvDl3Qs3Z5hBAryb2nG+mLaugxzsRjuDmT/cC2N?= =?iso-8859-1?Q?aEz8SwVNiQCNbpsJd5W7dUDst9vifjC24MM1wNI+YahjWTG9my1Bbu2/k/?= =?iso-8859-1?Q?HtMejD6XiYKTyuZD2klzBIs1Q5oKy9vN0XPsUBMqxPji997IrjbTvpO0NC?= =?iso-8859-1?Q?JB7QlUzWMcqH7EaU7Apk+kq69JYDgPHoxng+DmOsdJUxMR76W0eWbLA69D?= =?iso-8859-1?Q?roiAYcCH0JvOjho0oZiCbf+fk6O8S7r+uUl49g2WYTmHrB/2c85DxwOawI?= =?iso-8859-1?Q?Zn4hudb7YI1Vb+U3+UEYPLL8oKHg6lnXjNUb9sYv6E+toSPVSKqqa7Lu28?= =?iso-8859-1?Q?nxrnxwtcOjReS9ukTSoi5ekUtT1ysrNHerG2/sbwRuaZbH9Lrr6mm1uEm5?= =?iso-8859-1?Q?s5DqN7UCCy5KFasD/rhUErbJSVGSbHzinrJjGkx70xUVFg5R6bYQRu7+hh?= =?iso-8859-1?Q?9WVS7Oj1/1abNExn1a2MSCF5O1SyI9x3OLbNLTFrL5zkr4mkLYNXALWHbt?= =?iso-8859-1?Q?goetCnEmQKjRrx29I/OY8Jz+k+YQFg+iL04KSMjoDcyD6bLa144h9mD7cZ?= =?iso-8859-1?Q?WKKfcXAyZQ/9IIIm6GvLuLNy7DzFALcTCd/0RmK7TC0nqtk36OxvmI529O?= =?iso-8859-1?Q?G+gwjzbDKwsZdelICGVZC84NOH1k52yybyHoHUpTN2GkDLU2OG2t3QONgz?= =?iso-8859-1?Q?USDNAfEEAz99j3LiTNj9cajV85+RU4sC35A4NC9b+86mW3+qi1Is9v6aQs?= =?iso-8859-1?Q?5VQpsv3eyGE4lgTHtT3TIjcUbj6tzipb5aai5R8FUik2Mu4DK4GU/i56TB?= =?iso-8859-1?Q?eapjljevNtJowln59qiuFE5iMz64fR/9iyBy6htZs7nLGI2iOkUIATr/s+?= =?iso-8859-1?Q?oUPxDfnBCEc69dFSrawjB+hJ8Dd2nJ1O7n+jfBuHATD+NvvjsQ6AFM8Du0?= =?iso-8859-1?Q?M38d1JLO72Ra94STiD4JggrQ46mZTnCRAalGKz5yYAouBNHTrBl3XSALlZ?= =?iso-8859-1?Q?YsU1om7t2gXEqaTh5G0S9Eyh3ow3fJtxrEXT05xDxBS09DZyD12ZqHn3gs?= =?iso-8859-1?Q?A9FNXErzpxcjHWUiwamNdVpTu4R6VH2TEQyAQPX3nTZHiicFHqqrz0R4dt?= =?iso-8859-1?Q?5AFIrD3ONb7enGOxYWaOY3pkkSeKpP6CUM4FA30beCFQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?20lI5FWqfCA6b6Qq0Ki5WxnxOX/SFlExIXcbIWWN1SYmFWluXKj0Mdk/ns?= =?iso-8859-1?Q?MzVv/tuFCIuxeJ3zu9k0VBkd5uT02WLce+NUHxztxbEcskceDRN6JS0P5Z?= =?iso-8859-1?Q?kn6QKnHX/DBbMT/ihAs91wvkIElC8yAE/3S3PFqcpXP++Wka/tZs+IId2G?= =?iso-8859-1?Q?XAKpEpExVg9kXvZ1t5xSonZu80vcHkFE1fv89bnMnAJooqYT1YyVI6pgN/?= =?iso-8859-1?Q?bgO2BqHjW2vFkyuI7oThdOz8qkKDPylDT804OuJza1JGeMtoJWoLcfYxu1?= =?iso-8859-1?Q?7NW03PFucruQle5oyaFyNOsaRJfpMkP1ZNEcverKjy8HvY751Ij+Ae4a8Q?= =?iso-8859-1?Q?h4OXZ2rK+C0W4AZyUEK46z9FvZ4RsyvTeYpxp/saZrjaIcNJFK8qxm162z?= =?iso-8859-1?Q?NS6b0SA8vQgrO8GfwDBlGh3/vIXFWPpS9Ax19URP0AmDnpdmJh26gQ/lQZ?= =?iso-8859-1?Q?fIU749no/6neZdjBLi3mZsL74qEgCqFzc02MSvJeMyjd8GQeePz9Iuvzoo?= =?iso-8859-1?Q?kKROTNRedS2howgHID808xnXzP9aCf98KFpyxcqM0hsonE5NpwyzBz86fx?= =?iso-8859-1?Q?pXPc7maLa5P488mJRmYAnVIOGdG8r5UcaHPhjDsZXNusKUWpwZbQFW/Zby?= =?iso-8859-1?Q?CAI9q8zLA6sXpisUnPAQ2eM6QnMyq5iP3lQ4JHoRE8KBGDrn5MPmLwParJ?= =?iso-8859-1?Q?QA8jloukRejzWYiUJrp4APgQtY+Itb3nRvPhOd+FxIFtTIv9VSq/tBPSYH?= =?iso-8859-1?Q?URLiBSF9TqHjSbe9FGA7U+2MiFu24awyw0Ypf+xLt/oY3cUdHHgKMr/caR?= =?iso-8859-1?Q?OUdBpa5a2lecn2fQhzXDdrzb+1izb6OOqwnir76qUcbSjuVDy2n2h8ubNN?= =?iso-8859-1?Q?3UbDOdEOwYYBdVsG7+6XYCL/vt3j0iHuW1fM6gmAGgVrP5eWTUQ3a5hTz4?= =?iso-8859-1?Q?x3GyJ3oMIknM5ildzzHz31U4jPgeJPNt60dGm+arvOGjK3fOkt9J98l5oD?= =?iso-8859-1?Q?QYBgBPQje7DQQ5ENn0lx0j9ytkaHfQBott/epZPkjWLcG6dWrpHTaKBhyg?= =?iso-8859-1?Q?lHLwg7pq9QaKedu6T9h2QGat5+2YxyMryVzCr0g+4UUjkmbGpdLGbeRSoI?= =?iso-8859-1?Q?VcqIGRuXJqe2yjRsJ/ewGtiBmDILL/zHJhGb0ndRAMOTYXcsiBvqjMw38x?= =?iso-8859-1?Q?sOO6bHLFec+py+D6uyo1XcUDJCBBnUnMkLKT73TM6nSFqA7MjpJ3idqy+q?= =?iso-8859-1?Q?C7YESqKEAggKI+02C45j5zQ8aIgvTTKniLxFfXgnRMtT+LuokjdsHUFOmV?= =?iso-8859-1?Q?+/JC11Hv6k1gM9JV4IyjsBOCZVmZd0IRJTwzA7/Ov+4nZeiRM3shY13CqA?= =?iso-8859-1?Q?1Nrl9RianG+EC8xwT41zqEdHwjCiaqIHjsbZnWAejzGdZwI3Yrnf5UJ830?= =?iso-8859-1?Q?hjSnOtS817kVVIjVAuEE2q2KD6t7WMMAXFMYqHTqPfTKflr5XS626ggkRX?= =?iso-8859-1?Q?UyKJVWj91O2YueMP/ZmpNDP9aJDQZqqeT8/513u3qHTdBTK64txUiC3P/Y?= =?iso-8859-1?Q?HWBO9PWgeoppO5lYFAC+wk9CT2O35Taj+WXv7mXVhaS5DxLZ/osE10/nMO?= =?iso-8859-1?Q?0f7BmI5PQM5ySLy+haSSbNKDxeSUTMotL/cUgxIp1ReYOWizQGtUgRpIaB?= =?iso-8859-1?Q?+VI0nCr3BHuamDlQdws=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c499ce9-b237-419c-3edd-08ddcac267dc X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:26.2441 (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: R+1MljyaGDFD6vBXfrfABX4ZYhIGvbj3hx251KlZfYohQktQzaM+MxTeLeHYSNZn6zqqITufRMG+zjNuX2s3KOMaEDT3jIxA/+mDNLE/wts= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8370 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369315883116600 Content-Type: text/plain; charset="utf-8" Current checks prevent routing of interrupts from the eSPI range to Xen or guest domains. The addition of the is_espi condition allows verification of whether a given index falls within the eSPI range, enabling routing of such interrupts. Existing behavior remains unchanged for configurations where eSPI support is disabled, as in this case, is_espi always returns false. Signed-off-by: Leonid Komarianskyi --- xen/arch/arm/gic.c | 4 ++-- xen/arch/arm/irq.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index e80fe0ca24..d5f2addf9f 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -111,7 +111,7 @@ 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 */ + ASSERT(desc->irq < gic_number_lines() || is_espi(desc->irq));/* Can't = route interrupts that don't exist */ ASSERT(test_bit(_IRQ_DISABLED, &desc->status)); ASSERT(spin_is_locked(&desc->lock)); =20 @@ -134,7 +134,7 @@ int gic_route_irq_to_guest(struct domain *d, unsigned i= nt virq, 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(virq < vgic_num_irqs(d) || is_espi(virq)); ASSERT(!is_lpi(virq)); =20 ret =3D vgic_connect_hw_irq(d, NULL, virq, desc, true); diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index 8c47eeb7c3..d4d40a4f2f 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -461,7 +461,7 @@ bool irq_type_set_by_domain(const struct domain *d) =20 /* * Route an IRQ to a specific guest. - * For now only SPIs are assignable to the guest. + * For now only SPIs and eSPIs are assignable to the guest. */ int route_irq_to_guest(struct domain *d, unsigned int virq, unsigned int irq, const char * devname) @@ -472,7 +472,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 ( virq >=3D vgic_num_irqs(d) && !is_espi(virq)) { printk(XENLOG_G_ERR "the vIRQ number %u is too high for domain %u (max =3D %u)\= n", --=20 2.34.1 From nobody Thu Oct 30 18:25:56 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=1753369308; cv=pass; d=zohomail.com; s=zohoarc; b=d/IDy3U8bCa9NHnSEP7foYuxIfXgIWf3NHXNQGglu6jBZ5tsZEVQiQhnbE+ExwkSp10yTrq1yAmkVydUlgchJvBO/VxVrVNngOCMOjjwmCkONGzpOSD4JLQ1FhAYa5zMb7hd/RWDtltSHVRfVAWR0Y4ofURC+7xGCpQ3H52lHcA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369308; 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=A1hupRKnHin38VHng5juuS4wnBF3qpl30SYauRGiXPw=; b=UOsxKCq2/bYzdUkDEorDdz3eOHvJOM94Hlq4QYetq64aKUbjfZgUQio/ARqLOJJihbUWVHvu6qUkZkdgThJ2ilIe2G3lb0Veb/cmFTpc+iKzE3wfJFkzLHfe7pvog8cTP0LAK3ue5leSkoSO3lJcIdVd/KSwd7B6wvsFo2eMYgc= 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 1753369308748651.2992809666812; Thu, 24 Jul 2025 08:01:48 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056235.1424449 (Exim 4.92) (envelope-from ) id 1uexRf-0004zu-Av; Thu, 24 Jul 2025 15:01:19 +0000 Received: by outflank-mailman (output) from mailman id 1056235.1424449; Thu, 24 Jul 2025 15:01: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 1uexRf-0004wf-5q; Thu, 24 Jul 2025 15:01:19 +0000 Received: by outflank-mailman (input) for mailman id 1056235; Thu, 24 Jul 2025 14:57:32 +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 1uexO0-0003AJ-4V for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:32 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 8642f152-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:31 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AS8PR03MB8370.eurprd03.prod.outlook.com (2603:10a6:20b:50a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.27; Thu, 24 Jul 2025 14:57:27 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57:27 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 8642f152-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bpc/idhC0XxHAlOk23z5Qgx5rZbTLKfDvnLg47YAaM8+PMaVCrT/FhQGMRXBCwSGVv/CHSTukUBhY+tJqJH/3l9SfVBP/T7QH6PIpdilZ1FP383X6R53Mc+0UibRO6jr2eFOe0/w/BAIZaAmC7zVqFgRx/fzY5my4NpeO7zbAoQsEDj3IwPE/ffJDwwnrop5cgzJzrHK+tUrXzg34mDLi14JOfnG26qacJRPAv0wOw+rSH5XrMPnHLAelRqcj7kOgXHeX4aG7Td3ogixjIeifhwbo6xjc444ij5zlpN0800chrwlHxqgQyUhARN99vWrRKiLOMxjtayb0HnKDgUubw== 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=A1hupRKnHin38VHng5juuS4wnBF3qpl30SYauRGiXPw=; b=U/vtmu2jG2UvACGXwZjKILo0tII9MvS/nLd7KmcRVwYtZuS2vc0n2+D2ndARaVKXoHdnBaaJha2HZNc97KmNgewUCAR8c46iATEnRpEXSI+BTw/M5GlREm5ClqCL49BZwiAgGX3MBye/4fCBIq0AHGIg8jUhzc8a6JwfnCYfCrhyx1hB/K7MY/vtoswr22YS1lpfXPe8Bw1H4aRUVDTl1+5DwndfQgI5nTPI3l8Y4W+Gi51067ttTIxE2drMzYPscsYxshfCLDBgm3K1DSMwvm+f1DODoex6yk+mZTf1VpRQSscHbUWdNYgVQkbdzYJC07xxfNFu3i7etwUeXDj/Yg== 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=A1hupRKnHin38VHng5juuS4wnBF3qpl30SYauRGiXPw=; b=vIJiTs4yfWgApJ1FzXlAzynDKFyo5z9rYlD6LicMhh8wz7Apn+c9rAG3swDpbA/dSEIm1tUWppi3mRRlLEHiuMhj7zQ3MQU+j6vo0xZ1PlxTHwcB52UqnG8TdQ3oWhnuqD/wY+PT8b1cqKFvdt6mExd/nvqvY8FZNmdUAk/9z28QCu/ttsyLWl1ipoUOLcKiee3wCbC2B0vlPy5x/yxXnlOln1zH2Ck0UUBGNR7lF2ZFHcceDDXgmLDEcWgB4wS+0cuJ03+MSz9BjlPmxlhqzfzsnKC8HRfS12qXjjJy4fE2hA1iC3/0He0PJE2WvntJWF6Trg7HDjigi5D0ZL56Eg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 06/10] xen/arm/irq: allow eSPI processing in the do_IRQ function Thread-Topic: [PATCH 06/10] xen/arm/irq: allow eSPI processing in the do_IRQ function Thread-Index: AQHb/KtFI2Edut4AEUehFxvwbJvRHQ== Date: Thu, 24 Jul 2025 14:57:26 +0000 Message-ID: <6f7e5b23852d4791c81db75ebaaccc2dc7151c22.1753367178.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: GV2PR03MB8678:EE_|AS8PR03MB8370:EE_ x-ms-office365-filtering-correlation-id: b8ed4ece-00a8-49ce-b7a6-08ddcac2680f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?TcRoCZYzgzrpIjcbCg8Pbg8uHx0o/yXrxFx+fqllyAHdUZD5kmA2jOYueZ?= =?iso-8859-1?Q?HW/dPe9vv8M65KWk78y4DFvUtrXFXrBr56GtNL7Cd67CNp47DLX9aqP46v?= =?iso-8859-1?Q?20F9Tn/YrqSS5ntDznHw5IYi8+GuzU4Zuxpr9P2PVgzN90OQhLUPgY9IEn?= =?iso-8859-1?Q?piE/cMORNOlYfdqPKZKFZkAE/UnBp1ZGQUt7AI+a/ZxJn99MGUWQC3bPy0?= =?iso-8859-1?Q?NBYJHwWioi0IQLbdxjyNh6rDpmbTxWmKYlpe6Gc1ZBfbeKleYwwPMSaAaU?= =?iso-8859-1?Q?pWVWL4cSyBofSvL2M4HPvkuQkTXPhBd5fsXfFVK1LuBGP7PxsiAr+C/h6N?= =?iso-8859-1?Q?5A6hZq5sEFmgen+2jbvpww9TR5Uz+Ta2hD+iVEoMsXixDBxC08p9ydlPNu?= =?iso-8859-1?Q?eBCZ+ONwO9nfYP/WypUAA3AY1jFD9kLaiesds3cON2S15WUCalxigwzmO/?= =?iso-8859-1?Q?G4tBWodH4JonLsGR46HiHJP77hRUzsGQLc+MZa4ebvh7rexq1I5mwaJ2kN?= =?iso-8859-1?Q?h0F57hCCeSIdVCGsqoheri7ey/vRUxUr/DJvWvipeMA4211QcxH0jqbHL8?= =?iso-8859-1?Q?T/yS4lHRGY5py9Lr3NbFjRuc78113UXntglJc8UgTgJ2xS/B+iwiHNeH20?= =?iso-8859-1?Q?ZlWBLAzchtiU4ZjdlwQw9RRC0YjeJ5gMtRmJlN9FRnniMuM5uck9vXaRQt?= =?iso-8859-1?Q?pOSZgV6IYCeIiaXLpywEMkrEWHknBJKFGNKdR8guVl+xomLe0aymUACwPD?= =?iso-8859-1?Q?arGSVwWGqho4wVBb01/hOW1eVW+LXLvV1HpnSFL7e8rRTV7lMlvwLkRzir?= =?iso-8859-1?Q?ztf28r3Ayfd9DBkg4Z3y0Qogm5cnVONR18JHfXZduYEPeScUQJ3yICicUL?= =?iso-8859-1?Q?3FgJG6/YuRqkISCgIrm9gWJwixygm0Trkv3IYXJJep+zYBBEnrMynkQGLo?= =?iso-8859-1?Q?RrBP5GHPu78a6EbZ9TER9ngeKcrAy/bO7zwrtNOtt9ItIXdE4NXbto7tFK?= =?iso-8859-1?Q?ksIxgOm/1misu4ARqWuSpEMNPbdLG5pDkc+GzMxFHyKqmc4BSkhFYFr2nB?= =?iso-8859-1?Q?RY7YsNJzrqHP9m8qDmeRNd9BDlYykwqf9x56zg9Wo6jpJrLMeRaCfkTc4/?= =?iso-8859-1?Q?bHa+WWGatDbhLn4xFVblbQqj/ZLBYXmc/4mIQku9QRBweKJSb1lCpwxKBc?= =?iso-8859-1?Q?4/DPfMt6gZIN5cDDzEEwBK9mSf6lozdkT8Hc1A6udkFw7IX+fv9/FHSjd9?= =?iso-8859-1?Q?FLLNUQ0E/yBCRqL2UgiFbOdqWVDIBLYv2lUDERVYIdQpCK0YcEeizoM4bb?= =?iso-8859-1?Q?H9HL6ndXuDbJqBlCltWFAuhDctx5qQlMvGhjsk36uxwBFRmAfl+7xYhlUo?= =?iso-8859-1?Q?q8LQrGt3B1r1lIRYqRP5vAokj76oEr7zPYKLs0T2kaIsbwbJ6V7CXu7F7p?= =?iso-8859-1?Q?+pjtgON+I7hEbAfi5a/IZg6tTfYkIJeSL1SrtPIuEqS8nnZfXB3kITFEo0?= =?iso-8859-1?Q?k4n8GSuUPEcdKkbV5L9oX/ncluQCCrVXVfE6PmaeZ8PQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?11Sl+JicpW6EGP3+oNbI1xfDhFbSqfR9qDirCmIRTH/RpqNCx3S157nj88?= =?iso-8859-1?Q?/TeonPDOmnT+fxEc5+iI2LvekYduEW3x6uZ7pJLUkTSK8p4girhHiWh03o?= =?iso-8859-1?Q?dAIb092On0GfZ9c9V+jokHQGWUQYkfP2xEPU45agoPzzKzmOlRpzmg5kbD?= =?iso-8859-1?Q?bZFgBuZhzvtP0L//VvOqMFs4yoEmqvC/VplPru1XxL3ug3b2Scve5yx46H?= =?iso-8859-1?Q?86+sphWMyiyhzMdFc6h/QYxZrlHchSHIoQ+uFreAJWcrfGd+3pp0rq3rr4?= =?iso-8859-1?Q?lFLmOkL5gOMR+caZxM+VwaPtIAA5xJKjW0wcSXI5CRh7C1JUzCLwXQT9Vf?= =?iso-8859-1?Q?iLSuUCTdR3faaozCKWf7m69tIr102BYv8oyt6yFtlNPnnE8Lafih4bPs23?= =?iso-8859-1?Q?icKRlPs5zu8hqw8JKcUwWicpU/R2DSwBeIbT9k1ejr0koX7Z0F+jIuJAqg?= =?iso-8859-1?Q?6gLXYhNuj5hdLpn4VJU/PDbQVjM+cPb5aJUI5L70oPE1quEO/MmUcChGrd?= =?iso-8859-1?Q?UlNSlsFF7KEcXJ59d8AHPn98X3o/lynn4m4cubHoCbeqkzzW+To/Tkyjwa?= =?iso-8859-1?Q?i/tbO84+5hVMRmkI+4Jho2iW0S17vMhf5kBcfG1VpbAnWwqhC1u2yWTfkA?= =?iso-8859-1?Q?sasURVlcrI6rSj2As2omQeFBIyzMXZXDLOSnvnsVEPaeYxdNpE/bQ3ba85?= =?iso-8859-1?Q?ws/hVIbvnoCztApfWu1hhKVY/BV0aQZxY7n2YCXBt0jJsUSjchNSFyR/iP?= =?iso-8859-1?Q?cpWRam/vTmGgidCVBXvyhDPXme8OF4ViUPpixmv/A1Lecdzk01IrIF6GUf?= =?iso-8859-1?Q?GY7nRw/E62NeOkMVZXCZ3+2sKtR+Ub+n2phYYv+DfMUGhOhkMEbWYg96yf?= =?iso-8859-1?Q?74IwwNDaRqfr0sX2XUW1wnobvnhCmeFxiBbLjZUmwPYZ5CN11LbJsYkHDy?= =?iso-8859-1?Q?1njMxSAylyHD3McPzNgRFONnyWAliTTKwbnNqiCsxVXjds4ulWHEbmdEuI?= =?iso-8859-1?Q?4SQhIAwpf0Pi4Byg9PyssELxhQhJS7hsrKyt10mmMWoO+cjmslRo0JzHMt?= =?iso-8859-1?Q?HGSb+zxIf5ktvdM84wbsFR8MdNzbl2hmY7F6zqeNrRLVnu0ur+CJdnDAcv?= =?iso-8859-1?Q?rTUFFQ6VKA975SswRf3UG3DwWUz+cDTO0F1VHnIIqdMQGF44pPBoCSbvWa?= =?iso-8859-1?Q?dF1QjwxQNSVQGb6ttUB1XhnUpkCKjjpRhRc71DKZrCKk412r6aCM3K+lms?= =?iso-8859-1?Q?YGMLS+II+/Y3yRDHnBrq97p/+kvRbbMvoDW6HeI503RmatnibCB7qYBWoH?= =?iso-8859-1?Q?pYcy/PMAW+wAnoy4Kj+VRN9gaPvm47DAfr+leBCIOHAK/C1hi0CTJss8Tw?= =?iso-8859-1?Q?hKa14+lCMPa9ND6VsQbnWcSIYBV9+Dx2q68506q9AtummNKquTTTKf7V2i?= =?iso-8859-1?Q?jV40kBcvyChruG48orrcEFyZSjD8uY6+ZvtAxfJPFGbehytd5NDv+34NaV?= =?iso-8859-1?Q?WJzatBC3CopVIiWbHVt+AN7GaH8sQUk1RPNkRloY+6lB8erXrGpuuDT1hs?= =?iso-8859-1?Q?nxL+qF7sT6OEcD3eIwUjtU5nB1HNYIHhg/5z9QbAmV9jyDifIlevrfyCpU?= =?iso-8859-1?Q?itRvywE15nWLxxj4i4Jez8qBIYOcy29YxFx3MkQzxFvml+A9/RNV5Gz7kz?= =?iso-8859-1?Q?47MCvaEB+5lP7iaCmzU=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8ed4ece-00a8-49ce-b7a6-08ddcac2680f X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:26.6500 (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: 0ZXD+zCeHW5DcMWm4lJecGRRvLgsmJTejVSLLzznEOB2Y2g65+GNrAqEU8HuCUFDBl/8d5pG2v2zvrhVioFh4to6ijoYqoq068sjrN2ujDg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8370 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369309479116600 Content-Type: text/plain; charset="utf-8" The do_IRQ() function is the main handler for processing IRQs. Currently, due to restrictive checks, it does not process interrupt numbers greater than 1024. This patch updates the condition to allow the handling of interrupts from the eSPI range. Signed-off-by: Leonid Komarianskyi --- 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 d5f2addf9f..b4a185fcc5 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 18:25:56 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=1753369306; cv=pass; d=zohomail.com; s=zohoarc; b=azzOo9Iwk4vVsCABBGnrL8xL3Dv78HndV2ARuqyrQVcj2LybkfpQLDE7D8+QuCip2q//eUHkdP5ZETTfs73ajXe16cAFx5nLrLIDKfqdLIwPpU8IGynDjzVucmS/tEN43FFUl5xOWpbpFjdEP0kdfTQFO/yk1v+dsHUfyO+V3BU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369306; 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=13xW6NAu/Hl54Leov1ZDjFZO+2j6m3T/RL0iSeRSjvw=; b=VhjrMq2/QSlI31AIfMf3gJKi6SonPxo4mxcMjB4V8+W5GKKbC5GeSuSOB8kQZn0a1BcfmkEwob+MfsSMJ/gmEQAou/n7j3AELvox9SB+IUMZQYP7hYk29WxzCDm7SnZqsd3Tjot49GEFQgLI5WVd9IIHjBI2OAtCGFiYiMXVF8w= 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 1753369306696673.9368677463831; Thu, 24 Jul 2025 08:01:46 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056237.1424458 (Exim 4.92) (envelope-from ) id 1uexRf-0005DB-S0; Thu, 24 Jul 2025 15:01:19 +0000 Received: by outflank-mailman (output) from mailman id 1056237.1424458; Thu, 24 Jul 2025 15:01: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 1uexRf-00059D-Ka; Thu, 24 Jul 2025 15:01:19 +0000 Received: by outflank-mailman (input) for mailman id 1056237; Thu, 24 Jul 2025 14:57:33 +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 1uexO1-0003AJ-4l for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:33 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 868296be-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:32 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AS8PR03MB8370.eurprd03.prod.outlook.com (2603:10a6:20b:50a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.27; Thu, 24 Jul 2025 14:57:27 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57:27 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 868296be-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EJRP6EFh8OVcHlRe/QLoofA48RfVOp7nUL8lAdvqE/kMMD0q+Qh/ZaZAkwe77faL3kXHq9qhMx0OO8Y6vK4aK7LQayPIh8ncgjh0xy6MtGUXX6v1tgwd++O2fZLiY3nJhhcbyVMdvW++GLW2ADEVgCQ3u68uUpR9QX/KUBTBN35211EARAiakzgOeLH0PcPpFsGECM+NYDyRfbYE9kIQuoGBUmh5S5ktiy7a7/EYqBQe02meVE9wHV//IF9Ey+ztpcJ0yxwvSl1z7nRiuHI8HMgzrx4iGGBZeZHqYRYjdXkB/cvp/NU7xeuQOCj74UIjF9FSweZhzWRpmaBq6HcqQw== 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=13xW6NAu/Hl54Leov1ZDjFZO+2j6m3T/RL0iSeRSjvw=; b=q/A9pXzZdjaKqTj7r5ZjWEPDjiqmFnqDR0FtCsjt9ojJ0eK99LBmms3SUpshEwKk/dnrFnPRvIpQjgQWrNJ6rz6TBHSf4vcMyGneCE4/eHDjaUxi8DBiIJ8Ef17Mz9qaFB+o7WrSF0wB3ikak/vE2sraZto9xE9aFFK/af9vVdSP1jsGYoVoQR+jmis6FwBtC0FnxKDbaoe9YTs7sHHEr+DJn3mYlW+WYcHPER24bj8Kaxysaw651HoRQpGKxYof4MSq9eyd4smvXLhXGT0FC6/eaCBTk1UKBazvW6BiMbjDaPU8popjOimIwtliarcH640yhSDgrXay7UbThCgZTQ== 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=13xW6NAu/Hl54Leov1ZDjFZO+2j6m3T/RL0iSeRSjvw=; b=oKXZPZ3t4hWx7JpeSaOzu81SxapKV+5uMgHnnaQoMJFOEvbN+U3CaAmlL9BdV8naqbQMPq1hr0DOHbsVXVxA8ZkyVzrxlENGhFtEym10C6sxJuhvLLuUH0/gxDwdP4MuIXdAYDvUUD4RL25/rtFBvSep8fBXDBcZ/vjL+sQiudZYUfaaTXqVyrpgMkZDeWxkqN84mbnvuApf4HthrhVxmmPdERql9+EcnCpnf5l1LoV+6sBJs+nRwzzGXOPc5rH0erTBnkKlDLY75qQS9ROJJZgS22so6ujPhT7Kfp7CQe6bEK8kRHy6O+HY0JxcxfIuSvfnrzqvuug3pFVfCXy/SQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 07/10] xen/arm: gicv3: modify ICH_LR_PHYSICAL_MASK to allow eSPI processing Thread-Topic: [PATCH 07/10] xen/arm: gicv3: modify ICH_LR_PHYSICAL_MASK to allow eSPI processing Thread-Index: AQHb/KtFY8EybXSU60Sb7upXwd5tVQ== Date: Thu, 24 Jul 2025 14:57:27 +0000 Message-ID: <47d77527dfb720723a83daa285aca9e72819dfc4.1753367178.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: GV2PR03MB8678:EE_|AS8PR03MB8370:EE_ x-ms-office365-filtering-correlation-id: f709e853-c660-4e9d-315f-08ddcac26843 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?ycAztqJ9R+GDgeeZ41kgkKxZ7A+Br8A7460XR/mBswOc2viv6HT6bD99XG?= =?iso-8859-1?Q?vRnyWkV4Rksoit+bLofKqmdH4ZnpICswTWmKBcy/X8CqMH239hOE0abFwn?= =?iso-8859-1?Q?DhoJchnheD7KJLhVb/5h7u9rKPVJBI5N8T7EWDr2IRROCWr3teopRbJOkp?= =?iso-8859-1?Q?Sy5zWRxVum21EWWtZ5QN8Q0pyP5RqiuJuEYy/mhYcYx/VxEZ8SlNwxzOlb?= =?iso-8859-1?Q?Rbm2H+Kw7pdKJDWLN0+wn6jeCQtLL999fOprsSftfJxiomXEPbRac5RUtH?= =?iso-8859-1?Q?UkPPX4GCSUFpGQxVQOexvzdly6lEKh8foQ5HKd6EI+YQ9CBeI3q8ndKntP?= =?iso-8859-1?Q?9iUqTz2/XtqRsBm1/EL2JDQDJTXS7uw6yhPQXDcPUb3m4WQW+fvmQjmw5r?= =?iso-8859-1?Q?xl3JdOyTOY7dB7ma7SNg09cB8JFkXyi2ZSWWCnzd2lmLXpZWJEEgs4Drs0?= =?iso-8859-1?Q?4/RJEbhb8v9WukFfsQgcKOFBKVMfjq1GeWdffXwGOu2U/nFS9b77BjAlqM?= =?iso-8859-1?Q?FIx+tQzwi1YI3BASXZf5z6pId96megRO0WvbdXvxgeh4ryKug7OKBkOwL0?= =?iso-8859-1?Q?QQNgStJk9l1THNyg11D9cyRc+9i/uvtcLTL6PKCCalnKTa7Sv2Np9x5ugH?= =?iso-8859-1?Q?iPdH3ToO0ZehDic4VH76Z+tiyC1xHLjWIjihSfqazD274y/eawLfdg8gOO?= =?iso-8859-1?Q?XO1QtsTVASK63So1QKYry2/JHdgGdnJnmCZWOSMQVQC+ILBSzBTVQEnJXW?= =?iso-8859-1?Q?3W9lsBDVn//870WY+NnW5kzSto/j4PfAKedZHIFg4NOX0zLrD2SQ2+AOyN?= =?iso-8859-1?Q?UE+AAoKOJhh39TwLNCYtubNgaTs5S+TteCgRyjvpU3p/1pjg49UR4hJah3?= =?iso-8859-1?Q?TfTs88yLrFjUflsh8q1fTk0JZoYHmlcDSvVZ+G5HJbktKCUla5Ii5qQo1v?= =?iso-8859-1?Q?1KnUoctQ10DWOqy/lQrbsN8lTAudvtU0ntgMnqZn88pfJVgXFAGjCdYUV5?= =?iso-8859-1?Q?m+h1LbvDqb88OicuPUfkmOff2tuUWbx4ba2nz2Vd7a4X+6rLYqSl6F7V8y?= =?iso-8859-1?Q?YPgb05mnyX8ChYfuQ3TPXHgvZJzkcFFVbz4DJwRVaGyNY6A/+/qcBhRTFg?= =?iso-8859-1?Q?xgrow2ql/ZWlQ+53ntiRk7Yt/OMF4eIMdqhSm2uwklpsMLvsACgHZe23gu?= =?iso-8859-1?Q?yt/6Mc2Rfz9SVrwXwHV/BSaouiTVl2IBCv13v+w3n2onGliGpJot4kXYrt?= =?iso-8859-1?Q?QTpryaM3DniNV4MMIwYLLUpTUQqaDMBenPmD++8R7iqUYVI/tSqbQcD2UK?= =?iso-8859-1?Q?XmQAq5mlYhoHLGFCagRwv8xW59W4N2y61vc6dCzmojJPdz0kp/MpP230qU?= =?iso-8859-1?Q?2j59Ij3mSPHt3r1fmaKRCfFbO1qQXpwz+2xLvlksmZv66p+stQ6F9vlxci?= =?iso-8859-1?Q?duI5+dpwSQWKYIWCIcM276h0UHfS30xIWCIKYJLRe4m6m6zayv0BKF6AaK?= =?iso-8859-1?Q?MbXMGEUxDrGUQgRAtI8TFSs0vcLOa5cOy1D7227nJhiw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?w9+cUeGR1iIQfu1Qq53JZlvnIjECcZNwAmVmF9nr5qRUQ65+H1jm1gRHmu?= =?iso-8859-1?Q?5OmUqSlWtzYxG53U5g/Vsyb6ske+0greV+8OpFIpAF8J6EKDo8slDGs2oJ?= =?iso-8859-1?Q?tJ5gzSFBE9fD+URC/IGDGVoSlghQRxP2S5rF3UxNAGsGT0AfrWrWQC6OMR?= =?iso-8859-1?Q?RqWhCe1bfW05xjyym+9bKnitSkQOfcC5/Y4RJtFGMrW+KOBBNMMVrLITue?= =?iso-8859-1?Q?RBT12e5zi/NyhZv6oUO6aGbuOxtSn0L8zHquYCWurG/XhEJTlpBjtYM36X?= =?iso-8859-1?Q?L5C475iuJE0ZhGeDM0MXtRVx+cLXxD5lUHlLHwmUc3drBsHEpB3RgrZni5?= =?iso-8859-1?Q?DS74nkI1uXLOfJxXwUy/7yy9dr9jzLN471OAUNespJhibBPW3nknxgacbZ?= =?iso-8859-1?Q?a9rHx1xXT5zrXtQ7t9dOAc0kof+tXwYdqiRvbL1/0ozrzO4JSeMB8qjj3S?= =?iso-8859-1?Q?7FYZSlYKb3yq3DxHLhVLZbCwcxWBSgXD9bd8O6JlpZXTXUU7v5DU66KCee?= =?iso-8859-1?Q?HYHH7ijWfjlifNvf0vNfWcSu/i5irHdMhlqzxJJbRKEK2gfjIOeXQJvbyY?= =?iso-8859-1?Q?et9JxGpwC+Tp2I7MU+lX5odXcSGHIWKkFqbL60eWo1ZnKSr/lR2kvgsRIn?= =?iso-8859-1?Q?kNJGuE/PsIFYuctFOYHa2EOSBB3AHVIQxFYen2g7W3Sa5WGznfbcWrztc6?= =?iso-8859-1?Q?09LdXyGseXBfWZC55+pTEOHPHKH1bt/fCbCx6e7yOo0hHOwXEUAUTU+Rx1?= =?iso-8859-1?Q?qA1Bbj9dcDrQdNF+6VPWGAZb1B0rZAROjnuYbbKRxvYpiyK+goiI6Vy6zn?= =?iso-8859-1?Q?dSFDWz12ekd4xpdnETICkjdiad7QUinSCMPn9Kit4NKAmP0uPou1MlXUJL?= =?iso-8859-1?Q?5R3b20+7bXDzfy84HxGsf98Rky0ULtdZEovevCxarsQNYQ7cKYWVBkfLgS?= =?iso-8859-1?Q?sLyzJSTcljSOcQaVTUIIdfqpLDf3nSihBcLDaATCUNd85Tvw7HpgKybjhx?= =?iso-8859-1?Q?Qxd696qSdnLHFqsJ4OWPM3eY/S9B3t7fWkjDT10kB78Zb9VpsdKMFECoNf?= =?iso-8859-1?Q?f13yPfZBha9KD0+N1TJQcOXZD5RQi6o44NvVV6OknW1KJ9138k1xmp/UGo?= =?iso-8859-1?Q?dhUbfvqNIbkKAT9XeyEctJ7WJiFvKySW4IBFsP6zjIyxtu5apwRusF6+5X?= =?iso-8859-1?Q?nBI8OIo8f1rTQVF8or1wgWE1WPv/5jqo9xvyB2YOZzg7pzevNjInIAo222?= =?iso-8859-1?Q?ME1QYvEkg6krkFEx58ON5AEQmd+3GmHcXemea7zM4HAunMmH03HGooOeyI?= =?iso-8859-1?Q?T8rzOEv48lJ/o/fKZ5ZtsK2Yfl9uN0XGsV2/rNDxgDfIsN6G+j6oaRqVB5?= =?iso-8859-1?Q?yYQPg/LswNulTG2duk04FmeskTh27e6pcqkUC+yfcAO7BB7P77fw4Sq7eR?= =?iso-8859-1?Q?17lyh+WvV/2ByISfThb67/16KMbwmQ9FQOABaENv2XOcGVViEeKTKVIdgS?= =?iso-8859-1?Q?9I3hFV3LkJ7x3dwwtXF6jLkLJFTEZCEjo+c/bijtd6reFEzAb+pGVjk1AR?= =?iso-8859-1?Q?6AG21d7Z2FRP6JhsmpYykSG5A4NUtAy0b68J1IOTTFRMGfqoDGcFtmWInt?= =?iso-8859-1?Q?KmyodpPT3wmr7Ii3WWF8R3pDcyKOKJPwqLHuQ6popjwIuGVe5M/zuvy4wu?= =?iso-8859-1?Q?V4tX/bwGPpmHBUB3CUA=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f709e853-c660-4e9d-315f-08ddcac26843 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:27.0308 (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: KqC9B32+jspn3XwAMH5sA1vMqtzRBgERF+6abEO+0dOoelycZjBmQBlvPfBNikTWxMapZfFgw6zD0tBm+J8EioP5xUvUmbDnOv32OjMXURw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8370 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369307425116600 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 --- xen/arch/arm/include/asm/gic_v3_defs.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/= asm/gic_v3_defs.h index 7f769b38e3..2c02ddd287 100644 --- a/xen/arch/arm/include/asm/gic_v3_defs.h +++ b/xen/arch/arm/include/asm/gic_v3_defs.h @@ -206,7 +206,11 @@ #define ICH_LR_VIRTUAL_SHIFT 0 #define ICH_LR_CPUID_MASK 0x7 #define ICH_LR_CPUID_SHIFT 10 +#ifndef CONFIG_GICV3_ESPI #define ICH_LR_PHYSICAL_MASK 0x3ff +#else +#define ICH_LR_PHYSICAL_MASK 0x13ff +#endif #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 18:25:56 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=1753369304; cv=pass; d=zohomail.com; s=zohoarc; b=GQuNK8WmX/pbKdjwvopBLwPTCa+cHNFa3Y9C6fZMDX+9vCRUX0d5jGcVUd3f++w9+nkMXCEZGCRIsgmY9AzcBLKHCwdjA3r5MS264ROxfTWR13eNIntUwVco70F1t3jCBodeFYv3pNXOcC/JEe3di5BT5o78OG8/Vbd36K/sHyA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369304; 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=QoVvj6g0/U9ctQwv10zNbcAhZndaB/2qfxiQUFwLrVQ=; b=BHmSH+WOK5kX95+SqMSYriUWolJg4glt7hMw+bX8/Dv6/Z/3+UDHtGYdxkOhBwKKd9G4hkchc6o8/tOcgJSjvlAWHneEnI2XdScvVSnEDHz9yzdFwOyaJAJXuRY7WV3ODQys3op54CZ4AFqSTTzP1el0fJ6ydkC6bgEhuwsVuH0= 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 1753369304223553.8168495676385; Thu, 24 Jul 2025 08:01:44 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056239.1424470 (Exim 4.92) (envelope-from ) id 1uexRg-0005Q5-FC; Thu, 24 Jul 2025 15:01:20 +0000 Received: by outflank-mailman (output) from mailman id 1056239.1424470; Thu, 24 Jul 2025 15:01:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uexRg-0005Ny-6e; Thu, 24 Jul 2025 15:01:20 +0000 Received: by outflank-mailman (input) for mailman id 1056239; Thu, 24 Jul 2025 14:57:34 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uexO2-0003AJ-52 for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:34 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 86c4a5e2-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:32 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AS8PR03MB8370.eurprd03.prod.outlook.com (2603:10a6:20b:50a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.27; Thu, 24 Jul 2025 14:57:28 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57: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: 86c4a5e2-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EMjwf8iR1yzjXzCrjiGdMUDni5WLc83Dr/9R8Qlw08RfCsa1PyWQjuAUsv3oz8s7buMZKNTgM2D2oQx3+IuIXKgi8lcY8lFO0VDcfCX+Dv6uJMwa6zRmvEoKGZZLDcL+IgvhdbRSr4CA9v7Lv5REQGiWbbisz0Qd7ORdWC0WrfCqEjSRKncycpyfEbrJNOsRlrv0U4GD2nyBTW1ogFerl2YaYW3Xtw1wGUp1rR63JX+SBVVddL3p/WKzNd0OXhY3RYF8cncoYL2POQl+Fp4/MOEVglH3xkCsDPzQLDt1nNeRGbjCN8Nv5oHCeZYB52z0EsomTrpHceucgPfJySWNXw== 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=QoVvj6g0/U9ctQwv10zNbcAhZndaB/2qfxiQUFwLrVQ=; b=yV/rLH/3qIkUhq8knsksPn/bpZNfTLFSUZnhwglovwSxd32P86PzvpiC4ONeCtylJtJZX4J3/v1jynrLK+LhiNioxEo6U36RS/OY6Xvo3gjk6331mc+sDIWpjJcW+8wr8NxrJWxNSji3W84MXBw2/BV5sEMLE6hHQppeZdBkZEFSfHgw9ToR5im2/bpxxe9ugcrOtB+VBoQzxXsLwdCM3D/yR6HvokDXb1O3zr5msRdj+EXfZZw9/dVwh3wyZ8efjC3HHXjqsSoY0hdl0+48DI7vjgHGHT2+Gv3fSjomhN4ifwGPz8HH2B+GFlzxXOh3cz2nZGN4N3q9tvHc7wpOcw== 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=QoVvj6g0/U9ctQwv10zNbcAhZndaB/2qfxiQUFwLrVQ=; b=obbJTsX90bIeOtj3UeJMKCmsHXXdSX2QjMP/92QEdwVusMLb/nkk6biBt8mJDzXCjLM7gmMJUIzpuodQ77A/FwNEvq+0MkCSOOk/esl3vvZnBWQZEAP4a2H4pwaMVa4HrevE7m8+5JyDRuTN9eGGjdp1e0rtXaMoa+gISwgwqafOBSxY2hifzAXhdSAMCuQ7TSBmWwZnWFe4m5/Z4lWRQttV6Fazg7ehIyLUVNNs1WOA1JrMf581pRcZ0yX5seour9JMZ4kfWodkdWUdfmKvXCYwbWYbRtYk4N8BOP0ZEWLnTtiT9zOhL2hpJ9USZF5Gb1+XgKP74uT27vVx1Ni3+w== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 08/10] xen/arm: vgic: add resource management for extended SPIs Thread-Topic: [PATCH 08/10] xen/arm: vgic: add resource management for extended SPIs Thread-Index: AQHb/KtFsD9ZhajTqUi7jlQ5kP6yIQ== Date: Thu, 24 Jul 2025 14:57:27 +0000 Message-ID: <5eef22b5c95851568b2c42f025568431be9a108d.1753367178.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: GV2PR03MB8678:EE_|AS8PR03MB8370:EE_ x-ms-office365-filtering-correlation-id: 9a9a5b3e-ead0-4c8c-a5a9-08ddcac2687a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?fhhiKyBz8dOdgBY2uG87NjutmqNBrjQuDPsVvy+/royVbuyj+SNHp9ZKyb?= =?iso-8859-1?Q?UNqLSBwWEVAc7I0Cs7H52XKitV+vMA8hu13XwNE+B+KhS2qm9TTk4Aqi9A?= =?iso-8859-1?Q?suC4pbay5BzpCdqWIxMacLjgyLf4aBM64+jvjWYDqGEUV53BQS4Z7FIHPg?= =?iso-8859-1?Q?m3jzTARk2L/j3i2VAOj6ebVmfX8U7KzJcwAEaG1oLODrqyvuYN+NAD3LPS?= =?iso-8859-1?Q?ZJnssxWAuOQV6bSDDotgh5XmKyfqq33cCKr9TtWVCOx5uOEh1raz84qKCV?= =?iso-8859-1?Q?D6bGV0ur3VcrhrdJOh5eWcc9YwTpQJfEIPOJ5cU5UCUl3ZOWn96WtA5kPJ?= =?iso-8859-1?Q?L1fNJeGjtescJRirG/z5lVuiOgKTmAB2YE1gzSsuEexqbePG70X+69tN7c?= =?iso-8859-1?Q?nJH/6WSX1WX1sg+U1myX7x5iz8R0JGl0Ntjq6qDQz9PsqOkS4N81zk41do?= =?iso-8859-1?Q?QvtCAtguCyvU/0Kv494EYlp/btE5FDcvBNImfs30zFN9TpeSeVRWnfDO83?= =?iso-8859-1?Q?XZ5I0TIsrv5bscpUbr0B6jZy2bXRdXjID6i9u20Mb0ZOGuUg0RPSufbeBs?= =?iso-8859-1?Q?g7sV2yldkMhKg466JfoAZAPeiRPIooF28Mcdj5a2KruDdKVNxEJtmcU4/S?= =?iso-8859-1?Q?KyRO+3VP/nWaZ0NswNkwC2A4CoX85i+FuoFu/HPdoyxdfrwNwnjynF6AVN?= =?iso-8859-1?Q?z21gfmo98ItbjdvzDlMwXQvtyHrxGffvBHgS6vQerg773b5j7G8e2fyQAo?= =?iso-8859-1?Q?Nc+Bsg9r23rriyEd0FpAdwliW/td+sDjG+PJPEAACDvKPynNY0RiqACawl?= =?iso-8859-1?Q?FAtvsfCGZmI6LqdHWXZGFAYbjejsKAyxExk10lVi3xiCkxrHYJbhlZAE8g?= =?iso-8859-1?Q?OAEWNsu+kLEcWfmthxgI8dWUmX21xTXjyGpavLN1W1JsQ6EfdiQGkunEYF?= =?iso-8859-1?Q?rh0YZYePBM9W9FZXdYCprFzO4vn3tsOoDU5E02oRbPgRRtHoyB8+aJiCh3?= =?iso-8859-1?Q?xVuXhVgmlgac7zRPiqgIt0jJWEBOEVBn3KajbhFyAr9qPJfXwVbw2cHRU8?= =?iso-8859-1?Q?VZeiccohUSinxhLDfkSjcePB68uAFd6g63t3we9SpLUOxFffaa3cIO0fEc?= =?iso-8859-1?Q?mYmCWPxeswF6jtChog/5jWhTtFnImNK31mavd1kVlK2RKAUAW4T3324M7l?= =?iso-8859-1?Q?qi47E/H/TE1/KWfgbKwrYogxbTacZ/Mb4f2iVI0/I6t0hMBVsv81W/0vI/?= =?iso-8859-1?Q?HwQwjq+w9S51ylq0WUwiCFgs62FurJ4DuXk5u5cSiqXhBv4/rVsNxajamq?= =?iso-8859-1?Q?V3YOsFz4lp0oWXPVdodqZ2x8r1HDFPULRxmyeWrIVKlk3b/NDbWW35m6uS?= =?iso-8859-1?Q?prHITVaZMl1RsEX/zmbnaw2n1L9GVjy//9U/a7xc4aOdXBuhV9U0IQjvQz?= =?iso-8859-1?Q?73QNimepxT1S8YPGR9KqQB8UfxbRCcWtXoovNbZD7/VzQCDqOXJ+ZBhBaM?= =?iso-8859-1?Q?VCPDNMpPs6CpQ6bwbzwoiPv+2P/IlcVQNNYUYepocHjQ=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?2ZRsASYZJpS8uJG7Trle0DKPioIQIgL4B1jbBwlvWWhrlOouGPhPhVNgSR?= =?iso-8859-1?Q?6qaF64OdE2FZaEHEIvyGy2ibCENdA1pZDhXAVCRJS9X3cBkeqMqsyO9Nro?= =?iso-8859-1?Q?GmeS7mApExAi4w2pShD171OE3ItA65YfoehHgwZECK8mqu5pFhkE+/g20t?= =?iso-8859-1?Q?vOXjwEfomuhUW46vy4IbEak5+2AETdqyI8EvqTCfoMMHmqgoHBnxUqSp2v?= =?iso-8859-1?Q?1lhRHyv4Ver+Tdeu+iQw0rZaoAnjw3qt8gCF5VXbKIDjKZxYqn5cpVkp8F?= =?iso-8859-1?Q?bbbIH1jy6mMzb6gGWsNBW1UpktHlmltFAyUO0+4HSul7ohCpMgwspFsMRO?= =?iso-8859-1?Q?4/ON2avFCGnom4csriFB37255CEr8l8Wo/qIzGoVWdKly36kGlectLFQxU?= =?iso-8859-1?Q?xYEAhrIGrstaBfRfzKlobuPl4FXEXlA7NFFoADegZNRvxZ0X4v2gPhGYQk?= =?iso-8859-1?Q?0395KTpB3LJDMuqq71UkqJ9FxtYfGexuIxuutdD8q+sy2e3RIc7vv4xGaj?= =?iso-8859-1?Q?0JE0A4Xw37SH16Am27ET4bSa2HZGmZDOXAVBS+f8NqOgahgeKx+xtcf8Or?= =?iso-8859-1?Q?gaKsftz+jwrGbGH6tOg/19dOBaoSnaxwGLA8K7vW7t3ktdmeWigphfz1na?= =?iso-8859-1?Q?klVH8R4loEwO2ZFYNPCqusTjmsLwrGfA18vDXhKmhXk8qOzZGcmlnyFwSh?= =?iso-8859-1?Q?mrb+6XNszhgM3JHWJaSj3/AO2DURRfD2Mp6XrF9mGqiAI12wj5NrEUW0yD?= =?iso-8859-1?Q?jmcNzHAdDa4bZ7pHkkUqOKvR06ja+fXpdkMMCNJLvNPd6XBmD6npmkcCeU?= =?iso-8859-1?Q?EzZ4/SfB+5MRFxCT6Hct+j2JTuEIi7uuJU0ulc034Z9cIuJbAd7IxEIvWl?= =?iso-8859-1?Q?EcB0HWEbb3H3K5w6GyZQFgkytzz3T1GGAASb5KsulayUeYsFc0p5R4ydRf?= =?iso-8859-1?Q?bZ8+EL60+wfa8JfFAB0/M8AOAqUvcohtpPJFyEOsDis6IzhLPgMKzXlAeP?= =?iso-8859-1?Q?wusc3ixIZ/sU+O1Hf/3y5FwHYNKfPiGgPAUuzqjFL3do5GHny2jO/MRrhL?= =?iso-8859-1?Q?y6D7zzSwEae9mSlNJwKuGhVidq0U0U8zaBF5j2nzPAotYbNAVWQjTH57tJ?= =?iso-8859-1?Q?1umkWyvY5ywEX9JaCMzeIG5GoR7PIpzPKoupclj1I4rT47KtiwV6yccovo?= =?iso-8859-1?Q?BK8A5ewRVJUc6MaMM1PwLKt/INqc4rRyTpE61sBX+isT/koCXz5qwk3U8p?= =?iso-8859-1?Q?DwMmC8vMM6fpYZmM//D0eHAZd43U/tdc160O+wWJ2WuPX8zE28skEUhNOL?= =?iso-8859-1?Q?THXd4OiUaQ634ulaT1ocakAt63j2yA6hO7p+4hlPhWyB28ytFfyKt+TXK6?= =?iso-8859-1?Q?bDBLxXpWwI8GhgZBrcdFaX/IzDWRREf9V6QqwUA5OsnkhtTYxwzJhAIyt3?= =?iso-8859-1?Q?uIC7KDrrQrVmxiK3zDwvpPuosKA2MZlQKo9IUXNNnmhHxCUxU2TsmBYUg6?= =?iso-8859-1?Q?o4Yw+ELH2iQSYaWJbIbD1eUegvoJ9nTphRxoD2pLlamhD1jNz0dRdGjFu0?= =?iso-8859-1?Q?d3xwikjdY2oGVgxJH6t7gv/AvSVJTJftdvprh3wOF2yGGSNm/5AebSTdOy?= =?iso-8859-1?Q?tH2llPLDGY0nrw7irhJ8924OBbpJOwp+1sge6x+KFb7dXTO2LHeYzWQk66?= =?iso-8859-1?Q?zQEh4xvbe7jVFx3D7Sg=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a9a5b3e-ead0-4c8c-a5a9-08ddcac2687a X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:27.4259 (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: kc3jgjLMV0fWe1+Mr0ziIyXfn2fJG07HT7txUXolCLyyYwBh4hcKFrkH0/EZ4QiPVo3k7mOAETpswVBY06QP4sp4vlK0NofKs2asF2lvnJk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8370 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369305803116600 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 --- xen/arch/arm/gic-v3.c | 5 ++ xen/arch/arm/include/asm/gic.h | 3 + xen/arch/arm/include/asm/vgic.h | 28 +++++++ xen/arch/arm/vgic.c | 133 +++++++++++++++++++++++++++++++- 4 files changed, 167 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index 476524225d..a0e8ee1a1e 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -676,6 +676,11 @@ static void gicv3_set_irq_priority(struct irq_desc *de= sc, } =20 #ifdef CONFIG_GICV3_ESPI +unsigned int gic_number_espis(void) +{ + return gic_hw_ops->info->nr_espi; +} + static void gicv3_dist_espi_common_init(uint32_t type) { unsigned int espi_nr; diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h index 1c4e3cf31e..64baafb902 100644 --- a/xen/arch/arm/include/asm/gic.h +++ b/xen/arch/arm/include/asm/gic.h @@ -306,6 +306,9 @@ 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); +#endif =20 /* IRQ translation function for the device tree */ int gic_irq_xlate(const u32 *intspec, unsigned int intsize, diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 35c0c6a8b0..3731750046 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,24 @@ 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) +#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) + +/* + * 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_espi_rank(unsigned int rank) +{ + return ( rank >=3D EXT_RANK_MIN && rank < EXT_RANK_MAX ); +} +#endif + #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 @@ -302,6 +324,12 @@ extern struct vgic_irq_rank *vgic_rank_offset(struct v= cpu *v, unsigned int b, unsigned int n, unsigned int s); +#ifdef CONFIG_GICV3_ESPI +extern struct vgic_irq_rank *vgic_ext_rank_offset(struct vcpu *v, + unsigned int b, + unsigned int n, + unsigned int s); +#endif 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.c b/xen/arch/arm/vgic.c index c563ba93af..8b3bbdf918 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -31,6 +31,10 @@ 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]; +#ifdef CONFIG_GICV3_ESPI + else if ( is_espi_rank(rank) ) + return &v->domain->arch.vgic.ext_shared_irqs[EXT_RANK_NUM2IDX(rank= )]; +#endif else return NULL; } @@ -47,6 +51,16 @@ struct vgic_irq_rank *vgic_rank_offset(struct vcpu *v, u= nsigned int b, return vgic_get_rank(v, rank); } =20 +#ifdef CONFIG_GICV3_ESPI +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); +} +#endif + struct vgic_irq_rank *vgic_rank_irq(struct vcpu *v, unsigned int irq) { unsigned int rank =3D irq / 32; @@ -111,6 +125,29 @@ int domain_vgic_register(struct domain *d, unsigned in= t *mmio_count) return 0; } =20 +#ifdef CONFIG_GICV3_ESPI +static int init_vgic_espi(struct domain *d) +{ + int i; + + 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 0; i < d->arch.vgic.nr_espis; i++ ) + vgic_init_pending_irq(&d->arch.vgic.pending_irqs[i + d->arch.vgic.= nr_spis], ESPI_IDX2INTID(i)); + + 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; +} +#endif + int domain_vgic_init(struct domain *d, unsigned int nr_spis) { int i; @@ -125,6 +162,30 @@ int domain_vgic_init(struct domain *d, unsigned int nr= _spis) */ nr_spis =3D ROUNDUP(nr_spis, 32); =20 +#ifdef CONFIG_GICV3_ESPI + if ( nr_spis > ESPI_MAX_INTID ) + return -EINVAL; + + if ( is_espi(nr_spis) ) + { + /* + * During domain creation, the toolstack specifies the maximum INT= ID, + * which is defined in the domain config subtracted by 32. To comp= ute the + * actual number of eSPI that will be usable for, add back 32. + */ + 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 defult SPI to pass the nex= t 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; @@ -139,7 +200,12 @@ int domain_vgic_init(struct domain *d, unsigned int nr= _spis) return -ENOMEM; =20 d->arch.vgic.pending_irqs =3D +#ifdef CONFIG_GICV3_ESPI + xzalloc_array(struct pending_irq, d->arch.vgic.nr_spis + + d->arch.vgic.nr_espis); +#else xzalloc_array(struct pending_irq, d->arch.vgic.nr_spis); +#endif if ( d->arch.vgic.pending_irqs =3D=3D NULL ) return -ENOMEM; =20 @@ -150,12 +216,23 @@ 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 +#ifdef CONFIG_GICV3_ESPI + ret =3D init_vgic_espi(d); + if ( ret ) + return ret; +#endif + ret =3D d->arch.vgic.handler->domain_init(d); if ( ret ) return ret; =20 d->arch.vgic.allocated_irqs =3D +#ifdef CONFIG_GICV3_ESPI + xzalloc_array(unsigned long, BITS_TO_LONGS(vgic_num_irqs(d) + + d->arch.vgic.nr_espis)); +#else xzalloc_array(unsigned long, BITS_TO_LONGS(vgic_num_irqs(d))); +#endif if ( !d->arch.vgic.allocated_irqs ) return -ENOMEM; =20 @@ -189,9 +266,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, "d%u: Failed to release virq %u = ret =3D %d\n", + d->domain_id, 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); } @@ -325,6 +420,17 @@ 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); } + +#ifdef CONFIG_GICV3_ESPI + for ( i =3D ESPI_BASE_INTID; i < (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); + } +#endif } =20 void vgic_disable_irqs(struct vcpu *v, uint32_t r, unsigned int n) @@ -532,6 +638,10 @@ struct pending_irq *irq_to_pending(struct vcpu *v, uns= igned 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); +#ifdef CONFIG_GICV3_ESPI + else if ( is_espi(irq) ) + n =3D &v->domain->arch.vgic.pending_irqs[ESPI_INTID2IDX(irq) + v->= domain->arch.vgic.nr_spis]; +#endif else n =3D &v->domain->arch.vgic.pending_irqs[irq - 32]; return n; @@ -541,6 +651,14 @@ struct pending_irq *spi_to_pending(struct domain *d, u= nsigned int irq) { ASSERT(irq >=3D NR_LOCAL_IRQS); =20 +#ifdef CONFIG_GICV3_ESPI + if ( is_espi(irq) ) + { + irq =3D ESPI_INTID2IDX(irq) + d->arch.vgic.nr_spis; + return &d->arch.vgic.pending_irqs[irq]; + } +#endif + return &d->arch.vgic.pending_irqs[irq - 32]; } =20 @@ -582,7 +700,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((virq >=3D 32 && virq <=3D vgic_num_irqs(d)) || is_espi(vir= q)); =20 v =3D vgic_get_target_vcpu(d->vcpu[0], virq); }; @@ -659,9 +777,14 @@ bool vgic_emulate(struct cpu_user_regs *regs, union hs= r hsr) =20 bool vgic_reserve_virq(struct domain *d, unsigned int virq) { - if ( virq >=3D vgic_num_irqs(d) ) + if ( virq >=3D vgic_num_irqs(d) && !is_espi(virq) ) return false; =20 +#ifdef CONFIG_GICV3_ESPI + if ( is_espi(virq) ) + return !test_and_set_bit(ESPI_INTID2IDX(virq) + vgic_num_irqs(d), = d->arch.vgic.allocated_irqs); +#endif + return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); } =20 @@ -679,7 +802,13 @@ int vgic_allocate_virq(struct domain *d, bool spi) else { first =3D 32; + end =3D vgic_num_irqs(d); +#ifdef CONFIG_GICV3_ESPI + /* Take into account extended SPI range */ + end +=3D d->arch.vgic.nr_espis; +#endif + } =20 /* --=20 2.34.1 From nobody Thu Oct 30 18:25:56 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=1753369307; cv=pass; d=zohomail.com; s=zohoarc; b=VZAAo40cAF5Yq60Ak/GRkT0YiZ7u2LsglB701YlkU+hldYefYVpCvyTDGTmM2ijzaiC4GE9Y170Tg3RJdA2+8knhu/mbUISwzpHL9x2bzI3NbtxH+RGp0QzsoVegpG4WKJThx7lvzopZfxe3u8e1sTGNVWL5akWJiS1m7YQLCOQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369307; 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=V7X1rFUyABxzxvCzwxaToxFb4cxUmPwHKM4r17sKxdY=; b=eAbrFZI7JBGDCN4nrpG7a08OPOgc/EWl7XvQgj2OxTYIEqmxsjfOpKh9uG5HXztnvGf5vbrzubBM6uwKVjQkBNU7XtsNWZ/lsCHm1odAJAEeh/t67HW20SJQcGHP0kCdouaVT0Wo0Fw2/exM0jx69s3hzt6GP3Ps15TJfayoDKo= 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 1753369307459631.8036992716601; Thu, 24 Jul 2025 08:01:47 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056240.1424476 (Exim 4.92) (envelope-from ) id 1uexRg-0005dg-TJ; Thu, 24 Jul 2025 15:01:20 +0000 Received: by outflank-mailman (output) from mailman id 1056240.1424476; Thu, 24 Jul 2025 15:01:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uexRg-0005Wd-M5; Thu, 24 Jul 2025 15:01:20 +0000 Received: by outflank-mailman (input) for mailman id 1056240; Thu, 24 Jul 2025 14:57:35 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uexO3-0003AJ-5M for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:35 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 87317132-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:33 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AS8PR03MB8370.eurprd03.prod.outlook.com (2603:10a6:20b:50a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.27; Thu, 24 Jul 2025 14:57:28 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57: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: 87317132-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=M5f9cIKfpu+CcT3c/2AMaumnoUrZ0zuKMVjf6e5YleHeBpA82fJh6qPnDZR95VAdyIyqis74N8STBA2dj4lycTsi5WT9ujiC2x+vMSrbDlyXULRjChJJoPHq4IWCGCJU4Uv7qVY0rkVWaoXqEHivjDB7FAJZ1p4ReMJ/QgFzBaqtiPQBvVegBuHLKJQxepZykf9rhsyLwOwfyiUOTclA3kacv8dKp9w+4QIlvpiggyIB/WIW9VbKpan2vsYFD8GEyRC34B3oimF5H1N/n+pQpCtzvfEqtYB/CZlE6zzs6ndhIAXIvrorwgIBalFuiKZ3MPI10+O1sij6b4jSLV8hEw== 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=V7X1rFUyABxzxvCzwxaToxFb4cxUmPwHKM4r17sKxdY=; b=ub1dGf3xmGlKl6X95MgkjmLNGC1eAHyp77WYsyXKxF7X02lwm29V+Libg+/78Eprm2kk0cZLER0YOyOIynA683s1vN9tOih57Hg6IOYxCtxpCZrcSmhC+CaHv5WDhDDEfWUrskltYtGLnwMv5VDs1CWiemXstvS/1E/bFJ+1ZbZGpQD6Q6py6IlnEu8D6WSdWToi0dDpFWNNOadb4vsZd4U9yB2Ql0tyzIK/VALr29qNVV4Vaepl0cOd9Y94WzaCqTUk3ntqW0jtrovl75GOEy8OFWTjF4YHJap95rcgBPMYUuo3fLQeHl9/LEVjVYOSYHhmnzVbQQR/NTwg1t9EVg== 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=V7X1rFUyABxzxvCzwxaToxFb4cxUmPwHKM4r17sKxdY=; b=Stw4kn1A7+lilZG1jYzwSWOnuEPXELLw+ANpRv0Z9Lku72ZyrACoYHCBvzXF6Az62qZWRpKUs3iB/QvKq9Rj4n0Y/7i4xeSTw1vpMpLHCGi4bOIpKFU5gSvUBpt05AN0+dCJ0V73a6AeOxdCIdIg7uDjJbbrxj/VeqEsZ8AVS8Z2nAff6PHxxXBFv29SLPfFngqFG31Ksl39KEBQuAQqeZW8Tb5IlYfDfLVNFiu74RgJbzoPZxlH1Y3qCaxu4RFBsxgwTbKzc7RAxKTAevlBPUBXPjsbeGZoxyhKiVFMs2L8gVL5bjTMcX//LsJRGbhvm9nY8OUHXj1gnh21EqoiyA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 09/10] xen/arm: domain_build: adjust Dom0 IRQ handling to support eSPIs Thread-Topic: [PATCH 09/10] xen/arm: domain_build: adjust Dom0 IRQ handling to support eSPIs Thread-Index: AQHb/KtF7la3uAsx1EynxKn4X/Bglw== Date: Thu, 24 Jul 2025 14:57:28 +0000 Message-ID: <0b59c5fb77d26098dc928d847dff660f15a9f8ff.1753367178.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: GV2PR03MB8678:EE_|AS8PR03MB8370:EE_ x-ms-office365-filtering-correlation-id: 2eb64aac-3d4f-45ec-b145-08ddcac268b5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?koITGm0L6XH+oTU8LO/CtGIMXeIOf7r02pt4bbZNush4c9R6wL2WfmHnBf?= =?iso-8859-1?Q?CoT/glv5FsGKfTBA1DvveOv6gNgowqRya0m9KtZ0TbNqDFl8rwqiDkFWLk?= =?iso-8859-1?Q?ug3nrQG1BpaDduFzvd+XLb8uxmvBfGv9rliyDlf6VTY9LHInIT9kmk6uln?= =?iso-8859-1?Q?77/xJRiigdlE9rVhHcsIXjFnmA0AZ+6AkYS8mntuK4rfyMnYOQzdvNpvW5?= =?iso-8859-1?Q?GSasOLsTuAbYhIRw58zXnqpNzNPCnrWPnW1RWuTnyTmqFlMh94vPScp4Qe?= =?iso-8859-1?Q?1JF9s5+uXZgO+Yvd/EuJ8i1pJ1ZEVzPR/8YHvKv8CHSsVVgun4jYEs+9gh?= =?iso-8859-1?Q?URvvCDrOuYU1dunyQAnooWXNjqrT7sTzwaJJIkf8UjmHRuLLGC/PKjiFcG?= =?iso-8859-1?Q?YEeLLINjBQG8B25ukOTwb4auUCCeqoReil9bEO27mp5AKzh0FzjmKAdkyW?= =?iso-8859-1?Q?ZDrx30wKYbfqSDnB+V8FY7b//BHWDYGsY+h3qxlrOPj2h7kk+m32WlmLsE?= =?iso-8859-1?Q?zNOP0Crd9QG/1Er8NFIBftaqIH1RDOKQK0t9uh0wbCAogIgK8HVhf9UKP0?= =?iso-8859-1?Q?jHvyyFJOJOnSIDvd6j7SV/xLjbn0vsYtUxXDPz6TIGeyW6dBFEkNy/Vwjp?= =?iso-8859-1?Q?rYOUtiPBZxpl4JM+qpaHrGW3xJl+3H5B15Ccl5vQBBRSyAe89YDT+io9XI?= =?iso-8859-1?Q?hd6PzCr8JjwXLu459yPrl4QYYpzMgATVzbr1OUrqrxdEUWIchi38PZ/YlJ?= =?iso-8859-1?Q?yO2Et+eNmlKuBQRaKPv4N2gA+IKRxkx6aD85bzkgmIVKbyZAsxpEb1TdNX?= =?iso-8859-1?Q?nLQtwhiUi4fW3UtfAX8iwreQxM/aFJBKznykkbz+OfCHCIj+cbxmluI8tX?= =?iso-8859-1?Q?hDGcbrMNiIEE6tj/Cyi4W+fPj7fhTUv1XuA9S1WIitp/xPsVmLqTDYcAxW?= =?iso-8859-1?Q?dcOONoMYB2iLLlE6cgHljot2iaPyU5Q1yI/SFtLzdd+oXokzQzxZpiqWV4?= =?iso-8859-1?Q?SjAhAdH+Tb3A8NL90M/p4xKnqalcq9L287T0EG2RQheLvZD3+IZdlu1z61?= =?iso-8859-1?Q?ZdnTVS7a70qmr5gfo6s1zhDBdzdSAeGCCh2BBLrbPJ+DCHNuwtifKkgGLz?= =?iso-8859-1?Q?bY/SiAqOMffERECRKptshDdvcNdNq8EuB97ydLWJwXc+XU8h1P65CVcT3w?= =?iso-8859-1?Q?+Whn8GA1VfEly/KjEausIaabvX2yzyNwESISWk9oloH8TkfoWvyN12GkZ6?= =?iso-8859-1?Q?356mCS/LmjsXxmiqVUualEhkR5avNNy6mWQ9cqFTjZt1ZGvoJ90kS0gj1p?= =?iso-8859-1?Q?3TyuwLwVNCHMBP1UfjjjcgJ2M7U6Sen1JeGqudf7W+SVL8trzFB/xRipCK?= =?iso-8859-1?Q?yuffCPgzmamxQqMO1ea0eWbv/hEQgHC3a76OAnudh40rjd38+D4yMjyFEJ?= =?iso-8859-1?Q?Lw0P59ztEqV6G6OeVR4uM40sXRl/LkrN3oPVvgkW/fx5gKF7ybpPYy5RCW?= =?iso-8859-1?Q?QCzpcEFbhwcpKPkCH5oPfDxO2KyHIaLDsI0m09UX6Gfw=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?xt2Joj3yS26kVVckUwtUa800/svWIZZqDAeRWXDdj8u8+h179extFsVALU?= =?iso-8859-1?Q?oTh/w7ndl/0MrqbARi1ec10BbplQjztFzInb30AAyXpO80VohzGspkztaq?= =?iso-8859-1?Q?Q+1WRgl/f7gPDX5iFLRegNQMK8+DzyYjRs53dp//oK+i8WO6WF38ejkJ8i?= =?iso-8859-1?Q?zEAAbwXzuD95HJtE1ZfQPrGiO74wVGj/XSqmBil3uFBZGJMZYeTCEObTrm?= =?iso-8859-1?Q?wbZXUhuNAbjwBniTGlsoJFZ8IdZMezB+Le7aU5X+kxh3G8bP7Kd4ZI29ar?= =?iso-8859-1?Q?uogpR7g62KVQ77Z5vB45/9SdKfFWSbnJmScAA4PPHL9YYiyJoBdnU7MHG6?= =?iso-8859-1?Q?b1BrQ9cBa7p6f3Vyar6mmafm2SA0ry84dg/44FNf19qxMFYeWgKkxkUYIF?= =?iso-8859-1?Q?wM0MVmAFf8gF9zO1LRc+OWQcNAEPYA7o1VZHqwtjcX9wGeQC/aig61hcp2?= =?iso-8859-1?Q?CSIaEuwxriKJ/lLkD8WaJMOB49csHSHaaetYiGWxJkdm5tReos2u746Dcc?= =?iso-8859-1?Q?WYZs/Ff5Z1I9pg/8O5DBuqOmeELzYf076FwAypsIWx9GpmFf2WKOKe3RuO?= =?iso-8859-1?Q?ZhHgZh/cUBSq5OXGqtVPI/alonahj0IPUIs8UJOBJjnTa8nOCRSiVC5jK3?= =?iso-8859-1?Q?LPSRBZ1b93rAbRmnvujiHRCP9Un7Fw8E7vQk5JP6sL2m6Opjg5rMv1qFfc?= =?iso-8859-1?Q?LZVExPeoxBDEPw31GoCjX1e9kgT/nag28MJIwzqEqolQ37mRX2DAEE7Z5a?= =?iso-8859-1?Q?hJp2i+nEetS2toQEQjNfBx419fzsRa8aDaif6uk25feu0WcYgOIuQXsu31?= =?iso-8859-1?Q?v21sznbAzWqaZ+C7SrC1BJv7KVyuRMQ4pmRZdqzlB2XZQ95uQy8SNE5qcJ?= =?iso-8859-1?Q?kO2oiSHvINi8YhGTsl7MXq32zxwFCzvQRB3XeBfgeT/HerfUhzRGCv3KfR?= =?iso-8859-1?Q?OmuRCIXQSEbIhjg+IGiWsb64Xm1ZAn4Q9JgXEYFWfR9XWu4Fy6cAT+akyr?= =?iso-8859-1?Q?w3m/jLEvNk/5roYemowv487gHkhpK7+S0AoI8LhaQI6ST6xt1yDuU2hDVZ?= =?iso-8859-1?Q?99RemWqqMSeL8LbKw/Qz10QkHQCuWvjuTzdD5bzTS82Vq3MsU9O7qesjwZ?= =?iso-8859-1?Q?sti/DSXrsAjjA1btplCOfJ4pCj44ZSi8+BC8r5SMh+m5AYs7FpAINo9vs2?= =?iso-8859-1?Q?XxapMJTGENS7YLXxu9aWDii3Nq+kB+stfSeQn4Xw6u/8eP0pl/n9PCVx0D?= =?iso-8859-1?Q?wKcN5cV11WhAevkxdZPFGh3fhbAk7eS7GScglbryIU/Y7tfeLe+jY8fZ/l?= =?iso-8859-1?Q?0IQ3heRfJbvrP+DfUyNS23Nhu0WRAEosnetoi69LNUGgWv6qRgi3TKfUqr?= =?iso-8859-1?Q?xCpFUGhZRabKsXBG4tpir2Ev8WfpPg87rkTv6mt9xKvqjmKZakxaViiymv?= =?iso-8859-1?Q?EEvlxJWQ5Miwf7CgTh8tE03DW5870hJ4VQZXGcplCmbj9kuCu9QxhQEUK0?= =?iso-8859-1?Q?MwnTVOBUH/0cbW3KcUBqUOv1IYb8xdIF9xKoaCXAeXOBOVJ8Yl6NNz09zn?= =?iso-8859-1?Q?NFQ9tPhHJvMFITxLZPbgN7I+o+ZLlTbQNvSQ73gqfKUlBOKtlGFcA/DE4u?= =?iso-8859-1?Q?lf8+5NhoPiJNR0/7XEdOw3N/ahv0L9EjSMAFiBMJurac+Vzmie2VduFpRF?= =?iso-8859-1?Q?2Ug7O8TYJIucqM0Uor8=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2eb64aac-3d4f-45ec-b145-08ddcac268b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:28.0836 (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: Ytl/4RkaQcTmJL7y5J3kL67ETD/Kz16L1sExog2zRHWW0NkQq2IBDqlY0q0BgYMGMUFK0IbznE/UF4xP12ZHAko7L6LY9IyyNZ6mUMDIwFE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8370 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369309587116600 Content-Type: text/plain; charset="utf-8" The Dom0 configuration logic in create_dom0() 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 available for Dom0. 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 limited at 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 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 now. Signed-off-by: Leonid Komarianskyi --- xen/arch/arm/domain_build.c | 10 ++++++++++ xen/arch/arm/include/asm/vgic.h | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index d91a71acfd..fa5abf2dfb 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2055,6 +2055,16 @@ void __init create_dom0(void) /* 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; +#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 overwrite the = nr_spis with the + * maximum available INTID from eSPI range. In that case, the number o= f regular SPIs will + * be adjusted to the maximum value during vGIC initialization. + */ + if ( gic_number_espis() > 0 ) + dom0_cfg.arch.nr_spis =3D VGIC_DEF_NR_ESPIS; +#endif 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 3731750046..65fc888142 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -363,6 +363,17 @@ 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 +#ifdef CONFIG_GICV3_ESPI +/* + * Returns the maximum eSPI INTID subtracted by 32. For non-Dom0 domains, = the + * toolstack applies the same adjustment to cover local IRQs. We will add = back + * this value during VGIC initialization. This ensures consistent handling= for Dom0 + * and other domains. For the regular SPI range interrupts in this case, t= he maximum + * value of VGIC_DEF_NR_SPIS will be used. + */ +#define VGIC_DEF_NR_ESPIS (ESPI_BASE_INTID + min(gic_number_espis(), 1024U= ) - 32) +#endif + /* * Allocate a guest VIRQ * - spi =3D=3D 0 =3D> allocate a PPI. It will be the same on every vCPU --=20 2.34.1 From nobody Thu Oct 30 18:25:56 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=1753369312; cv=pass; d=zohomail.com; s=zohoarc; b=LXvh+ysjkay7A5nbV2dE5ZDkV4mDrkjqlOC9NGEk3L40XxLcu2XEm+WAZcUOt2oKGtN3g/WUZkA+LoDn6wvbhk/Mnv+ZjasdAT3S4q+lqhV71UYOLmUUMS8lThtUG/tfjWM5y6PKYX6DlEiwdjvEx9Rcn1utnoBFm+Www6M898g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1753369312; 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=ngBQHhHzYDSXDxInPT/ZO6GwWaWtqacFhcURSIfyj0g=; b=OGUjPcG2iB1U0tXrelJmNjwAkF/QgpNTWWAYM3NQMUFNLX/BTLaDYKAedFjAdyS1aY548B7TjFCsMrEMGGhB5nldT/J+OaKZLifBqkQNbFD1ADVhgaY0yzIk0cIhGSmMu/g56bca/XucEnEZLuKoqCFpMrajRxaoxbbf85gzJxE= 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 1753369312751649.4732042567219; Thu, 24 Jul 2025 08:01:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1056244.1424486 (Exim 4.92) (envelope-from ) id 1uexRh-0005kr-Hj; Thu, 24 Jul 2025 15:01:21 +0000 Received: by outflank-mailman (output) from mailman id 1056244.1424486; Thu, 24 Jul 2025 15:01:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uexRh-0005iR-50; Thu, 24 Jul 2025 15:01:21 +0000 Received: by outflank-mailman (input) for mailman id 1056244; Thu, 24 Jul 2025 14:57:36 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uexO4-0003AJ-5M for xen-devel@lists.xenproject.org; Thu, 24 Jul 2025 14:57:36 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 877a207b-689e-11f0-a31e-13f23c93f187; Thu, 24 Jul 2025 16:57:33 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by AS8PR03MB8370.eurprd03.prod.outlook.com (2603:10a6:20b:50a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.27; Thu, 24 Jul 2025 14:57:29 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.8943.029; Thu, 24 Jul 2025 14:57: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: 877a207b-689e-11f0-a31e-13f23c93f187 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YuSFIDjSQpzrjdvL021rxGdToEO6kR3Z9NozjsmFG6E9c534dQIRWN7pUhXUeWrkbd9BkkG4kDX5t03544dqeIvObKisIvLHFCSMcc53Wx2ZpuKTGpDnS1FJNnyYsm2BIzszEhbqUJeHazk36wCQe4bXD/0eMWbaHo21HwuHhF71itUr2/mndJSn0u+EiuVi8nJbbCrHyl8WC6+/rBtjrZIujAfaTCUxwLSo4K8OOCpzs7/SOxsERU2dlr8C/mEBmXtubWl9wnX3lGCyOEeyk7fUOUHNPPXc1QVFXJtoHFBr+ecAD0vD4pElqga8wZ8RLiyKbK0jENXfrYQIQVOK9A== 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=ngBQHhHzYDSXDxInPT/ZO6GwWaWtqacFhcURSIfyj0g=; b=jKMzDb48EHt3EMm0XyOZBtk28KOMOpxNpCf3kZKIk4foFHbj+Rmd7ubcLZivWEcpJ+yYk053UC8yvSYSk2GJRxnsGRDVkoda5yvp83+4f1DUBYk6Gc9TMWU5MS67jdubADkWS9uC2dDU6V3aSJujvCJBhpvL+OwvXm/j2Vqcez+/OB+gb9iY+dlQCoiJ9QOiaMG0yksQ+Cegv8VaE13IqbiIaEAG5O+0ERJIn0Wi9d+RPxmlS4NQ+h9xcAxD1OfY4oQgXPixAiFaZz2vcX8NA1YmRctSS9wdrssikApTlvcJAivhoOT1YcmQ+c35eRFyn4wa5fVCs7awPVzLWgJ/wg== 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=ngBQHhHzYDSXDxInPT/ZO6GwWaWtqacFhcURSIfyj0g=; b=ARtv/kqz4IiXsKyO5MGpJlOszeZ21TeW4dw7DlGxiKOwgCoLH0mB9M0ucGhg4osr5dv2XHHw0g1Avz8ROJVkV7xeL+osFL8weAQZik5XV6CRHXYb6b9kDNCdDPJ7FQIpg5WBR7aXwmqOyTX1ah9z8zJ3VDkoM8R+Ysa/aaRbXk0MdVPWD5+3xP2cz8RWiT2h/We0A7hIV/5ZNh4xGjF4XC2lqeSlxd0oyh9q2XCeoOxGu9O5AsXF/Rsxg650nMwuV25pctNLVB3mDbKKCk3mDsWME+2MNc+aInMz9Funsku8Kb2m6WyI0TomhClyi6XHjM4E67wjcJHq9S7/iVH3BQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH 10/10] xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers Thread-Topic: [PATCH 10/10] xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers Thread-Index: AQHb/KtGOottmVluGE2/cUXO3oie/A== Date: Thu, 24 Jul 2025 14:57:28 +0000 Message-ID: <389568b30da6fdd254c84ab3e2744684998f8112.1753367178.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: GV2PR03MB8678:EE_|AS8PR03MB8370:EE_ x-ms-office365-filtering-correlation-id: caae49b1-6c2f-4dc5-dc94-08ddcac268e7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?qMU2XfvFbZ+rv0xjBZlhmGeGp4JiB79sodMhV7+tvtDcshiycMxr2fa3KU?= =?iso-8859-1?Q?UF8su8b2A896WbqneByhhnXzT+2YNMQD54lqQtrqdj9D4Cr3LIsOoZX3mw?= =?iso-8859-1?Q?bWop69Eg9Is1CQP4BU79ep9LWX0w5i9Sf8CkFPKUjy7usyXPmRcN6ojbA/?= =?iso-8859-1?Q?d+cxCcq6hUVWCp40avB840hRoqWa0BWsnkPyTdb4NpMBEugv39m1s/RHhu?= =?iso-8859-1?Q?thmnJ6LmurlMkXI1A7DnrSZEpx0iTnkkGzPw5ME9lCQYe5cWgoxLZP637P?= =?iso-8859-1?Q?6vBJBZ7ixBAQZWiBGgN9xkAYIJInXgD86buqNbQPWjW1jnY38WixjD7cLo?= =?iso-8859-1?Q?gJhE0Ba0MiL6KOmnVcno6lx/ZjpsEqnjYAU9GSgEcqdkUu1Hr58V7J4Ork?= =?iso-8859-1?Q?vHueVT91RlvI95jdIe7kL+x1X2pFee40itLGvjwbqFBPiTTkqweyWheM7Z?= =?iso-8859-1?Q?EZ6HWncHUuBlnrRuW1/Lq619P89IkQOuV2O1YAgLyO1Y1nUdUT6V/bQRCa?= =?iso-8859-1?Q?B08AuMZJuOoNXmvFRsjZS0ZtA7y5RRwJQZ084ZSzkE4bHc+S3imD5GbWLJ?= =?iso-8859-1?Q?Jmznzbr6CPEEpOErJ41D3Ytfb1j2Tr4SfG8s5bWwdOIL3g9qT+RdX79Hhz?= =?iso-8859-1?Q?2DulOe2u2+rYUvO+ETfcju8vX1R9uONkyyYioqOH4xYPOnAZ+52h+iqTLN?= =?iso-8859-1?Q?FlSr3uPNIW1rRvwQwBhgZDywucBKlehIrPVZ+E0nKDCz9RIHcqYLY1aRid?= =?iso-8859-1?Q?g3n78PQUI5DAUFEPNeBtcqUdl8iJr6Mx2nQRC3w805bpGktoQas5mwqzFG?= =?iso-8859-1?Q?KQ/O2y4YQPuBP1cxfod5GlWSTu2xupH3VBqqU9F5omHCIUgjeWWlAfRnXo?= =?iso-8859-1?Q?iJMoXsWPjuNNhHmhkr4YE+VkXckm5h1OL7KusIRcqJyz86YVAj3yxY1HCC?= =?iso-8859-1?Q?oFYxbwM+YQe8UGVMDuVsGdrz8FUvyk4vER8dlOlTiV9xoHxABA7jUfR0Jx?= =?iso-8859-1?Q?SPCsjxg9axEtZNMBrB/uinRpBAjlrhrfk+Pg0ItCu11VGuxtc4YXoSPfAb?= =?iso-8859-1?Q?xuqovvF8FDB/8qu2OFzlfJohuQFZTnKI7TTKaWqP7/fFSMvnGJ18+r5CEE?= =?iso-8859-1?Q?higXbeLZLi9mQNH+zQxrqdwTFB2OVZP0EEuoaJTFf9EJbC3RWg+mthtF2J?= =?iso-8859-1?Q?bcB32JSQMwOudZM7w11H2CZ18PpIS1y/o9gighEfhM8EK91i4kpXi92iAl?= =?iso-8859-1?Q?zZPivhbtrpwl1f7myIJRLp8ktN8Ss+Rig6oAML0JH8Iov9eM7fQGEu58ER?= =?iso-8859-1?Q?hUEBPXq0DyKaCunbkPHFQzAVnAbYtHxKSKSYOLRixUaBbTjadosxGaNodK?= =?iso-8859-1?Q?j7VhJaFsO3DvpXyKa8HbVeK3TKHf8sD+yUMANdgqSJ9vWfAAriwXmDZnAP?= =?iso-8859-1?Q?uq9L91C492wuK4fYgpyLkepPMOkEtmKmKRlJjQr/T73tmX0iJqOysXuM09?= =?iso-8859-1?Q?+XJRH4c4Ws72DYrYV1J2YrkSpLlxyFayBqikgxxag8QA=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV2PR03MB8678.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?gi2JNlC55B4ihqOLbqRCHARIRSwGvXsTg0mdlRK/6Jc1sDN8P7DpN5jPsu?= =?iso-8859-1?Q?JU3VFiq5UiwAqf6O1+AhKp1t19p3Eef35SPHu3O95CnhnCtlHsZWing0Ij?= =?iso-8859-1?Q?/vs1Ze3KNI43LsCCTgV4IknPxE+n9Au8caV1i3JRidBb/yJ8pQiH4Yvsru?= =?iso-8859-1?Q?6IwXLj9ifgdBuxnuD+dBsb0xS4ih1hzlrQ5J6c8svdZuNx9taQN2col22p?= =?iso-8859-1?Q?jtnLbPwjVfIusN8cnJ4OyIXDi/+Nwc5kpxtqVhW6jIdOGp5tVwP4lYCBid?= =?iso-8859-1?Q?hkfR14aS5uN368Sy5yu1j8WkW3xCMyjLNoNAadFuh2zcNtUhRRMSqDmrJ+?= =?iso-8859-1?Q?ifpIOYKiYuyHaYzdN4M5mX+XWKYTIBt/crQAen6e30mvnpvBkTfwIoC9Hn?= =?iso-8859-1?Q?+wijZEX1oMK95QH5agCm9KD9D3rkwKXT86QGaOPWR8eQOhzX6LxZZd7u0M?= =?iso-8859-1?Q?OkdxtKH3tRU3Cx3x/ISG184qJZrX915juy/oGFRSYmVPPap8UnJJsp8uqw?= =?iso-8859-1?Q?auwQUMpYVmkDCFdORd48tL/cU4oactQOi8ASIFNAZ7iSr17ssbQjT/rQtH?= =?iso-8859-1?Q?koXVKOT/MnMxhNbCqdN11DD2uStpwvNHcKKtsCCgE9f1TFBtbm/5GHq2E8?= =?iso-8859-1?Q?t/eO66qbCxlQ+xG8rXVTQZg5me2dYGEmZt2YY2SIGWn8wqFptH2eNyMIT+?= =?iso-8859-1?Q?p87ygtnb2XIzONVpqhg2LzfN3zljn82BAUSH72xEet/lK4YUI3sKCFWwW2?= =?iso-8859-1?Q?EhnIsH9h4kk+JFnD/NF1nsDe4s4lKkSGCnJWQI1noTI9xU/yAd2DgWeNBB?= =?iso-8859-1?Q?v/Fe3W7/cxQ1B8iecqPRH4WCHYSy1bZkT06UtRSo+5qgYjiEx1wYkAkGVD?= =?iso-8859-1?Q?v9FvaM2ToUhUIpFmI6mgjT4dL1bz7JE6jeRqsUA4FILhQEsEG6waEuZRAq?= =?iso-8859-1?Q?S+2V7trgvjyVDJc6nEAgQNsJgbN/o+vfl9dxlvQj2sl7W+AhfCPr8W+Jlf?= =?iso-8859-1?Q?Hf8Bz6/NLBnegkXGJIQ18Q+x3+0hSYojziqG9XPTcIv3YbLOC7zFodCRYj?= =?iso-8859-1?Q?7siy8ucveE1Qr/u/Ni3HmfQLHryvkEuyvm1RAtLsWhWw6Y2n/eczaWtaW7?= =?iso-8859-1?Q?RERn4AZgq8/ZXY4s3v0N+nkZB1uC9bp4UjF++k4eeF0el1+X6e/G48oCfF?= =?iso-8859-1?Q?nmQDrmw3hRoLx8Rv5V1PeyqVzm6pXqIYaEV1KCB+AwNTf0GPPwDWasHJid?= =?iso-8859-1?Q?X06/+h4A/wqkkyAC48M4ta9A7JxeH2azmR0tuWpAsSWbbo0LJWLhLIeZ9w?= =?iso-8859-1?Q?K0lSFRzFje+NTRqLNL9WNgTOo655YOEffgYqgram5d6xcwtjsKUymM+yMM?= =?iso-8859-1?Q?uS84xtSDG/ih8yfUk15UAfShNgidI1vDFGM73+mNtJANTaoBDdsO4R0QQc?= =?iso-8859-1?Q?YHr5ZF2xm9K0Ddyld/i3u2fKuue0+6hUWuhHdn7uJ4jBg0Eg5TSeG5ivcH?= =?iso-8859-1?Q?Ud+obmMFBFVj6JYv7BvGpvt+54B+fRs3UhdjKOkDwRhbABjKZzBPjav5q0?= =?iso-8859-1?Q?ugB5cMMv4xI3RR5er6LlKfRdaHoTO3ujM99h56bL5M6FKeZFBQEHj99CfM?= =?iso-8859-1?Q?bTVE4GCRgKFKh0R03Mi8A2X22yphjnxyc4A5y9LG6+8L4v0T9mjRxbJjnl?= =?iso-8859-1?Q?LOTEE8za+tU6NwjCD2k=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: GV2PR03MB8678.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: caae49b1-6c2f-4dc5-dc94-08ddcac268e7 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2025 14:57:28.5068 (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: cNra6cdCB+ryCK4g3vwYc5x8UOBhLLHZUkIhIuk+lkHTL4xd72xGch4lySFmXnZ+1Z8UFUpL/9MOTr7mS9bxmZHy+1YLtF2gSrv39GgLLxM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8370 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1753369314143116600 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 --- xen/arch/arm/vgic-v3.c | 248 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 245 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c index 4369c55177..26f11ec6ae 100644 --- a/xen/arch/arm/vgic-v3.c +++ b/xen/arch/arm/vgic-v3.c @@ -111,7 +111,7 @@ static uint64_t vgic_fetch_irouter(struct vgic_irq_rank= *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 offset, uint64_t irouter, bool= espi) { struct vcpu *new_vcpu, *old_vcpu; unsigned int virq; @@ -123,7 +123,8 @@ static void vgic_store_irouter(struct domain *d, struct= vgic_irq_rank *rank, * The IROUTER0-31, used for SGIs/PPIs, are reserved and should * never call this function. */ - ASSERT(virq >=3D 32); + if ( !espi ) + ASSERT(virq >=3D 32); =20 /* Get the index in the rank */ offset =3D virq & INTERRUPT_RANK_MASK; @@ -146,6 +147,11 @@ static void vgic_store_irouter(struct domain *d, struc= t vgic_irq_rank *rank, /* Only migrate the IRQ if the target vCPU has changed */ if ( new_vcpu !=3D old_vcpu ) { +#ifdef CONFIG_GICV3_ESPI + /* Convert virq index to eSPI range */ + if ( espi ) + virq =3D ESPI_IDX2INTID(virq); +#endif if ( vgic_migrate_irq(old_vcpu, new_vcpu, virq) ) write_atomic(&rank->vcpu[offset], new_vcpu->vcpu_id); } @@ -685,6 +691,9 @@ static int __vgic_v3_distr_common_mmio_read(const char = *name, struct vcpu *v, { case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): +#endif /* We do not implement security extensions for guests, read zero */ if ( dabt.size !=3D DABT_WORD ) goto bad_width; goto read_as_zero; @@ -710,11 +719,19 @@ 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): +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): +#endif 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): +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): +#endif goto read_as_zero; =20 case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): @@ -752,6 +769,61 @@ static int __vgic_v3_distr_common_mmio_read(const char= *name, struct vcpu *v, return 1; } =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + if ( dabt.size !=3D DABT_WORD ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISENABLERnE, DABT_W= ORD); + if ( rank =3D=3D NULL ) goto read_as_zero; + vgic_lock_rank(v, rank, flags); + *r =3D vreg_reg32_extract(rank->ienable, info); + vgic_unlock_rank(v, rank, flags); + return 1; + + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + if ( dabt.size !=3D DABT_WORD ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICENABLERnE, DABT_W= ORD); + if ( rank =3D=3D NULL ) goto read_as_zero; + vgic_lock_rank(v, rank, flags); + *r =3D vreg_reg32_extract(rank->ienable, info); + vgic_unlock_rank(v, rank, flags); + return 1; + + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + { + uint32_t ipriorityr; + uint8_t rank_index; + + if ( dabt.size !=3D DABT_BYTE && dabt.size !=3D DABT_WORD ) goto b= ad_width; + rank =3D vgic_ext_rank_offset(v, 8, reg - GICD_IPRIORITYRnE, DABT_= WORD); + if ( rank =3D=3D NULL ) goto read_as_zero; + rank_index =3D REG_RANK_INDEX(8, reg - GICD_IPRIORITYRnE, DABT_WOR= D); + + vgic_lock_rank(v, rank, flags); + ipriorityr =3D ACCESS_ONCE(rank->ipriorityr[rank_index]); + vgic_unlock_rank(v, rank, flags); + + *r =3D vreg_reg32_extract(ipriorityr, info); + + return 1; + } + + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + { + uint32_t icfgr; + + if ( dabt.size !=3D DABT_WORD ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 2, reg - GICD_ICFGRnE, 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_ICFGRnE, DABT_WO= RD)]; + vgic_unlock_rank(v, rank, flags); + + *r =3D vreg_reg32_extract(icfgr, info); + + return 1; + } +#endif + default: printk(XENLOG_G_ERR "%pv: %s: unhandled read r%d offset %#08x\n", @@ -782,6 +854,9 @@ static int __vgic_v3_distr_common_mmio_write(const char= *name, struct vcpu *v, { case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): +#endif /* We do not implement security extensions for guests, write ignor= e */ goto write_ignore_32; =20 @@ -871,6 +946,87 @@ static int __vgic_v3_distr_common_mmio_write(const cha= r *name, struct vcpu *v, vgic_unlock_rank(v, rank, flags); return 1; =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + if ( dabt.size !=3D DABT_WORD ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISENABLERnE, DABT_W= ORD); + 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), EXT_RANK_IDX2NUM(rank= ->index)); + vgic_unlock_rank(v, rank, flags); + return 1; + + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + if ( dabt.size !=3D DABT_WORD ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICENABLERnE, DABT_W= ORD); + 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, EXT_RANK_IDX2NUM(rank-= >index)); + vgic_unlock_rank(v, rank, flags); + return 1; + + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + if ( dabt.size !=3D DABT_WORD ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISPENDRnE, DABT_WOR= D); + if ( rank =3D=3D NULL ) goto write_ignore; + + vgic_set_irqs_pending(v, r, rank->index); + + return 1; + + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): + if ( dabt.size !=3D DABT_WORD ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICPENDRnE, DABT_WOR= D); + if ( rank =3D=3D NULL ) goto write_ignore; + + vgic_check_inflight_irqs_pending(v, rank->index, r); + + goto write_ignore; + 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= %d\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= %d\n", + v, name, r, reg - GICD_ICACTIVER); + goto write_ignore_32; + + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + { + uint32_t *ipriorityr, priority; + + if ( dabt.size !=3D DABT_BYTE && dabt.size !=3D DABT_WORD ) goto b= ad_width; + rank =3D vgic_ext_rank_offset(v, 8, reg - GICD_IPRIORITYRnE, 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= ORITYRnE, + DABT_WORD)]; + priority =3D ACCESS_ONCE(*ipriorityr); + vreg_reg32_update(&priority, r, info); + ACCESS_ONCE(*ipriorityr) =3D priority; + vgic_unlock_rank(v, rank, flags); + return 1; + } + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + if ( dabt.size !=3D DABT_WORD ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 2, reg - GICD_ICFGRnE, 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_ICFGRnE, + DABT_WORD)], + r, info); + vgic_unlock_rank(v, rank, flags); + return 1; +#endif + default: printk(XENLOG_G_ERR "%pv: %s: unhandled write r%d=3D%"PRIregister" offset %#08x= \n", @@ -1129,6 +1285,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 +1360,18 @@ 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): + +#ifdef CONFIG_GICV3_ESPI + 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): +#endif /* * Above all register are common with GICR and GICD * Manage in common @@ -1216,7 +1394,11 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, m= mio_info_t *info, /* Replaced with GICR_ISPENDR0. So ignore write */ goto read_as_zero_32; =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(0x3100, 0x60FC): +#else case VRANGE32(0x0F30, 0x60FC): +#endif goto read_reserved; =20 case VRANGE64(GICD_IROUTER32, GICD_IROUTER1019): @@ -1235,8 +1417,30 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, m= mio_info_t *info, =20 return 1; } +#ifdef CONFIG_GICV3_ESPI + case VRANGE64(GICD_IROUTERnE, GICD_IROUTERnEN): + { + uint64_t irouter; + + if ( !vgic_reg64_check_access(dabt) ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 64, gicd_reg - GICD_IROUTERnE, + 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_IROUTERnE); + vgic_unlock_rank(v, rank, flags); + + *r =3D vreg_reg64_extract(irouter, info); + + return 1; + } +#endif =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(0xA004, 0xBFFC): +#else case VRANGE32(0x7FE0, 0xBFFC): +#endif goto read_reserved; =20 case VRANGE32(0xC000, 0xFFCC): @@ -1382,6 +1586,18 @@ 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): + +#ifdef CONFIG_GICV3_ESPI + 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): +#endif /* Above registers are common with GICR and GICD * Manage in common */ return __vgic_v3_distr_common_mmio_write("vGICD", v, info, @@ -1405,7 +1621,11 @@ 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 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(0x3100, 0x60FC): +#else case VRANGE32(0x0F30, 0x60FC): +#endif goto write_reserved; =20 case VRANGE64(GICD_IROUTER32, GICD_IROUTER1019): @@ -1419,12 +1639,34 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v,= mmio_info_t *info, vgic_lock_rank(v, rank, flags); irouter =3D vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTER); vreg_reg64_update(&irouter, r, info); - vgic_store_irouter(v->domain, rank, gicd_reg - GICD_IROUTER, irout= er); + vgic_store_irouter(v->domain, rank, gicd_reg - GICD_IROUTER, irout= er, false); + vgic_unlock_rank(v, rank, flags); + return 1; + } + +#ifdef CONFIG_GICV3_ESPI + case VRANGE64(GICD_IROUTERnE, GICD_IROUTERnEN): + { + uint64_t irouter; + + if ( !vgic_reg64_check_access(dabt) ) goto bad_width; + rank =3D vgic_ext_rank_offset(v, 64, gicd_reg - GICD_IROUTERnE, + 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_IROUTERnE); + vreg_reg64_update(&irouter, r, info); + vgic_store_irouter(v->domain, rank, gicd_reg - GICD_IROUTERnE, iro= uter, true); vgic_unlock_rank(v, rank, flags); return 1; } +#endif =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(0xA004, 0xBFFC): +#else case VRANGE32(0x7FE0, 0xBFFC): +#endif goto write_reserved; =20 case VRANGE32(0xC000, 0xFFCC): --=20 2.34.1