From nobody Sun Sep 14 06:29:26 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=1757412563; cv=pass; d=zohomail.com; s=zohoarc; b=EA7DoKYVjmRwyeLWsvhNGEVZXjbY98ViARKuwMIGKkbtIs9pKfSiwl7zFDGtT892g7OVMFYp6DMFSa/ZrGImDEN2bqjct5Fj0Xm0dsQ1gYSK+PZbAPzqxFpmeW2iueKnlS0DYNZXCNRZhNsCQ+Lm1/ISsVRza0YYy2wtS9Qe/4Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757412563; 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=JwZr1vV1Q96H6HEtTxKLX5tqmoYStsOduUB7RTj1ALk=; b=KYDYbRBoSAbctGQHLluTcuu2SvvjKV0u/Fjwrjw0razEsCoMw7Be8INGsUMS8RvbWIBlQZI6ipKD8I1UXDtvIUYGo72Z101Pd+/J0BAOgsrtl1rdkeAfxb+zfpfBhIPvO71echg+byY4Fij403HpPw3DbJ0ebOqdWMJrDaf8ZFs= 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 1757412563315965.0644623127455; Tue, 9 Sep 2025 03:09:23 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116137.1462551 (Exim 4.92) (envelope-from ) id 1uvvHf-0001f6-KU; Tue, 09 Sep 2025 10:09:07 +0000 Received: by outflank-mailman (output) from mailman id 1116137.1462551; Tue, 09 Sep 2025 10:09:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvHf-0001ez-HX; Tue, 09 Sep 2025 10:09:07 +0000 Received: by outflank-mailman (input) for mailman id 1116137; Tue, 09 Sep 2025 10:09:05 +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 1uvvHd-0000yD-HK for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:05 +0000 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20f::7]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 0371b46f-8d65-11f0-9809-7dc792cee155; Tue, 09 Sep 2025 12:09:03 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU2PR03MB7893.eurprd03.prod.outlook.com (2603:10a6:10:2d4::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:08:55 +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.9094.021; Tue, 9 Sep 2025 10:08:55 +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: 0371b46f-8d65-11f0-9809-7dc792cee155 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lCMkPLkiebnoGEUsZdfAIOAnGkswz7aqufMZ4FNsm/X4GjuoCDUD4D+6y1YwadkZc4o9jKs64RAEG+E/4RAzNe/aCtSwyAQqQz5WLV6R/ke4SjdeIyzPofBlDZI2lF2+31Ns5GiqXlRU64ZBcicT2c7t+ZUxGaTzPBDwsV9OKpiTdOh2axQYgryUCj1nRHZq6EUsie01d4EVe9iG6z2PgYTIbEuWLaEmt8qBFu+o7wYXrlBS5Zpcv10BfZk2Of4ZMJkyk68xnQAGlmh6ELu+O0bFJV+hwuh6OlpYkAkY1CsYh7h1UdyHdmc68iJb0I1SiQYVtfiNgSxTdBFQeiIIjA== 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=JwZr1vV1Q96H6HEtTxKLX5tqmoYStsOduUB7RTj1ALk=; b=oSOEbeZTNIzj55WWbkKz5swRaamXVAF/WFjQLENGpNjsuNm1UtXYwKA3w9TgznsqYv/7aNXQlbV3tACQrkVAZFR3J0AKVhzVdcKszWxYUwzrcG9Dovg9aa74vdE0vPhYldGFqOn6+WBkSe4PmVT52FJ7GD+kFUJCkLXizwvaeDG+aJQl3wWYGqkRb9StQ1apURDVNfO/MtgmIh5qfKRKcuxIskU8qkbt/n+rcKXkNJ5C0DuTn1v10zbfp3utrEwrjnuxHli2for+qed2cd4Q91PrTZ8Mjkh1SbTUVwFdf5BG3zvCG0AG7BmTxIkM8vcKO4kvXDc6bdOuiWsvcQztkA== 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=JwZr1vV1Q96H6HEtTxKLX5tqmoYStsOduUB7RTj1ALk=; b=mrkTWNmfo9B1JoADNc3gwqELeOtqE+vmy3elF1Notr4/rL7akUh/bTn/SxdFTjFqxzy8e/KJeEZDl0sz1hbLpxIfMhk2ULaOOkxe8JV2KwnrOluRkGexGh4HzNK03k7BERMUtDaWRq4kMYrjbGEi4hCvdrs/elLUV78h93K5BjdzjnXqrovzVAwQ0IaZUNywtxVXJs5pie53iNPbRFMyeanoUfBsY2/5B8gADf7RkQWg5kcoTrgkoZf1Pp8jjIf8wVvgbp0Mq307D38DnR0EgR4CxLNpgw6zwv1LMJ8CjH8KknGl3oXApw8GQrcKVmruIjcLUZC/b/fr2koEyuCz1w== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Oleksandr Tyshchenko , Julien Grall Subject: [PATCH v8 01/12] xen/arm: gicv3: refactor obtaining GIC addresses for common operations Thread-Topic: [PATCH v8 01/12] xen/arm: gicv3: refactor obtaining GIC addresses for common operations Thread-Index: AQHcIXHA9a7hs9OcpEuwEnF/MObXqg== Date: Tue, 9 Sep 2025 10:08:55 +0000 Message-ID: <8a3d9390b8d4ed9c9af0465f27fe6866e6535162.1757412099.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_|DU2PR03MB7893:EE_ x-ms-office365-filtering-correlation-id: c0650e2e-65b4-466b-cf35-08ddef88e2b4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?R3WYXPD8xUIg31Btg+/lDq0oWnFVLPLIhRZAQRDm83s/ygmR8SPowuJpgb?= =?iso-8859-1?Q?Q+e6KtMQdSFb0wO473WScFb7OOsXe/ZFsDgTqc5Fca5hsGnHkMP7glqH3i?= =?iso-8859-1?Q?vRCGF98LXDlqoA4dk92wwVXCI2/Ux7Cy9PnBMc7Aet0tgNMA0srSw30i/I?= =?iso-8859-1?Q?lMuDZc9aIyx5O1lbO8AM1N0s7Hw+nyTD0Fot5hXMZXhix+EaXiavgYcDKo?= =?iso-8859-1?Q?KzfTgJY3+KRC/8xYN6XJx9noayz1b5FU5T9eRJUgsNqJRTC+Qi1CqA9pBo?= =?iso-8859-1?Q?bKV+YLDtfPvybwCbsxIE6t/f8VwhzR2+EtdourWOABNkm3/RrRJj1SVLCG?= =?iso-8859-1?Q?Y0bMuqJOmX6d1SCDCosG4gl4vNKMWBkUEkSBHkgbS5O0MEqokdSJmrvuW/?= =?iso-8859-1?Q?UODw9so61ZZWfoHwkMHW4pJeTVY6RTNAB5XDq2CTZRi76L3iQr3Lo38y3i?= =?iso-8859-1?Q?Fq1tSi4FGEELjylUejKnWBmGlExFevLeZT9SsLEK05PbN1ymynqFl+qJtF?= =?iso-8859-1?Q?G9TxiycljC7zc0CusWRgjdwVHtk3XTKlqM6JZuUCOKfeR9qpeSg/z+h4s4?= =?iso-8859-1?Q?t298RCQp085akkdvbu4HSG4k8MGD79EFnIt4/n22TDMGR2COvIU+A3rzyl?= =?iso-8859-1?Q?lkiDC+8WP48mOzewOpgedyUv5CpOVZisnmUKF/uN86xQYYiDm0f3JTIW1v?= =?iso-8859-1?Q?UMIhlLUUBADwtHQvEwscWjET3tob0zK07s50uR6KdzyMoIwQtnf17wB8A1?= =?iso-8859-1?Q?1fvBabHUOXkgbiA3PCprme5xpAKfjWtK4yVXqPTVWT6Mo1k6yvG9ODxQUd?= =?iso-8859-1?Q?AfwnLF3vWHfZgsFRbMjjaxk6pAf4bVklCkQF9aM7XNReYVGRLNM2anK/1z?= =?iso-8859-1?Q?KGEIDKjKyhLku1fSQq0XY6E6rS+RpC+sIkIq+2FIdvWJIZbyCpV1qVB4M7?= =?iso-8859-1?Q?Zsd1afsW6DkzoA++wy5J+hG20QA0GPFZ7JD2FX7UjyYzoFfxz9a8j+MrBC?= =?iso-8859-1?Q?XyE5q/sqws6SRFzhkIY+7p+TSVcdejC7kPZ1Li2roFGypzrfIWUu7lVeyq?= =?iso-8859-1?Q?Ng5CM6fetMLgwGZpO0oNASbdNe+LnBmemiy7lHLO7OrLBkCzNI27E0QdeR?= =?iso-8859-1?Q?JT82HgTh+Mezgb9tlS38kpcHRHiMtGW/5xZ7ep70THEfxTc9/LfKdpu+HW?= =?iso-8859-1?Q?zow5wx2u0ccAp4ubOW2HN9xOeSKnCoWhlOJgY5z9mCm/57IJSrIDcJAg3U?= =?iso-8859-1?Q?8m7ZY7bOPQkQL4HVZJ+Li7dXxRR7K4cFQJpssaZcbWKT3aj4p0QawLwhxh?= =?iso-8859-1?Q?Lo/n8X1SeApG+OgHoaNn0W0WWovrkyU/N/qHCGPeC9qIdiykyr8rV7Ox4K?= =?iso-8859-1?Q?LZfE3uFHL69keo9JOcjkrwkafzsD5oRl0WQXxKxrjSxWbe3AivGTE0yC0D?= =?iso-8859-1?Q?oXJM9K6PqIOt4+pQjUe8/JgqkmKuAlF+PKxW88YJvWBGEwMVcsPTA7zynO?= =?iso-8859-1?Q?K9XjcjgQ5Mtz+GkKDskBMLzmWzVtmc6e5uCSlrtIkMDA=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)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?XTkEcE2c/HWTI9d062Wyujo3U/txi1DuNXxpiJprrYFdbE9RRinPeJgxW8?= =?iso-8859-1?Q?RMv0NHE7hFEbDaSuCyE/V8Fia1BHxKmjzyENSr1UhsfTXEn/pgK+/xZW4q?= =?iso-8859-1?Q?XAIxRTcPK7lkg/QCURrxvUedHW9nCuUrpb+yrhHyVH9orvR+NcBK31WOXk?= =?iso-8859-1?Q?zAjWXqZfS9vA6DYm3HkUzTkQ4yMiKa+Z6K8kHQHeU7zb/7rVs9uaMAV6Pi?= =?iso-8859-1?Q?Xg0/DH79q3H58oY9ahUVT16GV0AxF/57uMkZ9jsA2csSz1XzcHO3p95cY2?= =?iso-8859-1?Q?JBf+wu3VFPVJ/ZDVOp95W/qNJwGPDFKS+Tm2u/FkOuXguHnJf/qz2Evk5u?= =?iso-8859-1?Q?HVOFusRD2Qz6sL7bHL+crbHl4HU1yRLhb/szPDnui/z8TnaaE5gRW3MpPj?= =?iso-8859-1?Q?8+orWF5wdZUO/qZw3M954qjxeczNG0Uj40PBV98Ug1JzMzzyenvc5sPOh8?= =?iso-8859-1?Q?x4DxMIIAb/yGYKwOBrt+OtpdwazHhpRM1TNeD9rnVSyNQACexMn4ojeoB8?= =?iso-8859-1?Q?Z88i4HesjoVgp5r/k93CfKcYhmJ8AFAuM+ZGvO13S1eBl5YFvSaeTKqJpn?= =?iso-8859-1?Q?2/eiW78lNjNSsC3CUzdOf8aNDORJN1Ja82hrmN0oXrk486KL+HvgfCRIlN?= =?iso-8859-1?Q?Wc0tg2whNBCTXgTMpdzzgEGTenMtY/31PGn4uinP/ff6B1jqs7729miR3n?= =?iso-8859-1?Q?ESr3LXZIUho1nLPX1/V/DCRbdiG75rgKdUZAuNASV/OVkpEzH1tjnGtj2X?= =?iso-8859-1?Q?U8/lWeQG6ZF7Mquz4bOPZfgUm/z1o8ul+NYMPmLfdfluDy5e61Q1bJ/hAH?= =?iso-8859-1?Q?HvXnsxKDgxroTVNUu1Y3esjFJpvt/mD5KSWPrAM8s4+D5ntOjIkdaxFDet?= =?iso-8859-1?Q?xk5PrJOg79xGdiT+5RzSgF4yfcvl3IMuu9tuQWzfFIEsEIQ9FBJGBdsWar?= =?iso-8859-1?Q?Mx682O/A245il3TJWxkCLr4Ro7zS17Zqh3iGRNbaMg7dTYpBRT9jBX9CB3?= =?iso-8859-1?Q?mYQPFfiVDYh6KOhZwyh9qv2L/9geTTEKS8Mz5Y6ZMoUjEYQOpPK1FSqM1X?= =?iso-8859-1?Q?QnAJBJAbreDG0AqPyKnxU8KmOg+d59dNihLx51IYASrQzG6By/qIfjDDSj?= =?iso-8859-1?Q?IsbfydgGA0/EvoaadlozbKlWKmAuzzolss0/cluWg8RicTQaBpRux+4ev+?= =?iso-8859-1?Q?bsK2rmoYWCPgPKpfp82Rix/kV0CJz8Ocjcma2YDNd8KLSARzzQdudfnsQ5?= =?iso-8859-1?Q?EvzCjtrcOP9nimzGuVPQB7kSerVWgg5Rw4+JSDUkaiNsFJZd5nK9wzesyM?= =?iso-8859-1?Q?D4mvTAPn3KQXW+Jls8LF0oRxMra6N5zs5dd1Vgjdp8G8KSwPkyBZ+AV9bV?= =?iso-8859-1?Q?5c0h6yA5HFftt9cjR2o0gQJcJ1fGUmwf7pGOVn1MJGi3A3iHBjRq8EQ0zJ?= =?iso-8859-1?Q?aUGplfvMUc2ZIalGXztROrbS/jOHhIsU+xZCi/T2WHGADdGz8bnvBVy/WY?= =?iso-8859-1?Q?rBMiW/4uz8RfST/KaVKZUU1Pi9YhetaoeWmQt8L2u0xJIx7IcIkaoXcdSC?= =?iso-8859-1?Q?GKMEJa9j/mCQP6/Ce6Abv+hK6bwuQPTp1E3ErQ6/+7LSZLpUADX0nnLPCg?= =?iso-8859-1?Q?+pA/lhycD4D5bnuP/MzLfIfgnQBze3mBqjtlO7t1fioOmiNMHazZ3dSeYQ?= =?iso-8859-1?Q?/BXkv00rjtmLYhZlbjI=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: c0650e2e-65b4-466b-cf35-08ddef88e2b4 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:08:55.4274 (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: 4PaAd6W9p0RpU5tQXZb5jFPmV97j+VF3pwYc2Pgm9GWK3T/9zpZLjBaD9nHjCSY3DjvXSvablzRg3P9Po3Tm2wjYBtYFhV8++5kImWIzsjg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR03MB7893 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757412565734116600 Content-Type: text/plain; charset="utf-8" Currently, many common functions perform the same operations to calculate GIC register addresses. This patch consolidates the similar code into a separate helper function to improve maintainability and reduce duplicatio= n. This refactoring also simplifies the implementation of eSPI support in futu= re changes. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Reviewed-by: Oleksandr Tyshchenko Acked-by: Julien Grall --- Changes in V8: - add missing breaks in switch-case (fixing 2 violations of MC3A2.R16.3) - no functional changes: moved the get_addr_by_offset() call in gicv3_irq_set_affinity() under appropriate check, as it should not be called for local IRQs - minor: add comments for default cases (fixing 3 violations of MC3A2.R16.4) - minor: evaluate mask to variable in gicv3_peek_irq() (fixing 2 cautions of MC3A2.R13.2) Changes in V7: - no changes Changes in V6: - no functional changes, just fixing minor nit: changed u32 to uint32_t in get_addr_by_offset() - added reviewed-by from Oleksandr Tyshchenko Changes in V5: - fixed a minor nit: changed %d to %u in the warning message because the IRQ number cannot be less than zero - added acked-by from Julien Grall Changes in V4: - no changes Changes in V3: - changed panic() in get_addr_by_offset() to printing warning and ASSERT_UNREACHABLE() - added verification of return pointer from get_addr_by_offset() in the callers - moved invocation of get_addr_by_offset() from spinlock guards, since it is not necessarry - added RB from Volodymyr Babchuk Changes in V2: - no changes --- xen/arch/arm/gic-v3.c | 126 +++++++++++++++++++++++---------- xen/arch/arm/include/asm/irq.h | 1 + 2 files changed, 91 insertions(+), 36 deletions(-) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index cd3e1acf79..2fdd96dbb1 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -445,17 +445,72 @@ static void gicv3_dump_state(const struct vcpu *v) } } =20 +static void __iomem *get_addr_by_offset(struct irq_desc *irqd, uint32_t of= fset) +{ + 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: + /* Invalid register offset for local IRQs */ + break; + } + 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: + /* Invalid register offset for SPIs */ + break; + } + break; + default: + /* Invalid INTID */ + break; + } + + /* Something went wrong, we shouldn't be able to reach here */ + printk(XENLOG_WARNING "GICv3: WARNING: Invalid offset 0x%x for IRQ#%u", + offset, irqd->irq); + ASSERT_UNREACHABLE(); + + return NULL; +} + static void gicv3_poke_irq(struct irq_desc *irqd, u32 offset, bool wait_fo= r_rwp) { u32 mask =3D 1U << (irqd->irq % 32); - void __iomem *base; + void __iomem *addr =3D get_addr_by_offset(irqd, offset); =20 - if ( irqd->irq < NR_GIC_LOCAL_IRQS ) - base =3D GICD_RDIST_SGI_BASE; - else - base =3D GICD; + if ( addr =3D=3D NULL ) + return; =20 - writel_relaxed(mask, base + offset + (irqd->irq / 32) * 4); + writel_relaxed(mask, addr); =20 if ( wait_for_rwp ) gicv3_wait_for_rwp(irqd->irq); @@ -463,15 +518,13 @@ 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; + uint32_t mask =3D 1U << (irqd->irq % 32); + void __iomem *addr =3D get_addr_by_offset(irqd, offset); =20 - if ( irq >=3D NR_GIC_LOCAL_IRQS) - base =3D GICD + (irq / 32) * 4; - else - base =3D GICD_RDIST_SGI_BASE; + if ( addr =3D=3D NULL ) + return false; =20 - return !!(readl(base + offset) & (1U << (irq % 32))); + return !!(readl(addr) & mask); } =20 static void gicv3_unmask_irq(struct irq_desc *irqd) @@ -558,30 +611,28 @@ static inline uint64_t gicv3_mpidr_to_affinity(int cp= u) static void gicv3_set_irq_type(struct irq_desc *desc, unsigned int type) { uint32_t cfg, actual, edgebit; - void __iomem *base; - unsigned int irq =3D desc->irq; + void __iomem *addr; =20 /* SGI's are always edge-triggered not need to call GICD_ICFGR0 */ - ASSERT(irq >=3D NR_GIC_SGI); + ASSERT(desc->irq >=3D NR_GIC_SGI); =20 - spin_lock(&gicv3.lock); + addr =3D get_addr_by_offset(desc, GICD_ICFGR); + if ( addr =3D=3D NULL ) + return; =20 - if ( irq >=3D NR_GIC_LOCAL_IRQS) - base =3D GICD + GICD_ICFGR + (irq / 16) * 4; - else - base =3D GICD_RDIST_SGI_BASE + GICR_ICFGR1; + spin_lock(&gicv3.lock); =20 - cfg =3D readl_relaxed(base); + cfg =3D readl_relaxed(addr); =20 - edgebit =3D 2u << (2 * (irq % 16)); + edgebit =3D 2u << (2 * (desc->irq % 16)); if ( type & IRQ_TYPE_LEVEL_MASK ) cfg &=3D ~edgebit; else if ( type & IRQ_TYPE_EDGE_BOTH ) cfg |=3D edgebit; =20 - writel_relaxed(cfg, base); + writel_relaxed(cfg, addr); =20 - actual =3D readl_relaxed(base); + actual =3D readl_relaxed(addr); if ( ( cfg & edgebit ) ^ ( actual & edgebit ) ) { printk(XENLOG_WARNING "GICv3: WARNING: " @@ -600,16 +651,13 @@ static void gicv3_set_irq_type(struct irq_desc *desc,= unsigned int type) static void gicv3_set_irq_priority(struct irq_desc *desc, unsigned int priority) { - unsigned int irq =3D desc->irq; - - spin_lock(&gicv3.lock); + void __iomem *addr =3D get_addr_by_offset(desc, GICD_IPRIORITYR); =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); + if ( addr =3D=3D NULL ) + return; =20 + spin_lock(&gicv3.lock); + writeb_relaxed(priority, addr); spin_unlock(&gicv3.lock); } =20 @@ -1273,6 +1321,14 @@ static void gicv3_irq_set_affinity(struct irq_desc *= desc, const cpumask_t *mask) { unsigned int cpu; uint64_t affinity; + void __iomem *addr; + + if ( desc->irq < NR_GIC_LOCAL_IRQS ) + return; + + addr =3D get_addr_by_offset(desc, GICD_IROUTER); + if ( addr =3D=3D NULL ) + return; =20 ASSERT(!cpumask_empty(mask)); =20 @@ -1282,9 +1338,7 @@ static void gicv3_irq_set_affinity(struct irq_desc *d= esc, const cpumask_t *mask) affinity =3D gicv3_mpidr_to_affinity(cpu); /* Make sure we don't broadcast the interrupt */ affinity &=3D ~GICD_IROUTER_SPI_MODE_ANY; - - 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 Sun Sep 14 06:29:26 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=1757412567; cv=pass; d=zohomail.com; s=zohoarc; b=AToqGGYtPaxFgmJNCgXv1knEA93kvemh+XMyO/rxwlEtEHi9gD62Y5NHrGJStdf8d6ohfIJ31/BeFf2QkbHknBCe5np7bnRnyDNamJuyezOLghwpmu/2DOetM7VhwuojsUPBfH61L2Dgu+/0xfuF342uOvvoMUbOifM+54DyxEA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757412567; 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=E+cNpr8L6MC8jcvfDetjjAbGfgyiOuFSGmAfyQYgrRk=; b=BEyM8PbZBOmBj5gNT0WMgxUcidIPxAnsp8tN1dJZ5ilAuh71KK0hvIV+g0y7m5cqKZmqdbFL3cWAd8fHxe7ZQKOeNjlPh6fVkABDHYtj8/I8+VJ7aNFfFaaCV+n12RJp8S6lN77vwiLgs4hGhxIX3H/gTb14I6BHtg1MHH1lCkk= 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 1757412567334770.9444988808973; Tue, 9 Sep 2025 03:09:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116138.1462559 (Exim 4.92) (envelope-from ) id 1uvvHg-0001mi-5j; Tue, 09 Sep 2025 10:09:08 +0000 Received: by outflank-mailman (output) from mailman id 1116138.1462559; Tue, 09 Sep 2025 10:09:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvHg-0001mT-0C; Tue, 09 Sep 2025 10:09:08 +0000 Received: by outflank-mailman (input) for mailman id 1116138; Tue, 09 Sep 2025 10:09:06 +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 1uvvHe-0001My-T7 for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:06 +0000 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170100001.outbound.protection.outlook.com [2a01:111:f403:c200::1]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 04c357ab-8d65-11f0-9d13-b5c5bf9af7f9; Tue, 09 Sep 2025 12:09:06 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:08:59 +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.9094.021; Tue, 9 Sep 2025 10:08:59 +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: 04c357ab-8d65-11f0-9d13-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g1upfLNI3NhaKvMGgTF98nX55TQGyHkLX7rI0dXOEY7xuY8znvbB/8zrG6Zprc8+Oi+pFnoqtN2cc/n7vqmEGwnDvILR24DjIj1NZ8UTEx9NYmehCfv9Zai4S4m5XRmkxBFnBioU/mHKoOjNI10Xt0BeB23I9NSKh1nt3Q+L03pBV5bPcXOJDCG6NBeQ9TVs+IplCadJdvr71GqNb4t+6+K77OzywSE9Dp/1Be/PrDT3V4U4KqqmkPjNncTsLxn81AacsqVdisg5vyimMKtZL8ZolIvs1fd3hIwn6S7bwL7BJMFxNtQDII/jYPRsJZvakkCszk+NyVp2cDg5tv5PuQ== 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=E+cNpr8L6MC8jcvfDetjjAbGfgyiOuFSGmAfyQYgrRk=; b=xg8ep6huOTTUnV+5546fLZJaAs9e7Pct5hbHAK5eb4N4dXgRIucQ4g+C4k229tg0ywegQhK0T6lDJ6O7I8nYwQxWV/hGZ5ks08orC72kxZsyZ/FZza630ZnfHFFDlJNgG7BEv0k8UGGfuUosmML3ZgRVA2pwWBZqcCkKcSO7euWUn21i1jBv9//1bRlyrzFGHxxo7moqstu3/sSDVayiB0yIi6XT6VtRfKQcDDEiucsuid4ZaPk77+u7HGdTwTebxfeaQjDok8tGWtm9Tbeq/3rPpPwqLdtiIpIDelfbI0AHiUXupe38JKHYYzpTCbNpspIce8Yo7ArFuJwdaEMbmA== 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=E+cNpr8L6MC8jcvfDetjjAbGfgyiOuFSGmAfyQYgrRk=; b=nRzjHsthRS198CRKZCYlMUyEnaqRaroW5LcciP6wQKaoDCQ6IjLgPJGCzeJ4QV452hRF12GnMcvuWreROfOM1HkRT3KLIRnW2/fXvOcAceKrRDXZW2UAWHR14gXTB8G6XX//JTjFZwCBKvFTtDvklNk+YMh+fS1+gVjgZjwXB48m7MAgURLj7ebO0ujqxN2XHvd0BngBCLcxviJapmV7uLbW9t3ih4KuSU9f7pLphuPQLT6a2Yo2+ALCnbYYhxLALYJkEiMuYc/sk40fTaxTXfZ4uajg5rJPycQmFTat9alp8ujbsX/69IJLFvv/vQkPR/4vDpwQdD0dRWHWE9pvzw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Julien Grall Subject: [PATCH v8 02/12] xen/arm: gic: implement helper functions for INTID checks Thread-Topic: [PATCH v8 02/12] xen/arm: gic: implement helper functions for INTID checks Thread-Index: AQHcIXHC+ua0MD6H9EigKiS7S0iu2A== Date: Tue, 9 Sep 2025 10:08:59 +0000 Message-ID: <453217b044f35378076eff292ffb5a2ba54f516f.1757412099.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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: a5b05688-4e93-4661-2183-08ddef88e4fa x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?9Pwkb5ku9GkwtrkUwaQlSYCcq3KU5WTgLTAbc/SGwA95NyKvFsLnCB5TVq?= =?iso-8859-1?Q?QEqsnbCTFwn9pkb8F2khFJRYpapRkDLir7nj88wg+dVxJ4rL2COLhhjw9P?= =?iso-8859-1?Q?YgnLABEEffJeliAB73hV62YkkZgwYKcjb+4vTEo7AcQFBERZtWHs+eI9Ry?= =?iso-8859-1?Q?JuZfHhuylGBjobZWoaTNr/IvQLOBnAHosGjQzdydFxdNMMrdYaeTT38q+V?= =?iso-8859-1?Q?iJ7FoRDlMWdxO6NJ1UkhEqOwucAMmGaaS6BP5uAX8LTjlOTzvDyVeh/vBw?= =?iso-8859-1?Q?LyPbaFmuwKHQusdYVEjzpia6gWEGt0VXqoVJM5STtk7V275vWvgGXn08lL?= =?iso-8859-1?Q?IJx4ANacUgrMdEJM7tPIfvOOLSrZlAHCWFP4reVPh67R1fK2dvrzjzPI05?= =?iso-8859-1?Q?tga2Pg7cCHTtDBVclcsVwgqMGYDqDOH8ZQ4RaqZ33oAMuiVImhRHnkPgds?= =?iso-8859-1?Q?8Gdaqkv894hOrRmiZ8O7XEMM7U5NckqZzsgYfXeXfApRQ3xLxJTq9+rVCA?= =?iso-8859-1?Q?eefRzvtTgJX0d7cv8iynp2137IZBnDC6w1iZIQxoYF4qGxtRhuPT2o0WZ+?= =?iso-8859-1?Q?kEPGNFesPW3aTUz+mzNW/iWeMI04jwYXAzO+qQO16qYFd45cv77tCqfJa0?= =?iso-8859-1?Q?r9IOxEpECi9d4SfyP1h86l+LcOa0CT+uyA4O6KORY9FkxUBvs5kKuuuKtp?= =?iso-8859-1?Q?HQp+diLDwXJK1/WWSBqVU9nrPGunTA2eKh2jP8D2imlOjh+XLf7GtmeWy9?= =?iso-8859-1?Q?ZalrW8zbLk52teSpH0MuL9eLD0KLZElVubEiwaCiQpIgfPm2Ski+NmEHTa?= =?iso-8859-1?Q?dwMqMHOypIRu0qDCdoYf3Wn7ue7+GMNm8xcvFiJlv31wazUrECWwR34sOt?= =?iso-8859-1?Q?EaT5sqfISZD77mug0R1LnZvee+vdT0c3jqC7GSX/NE9mQPQnzMN4lWLdq2?= =?iso-8859-1?Q?NeqRD3ohz1xTAcklwQNpuMo4py57Pn831Zy2q00rAfDi7Pbo7AAX12FaKQ?= =?iso-8859-1?Q?xLabCDu9dRCaYWcKPVMrCMup5Zqlcz9Uj7EBV5IiE9siA0hhZzjNo7cnGZ?= =?iso-8859-1?Q?gT49cfJRW/2EtNI/4J+Mz6/Lul9YgEC3n6f8MzA5zmMjV5ESevG+6LrYZS?= =?iso-8859-1?Q?D3YWEezC98N3GhplmjTfvfbQTwczNtJ5sGWfdZlyiinxQzKCxXbjJNwLFF?= =?iso-8859-1?Q?XtV44chtQP2/K7pDLnXIvmVQGO3sn+3iCwdZZeodwaIKJbKnIcphm3ur3P?= =?iso-8859-1?Q?ugaf3WdXK1qnzWqg5GkpcxMwB9rmHlqeZYBgVsHEMnspWPhCS7RLyTkFi+?= =?iso-8859-1?Q?t3O2FDxiq4K3iBiQHdSkSTS5mI0T2OHsiibwlxQ4KZP6bnhpswLvtFzdGB?= =?iso-8859-1?Q?z/o5aZzO4ky3rzTfAh2V8ci4uFzNNEgD0ZiLpIZqg8pr+lP/Cp66A8CaA+?= =?iso-8859-1?Q?dFsgmzai1+WEXSLV9TReT5FPzPr1ECkImlzEkIrwqeW4YpVSd0L5Y/4HJN?= =?iso-8859-1?Q?30TfnBGHWcv6T38QSC0ePIPeyrYjtIKTEQvE6h222jIKXnPL8iRUT5raZ6?= =?iso-8859-1?Q?JUmuQnU=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?EjBLxemdkagfrHS5qDMY78NTPckw76JIueZLA6zU0nK/HDbTa8FEu6WHdc?= =?iso-8859-1?Q?xHpapCPxpFZ8eH8kORRbO+86t777nLRceIyhmGYd1HTFOhNhiw5CH7qyKb?= =?iso-8859-1?Q?WB4//VMueOmK5JZhBtX2cZ/9UnXjeiZkPwTd67E1HXqHnNa8CtdXgPaLk0?= =?iso-8859-1?Q?sHlW76h7wkcTXSo8Z/W/YORo63ab2qh0cI5zjvuy3T/Ekq4d3aJdfdkfjn?= =?iso-8859-1?Q?VN4e/7Jg4zJEKhBHltykkfDxU4mr4u/auDuDzSwaR22iCBmf/FJXfbXcb4?= =?iso-8859-1?Q?GWOYYVMrhpfdhcEGuoJBfl0Z3jH6b0/KUQ9rMtbqj10zOokGng8CAKQjbz?= =?iso-8859-1?Q?A11+yGPWdi3Nz4eU7wPuQwDJG1lLP6Vj0a698vH9c3u1tPjvcWp6I4VP1g?= =?iso-8859-1?Q?sbUQG4Fq3M19kINsbWLBZiU/1yZQx9h557FCO3Y6VdsMfWwO3z8fyMLwIy?= =?iso-8859-1?Q?QDa+PEJjOlA4wrjkqob7CJXdmWaarHEYmNkfwn8wDX+rHzU07mPPNlZdim?= =?iso-8859-1?Q?LsBVwLoCH3TkcZ3L7hqpn9nKlAJMVp8iLQ33Z6k40fB95Q1853oo47tTPt?= =?iso-8859-1?Q?4a2uAeD4NGODdxr3PW/94slYoVyfY2nLXDjgrnz1zjNyfY1tbKZMhFFkml?= =?iso-8859-1?Q?7uO4PNdaRAG7GSxSpLEC/M8RkJARWg85uizuiIgcZLpBmEn3AqyO8/cqjV?= =?iso-8859-1?Q?WQXtha8ZU4q2CgmKSRs9zHs1hJQNW2awf1EcpN4S3k7Z81icY84iDj30+s?= =?iso-8859-1?Q?fX53MLvu3ZxbXxRkoJsX1lBkhFDC/IIZPX4M3PFdkT4xiyX2po/7hbjvmn?= =?iso-8859-1?Q?Iwmkj6ZUz7I/u7GXJUtAxDwrVt/0NgmGDFFNM3X2N6j9aQvJfRfqFV97x6?= =?iso-8859-1?Q?ESb/BI7timxilcpW9eY8w7uFbOIR6d81CLNiSUpyHwQUo7r3E7Z6IVjzR3?= =?iso-8859-1?Q?vmtyPvxiMg5YT8JqyC4EKlVXAoHERuIXLYPVE4sbmibhMjqX1YqfW5EQBi?= =?iso-8859-1?Q?2/WFTcLay9Y5jPi+VYA1bwv1IsH9LF+2Ztw9Vyd5lslW5Bi4Spyro1eFdg?= =?iso-8859-1?Q?2PN34XWhx356ugL/Vgf0CYr1yK5U9bV+Fksiq+8oSXh5cbclf5FOiGCTEJ?= =?iso-8859-1?Q?1UjzGcgcAzFxtpj39t95nmavQoT1M5rzerTTHrf5E0yhBQONyWCaph5Dgu?= =?iso-8859-1?Q?RHnp1Eyg+fya9u448A1AacsRr+ADceMKyuYAsTB9NPCOerIcqymvg82euk?= =?iso-8859-1?Q?MvvoVtvfAhxIN2q5evmsHnfHeRiVIuEhOuOm8EGYzorTG9/iv1HvRt24xS?= =?iso-8859-1?Q?gzGgttVVjPrar39VT0cLSb1FAg31OIOVHp7VobLUMAhHwztmwFxR5/Pqn/?= =?iso-8859-1?Q?YLKRDwcB3UG1CRG7p+kApFF+sCYo20bfgUemM+VffXZuVGttqHPMX9XjfS?= =?iso-8859-1?Q?yCSEm+iaL+uFX4RqH3fqLOvnvuQ62JahiNFF2HhvqH8/pH537rmSNa8E6q?= =?iso-8859-1?Q?9rGIytc3gdIKqX82/j6uzkq0EWqHaNUHm8itY8N9MD0tMGqhCtCmrgX646?= =?iso-8859-1?Q?kAagbKc39kG0ezOxSmhGKyWibdBEd1JiD5iLVWkdIz4zNuVLIM//OEG6dg?= =?iso-8859-1?Q?2k1YNc/o9Iya8NpsKLhbqe1O+gC7TrPGn+jsB2iPvzDNLbmrkQs8FqicJl?= =?iso-8859-1?Q?j6brtWTn7eB0PCIzWXw=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: a5b05688-4e93-4661-2183-08ddef88e4fa X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:08:59.2218 (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: XMFjln359MZ02dwHM0BrROTIttngBI9fPm976hndjY/xdqUqOp04dHbJ81vYkQZVyfaZWx75xrf6EJ+hO5dJmHRDq3UP6Z6gf2mCD0ZR3To= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757412569477116600 Content-Type: text/plain; charset="utf-8" Introduced two new helper functions: gic_is_valid_line and gic_is_spi. The first function helps determine whether an IRQ number is less than the number of lines supported by hardware. The second function additionally checks if the IRQ number falls within the SPI range. Also, updated the appropriate checks to use these new helper functions. The current checks for the real GIC are very similar to those for the vGIC but serve a different purpose. For GIC-related code, the interrupt numbers should be validated based on whether the hardware can operate with such interrupts. On the other hand, for the vGIC, the indexes must also be verified to ensure they are available for a specific domain. The first reason for introducing these helper functions is to avoid potential confusion with vGIC-related checks. The second reason is to consolidate similar code into separate functions, which can be more easily extended by additional conditions, e.g., when implementing extended SPI interrupts. The changes, which replace open-coded checks with the use of the new helper functions, do not introduce any functional changes, as the helper functions follow the current IRQ index verification logic. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall --- Changes in V8: - no changes Changes in V7: - no changes Changes in V6: - no changes Changes in V5: - fixed a minor nit: moved the existing comment to the line above to fix formatting that exceeded 80 characters - added acked-by from Julien Grall Changes in V4: - removed redundant parentheses - added reviewed-by from Volodymyr Babchuk Changes in V3: - renamed gic_is_valid_irq to gic_is_valid_line and gic_is_shared_irq to gic_is_spi - updated commit message Changes in V2: - introduced this patch --- xen/arch/arm/gic.c | 3 ++- xen/arch/arm/include/asm/gic.h | 9 +++++++++ xen/arch/arm/irq.c | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index e80fe0ca24..4bb11960ee 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -111,7 +111,8 @@ static void gic_set_irq_priority(struct irq_desc *desc,= unsigned int priority) void gic_route_irq_to_xen(struct irq_desc *desc, unsigned int priority) { ASSERT(priority <=3D 0xff); /* Only 8 bits of priority */ - ASSERT(desc->irq < gic_number_lines());/* Can't route interrupts that = don't exist */ + /* Can't route interrupts that don't exist */ + ASSERT(gic_is_valid_line(desc->irq)); ASSERT(test_bit(_IRQ_DISABLED, &desc->status)); ASSERT(spin_is_locked(&desc->lock)); =20 diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h index 541f0eeb80..3fcee42675 100644 --- a/xen/arch/arm/include/asm/gic.h +++ b/xen/arch/arm/include/asm/gic.h @@ -306,6 +306,15 @@ extern void gic_dump_vgic_info(struct vcpu *v); =20 /* Number of interrupt lines */ extern unsigned int gic_number_lines(void); +static inline bool gic_is_valid_line(unsigned int irq) +{ + return irq < gic_number_lines(); +} + +static inline bool gic_is_spi(unsigned int irq) +{ + return irq >=3D NR_LOCAL_IRQS && gic_is_valid_line(irq); +} =20 /* IRQ translation function for the device tree */ int gic_irq_xlate(const u32 *intspec, unsigned int intsize, diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index 03fbb90c6c..7dd5a2a453 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -415,7 +415,7 @@ err: bool is_assignable_irq(unsigned int irq) { /* For now, we can only route SPIs to the guest */ - return (irq >=3D NR_LOCAL_IRQS) && (irq < gic_number_lines()); + return gic_is_spi(irq); } =20 /* --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757412568; cv=pass; d=zohomail.com; s=zohoarc; b=GKauGv2LicCjO5/J5xu+Y+Gu4XfRTZ/OY+uDK5J/tNPEDnNkuBWZVMHjwMEhpid5JMWbMCqKPiRXX0TbyNnALez1LdbhbVfKhrbCCzhAY6c6cIqo7CSVuAQdMXcBpBvI/F5xsyzAs7c3jTndT/lafMGS4aj2qG9tMzO8z052t44= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757412568; 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=xv5ZWIsrcJ4zb7XYvjHbnGF/lBjKmuT3JyKBNigSOws=; b=W6UcV7QUTKP1o49/OiY88CMh3l/vMegT+MJW0R67/d1CYwquOIZjIR7Oupbx1i16Qse9n842LfX89fmj8OQBY4opFxqvuUB4QYphdtZEBeKo5DzosAq1t0ZWkeZNZG0j1eZsfyf12xt5ZbXoD/c8LSDj9SphuKgX7sIv41jhJ4I= 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 1757412568869746.9715221760748; Tue, 9 Sep 2025 03:09:28 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116141.1462572 (Exim 4.92) (envelope-from ) id 1uvvHm-0002Gr-DI; Tue, 09 Sep 2025 10:09:14 +0000 Received: by outflank-mailman (output) from mailman id 1116141.1462572; Tue, 09 Sep 2025 10:09:14 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvHm-0002Ge-8p; Tue, 09 Sep 2025 10:09:14 +0000 Received: by outflank-mailman (input) for mailman id 1116141; Tue, 09 Sep 2025 10:09:13 +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 1uvvHl-0000yD-EH for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:13 +0000 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [2a01:111:f403:c20a::7]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 080b1def-8d65-11f0-9809-7dc792cee155; Tue, 09 Sep 2025 12:09:11 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09:04 +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.9094.021; Tue, 9 Sep 2025 10:09:04 +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: 080b1def-8d65-11f0-9809-7dc792cee155 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IFnXnyC044293d5HarcTYfiD6Nj17po/M4zEOOimhiDdbMe830egJmNDbe84SUmXhMmlp7Vm1I6m7M0VMq9rIvRfKnOPYl0re9oH2ZyhsSQ2CaMhX9XrmSxrD7GGM+N9S6xhHfnOwqVw4cbQISEIg2MhWrO5+VIR1Gg8lguXRtunYc9MeTyjJTUoZ+Za24CNHTFu7Kdrqfu4kcTMrkMpN0CwyxVROyLaYnpCzNkur/bztt4mO/WQ1Je/XRj7+RJxzJXPDAsAiwt1aR8pJfRC0wAMYJBeG6TAgh3bfaPVoAkitcjo7PXxoqe7u6fN+cYXP6uAKk4VQ7ZAPpXMIuQ0rA== 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=xv5ZWIsrcJ4zb7XYvjHbnGF/lBjKmuT3JyKBNigSOws=; b=jcAqF2RrWb7100MMCKrwEfzHr7ZxwKn0xQC+ynuTvOQPzJMCYq+jsyJGGwoMhW1IMOmEOk7uWWXIVSlTRbkCvIcxNjRHx1ypuH9wnaLR4de0EgPRoPz88cWdwt0EgtfQjVsvQCX/QJtz5EAHzaUgnQtZp83mYKrJeyJLuUBMS6roUTRFzh4xm2GJRUXYi/7iXv2/ndJ6ETA7AUlriSBb2IsW8X0Bu1g5TWDrjQHj9np16ZMHbLNiBhwwGx1nk9F4qBFcJjvmc8BVxPSXEtOVCOhZ3hAP49SqZD/2DPaDRt4R5PBmVwuP7UHYTVdGQxSNozpTGrrtTG9fzeVjIEYboA== 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=xv5ZWIsrcJ4zb7XYvjHbnGF/lBjKmuT3JyKBNigSOws=; b=Td1Mc4j8txDKfAam4k0MnjKJ71eeu/+QTVMHQ4dXR0AaLc40aGuAtt4BX4K9Z9BqYz9x2GGpXqfes0DpLquJqfY3BRMbjlwVFD0ptHOZyCrpGbSh4Igat3O/iXGIhtBycS7Kzn7rK/pSieFKiFO960KuUEYjFJ+rjldyW7fcnyeJKy2IX5l1zGWibRw+vOyqvvUbWyqGABCseYYYa1TXX6+7QjglHCOIzE5V5uyuFM4s1Sb7KxBr6W+INJsNJ/75DF4EmBIyKahfRE+7K5lpnJytZHKW2lp+6jF9HJSpF/sbhjnFopmQfAuNwjrjpz3nP962FqaVTiY5yc08ABZlAQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Oleksandr Tyshchenko , Volodymyr Babchuk , Julien Grall Subject: [PATCH v8 03/12] xen/arm: vgic: implement helper functions for virq checks Thread-Topic: [PATCH v8 03/12] xen/arm: vgic: implement helper functions for virq checks Thread-Index: AQHcIXHFOoWNA+Jrv0+WsW/ukByhRA== Date: Tue, 9 Sep 2025 10:09:04 +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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: f7e14e74-db11-4f06-5232-08ddef88e814 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?PiFgSY1dSkoeCfVNHgUWJWVjy52YNzPN5ipVLTkCaq202XJPkjF6PFj1dt?= =?iso-8859-1?Q?NaJM+mnK4l4gkJX66+673NIUHr3nEkjT9kZLlr7YaYzckzAnkbAJvEmt6Z?= =?iso-8859-1?Q?7hbg+LmrAWIciK+zh51RD0gZ8lDsfU/RaHXTey9iNgKlQMzV2qXeTGXauf?= =?iso-8859-1?Q?ez7PzDbhEKTJ2wxd9/j9hAOzn4jv/aqJSIGnySGfZ2F/LL2e4RVo2kvJJA?= =?iso-8859-1?Q?ZQuRbGxgFHH09vO9mJGi735cY2+v7r/qCjaaXhjTg2ebit3T/2CxP0KSge?= =?iso-8859-1?Q?EAe8u0xjskpmMbtC5R7u6jhC7nixAGKiKdRrBLlIOIIDf813XSwIwqTRig?= =?iso-8859-1?Q?wlKRaFF4N9UXflxAhEgQHvZvdeYpIyWnMO9TIorEPQUTFuyZ8+RHXMlkmG?= =?iso-8859-1?Q?n3Rx1RaYcosRzlmDNITLv90DcJ9QcFVsg2OgWD/RL5ADEhjdUlwDO14UMJ?= =?iso-8859-1?Q?R8emaZMrejL6Db5dSfPvV6pOvvhdrKqeGgwnFf8Wvaz0p2P4BAF/7YkSoR?= =?iso-8859-1?Q?VaEsKXK3eAcKG9yQ3cWqBKxyknv960rK/w20Js6M14efB/gnQPWlZ1paOp?= =?iso-8859-1?Q?qJXph0fO7EE8XntJDm1XHmPQRUVUrJ1yXB1A4Kw9Id1uAY61SrUxzKkJkh?= =?iso-8859-1?Q?GQyLz+7l4rI1h7Sw/95xmxQL4yu2ii2uuizKIniAT1Zeaw7dqAM693RrWg?= =?iso-8859-1?Q?B6r6x0n3OvCrZkHfNrp1LIHPCrUqbyJx+mqsZ82BF3/sZKJTFCaFFbawG4?= =?iso-8859-1?Q?F9rDFs9zgM+e4KBPE+DBWCPCV6Pm3Ulb5lUVHH/ODShICWxNnF1XznN8O4?= =?iso-8859-1?Q?vM950hRMCvWBBx7gk0+dzylwWLorD2MaMFlSKmmspdWpy7plyC2ply33vK?= =?iso-8859-1?Q?ZlhbrGvtjHI7eLfrlU16YXrT4hFTikGu0KuKwRXnV6sCWSExIGILbIuu4M?= =?iso-8859-1?Q?pUfDicG9+JUzUutb9Ffu99GmMzVdfCPwIU31U1du0OOYJGk0ugT9Qo0ldp?= =?iso-8859-1?Q?9jyd0Ga16DMng8usBhq2i0zV8pkV+Q0b6pV+ICDGF+DAT0x0R+p9VVNkrK?= =?iso-8859-1?Q?teckTQxovtP6gQsw+0mhkHnCqrC7kIoHMDUcSi+ho9xvnJg1AeTKIcgL+m?= =?iso-8859-1?Q?YHnaBFLxRW0EWFiWD/xFs3JFiCO6zQrNNYKgxwxnJMeWNpMy2FtwjBkOqB?= =?iso-8859-1?Q?oP3LNGnHt+o05mEolr+kdPzx+CH1IQubh401gXZNH0PvWOgZn3wqLzzbKO?= =?iso-8859-1?Q?wi98T/ZclLXCgGlgWpUCdL+cPufNWukBvGxkR9qfoy58uGcaqsOIvCcdk7?= =?iso-8859-1?Q?NvCy1zZiQRK2DG9sn0h1x5gAZUngNub44o3Qkcmn8yortJbqFHP2lNUKea?= =?iso-8859-1?Q?B8dxRKmhIcbdXv1gXPRHcYs1Q4/ipLbVP6aVA4Yr+ndbpqIqpg+XBr2Q9Q?= =?iso-8859-1?Q?wbejJJjWgs3RmbBIn4ruLyXGIfOFmrMfFyWHb1eRmNSDDz4DISb6RIUNrn?= =?iso-8859-1?Q?n+9fSx/QLcj9qzoU9CvGexmYtxLkh5T75N2ddW3xRNTavCw+IpNgUrDuz4?= =?iso-8859-1?Q?Z/iygSE=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?0bTVJUjpEwy4hA65+8J9DXveYmh9jkh+HIm1+0wegLKdSU4FlkafX0W1Dg?= =?iso-8859-1?Q?AnAS/HUovJWlYjPJ7NGQQ5iaRstr19yewE3l+nk0wfEo4WnmsbcwFb0I/n?= =?iso-8859-1?Q?PRUJ7UptFS1Y6KiNV+mRGxwnPsIZPuR1fY2YJw8i1sJ4Y+q8vJ8qgz4Pff?= =?iso-8859-1?Q?Zf24cSXLPUBJ6+Y653BTxN0Pg26Q/jjdRa3NiTq2Zsg48PraIFxb/iIQ3/?= =?iso-8859-1?Q?cejxy3bJjDAp0El8zNg2hpSjvLo6skTeZ6mRvF+v8+ZQoByxPMGf+BpdQV?= =?iso-8859-1?Q?YIF4bPogHWvozeq1ERKfcQCDXggYCnapwY2QRGTdF7Im/naCPrK6v3o18I?= =?iso-8859-1?Q?8tymuWetNvSk6kt00ln0WESiLRu2gwQGBCJb2+g12zHI+Sb+9f0tiFXhoG?= =?iso-8859-1?Q?jhCCG8YbpcUwD3GnlVOF5YzdGO0UQPlFQvLR4ZeeB9QEp1JA785mpZ1kFz?= =?iso-8859-1?Q?E6KRx6T+3mbNJR7NdiQI7qeWihaMXEdw6/+bno7lVjihg8JDOVObAK1yCF?= =?iso-8859-1?Q?rDpivID0WWZiUKmuckE4OuBz/6tgwD1BeHltTrdKaxxtaQ7KV6e+gEobc2?= =?iso-8859-1?Q?uPkNYsy5Sz271aEly06WdESjLIb/6Ug9AwV+Nz6mjiQRa7asq4AQpI5aZb?= =?iso-8859-1?Q?94pjX7Pm2b8SOr9XDtuxM8H5z/o1g7JUGb3TVcS64v8IQ0fmqADssnC7rY?= =?iso-8859-1?Q?4dEDb2KnO3tFz5B6oTXWRYGcEZEpjfyzRQyYhdteRnJTdrJCuDoHbmCEpc?= =?iso-8859-1?Q?BTdzRCWv2sOXvIt/6F/oWkkAKqVLX9vKtJoIx/U9cJxdzznnst5rHEVdRY?= =?iso-8859-1?Q?Hzvq2NUDlrKtMZqEnBn0GyPNdR5earnHusbMwzyfUkklnmzy/qkI+w6R4p?= =?iso-8859-1?Q?uSy6xQJ+Ih+aDGfFON/OfdM55DdnD9Tmt2fR19mSfnC9ZBqutBR5X8MFI/?= =?iso-8859-1?Q?tjOL7lkSjSA2c+bFmfN/CSvaeTwf2PzsaReHq39EQUd849NqalR1dI/vwB?= =?iso-8859-1?Q?XTDQ0IjLao7Cc1uwO32VdBE+M80x8dpdKzyC5Ndgvu3ebOuh1jvvnan+v9?= =?iso-8859-1?Q?nMTTV9drFPWX0xorSez49aPRgIyDW7wgperZKdoKmBkL4CMThzCzFStZBc?= =?iso-8859-1?Q?XcDmeojqBUavVv0B+seCw8mzNanNN4Oc9ccCJl48zVHbQxyMYA6RzYLnTX?= =?iso-8859-1?Q?xYnzY8gQz4hqrC92Z6ID6F1nFsSaf5zIzoO3vO5nCL20lTIvW4AfZeCgUx?= =?iso-8859-1?Q?LN9XkYGkmfYIsj+dUXn84CKGNoMWr4yOsIdtKnDWWivTTIOEF2vWnrq3N/?= =?iso-8859-1?Q?tCBBp6G/790KYMUv0K2G6SJ8eohdTA27qr1NTLutRfyMqG6a1c6Q7tIw1U?= =?iso-8859-1?Q?FZslRGPS6821w/Rl+PJcHCnPh+ObQJbkcS4RpaVmPj9qDEfPlbAgoy22Al?= =?iso-8859-1?Q?XpXhym/MJyU36mT61kWAbWcjB0zFiC6QXdv8fCJOHEDX0kcK5Z0YOr+qGv?= =?iso-8859-1?Q?1gMM32MD8oz2tpsVRC808RjNSB0KYI9XF9Hyl0lNWUc6RdOvyF5pf8Nmop?= =?iso-8859-1?Q?2RMy7g5y/QavIAtUw0yxX6BJo06k3P6Lh4D7nWh3iDjbceN9ig0MMcgV5D?= =?iso-8859-1?Q?KyN3Ojbly2bPHRVky2EYZieqAWgYtuQ0a+SIn7J2EB03VouR7GTTtq7MUy?= =?iso-8859-1?Q?LLPzgL6wJdvuvnIxWCQ=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: f7e14e74-db11-4f06-5232-08ddef88e814 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:04.4505 (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: nx52c8qtqhIHrRJI19+eHAZjyPHm5q5GF9R11nCi/028TsLshohcr/3Jv4BSVeK46qwdj7MfwEWKROuLf17ZY0AeI1/cWl8uWogN8oJ5kzI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757412570823124100 Content-Type: text/plain; charset="utf-8" Introduced two new helper functions for vGIC: vgic_is_valid_line and vgic_is_spi. The functions are similar to the newly introduced gic_is_valid_line and gic_is_spi, but they verify whether a vIRQ is available for a specific domain, while GIC-specific functions validate INTIDs for the real GIC hardware. For example, the GIC may support all 992 SPI lines, but the domain may use only some part of them (e.g., 640), depending on the highest IRQ number defined in the domain configuration. Therefore, for vGIC-related code and checks, the appropriate functions should be used. Also, updated the appropriate checks to use these new helper functions. The purpose of introducing new helper functions for vGIC is essentially the same as for GIC: to avoid potential confusion with GIC-related checks and to consolidate similar code into separate functions, which can be more easily extended by additional conditions, e.g., when implementing extended SPI interrupts. Only the validation change in vgic_inject_irq may affect existing functionality, as it currently checks whether the vIRQ is less than or equal to vgic_num_irqs. Since IRQ indexes start from 0 (where 32 is the first SPI), the check should behave consistently with similar logic in other places and should check if the vIRQ number is less than vgic_num_irqs. The remaining changes, which replace open-coded checks with the use of these new helper functions, do not introduce any functional changes, as the helper functions follow the current vIRQ index verification logic. Signed-off-by: Leonid Komarianskyi Reviewed-by: Oleksandr Tyshchenko Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall --- Changes in V8: - no changes Changes in V7: - no changes Changes in V6: - no changes Changes in V5: - added reviewed-by from Oleksandr Tyshchenko and from Volodymyr Babchuk - added acked-by from Julien Grall Changes in V4: - removed redundant parentheses Changes in V3: - renamed vgic_is_valid_irq to vgic_is_valid_line and vgic_is_shared_irq to vgic_is_spi - added vgic_is_valid_line implementation for new-vgic, because vgic_is_valid_line is called from generic code. It is necessary to fix the build for new-vgic. - updated commit message Changes in V2: - introduced this patch --- xen/arch/arm/gic.c | 3 +-- xen/arch/arm/include/asm/vgic.h | 7 +++++++ xen/arch/arm/irq.c | 4 ++-- xen/arch/arm/vgic.c | 10 ++++++++-- xen/arch/arm/vgic/vgic.c | 5 +++++ 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index 4bb11960ee..9469c9d08c 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -134,8 +134,7 @@ int gic_route_irq_to_guest(struct domain *d, unsigned i= nt virq, =20 ASSERT(spin_is_locked(&desc->lock)); /* Caller has already checked that the IRQ is an SPI */ - ASSERT(virq >=3D 32); - ASSERT(virq < vgic_num_irqs(d)); + ASSERT(vgic_is_spi(d, virq)); ASSERT(!is_lpi(virq)); =20 ret =3D vgic_connect_hw_irq(d, NULL, virq, desc, true); diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 35c0c6a8b0..3e7cbbb196 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -335,6 +335,13 @@ extern void vgic_check_inflight_irqs_pending(struct vc= pu *v, /* Default number of vGIC SPIs. 32 are substracted to cover local IRQs. */ #define VGIC_DEF_NR_SPIS (min(gic_number_lines(), VGIC_MAX_IRQS) - 32) =20 +extern bool vgic_is_valid_line(struct domain *d, unsigned int virq); + +static inline bool vgic_is_spi(struct domain *d, unsigned int virq) +{ + return virq >=3D NR_LOCAL_IRQS && vgic_is_valid_line(d, virq); +} + /* * Allocate a guest VIRQ * - spi =3D=3D 0 =3D> allocate a PPI. It will be the same on every vCPU diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index 7dd5a2a453..b8eccfc924 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -442,7 +442,7 @@ int route_irq_to_guest(struct domain *d, unsigned int v= irq, unsigned long flags; int retval =3D 0; =20 - if ( virq >=3D vgic_num_irqs(d) ) + if ( !vgic_is_valid_line(d, virq) ) { printk(XENLOG_G_ERR "the vIRQ number %u is too high for domain %u (max =3D %u)\= n", @@ -560,7 +560,7 @@ int release_guest_irq(struct domain *d, unsigned int vi= rq) int ret; =20 /* Only SPIs are supported */ - if ( virq < NR_LOCAL_IRQS || virq >=3D vgic_num_irqs(d) ) + if ( !vgic_is_spi(d, virq) ) return -EINVAL; =20 desc =3D vgic_get_hw_irq_desc(d, NULL, virq); diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index c563ba93af..2bbf4d99aa 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -24,6 +24,12 @@ #include #include =20 + +bool vgic_is_valid_line(struct domain *d, unsigned int virq) +{ + return virq < vgic_num_irqs(d); +} + static inline struct vgic_irq_rank *vgic_get_rank(struct vcpu *v, unsigned int rank) { @@ -582,7 +588,7 @@ void vgic_inject_irq(struct domain *d, struct vcpu *v, = unsigned int virq, if ( !v ) { /* The IRQ needs to be an SPI if no vCPU is specified. */ - ASSERT(virq >=3D 32 && virq <=3D vgic_num_irqs(d)); + ASSERT(vgic_is_spi(d, virq)); =20 v =3D vgic_get_target_vcpu(d->vcpu[0], virq); }; @@ -659,7 +665,7 @@ bool vgic_emulate(struct cpu_user_regs *regs, union hsr= hsr) =20 bool vgic_reserve_virq(struct domain *d, unsigned int virq) { - if ( virq >=3D vgic_num_irqs(d) ) + if ( !vgic_is_valid_line(d, virq) ) return false; =20 return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c index 6cabd0496d..b2c0e1873a 100644 --- a/xen/arch/arm/vgic/vgic.c +++ b/xen/arch/arm/vgic/vgic.c @@ -718,6 +718,11 @@ bool vgic_reserve_virq(struct domain *d, unsigned int = virq) return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); } =20 +bool vgic_is_valid_line(struct domain *d, unsigned int virq) +{ + return virq < vgic_num_irqs(d); +} + int vgic_allocate_virq(struct domain *d, bool spi) { int first, end; --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757412576; cv=pass; d=zohomail.com; s=zohoarc; b=jPLOzL2rBbpXkH93Ta6FSU0G/+EYxiOIIkY9fwqROsUVYP13C2OQ59NUnZFpTD5rMZxhIoojggPtGdq+sOEeKuKaUFuBHgHlJbWJaYZaZAfsy1LG8GeUhA7n4Ee5aSCduxfcbbAWGRSs5OwH2evgDVaksofi3hy9/bUmaQ6h2/0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757412576; 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=/4PYhi77IQgahxEQTGPMvFa33vUCsdzd8Q2rC0SD60M=; b=Ulvxzr0RFotG/XdoQ73uT1BPVrYNwe95zumSG4DJMFd7o20TUKWZCqe4ojqJlvQPK4EWSrV9++Dy833Yhr3BL98iEScrDa312EtARq8klvoINnAB+mQrZmPnNPh6vjTKIMkW/fbmZKfzejOL4lLi0oe8bZbPFCp245Bqk3Xjnko= 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 1757412576381232.9552245073852; Tue, 9 Sep 2025 03:09:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116144.1462582 (Exim 4.92) (envelope-from ) id 1uvvHr-0002ee-RT; Tue, 09 Sep 2025 10:09:19 +0000 Received: by outflank-mailman (output) from mailman id 1116144.1462582; Tue, 09 Sep 2025 10:09: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 1uvvHr-0002eQ-No; Tue, 09 Sep 2025 10:09:19 +0000 Received: by outflank-mailman (input) for mailman id 1116144; Tue, 09 Sep 2025 10:09:18 +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 1uvvHq-0001My-EZ for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:18 +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 0bb086af-8d65-11f0-9d13-b5c5bf9af7f9; Tue, 09 Sep 2025 12:09:17 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09:11 +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.9094.021; Tue, 9 Sep 2025 10:09:11 +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: 0bb086af-8d65-11f0-9d13-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YpdVPZseqiZb+jjjCmdhSOSUKkKUnoQB7hOYBSiWtFt2QpA0IFYKXov6mha4LvYecu18cA32W6o4tvglZMxP2AcOObUQ/EngQtwiNTH+/Mkp7KbV25j1jjHfM37BtBgBprPdKk9J9QWvI/R3iezuJ68IgF43PQr9OndILzHiFJ0vUAwXVR7DFcJlQMgMiEG7weBF0GELlVbA0R8gJl+9Z1OEaJdhih6+ounPJGmqNcjP7nDGtKNZLTGiVBTXoea6PO/wRZDNTzMOKC+OjsgOlpfiz+Zky6XxBz5I9KHdpxhdmTM0Rk7Yw0e/exPWzYnogzB7TnzoWX5Fp1l7bKyuYg== 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=/4PYhi77IQgahxEQTGPMvFa33vUCsdzd8Q2rC0SD60M=; b=nNDO4Mndavx8auNyc5cxs5fG8MOcapr6C1PrOjeYwrJYrtq2wRmrUzuqK41i2qSdspn22pTgk9RhaSdXdjzlRdIezRahnrqBq3nqBOV41r5ke49eWZW6arsf6T2omgWPUGjvjeYBP9ObOZxN37zNlrZJ+dRXn5VQY1P9kwn0FPwDkCzVoMZdt2tPJ0kVTQkl7+CBTnbOoG90n3PTnv3ExB2GoFn/wMhZiILI9CvBkB676YcmWKxpwhC0uedwVPwjZJ250nbOnaHSjqNlLmquQW5tTQqXjPw12CZn1lNItlcx/VnwIYUTsPIUeRit0S2wSBUk79bF6SoLAOOa9CqLRA== 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=/4PYhi77IQgahxEQTGPMvFa33vUCsdzd8Q2rC0SD60M=; b=DlqRnzhKdTwkqtpKyBwK0wm4rDiwiefLyLb6shumhhF83aIc4DoD3YWUklTM5b21coArLMUYj5sH7cYsTM0qr1ufMHoYrV93ae6MtNAJVQG1uOIXEYtXsI3xcXGKjvyX1jlxLlPZzzdimjsa3ggyI94VkNJeDEiCodwA4R3QN8EO4TxP8Ad2ESvDfznR9FOi16w6HWM3iQ3NqHic9aZbaIW9me102soNYjlp7aJR3ihVeeCsC+pTjrjk+dZkbDR6PLID1r1zRHQQx18GwHgAshOsp/QUc9uIg+8FYEkdniaaM4QtqrUqYKEK4Aq0hZ4wT/8il/trVr5xLwO/AdRPQw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Oleksandr Tyshchenko Subject: [PATCH v8 04/12] xen/arm/irq: add handling for IRQs in the eSPI range Thread-Topic: [PATCH v8 04/12] xen/arm/irq: add handling for IRQs in the eSPI range Thread-Index: AQHcIXHJOikwNnexEE+HQmODShsy3Q== Date: Tue, 9 Sep 2025 10:09:11 +0000 Message-ID: <6e356dde3a90bff04bc3a8ec0a3a490780f55e0d.1757412099.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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: 5c274eff-0147-4b8d-e507-08ddef88ec2f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?Il8JF79mDwfX4ku2zNHNf51fVG5B8tZci+BBkTwK1J+Z5GO8Tc/hg8/n19?= =?iso-8859-1?Q?PjvpKO14/zHd2Z2eAGzL/TTbom+L0w9nXvV58HWWL10S1GZIyuO1hN0I1A?= =?iso-8859-1?Q?T8S2LiTv/MO/jhvmKyjKbmA8rIRWQq7ZTTbdwPA7Pz6CXcwU6LNOpmcVOj?= =?iso-8859-1?Q?uOcyOQKJllozQUcJwkQ59fwCpc5DKkN/b8RnmVSurP8uGRAPNS7lLC199s?= =?iso-8859-1?Q?lV6shwvxVg7+71LFYuKztoW+4T/1AF41KxzLR7B3WijdxYBsPvTqyAetZ4?= =?iso-8859-1?Q?aN5nGFJXX+0eLt0wzJ64STEIkMYmfxC2iTvWJwe8+98EwmYFYNVDIEzGew?= =?iso-8859-1?Q?sUtuiWsH6KQe8bb5sZubgOQq7RE4NsGypNLNOdw61h57hGum/Fo7owpaDx?= =?iso-8859-1?Q?xfXziJ03fwzDhEDvt5hZnk9iTUn+dsQsf9BYUeb2lqfRKLEtO8gBTh6Vld?= =?iso-8859-1?Q?PV6B3k31iT1dNmm5NJaxFA6LxxqLX2kF6MPrZmwW/pdAbMzGM5pyRkkbwE?= =?iso-8859-1?Q?2Y2S7/sTHqzhBSWT0+ae639ghUqa5eRXpqXogkK5KroYhukXTSnHtyeTg2?= =?iso-8859-1?Q?T0uC1i9Ln50LgzG5oAZljzSEdBTfYcm7YtpMVDyyWwDwDuglBVXeScgHum?= =?iso-8859-1?Q?ZD2t4HiDTx4o3J86ncG9q0sZwanbx70F7mgbgUP8GUZ+DSorhkK9H0Bfqk?= =?iso-8859-1?Q?RKj3bzILJMQGNapYdCwUyNE7jbXpEIyVyl/ACxwkvRxRr5JA+4Uut+ghXc?= =?iso-8859-1?Q?idYc7EGysfnXU+qYdt1jENFKl7VFtCJbrMPX3daZtchPprq93Lh9L5K0+v?= =?iso-8859-1?Q?QI1LkVziuw8QIyOdqnXTAJ7PKxkbgvW4s6A54oi+0DU1ImRnsckvhjNv9N?= =?iso-8859-1?Q?X5/S0lKXKk+nOGHSBd2J7Y9BuINYjvEosfeMlcK80MmmoZK6e9M4Xk+QZG?= =?iso-8859-1?Q?2tcrie/rN1UfQsTe9/DvBwSZFjBoT8tlFuIQLzNgrBFtuwY0GOzddliKEV?= =?iso-8859-1?Q?MT0D4323dsDDI17lgv9w5rTfUzFu3QLv/dxUdyLK9EYbo4tM4IzxlFR76n?= =?iso-8859-1?Q?Haw3EmGASSKC3JKatoIMZ363WLKEDODAW4pHgGsBuJ3PKyMjZ/EmauRrzs?= =?iso-8859-1?Q?2dmW6RuyqiG+DrQxLcOj9IuxRph8l4KD4LeivuHXAseNhVk3zHPrS/WtmM?= =?iso-8859-1?Q?Z9BOhV/rhDz/EfJO1055tDGlKur9TlL3FYejQoB8lc1q0P+uZ0AC5tqWRi?= =?iso-8859-1?Q?8Xhc2DlE9UjpHUCEiGQvGZoemfqf6kFM6APZ9hscoqAWz7MlXGaPhMB9l5?= =?iso-8859-1?Q?/pO2VwmaIud6MmHdRVckQ/2R704PbcU3GsDxjf0Ftp7VJxAm3kpX4ZiYZi?= =?iso-8859-1?Q?4Q/x9E0tJHYfbzXx0mS1S5HnOhOMJHvki9I5+fzvwzp7op5Mub6u/3UUbT?= =?iso-8859-1?Q?SJ1RdcUIQ7J3HIlsZ4QsmA5mnEcG1eWB1iYVfeeraltPRnQXupogiH6WWk?= =?iso-8859-1?Q?zP2MNX6oKFexb/b7iIUu/Kk5P933+sfraCksWbMHDJl2Y/fRITYDDCQWAk?= =?iso-8859-1?Q?6/XgT0k=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?wrMFG8Rqi/tmDNRGpp1Hj+VWl27Et5p/PvdEX5w+6hsf9iqmR1oLGolocS?= =?iso-8859-1?Q?Nulw+2NaM9yOnpF2yA+RHAckBNA8Cn1I8d7Lg4s2SpIxn7wWib/MEX9NF0?= =?iso-8859-1?Q?KaE5kana0sHFHsvP8HLfRHsxWJYzp1eBzFpEp+M5K6NAP9S8j1PipgOiWJ?= =?iso-8859-1?Q?fF+bl3dLhiox+Kh/lNAiiDrriLR4H1GCkvDVhjMKKPpdCnZoSlFnExllZK?= =?iso-8859-1?Q?yIcHKW0ifuXtTHhZb2rycv6Da6abJXt3kzR7gaFVRq1mdiwLVSXRMLWtgV?= =?iso-8859-1?Q?/QywzHzdu3PSJ+/pvXTauZDiMhoyOHXIgPo0urozE3AYm95p+NnEm6JkJm?= =?iso-8859-1?Q?IGeMBM8SPEcQSn5blIGr4IH61DIztrQ6IkAa4+fTX9cS7Wo/K1bIwveWiO?= =?iso-8859-1?Q?Af+Zy+mbyGd9liLKkeHXuoFnKnfCzzac6ZxyimXwbBxgERKBIq97DdljAB?= =?iso-8859-1?Q?k08e+ER1sAIE2RCyemBntV9qbARpP1TlhTfofzas7b18yWoywXU9Y4xNig?= =?iso-8859-1?Q?OVsyQ/yIkijx08wxh9EHRXSNr2o0trVxMzZ8qGDO3LsqVlFGq0axhA1s1Q?= =?iso-8859-1?Q?A0NgXL7TdVT+twrK7E9EmFNyPpGJK6OfZLKyPtOuznqbENMq+qe2Aal7ML?= =?iso-8859-1?Q?TwUesVPq1vrQohqLaLcAms9cz45TfPW2NsO39evbAJR2ZRgoOWln4GLTG+?= =?iso-8859-1?Q?ho2/brhxQH9FXTxYV78Z7/g1jDCZhsXn3eYYtgH9igkrHpFbhU2wMEBWLz?= =?iso-8859-1?Q?A956ph2qWHZ8GWswWuriPuRsnQWwr25gR/XFPoMCiLAg0ChQuO68AbuuT+?= =?iso-8859-1?Q?OMr1hSF52D9aeCDRGjI/fdTFvReW3EV5bfQJfOsik1TUdGp/GVwdI/AfkA?= =?iso-8859-1?Q?XOiNbvJeon6r4J6S0Zy1oLzuoo8giKwjTaT5BqLKofvhFKaHBtrvdStAX7?= =?iso-8859-1?Q?Lld5WqgNdfBEEyJHjfiJ7zIHxAyY/yhoY7LBY8BrR3fP+htukH54EWq+uM?= =?iso-8859-1?Q?IHrVFhfcYQqUeK8dXhoJT89SXAHNHqQvTq193ch+FUWYT+dlS6D6QKt5xM?= =?iso-8859-1?Q?Av+wTeIbNvVgJLqboNid4eDTqqyJ+Lad96hxTXT3toTVR0h0CyjnFICxqd?= =?iso-8859-1?Q?Vskkv0afABb1R4S90LoMAfTqVyTAni2RnoTyShVmUbfb7l+a5rRULzcF+S?= =?iso-8859-1?Q?HhQ1r5oMtChR8XIAA9MC6LI0dTcrV4sjShbMYtkCWWsyetvbPN5qAI+xiB?= =?iso-8859-1?Q?ABjrWALm2u/qVpfHX4aDvtsFCZqnNhxtOc8pYzDBFfd3XbELTC5TMo+0MM?= =?iso-8859-1?Q?YxpmyvWFlkSAtaDFb7q6HmXiDmFwx4NrbFhOC3sGxGmwfpukgQx6gEaeyn?= =?iso-8859-1?Q?rKHvcOLqgSS7eNzvfZO3CN6gGeexLEM/tAOdVaitiS5zy/1Qg6ZWvMpFos?= =?iso-8859-1?Q?0IztBqz983B8KfRWHNiUmkAuxMgCtdAy19tMT6iVj7C4Jf+oF4CMDl25HK?= =?iso-8859-1?Q?DYiVUhpDmTcXGb6xH05kTFpcYjNRbE+GyhWtFlK0ZOugoe/QC6VNHZsKT+?= =?iso-8859-1?Q?BEBUEp2Gg3Z9tnXSZPGDgP0hlbvVc8gNP1zAYB/aaGF/3+QR6aCbrAjY8r?= =?iso-8859-1?Q?WqJnY0Gij3VZt6ViZX5EDY7SXz2yUVsFYDAIC8ZLYKqNuwSNPfcnae6tsD?= =?iso-8859-1?Q?RiR3cgCG2RwixZOi260=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: 5c274eff-0147-4b8d-e507-08ddef88ec2f X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:11.3354 (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: +hD25DzUOQr2gMuzeT2+FKg4O7Pj6N8otL/cDPyR3qsu8PJKyOXf3pYIyKFHQ5x/B4PBYUqmo51m/Lys0X5skoUlS9/U/nLnyG+yeS6/1RQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757412578974124100 Content-Type: text/plain; charset="utf-8" Currently, Xen does not support eSPI interrupts, leading to a data abort when such interrupts are defined in the DTS. This patch introduces a separate array to initialize up to 1024 interrupt descriptors in the eSPI range and adds the necessary defines and helper function. These changes lay the groundwork for future implementation of full eSPI interrupt support. As this GICv3.1 feature is not required by all vendors, all changes are guarded by ifdefs, depending on the corresponding Kconfig option. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Reviewed-by: Oleksandr Tyshchenko --- Changes in V8: - minor: fixed typo (s/asignmant/assignment/) - minor: removed the non-relevant part of the comment - fixed MISRA caution of 18.1 while moving is_espi() check under #ifdef and as a result avoid caution with overflowing index. Also, removed prototype of espi_to_desc() for builds with CONFIG_GICV3_ESPI=3Dn, as it is not needed now. - added reviewed-by from from Volodymyr Babchuk and Oleksandr Tyshchenko Changes in V7: - fixed the condition in the is_espi assert for non-eSPI builds: the previous condition was mistakenly added with a wrong check and led to triggering asserts for all non-eSPI INTIDs, when it should be triggered in this case in the other way around - minor: used is_espi() in the espi_intid_to_idx() ASSERT, as is_espi performs the same verification Changes in V6: - added an assert in is_espi() when CONFIG_GICV3_ESPI=3Dn to ensure that out-of-range array resources are not accessed, e.g., in __irq_to_desc() - removed unnecessary parentheses in is_espi() - converted helper macro to inline functions and added sanity checks with ASSERTs to them - defined espi_to_desc for non-eSPI builds as a prototype - updates the comments - used the IS_ENABLED(CONFIG_GICV3_ESPI) macro to initialize nr_irqs Changes in V5: - no functional changes introduced by this version compared with V4, only minor fixes and removal of ifdefs for macroses - added TODO comment, suggested by Oleksandr Tyshchenko - changed int to unsigned int for irqs - removed ifdefs for eSPI-specific defines and macros to reduce the number of ifdefs and code duplication in further changes - removed reviewed-by as moving defines from ifdefs requires additional confirmation from reviewers Changes in V4: - removed redundant line with 'default n' in Kconfig, as it is disabled by default, without explicit specification - added reviewed-by from Volodymyr Babchuk Changes in V3: - introduced a new define NR_ESPI_IRQS to avoid confusion, like in the case of using NR_IRQS for espi_desc array - implemented helper functions espi_to_desc and init_espi_data to make it possible to add stubs with the same name, and as a result, reduce the number of #ifdefs - disable CONFIG_GICV3_ESPI default value to n Changes in V2: - use (ESPI_MAX_INTID + 1) instead of (ESPI_BASE_INTID + NR_IRQS) - remove unnecessary comment for nr_irqs initialization --- xen/arch/arm/Kconfig | 8 ++++++ xen/arch/arm/include/asm/irq.h | 37 +++++++++++++++++++++++++++ xen/arch/arm/irq.c | 46 ++++++++++++++++++++++++++++++++-- 3 files changed, 89 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 17df147b25..43b05533b1 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -135,6 +135,14 @@ config GICV3 Driver for the ARM Generic Interrupt Controller v3. If unsure, use the default setting. =20 +config GICV3_ESPI + bool "Extended SPI range support" + depends on GICV3 && !NEW_VGIC + help + Allow Xen and domains to use interrupt numbers from the extended SPI + range, from 4096 to 5119. This feature is introduced in GICv3.1 + architecture. + config HAS_ITS bool "GICv3 ITS MSI controller support (UNSUPPORTED)" if UNSUPPORT= ED depends on GICV3 && !NEW_VGIC && !ARM_32 diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h index 5bc6475eb4..09788dbfeb 100644 --- a/xen/arch/arm/include/asm/irq.h +++ b/xen/arch/arm/include/asm/irq.h @@ -32,6 +32,10 @@ struct arch_irq_desc { #define SPI_MAX_INTID 1019 #define LPI_OFFSET 8192 =20 +#define ESPI_BASE_INTID 4096 +#define ESPI_MAX_INTID 5119 +#define NR_ESPI_IRQS 1024 + /* LPIs are always numbered starting at 8192, so 0 is a good invalid case.= */ #define INVALID_LPI 0 =20 @@ -39,7 +43,12 @@ struct arch_irq_desc { #define INVALID_IRQ 1023 =20 extern const unsigned int nr_irqs; +#ifdef CONFIG_GICV3_ESPI +/* This will cover the eSPI range, to allow assignment of eSPIs to domains= . */ +#define nr_static_irqs (ESPI_MAX_INTID + 1) +#else #define nr_static_irqs NR_IRQS +#endif =20 struct irq_desc; struct irqaction; @@ -55,6 +64,34 @@ 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 + /* + * The function should not be called for eSPIs when CONFIG_GICV3_ESPI = is + * disabled. Returning false allows the compiler to optimize the code + * when the config is disabled, while the assert ensures that out-of-r= ange + * array resources are not accessed. + */ + ASSERT(!(irq >=3D ESPI_BASE_INTID && irq <=3D ESPI_MAX_INTID)); + return false; +#endif +} + +static inline unsigned int espi_intid_to_idx(unsigned int intid) +{ + ASSERT(is_espi(intid)); + return intid - ESPI_BASE_INTID; +} + +static inline unsigned int espi_idx_to_intid(unsigned int idx) +{ + ASSERT(idx <=3D NR_ESPI_IRQS); + return idx + ESPI_BASE_INTID; +} + #define domain_pirq_to_irq(d, pirq) (pirq) =20 bool is_assignable_irq(unsigned int irq); diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index b8eccfc924..80befc2913 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -19,7 +19,9 @@ #include #include =20 -const unsigned int nr_irqs =3D NR_IRQS; +const unsigned int nr_irqs =3D IS_ENABLED(CONFIG_GICV3_ESPI) ? + (ESPI_MAX_INTID + 1) : + NR_IRQS; =20 static unsigned int local_irqs_type[NR_LOCAL_IRQS]; static DEFINE_SPINLOCK(local_irqs_type_lock); @@ -46,6 +48,41 @@ void irq_end_none(struct irq_desc *irq) } =20 static irq_desc_t irq_desc[NR_IRQS - NR_LOCAL_IRQS]; +#ifdef CONFIG_GICV3_ESPI +/* TODO: Consider allocating an array dynamically */ +static irq_desc_t espi_desc[NR_ESPI_IRQS]; + +static struct irq_desc *espi_to_desc(unsigned int irq) +{ + return &espi_desc[espi_intid_to_idx(irq)]; +} + +static int __init init_espi_data(void) +{ + unsigned int irq; + + for ( irq =3D ESPI_BASE_INTID; irq <=3D ESPI_MAX_INTID; irq++ ) + { + struct irq_desc *desc =3D irq_to_desc(irq); + int rc =3D init_one_irq_desc(desc); + + if ( rc ) + return rc; + + desc->irq =3D irq; + desc->action =3D NULL; + } + + return 0; +} +#else + +static int __init init_espi_data(void) +{ + return 0; +} +#endif + static DEFINE_PER_CPU(irq_desc_t[NR_LOCAL_IRQS], local_irq_desc); =20 struct irq_desc *__irq_to_desc(unsigned int irq) @@ -53,6 +90,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_to_desc(irq); +#endif + return &irq_desc[irq-NR_LOCAL_IRQS]; } =20 @@ -79,7 +121,7 @@ static int __init init_irq_data(void) desc->action =3D NULL; } =20 - return 0; + return init_espi_data(); } =20 static int init_local_irq_data(unsigned int cpu) --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757412578; cv=pass; d=zohomail.com; s=zohoarc; b=oDM32mCKKomp5MwgAF1yiz3ZQpWG4KTunJKSr0hXFeLDay2JwYqReWgg1hlZHgAvZM9LmLChPnOPbULWf4OEcAoM1XHds+1ZyVfHGlO/3+QTADXvEBBnD61n+iEDR4Etd5JnZ+QQdoyeM4DLUhRZ91Iyi5WoPAih+OHRP3pr5HI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757412578; 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=77VmsMWkYw2kko3f++NVL2YCmHBnjCG/xskj3x8x9yg=; b=JHaBMvb9qWW6QcIqWdAerJgQyVehEWkB5mrvhWdeIbAZ4cEBB466s68dqjYOOPOUAZ61tSIh6OT13VMTpf7JR9FeohNvVjDe1htgLRTHJXKhRTQmq0N49LD0sTBymamhD/5F/XL5/33ZPcwDVntJhD5KcPVhcRJrxWDVprWBud4= 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 1757412578752990.5978463724496; Tue, 9 Sep 2025 03:09:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116155.1462592 (Exim 4.92) (envelope-from ) id 1uvvHz-0003JU-3A; Tue, 09 Sep 2025 10:09:27 +0000 Received: by outflank-mailman (output) from mailman id 1116155.1462592; Tue, 09 Sep 2025 10:09:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvHy-0003JL-W7; Tue, 09 Sep 2025 10:09:26 +0000 Received: by outflank-mailman (input) for mailman id 1116155; Tue, 09 Sep 2025 10:09:25 +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 1uvvHw-0001My-U0 for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:25 +0000 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170100001.outbound.protection.outlook.com [2a01:111:f403:c200::1]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 0e769569-8d65-11f0-9d13-b5c5bf9af7f9; Tue, 09 Sep 2025 12:09:22 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09:16 +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.9094.021; Tue, 9 Sep 2025 10:09:16 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 0e769569-8d65-11f0-9d13-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bo4J9qJQhJp7Hnqaqm8Xo+NCzo8HLwm2doy1rvo4VPOJSV+Eo9/Wd3Q8r9MK38JNWgt3sQlhhr91/ewR3CUv7tWQOhuu+Ig1/eE/P7tAvRohbnoq8kxGGnoffxqUT5d0f912X+pNDjy0wZ4IMIYetJAxZTeArNxF8o7o5uhE0mlfRgWFLxZj5LC0xiCYver6b5m9X9IQMhVAlAREpq7pvXyoUxe/buVQ3/fRSXoBo5yD6jGlg4sti4i/esqPqx4o17PVLxtUwt3nbktcxDMZC+4PZRgOJeSwtSLQ86D0YoXdN0ZkFwatmp0k5PYczQLgRkL50Gh6gzfJOdZxgZtACw== 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=77VmsMWkYw2kko3f++NVL2YCmHBnjCG/xskj3x8x9yg=; b=FE1gIM4vRZ9oEaZDRWBioNHHSbf290THqdkh/E1cPu3hELmxZXY2TBfQJuZJDWKARV3lBmiM8zOgdvRjXDJ2KeDa+iVxg2dnnyAwNA570q7cQEIMRuz/2sajH+GmhPhpqUTLqFXT4ZOb39pIPJt4MhaDosuY4iGIaU9kyJBvfV1TFEX9I+3QvbAxhlvpUCja/XBmdsGX/aYr1tFCYau32TeZL9LvHovfcieUPOJZXzGaxfOws+354t/qvddDorTvPW19G8YQe20rg3ApR+Np++GTL3o65cJCpIRwLSQ50cig5yPufrr1Wr6aBquUp+G5IKJGmh3K9T+9hicKMTQijg== 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=77VmsMWkYw2kko3f++NVL2YCmHBnjCG/xskj3x8x9yg=; b=iEZaeXttR9Np5RriEp0FusLMr9ebLQ5DTMqvRisWsmJ6vvy5Rc3OUyp5lCJjwUj4tO93OUB3RBF44GAIxWTSyoMVXSN8n+ZbdQGVu5ELe9rInGoax4lPQil5ExiXBG1qjBURvACIV4vywYJrlklC9Z2+WSTuiWt38PJY3UHT594RXwzwovJJSggfPHR6cEWjjBmksK8qit4JRV1c+gifGzvEEP6Xk1XSgmdROVW2ad0KAxsjd99h6TqAA3WUii1gU5ja1DF/3AuuVQMkVE1YmMshJMcMNFeXg2HL7cLeGsbMJxGHrZjih7oEelfJ5TPSK+5re6pfDiFd3lZ/RMzuqg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Oleksandr Tyshchenko , Julien Grall Subject: [PATCH v8 05/12] xen/arm: gicv3: implement handling of GICv3.1 eSPI Thread-Topic: [PATCH v8 05/12] xen/arm: gicv3: implement handling of GICv3.1 eSPI Thread-Index: AQHcIXHMU/gntH9UQEOAUqiND1Mh1A== Date: Tue, 9 Sep 2025 10:09:16 +0000 Message-ID: <186b85b8c01eef4b708397f369e6b2c886c6ae61.1757412099.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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: 9dbdd22a-f338-4d83-ee08-08ddef88ef5e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?dUqQDaybj2o9fFLX1Jl26dYGgWuWYnZKwJwDpTfeI4v9H2qtWAgOQMh1Qw?= =?iso-8859-1?Q?0rxBXWMgZrhjCnyrCpFOoNIcgIDC5acLsAuSmsep+QY/zFcg5iO6yIVcLu?= =?iso-8859-1?Q?gEXHnHaJTcsybBhSYHIaloFZ1jZiIUuEUHD1BFZXff4mAU42rSydnSZk1X?= =?iso-8859-1?Q?aeWUHq5HA/Thr5GQpI91jkfpfDgdgUZH8U42hPmZVEgxKNlYY16R4pOpn3?= =?iso-8859-1?Q?xit0QWMtaZP1/xnkLj2xVCAap+OViweubXJZdyVgIRhTlUk7KbPmPMBzW1?= =?iso-8859-1?Q?lBzr7ZuORij4bBibAqYDKkT4gIcXQOFamkuzCEtqCYLLIvAoB8eaf6uVdy?= =?iso-8859-1?Q?hBYcWpvlKHcow0X+7y3W0/Bm/hrJa/xlI6q/GYoTPXSwFe1/seis0ZTq4W?= =?iso-8859-1?Q?DtCVO7pwPSza/EkcGoIlRfesYKePYT0w/NKxk4gRU9buKqpza28MVVDIwz?= =?iso-8859-1?Q?VZe+/BvIvrKRK3aVnKZuHtUte8vJY7PZY67/DPdO+ynL0RJ0LIX0lg8J6k?= =?iso-8859-1?Q?uBoowU1e1LG07Ll9TcEFHX4U5yRhqcXeY5XUrXLAnSnnSBWWZeZ/sFpHpa?= =?iso-8859-1?Q?4ewaw9LhPIa7y4/O3DXWc7S5+qXdHL1j0MD7SJmI22JIzElYvmc6cXWRiG?= =?iso-8859-1?Q?ZuNaHX4yPHaAAVFJ9i2jOKQgicEZg9NL1Xo2WiqWyFsGmQjHWSwAAF7CGn?= =?iso-8859-1?Q?fCdlm1wCtsIucaMoLtLPk63TXb3Ja7MNzir6SLlbgJt95kq+ta3/gKj3hJ?= =?iso-8859-1?Q?oruErS/vrxv2WDhttqningtRAjVX648iF2E8OZcFssjBAxgJzd1UHR9ATE?= =?iso-8859-1?Q?jE6zoDSI3TOGuFKoeTYycNrwN4bBrHDVB8JAwXqFkvVzUISF6rNtUP1iTr?= =?iso-8859-1?Q?4HceCSMP8gi9qmuaFL7dnrfBeNuMW8GwT8kwmMkLGiVVw6SpeuNwFPUbVR?= =?iso-8859-1?Q?1gFZA4NQoEO7dtMHWzpi0G+nh2z3RkWPBJDAPgnE5wd9Xb6mtc7bDkchnP?= =?iso-8859-1?Q?2rX/d82vNf9deJEDh3Vw0WCIihZqYXSjJEBGsIxIYdatcHJcZIGpzKjkaA?= =?iso-8859-1?Q?LHo+or+N7L06q4645gIM/dGSDFlPBJ436JBhMF3KYwqJigyXdTThCcnrww?= =?iso-8859-1?Q?B1aP7KUBFVz+iZDSCAE0jKz84OYMTODYz1tgpH/ktMso8CyqF+oTowpwDW?= =?iso-8859-1?Q?SHxotw28y+dwmKAT0Tv+5U28rl1JA/qNDIDFFzRg3UYtfA6BWF3oD1rpXf?= =?iso-8859-1?Q?BUha3Q14xXWgUEV/EtyuQ4LHUouo/+u6np5Neyq0MWd85PoGi88dbBqKKJ?= =?iso-8859-1?Q?CUZDArIM/XHZysddTlcYSvlhB2L0zM5afg0NxS01Sz+nYx6v5GV6eHe5ON?= =?iso-8859-1?Q?TeFhbz1SZb7s/8FzCUpXca1WJmGxVhORSeRSD+w0QtxNR6kkj+8lNO8G9D?= =?iso-8859-1?Q?y4GDtno5EHzHgeqM2/txfU3ZVt4g1b8SwQCCjeVIVsdGgjZZA9bs3wcU8f?= =?iso-8859-1?Q?dLe58g36nITPk5GGylBGg4GqZZUmWSLA3ckjDSDp4Cwzz0Vp2U0RMzr6DA?= =?iso-8859-1?Q?fwzGTcA=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?P7aWIbihhpfDHcpq7eaEjsoTqp4B1rZAFLRKIWBUlmqyz9fWaexpAZ8/dM?= =?iso-8859-1?Q?xqAVrlAPZJIm4tZobhJGFtB4ZFT2X45B0hL/i15J8uLsRTJsfLzK0AhIGl?= =?iso-8859-1?Q?sRmMIufniR8/WYTujigp7t0eSuKyVJmulQDOf1OJzwfDTkV+3OvL9uUrx0?= =?iso-8859-1?Q?/3ZXlJ6PvHIp8271KfJ6kZ2aLHp7f+AJFKGtA/M6aVaMbxdF5ns9wsuype?= =?iso-8859-1?Q?54MxMToFXMHpyjnvnw08/LSLeBisoacpgmbTzIzL1kIj9X7HAGhG+1vP4c?= =?iso-8859-1?Q?bganqpRKBsZ2ahctM0Tt47sOd2szX03prDO47T2eBttFiXSyU4wSR5Hv0Q?= =?iso-8859-1?Q?O7+DbOy3aEseFEpZ9DDw68SUn0OkmWhvL+SRiJrNsuJnO40Ul9I93fKlQ4?= =?iso-8859-1?Q?7OPC9QiM5jTHw0CGIVa5/cTFUr90/JDT7aVEEKKK3uQmiMNBh2BW+BIFfP?= =?iso-8859-1?Q?pnS3ASz4CU9xSWByWwpHsGiUSmFfxSOJ9dClPxrTVwGRzavAytCqVWx+w4?= =?iso-8859-1?Q?wsVda8HhuNcAT5gyTCbEU4VJr9osFJONsdUtrsfBJFTm5PplYffFBKPyTe?= =?iso-8859-1?Q?aF28C+YlYD1AzpiijvgpDuhrJ+q5bRR8zdEaO1+uq/b46RDQ0gfVT1m0Kh?= =?iso-8859-1?Q?U244kGlnjp60/CVoGk0dPZMEV7Q/lN4tZz6bkDVJTAZL97GFyzen+2BSr5?= =?iso-8859-1?Q?0bWYmwSq7MyFzuLg2PnI+Ytmbx9jXNb346Qi6KM45mEXHU1hcIsNSmYJAp?= =?iso-8859-1?Q?2zmcVEcxgs1ygFlE6dWFQAN1geKcHPYrhItV6UQjiu5mzhT3zWHJ+4kvuS?= =?iso-8859-1?Q?1hGc/Ch/KDoaCrw7JOOkpIgQTLpMIy7fl3W1kC2vqqOZah8TTNyb4eGpFe?= =?iso-8859-1?Q?ObvJVXpDwIVKxwpzi3uA01pRCBvrv3IWJSdTJ39naIQz3H4OclvKdzoDNr?= =?iso-8859-1?Q?XdkE3TXGZBjfZALBC5Dh/poyqh4TLgzpir3fzc/uJkKGIWOPm61rcqEw8X?= =?iso-8859-1?Q?W1ji5UjztmXRT/k1pbgAgLxQd0otTiyOCucMLoDnSKbSnHiSQLRurBY9Zv?= =?iso-8859-1?Q?Xwvg7mWr8reHZTrXfh9tCQS/FBYXcEIm4jX0JY49oi3DM9WXfrqc2eG+S5?= =?iso-8859-1?Q?0oZXiYVL2wM6BBTkrQn9d/MVXLaXKdY5ITEiA+6uAjQV+TFKPaGoPJGnU1?= =?iso-8859-1?Q?+phovsB9j/NdngXqKoPPk/NTo4Zr6ovcj5bFo1/pVAmaC0ZO3jdH/rvpTF?= =?iso-8859-1?Q?L7tkJ24MpN68sPTBzCzftTOOhnreC3eu6c9iBG91CM8ggDCdCjKnSOJDzE?= =?iso-8859-1?Q?jOClfppmn4nRpGdlyFdcjSUTzoBT8p6GleXr8IA/L6M16yDPqT9bGeWoN4?= =?iso-8859-1?Q?Cv4G3PQwqa0NQZ5WC50HEeF/kr3tE5FhWJF981+mv0LWaDUiYnzlKs5ng6?= =?iso-8859-1?Q?7mE0ENd22GGcPlXoWsOowy8jqMciN+pM9MK5vDGiw/pZwwQOFbxjYFF7uT?= =?iso-8859-1?Q?ICVnXnrVjzyzBIyA0oSq2g75R6xR+6Z/v3YHypEycPAhcl+Zus5B23wl8p?= =?iso-8859-1?Q?gMAsWMTxYPwpmXB2SIyGSnq8Qlxh0C00PHf/V3L1rrvuLU85pYfCD+F3BT?= =?iso-8859-1?Q?lk9WVg+RjhqRlEOLhQ0f/DX2YwsHNCrtS55oYPkoc7/H5+I671KuOpHZrS?= =?iso-8859-1?Q?Je60kKV7CfzG/PtxKw8=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: 9dbdd22a-f338-4d83-ee08-08ddef88ef5e X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:16.6734 (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: NjZGUeix5PYPmTqkY/vffCkSEeVnzVIwv3FDBqinyAx8E+/Ys0VWmB6AJvDmjaVkHPlj4eHl6/cv6UTckWtBMSbgPqtJtaEqekX6n5n5PXw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757412580916124100 Content-Type: text/plain; charset="utf-8" Introduced appropriate register definitions, helper macros, and initialization of required GICv3.1 distributor registers to support eSPI. This type of interrupt is handled in the same way as regular SPI interrupts, with the following differences: 1) eSPIs can have up to 1024 interrupts, starting from the beginning of the range, whereas regular SPIs use INTIDs from 32 to 1019, totaling 988 interrupts; 2) eSPIs start at INTID 4096, necessitating additional interrupt index conversion during register operations. In case if appropriate config is disabled, or GIC HW doesn't support eSPI, the existing functionality will remain the same. Signed-off-by: Leonid Komarianskyi Reviewed-by: Oleksandr Tyshchenko Acked-by: Julien Grall --- Changes in V8: - add missing break in switch-case (fixing potential violation of MC3A2.R16.3 with CONFIG_GIV3_ESPI=3Dy) - minor: add comment for default case (fixing potential violation of MC3A2.R16.4 with CONFIG_GIV3_ESPI=3Dy) - minor: as nr_espi is unsigned int, the %u instead of %d is used - added acked-by from Julien Grall Changes in V7: - no changes Changes in V6: - removed unnecessary parentheses in gic_is_valid_espi() - updated gic_is_valid_line(): it now verifies the condition irq < gic_number_lines() first, as it is more likely that the irq number will be from the non-eSPI range - minor change: changed the macros ESPI_INTID2IDX and ESPI_IDX2INTID into appropriate inline functions introduced in the previous patch - added reviewed-by from Oleksandr Tyshchenko Changes in V5: - fixed minor nits, no functional changes: changed u32 to uint32_t and added a comment noting that the configuration for eSPIs is the same as for regular SPIs - removed ifdefs for eSPI-specific offsets to reduce the number of ifdefs and code duplication in further changes - removed reviewed-by as moving offset from ifdefs requires additional confirmation from reviewers Changes in V4: - added offsets for GICD_IGRPMODRnE and GICD_NSACRnE that are required for vGIC emulation - added a log banner with eSPI information, similar to the one for regular SPI - added newline after ifdef and before gic_is_valid_line - added reviewed-by from Volodymyr Babchuk Changes in V3: - add __init attribute to gicv3_dist_espi_common_init - change open-codded eSPI register initialization to the appropriate gen-mask macro - fixed formatting for lines with more than 80 symbols - introduced gicv3_dist_espi_init_aff to be able to use stubs in case of CONFIG_GICV3_ESPI disabled - renamed parameter in the GICD_TYPER_ESPI_RANGE macro to espi_range (name was taken from GIC specification) to avoid confusion - changed type for i variable to unsigned int since it cannot be negative Changes in V2: - move gic_number_espis function from [PATCH 08/10] xen/arm: vgic: add resource management for extended SPIs to use it in the newly introduced gic_is_valid_espi - add gic_is_valid_espi which checks if IRQ number is in supported by HW eSPI range - update gic_is_valid_irq conditions to allow operations with eSPIs --- xen/arch/arm/gic-v3.c | 85 ++++++++++++++++++++++++++ xen/arch/arm/include/asm/gic.h | 21 ++++++- xen/arch/arm/include/asm/gic_v3_defs.h | 38 ++++++++++++ 3 files changed, 143 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index 2fdd96dbb1..bc07f97c16 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -489,6 +489,38 @@ static void __iomem *get_addr_by_offset(struct irq_des= c *irqd, uint32_t offset) break; } break; +#ifdef CONFIG_GICV3_ESPI + case ESPI_BASE_INTID ... ESPI_MAX_INTID: + { + uint32_t irq_index =3D espi_intid_to_idx(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: + /* Invalid register offset for eSPIs */ + break; + } + break; + } +#endif default: /* Invalid INTID */ break; @@ -661,6 +693,55 @@ static void gicv3_set_irq_priority(struct irq_desc *de= sc, spin_unlock(&gicv3.lock); } =20 +#ifdef CONFIG_GICV3_ESPI +unsigned int gic_number_espis(void) +{ + return gic_hw_ops->info->nr_espi; +} + +static void __init gicv3_dist_espi_common_init(uint32_t type) +{ + unsigned int espi_nr, i; + + espi_nr =3D min(1024U, GICD_TYPER_ESPIS_NUM(type)); + gicv3_info.nr_espi =3D espi_nr; + /* The GIC HW doesn't support eSPI, so we can leave from here */ + if ( gicv3_info.nr_espi =3D=3D 0 ) + return; + + printk("GICv3: %u eSPI lines\n", gicv3_info.nr_espi); + + /* The configuration for eSPIs is similar to that for regular SPIs */ + for ( i =3D 0; i < espi_nr; i +=3D 16 ) + writel_relaxed(0, GICD + GICD_ICFGRnE + (i / 16) * 4); + + for ( i =3D 0; i < espi_nr; i +=3D 4 ) + writel_relaxed(GIC_PRI_IRQ_ALL, + GICD + GICD_IPRIORITYRnE + (i / 4) * 4); + + for ( i =3D 0; i < espi_nr; i +=3D 32 ) + { + writel_relaxed(GENMASK(31, 0), GICD + GICD_ICENABLERnE + (i / 32) = * 4); + writel_relaxed(GENMASK(31, 0), GICD + GICD_ICACTIVERnE + (i / 32) = * 4); + } + + for ( i =3D 0; i < espi_nr; i +=3D 32 ) + writel_relaxed(GENMASK(31, 0), GICD + GICD_IGROUPRnE + (i / 32) * = 4); +} + +static void __init gicv3_dist_espi_init_aff(uint64_t affinity) +{ + unsigned int i; + + for ( i =3D 0; i < gicv3_info.nr_espi; i++ ) + writeq_relaxed_non_atomic(affinity, GICD + GICD_IROUTERnE + i * 8); +} +#else +static void __init gicv3_dist_espi_common_init(uint32_t type) { } + +static void __init gicv3_dist_espi_init_aff(uint64_t affinity) { } +#endif + static void __init gicv3_dist_init(void) { uint32_t type; @@ -706,6 +787,8 @@ static void __init gicv3_dist_init(void) for ( i =3D NR_GIC_LOCAL_IRQS; i < nr_lines; i +=3D 32 ) writel_relaxed(GENMASK(31, 0), GICD + GICD_IGROUPR + (i / 32) * 4); =20 + gicv3_dist_espi_common_init(type); + gicv3_dist_wait_for_rwp(); =20 /* Turn on the distributor */ @@ -719,6 +802,8 @@ static void __init gicv3_dist_init(void) =20 for ( i =3D NR_GIC_LOCAL_IRQS; i < nr_lines; i++ ) writeq_relaxed_non_atomic(affinity, GICD + GICD_IROUTER + i * 8); + + gicv3_dist_espi_init_aff(affinity); } =20 static int gicv3_enable_redist(void) diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h index 3fcee42675..3947c8634d 100644 --- a/xen/arch/arm/include/asm/gic.h +++ b/xen/arch/arm/include/asm/gic.h @@ -306,9 +306,24 @@ extern void gic_dump_vgic_info(struct vcpu *v); =20 /* Number of interrupt lines */ extern unsigned int gic_number_lines(void); +#ifdef CONFIG_GICV3_ESPI +extern unsigned int gic_number_espis(void); + +static inline bool gic_is_valid_espi(unsigned int irq) +{ + return irq >=3D ESPI_BASE_INTID && + irq < espi_idx_to_intid(gic_number_espis()); +} +#else +static inline bool gic_is_valid_espi(unsigned int irq) +{ + return false; +} +#endif + static inline bool gic_is_valid_line(unsigned int irq) { - return irq < gic_number_lines(); + return irq < gic_number_lines() || gic_is_valid_espi(irq); } =20 static inline bool gic_is_spi(unsigned int irq) @@ -325,6 +340,10 @@ struct gic_info { enum gic_version hw_version; /* Number of GIC lines supported */ unsigned int nr_lines; +#ifdef CONFIG_GICV3_ESPI + /* Number of GIC eSPI supported */ + unsigned int nr_espi; +#endif /* Number of LR registers */ uint8_t nr_lrs; /* Maintenance irq number */ diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/= asm/gic_v3_defs.h index 2af093e774..3370b4cd52 100644 --- a/xen/arch/arm/include/asm/gic_v3_defs.h +++ b/xen/arch/arm/include/asm/gic_v3_defs.h @@ -37,6 +37,44 @@ #define GICD_IROUTER1019 (0x7FD8) #define GICD_PIDR2 (0xFFE8) =20 +/* Additional registers for GICv3.1 */ +#define GICD_IGROUPRnE (0x1000) +#define GICD_IGROUPRnEN (0x107C) +#define GICD_ISENABLERnE (0x1200) +#define GICD_ISENABLERnEN (0x127C) +#define GICD_ICENABLERnE (0x1400) +#define GICD_ICENABLERnEN (0x147C) +#define GICD_ISPENDRnE (0x1600) +#define GICD_ISPENDRnEN (0x167C) +#define GICD_ICPENDRnE (0x1800) +#define GICD_ICPENDRnEN (0x187C) +#define GICD_ISACTIVERnE (0x1A00) +#define GICD_ISACTIVERnEN (0x1A7C) +#define GICD_ICACTIVERnE (0x1C00) +#define GICD_ICACTIVERnEN (0x1C7C) +#define GICD_IPRIORITYRnE (0x2000) +#define GICD_IPRIORITYRnEN (0x23FC) +#define GICD_ICFGRnE (0x3000) +#define GICD_ICFGRnEN (0x30FC) +#define GICD_IGRPMODRnE (0x3400) +#define GICD_IGRPMODRnEN (0x347C) +#define GICD_NSACRnE (0x3600) +#define GICD_NSACRnEN (0x36FC) +#define GICD_IROUTERnE (0x8000) +#define GICD_IROUTERnEN (0x9FFC) + +#ifdef CONFIG_GICV3_ESPI +#define GICD_TYPER_ESPI_SHIFT 8 +#define GICD_TYPER_ESPI_RANGE_SHIFT 27 +#define GICD_TYPER_ESPI_RANGE_MASK (0x1F) +#define GICD_TYPER_ESPI (1U << GICD_TYPER_ESPI_SHIFT) +#define GICD_TYPER_ESPI_RANGE(espi_range) ((((espi_range) & \ + GICD_TYPER_ESPI_RANGE_MASK) + 1) * 32) +#define GICD_TYPER_ESPIS_NUM(typer) \ + (((typer) & GICD_TYPER_ESPI) ? \ + GICD_TYPER_ESPI_RANGE((typer) >> GICD_TYPER_ESPI_RANGE_SHIFT) : 0) +#endif + /* Common between GICD_PIDR2 and GICR_PIDR2 */ #define GIC_PIDR2_ARCH_MASK (0xf0) #define GIC_PIDR2_ARCH_GICv3 (0x30) --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757412995; cv=pass; d=zohomail.com; s=zohoarc; b=gAMvP1PZUnMlYJJxTvJar0faic/T1ZoCFU58AeFjyZqQ5zwC7ZtFyN5oPWWe/0o+iEd2nl15A3wVHatYuhz4oMdxuFBHdJPV+G/e1t5u4iquAHVudZ1a8XoRX7igY6IdH5g/vEaD9zLFcfyMAc4750cTuv2Otg+L6ef3ugV36a4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757412995; 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=Wvjb8Q2MRZ30uBI5D+0Q4eS0/g5NqC7ZCG+VanVMZrk=; b=KLYX48FeGrClOWdzpqYRv1O3LVkM3CY+TqzEFj4e0doyf5fL6qtclaP2x2p63r+mHMDiKK6api6lcLOOseQjCQrwnJyLBiLMSmOofERobkQtcZG7G89DdwVcxLtSnEK7s/OyUz3MMNDhI7OGh05ouJ7fuypOHZMfDWQ7t44qH/E= 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 1757412995904302.47966280891285; Tue, 9 Sep 2025 03:16:35 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116194.1462602 (Exim 4.92) (envelope-from ) id 1uvvOc-0005sy-VI; Tue, 09 Sep 2025 10:16:18 +0000 Received: by outflank-mailman (output) from mailman id 1116194.1462602; Tue, 09 Sep 2025 10:16: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 1uvvOc-0005sr-S0; Tue, 09 Sep 2025 10:16:18 +0000 Received: by outflank-mailman (input) for mailman id 1116194; Tue, 09 Sep 2025 10:16:17 +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 1uvvI0-0000yD-OK for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:28 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 11555a8b-8d65-11f0-9809-7dc792cee155; Tue, 09 Sep 2025 12:09:27 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09:21 +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.9094.021; Tue, 9 Sep 2025 10:09:21 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 11555a8b-8d65-11f0-9809-7dc792cee155 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OWBYPXR8V/kBGfCmcAFytIuqfgjcuHW/eDrkNm+e5mAiaXZIW6k1GWbuDl+D5F7fxWtKjh9mnt6rgHKEV9AmrcVIsosL1suD/ViGStRdGfrcdV/ewpA7sc0ynD/wbyZeoqGWFD9fYSNzAN2V3RqaqptmYRQNmjj0En+9kUwmLfnUEWs527QQdm4ddyb7PQnsD/Sf61zIyFMOv5B8fgGWLJrY9ZiBFx1oEVzZXZeTcF2ulfgucSQQxo/CPETMaKce7ANJA0HdRUr8pf7teqb4Ima8JUnVLJGcFDb6FDQOVQ2OsFakM105RWF9chUdeiPNdY8V6vr/dUNGAAxvp4YgTA== 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=Wvjb8Q2MRZ30uBI5D+0Q4eS0/g5NqC7ZCG+VanVMZrk=; b=xEohO314ESLcmE5Vs1UuBcxTr9Dh5kR0n4S5DSgXoReyHT1bCqjXRlYaCDIqbx6P3ZORIKnqSDX5idGYophaGvFI0GRFfeeKZvx/0JmXxNZCBjvOiuz5vmxeMFkPZWC3xeMn18CPECm6rJIAEWPtYlXWmutGCsVuUpRroiouufIFg5b2TxTgyPIePjM6nEesllX3qiCCA8HbzyKSmrSbcbAlu4VXe7Ntrsfqc5gSMyc2pWyz0T2Xe13etCJnJ3sclr7MWgaCQTCNP6G2slhUjsSHZT49ochnksBG8V/LoO1TTnX2ff5x0fs0K6CeLZGzxsPpMNHJ5JrfhhP/qt9uaA== 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=Wvjb8Q2MRZ30uBI5D+0Q4eS0/g5NqC7ZCG+VanVMZrk=; b=sQGiMWKFmhNVOLRUNuv3AP329xM8642XyhCbocGdxmkLOTHHLumRgn9NflFRswZQoiRWlvkBndm6nNFFLvSsMDwshrEZQDrzVUU/9T0urTA8IZKyUOpMUTXo3Q85PIMuHjXix7iG8RrB2j5JkMIKVyfEAS7Tl8o2Cnkv/Ed4LpaakKCTUf5MM9e/1pRiN1svofyeQDwwWFAM35PlP+KJH72VojCj/ZC0iUNHz/XgFUoljzbDBaRyxg9bCinRfy5Q8GL1GUkO9kgyV2JAoAxMkOs+/KJwmthes7KP0/By27aY9Z5MfMlm5RMJG9KB1QJxifKAYBAAih4tP6TfWgEsAg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Julien Grall Subject: [PATCH v8 06/12] xen/arm/irq: allow eSPI processing in the gic_interrupt function Thread-Topic: [PATCH v8 06/12] xen/arm/irq: allow eSPI processing in the gic_interrupt function Thread-Index: AQHcIXHPX1YLtsRvi0asSCS1zVQdvg== Date: Tue, 9 Sep 2025 10:09:20 +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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: c22e6002-2518-437d-ae78-08ddef88f1f8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?dpZLcY+27wp0XnLl7hPcXPlxFlWYr4tiiwMty6MDZutWzmUznGl3/R8iuj?= =?iso-8859-1?Q?zZmDvF43jKY6zkaxYw6+f2unrHGUoOafl0cRW06UnEVEbdKxrflWd/Y2if?= =?iso-8859-1?Q?2RlRqbFk9ymongCLa08Ab81obQcb1Ud+Y0TDJ6kGi0O3ARp45sbf4zyCym?= =?iso-8859-1?Q?EUYxzmSh/89mBdzQjfwBhE8RX9y7ELs9aDqynEdW22x3jQ5RiRQZ0mQo8k?= =?iso-8859-1?Q?rNN062bliDQ7vXTL4nRK//CwByW4mfUWKQJkVAjRR73IsNaEYfRorteR4x?= =?iso-8859-1?Q?EWsCRfchWPTQmIlhWsRM3r+Ky/AHlEUPClxSFjFiXv+5sErVP2jf2F5bS8?= =?iso-8859-1?Q?TwC8o3qXfW9Jo+JsgBMa5qas295wSkrHreHju1WkcTbW1+7kg3vZtlqRaE?= =?iso-8859-1?Q?T7yUJbW7P1V0OTqm1d71/h4NcV0FtDsdUqJopBwb6iMw2A07a+4tqJ2NBZ?= =?iso-8859-1?Q?QE7jtkr21AYCC6vybAaCoqdjzraFbJeiZ7whAfZ70Eql/7eq3NVsyQ2TNG?= =?iso-8859-1?Q?RWXi8BAhV0RdzVTk7zQDrasmdCiAbBexQVAThjLZEcVa+oe8HJjDr+k5DJ?= =?iso-8859-1?Q?9pCO39l3BO0rdj+f9x8HToYxzZGuW4MemdwPE/Bmb43EFzeDoPq+Qs75BG?= =?iso-8859-1?Q?YfkYxS2MMJPfQmRu7PQYBqpkO3hxpswHn3juQpivCAnri7pza90F89J2Eb?= =?iso-8859-1?Q?XYqqT0KauTlirUVao181guqjuTpvvOPO0jwrcuX5pXXPr2UEZC+gSoN/qv?= =?iso-8859-1?Q?D9zwhNMGQX0CP/lxl8nPt/gQb+LMqofTz1HUj+YUZZw++Qt2L+f+t8XpNk?= =?iso-8859-1?Q?WDULbqX6PVUNfByZL5UVsRbddflLMcFe/tWoKV86ZvVuPkGEeMNP0z6Yrn?= =?iso-8859-1?Q?7fMZZLPYwHFnCVNqIt9YmxvIqo4Z09ylREtrW9p1OAMxkZ3+Ms4VQmyZj8?= =?iso-8859-1?Q?CyV6TU9Hy6HdEhqU64+uz0OTpdvUaEnlj/IlK/2kDk1VlZeI6XVObpnsh9?= =?iso-8859-1?Q?snluglIqdEIGN4QFQ4Gis/YqUHHq1EOK9xF1lymHYcYVqur7D1V4cND+Ku?= =?iso-8859-1?Q?K2NSpKTzaR/5XaTuYD6dX+ULcMTdm/RMlbJqOFAP7t3jzT5tVKDtBc80J1?= =?iso-8859-1?Q?YQc5TxAKVRsY9kwX7ANHBz9PZ93MXEwVGnLXE+zHIGzuXspozvZTPOa6EY?= =?iso-8859-1?Q?WP9ud3JWoHS2q1WDRM3Zc+FUgo4QzFMrdMPNhvBrdu6+3MS31nRNEv73op?= =?iso-8859-1?Q?HFKlUugI5aQRho7YqRC1+AfHj05gVEnXAW3PylkAG8VnsH4rZfB6cixspv?= =?iso-8859-1?Q?xqQCGxClo9LllbYYGILO3rz7sbKKTl4gNwp5zwJk3AjyhwPwJ/KhOOitS4?= =?iso-8859-1?Q?lxnsaaIwFDmEhTTxN7ENttmtjZjJaITquTE+D1nJBywrrfmx1zaTyTExhM?= =?iso-8859-1?Q?fKO7/pqJKc5QSDWO4c1YJK7hijVCHo5FWvMqu98qukHV4i50CZi0oJEbPr?= =?iso-8859-1?Q?qvqYPR1ZIUiqmFshQij4wZFfUHk40o3MrlPYLKu81UXA=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?S502qPGptCo2Mw9v70rS7DWlPVsVHnyMHLR0uVsA7k5wJrJSLfEuDqbi6t?= =?iso-8859-1?Q?N2AfzJc5VTP9ZdODP0u1a5KwlNYaqxJ8SXY26JEVCPWC3fckV8TcWkIsXh?= =?iso-8859-1?Q?jRpgyO2OMp3FxorXzs4d1+bKKKYFyMTyfzkStOUUczb1Po1dxnv7m2lSuG?= =?iso-8859-1?Q?93aLX7cp7HjpTVIaSdGUnfXmkTe0FcvvmAiMgYDtq4tH49VgGsDlldXwqK?= =?iso-8859-1?Q?Uk0Kgzyx2LvaX1rGqIWH1qwpTN6W3Wh9YrlbXXdkcqStNictBWCdGtfJQH?= =?iso-8859-1?Q?1loe8KPifZxOndQWPa4tzA77xcSRU4IeKlKPUPgWDs5noV/f+VFHtONsYm?= =?iso-8859-1?Q?vd3mre2ohOHaLPJqWVIFKjik8Xhm43OQBBc+kgZ6XTbEc0KtdZPtfhL3KV?= =?iso-8859-1?Q?NxG0PSXVq/sN/jaWHaYR4I6hHUsF47bdfAUA5eSPIFTwRU3N+08XOQDPe7?= =?iso-8859-1?Q?GuWr4SpnWhAQSXK9QksVciXURja969RRBSVFicxmVt2Nz4MG7K33SA3u0L?= =?iso-8859-1?Q?lZHzZ1eX0p4LC1y36gl+X3/hawSIOTVq9BOjV1m4/muFRUdDJWBRSQviyf?= =?iso-8859-1?Q?K+BCl/YV5AlgPfP5efpwAyWeInPHOpkz9o5NVY5nrLK0tJefb1ajqYWaRJ?= =?iso-8859-1?Q?9COMR6fHa4sOZIxRUZNNbVJlM2U/bC3qCb3+Tkxtqf9qImiBghSBPptnK/?= =?iso-8859-1?Q?vsnSJq3FZuMJhqF/s3ctL2FVUP/s/4HIbopwD37RQL27RATrt3u52ufGg1?= =?iso-8859-1?Q?q79uzTOcnvarUtEtdFZ0RUvsR8GL2+W8A07lqHntVRCFAx7+wFVKOeQD2m?= =?iso-8859-1?Q?7LNLKVXETW5Ab2Gdiup/4JYKX19DXxJVAcxC1OadcwOLNN6lA8Z+3UD8fU?= =?iso-8859-1?Q?0sGM5mgZE8az04AREPcJJlK1gGGsSwBnjl8bdStf0GsSgZnQLq2W8gmKUB?= =?iso-8859-1?Q?YWtmzzOgPMyym1idqWVMJuYe+75CWb1pH5sP1r81QmGeP2ZRGOOBCwU88A?= =?iso-8859-1?Q?q25v8bRzxeeGbVsgLBn/FgshrsCMUP3/n4RCBUI/V2SlmVB7cDN0TIQI48?= =?iso-8859-1?Q?wLzg6aNk/bJNZYptoun8d1B38z1r6IOeUhvyxr9Vex8f02mPaHgqpMKM6X?= =?iso-8859-1?Q?3gHIt6ieYFdCkWY7fJQw99VCmfkaHWBu59svvXa0/WSkx5hPRK54uL1x/7?= =?iso-8859-1?Q?PbV7i5LLOKYY0jJSVj2/nKOJOBtN30eY99Ia0A0HU/0pEbWkT3KKnnSNO0?= =?iso-8859-1?Q?gCTkdrbHtLuN4cWobd50VOU2pXbB2TICKugiCd5i9TUzAGsADviSkyLg1O?= =?iso-8859-1?Q?87TLWgWQDV1m/n36q4r5pBPe6WP8pgLW8gwc3tvzhKVn1FdnJFS/vjSEhl?= =?iso-8859-1?Q?O/3isKKe3DzI0UGXnRNoEcCrabnR/EPw++VNMyCW5u9UPDz1H9tLeIyAA1?= =?iso-8859-1?Q?4SjpXIcM7NP7u7VDbrFz5d0MPgF5fqntbEuJNzF0i/595fBHLgzG3whAC2?= =?iso-8859-1?Q?J3E1WhbJF/KmmDQRrnrlUUG5TQt8atqwlKVDxCONAZh6vuA2vc7Ifaz9eH?= =?iso-8859-1?Q?1JA2utF3YY6J89JFEt3ou7FMeL7JvhyYX1BIKItW76AAw51X5HNLQgWu2j?= =?iso-8859-1?Q?1wsEzkUwe813h9Wu3f7sFjCWfaTWC8ymCqgr+G/hl3V9VD/aet2Tu/TRMI?= =?iso-8859-1?Q?jGUeElkUIXP/IT00Ywo=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: c22e6002-2518-437d-ae78-08ddef88f1f8 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:20.9464 (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: P1giZiPDNqaxiGZFps3l2MW3v7hAFrw8D7hPCsVbf5ckYq1zdti14+F8Mw7BKraUMNjl7HnBo827ZzcLDNWSYk1BY1l7tX1PB+ZMMywoMWk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757413000972124100 Content-Type: text/plain; charset="utf-8" The gic_interrupt function is the main handler for processing IRQs. Currently, due to restrictive checks, it does not process interrupt numbers greater than 1019. This patch updates the condition to allow the handling of interrupts from the eSPI range. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall --- Changes in V8: - no changes Changes in V7: - no changes Changes in V6: - added acked-by from Julien Grall Changes in V5: - no changes Changes in V4: - fixed commit message - added reviewed-by from Volodymyr Babchuk Changes in V3: - no changes Changes in V2: - no changes --- xen/arch/arm/gic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index 9469c9d08c..260ee64cca 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -342,7 +342,7 @@ void gic_interrupt(struct cpu_user_regs *regs, int is_f= iq) /* Reading IRQ will ACK it */ irq =3D gic_hw_ops->read_irq(); =20 - if ( likely(irq >=3D GIC_SGI_STATIC_MAX && irq < 1020) ) + if ( likely(irq >=3D GIC_SGI_STATIC_MAX && irq < 1020) || is_espi(= irq) ) { isb(); do_IRQ(regs, irq, is_fiq); --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757413359; cv=pass; d=zohomail.com; s=zohoarc; b=G/QI8v1S5Naa6B+twyAu3z8D7QybwrLbeKDH0Lp6j2k7z5gu+OR0d6pOyqQ5j49Jk/v4Sczry7zzKuPUQwivP4vAkYEzwIDQuwb40NjuNQSfoYX3OMW9egN56j5DL2rTQCrfam8Z/DwNUlyOMby3sBZgZMrnwDmAb4+Euh57Jog= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757413359; 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=NK2ANacRUU7NJsl4Hbi5dxeY3QEVv3ULJVeqrFBFYdw=; b=MI0verfI9VJWfZMVdy4KNA7NGhaSHPhqGxoy5fX9Njzcrtw0WW8zKwzz5SndQWssxgIsO97v3OKbkqM3wmg8cSBjUtcewhGvLQzSahmuSjVfAPWjCmb+fnRvIQHaM6Y0OtjkRVi3IYOy748QZ/8OTfz5bEM3HnAi+xDn7oOz2jU= 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 1757413359019740.9103360888078; Tue, 9 Sep 2025 03:22:39 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116289.1462662 (Exim 4.92) (envelope-from ) id 1uvvUR-00021n-4F; Tue, 09 Sep 2025 10:22:19 +0000 Received: by outflank-mailman (output) from mailman id 1116289.1462662; Tue, 09 Sep 2025 10:22: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 1uvvUR-00021g-1F; Tue, 09 Sep 2025 10:22:19 +0000 Received: by outflank-mailman (input) for mailman id 1116289; Tue, 09 Sep 2025 10:22:17 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvI3-0001My-Ur for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:31 +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 12a0d1da-8d65-11f0-9d13-b5c5bf9af7f9; Tue, 09 Sep 2025 12:09:29 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09:23 +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.9094.021; Tue, 9 Sep 2025 10:09:23 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 12a0d1da-8d65-11f0-9d13-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yqTAwCKlpOGsE3qP2pCZMtVDz3kE/TVwI7M++Tx9pp8ep41CaYA5ik2LetQIs8cl9mhjHj9+o2y1JsZ/IN6O44230JN3aa6XUtkxGtgznKzFuWiQE+b/CzkVT7zHgC/yYUQ5XDUvtHxCAIKINN83oPC3DJpxN1/IXRqbzLZv4Q7peAJ1YvOzDWJd4xG08aehC/x8WNCJXcSFAKPxXY1i3wTaaBayFW6mkASJBQVFKO7KLolCUYgW41/QysGtR4aPWWw1IESt0gN4mIWdkhM4VaPF0Wlp4Yy1KhIFPAXv1hk4X2Nodv9r/lmcsbh1nZYSDDE7eHBmy4JHnLget06J3g== 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=NK2ANacRUU7NJsl4Hbi5dxeY3QEVv3ULJVeqrFBFYdw=; b=l4/PK4tdGEbLumBta3OMCSyAh3Omx3Ykx+Kd7kjFHGzKT6oEmhGC0gZABPXCUPBzTYSTtxgfikJft5pQk8lkVNi+/qmhltUhklC3QDcWWmimMzwAXlN2BTiQAVhHCPyViInDBrYDDaO5XpVt07x/iSiM3fYYq5+ngRgEH4EPDHyPAWKHhr8zGv44K98nkKogqRHaeU9zQzUh49MDzg2E/SX0vl1YykA0djcNDtQ4t6hR7vqGsweIe3iNFDsUOoBDGKhYQduvCIn1sIddjSi61UVPwy8iEUYb5QEOIx0RwTccu4xicZVmJBXGSwfkTDnrCq69jJn9OFpWsShPq6xFZQ== 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=NK2ANacRUU7NJsl4Hbi5dxeY3QEVv3ULJVeqrFBFYdw=; b=ZO9i2zhMqC5GMNzQ8y8EJaLuDevqTIpLcURYsZipVEq/fTFvQ6OxAir/hznQnLIrFHcmAiv+OK22GAP1hyzPhKMtRhPiWTaYoW8qT0zRr1BmLR91SNHLwChn+wVpTe7exrwOaRGsXnDf1ZxLIR5/KMIi5LfUkDtn+5FEVfPx2e7enD05V96Mz8JF5ZXw4ut7FdQGwgz1i3eQCLm76eVj7IVentgEkCV3x94ia1XGmobOdZxVNHOyP9dmMBJbiBk4glVG3IDEg9pjCCrg8ayrqkU9cdSuJzR93n0UTX1SbQJIYWsKr+1tb6TeWNKotpXNRrcP9RJY5Ay14zh4+DlwLw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Julien Grall Subject: [PATCH v8 07/12] xen/arm: gicv3: modify ICH_LR_PHYSICAL_MASK to allow eSPI processing Thread-Topic: [PATCH v8 07/12] xen/arm: gicv3: modify ICH_LR_PHYSICAL_MASK to allow eSPI processing Thread-Index: AQHcIXHRRi0flx0W9EqWXyy7VrmvOw== Date: Tue, 9 Sep 2025 10:09:23 +0000 Message-ID: <9479e88988b0c0c2e88d8ba8d2eb210a2cf68c8f.1757412099.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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: eac54e05-469f-46c7-0760-08ddef88f393 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?EuSiUmwqx5vH475IXor8An+8zkkWHPKD9qpJYQsh/bAyrfw8tuR8E2Ripe?= =?iso-8859-1?Q?CBILDX7E4rBIDrkZgkoxEZjg2gO3XnHYXCkB8QmZzKn1UbuIyJbOIluifx?= =?iso-8859-1?Q?7EE5MIFKC8d8TR2gu32BblXR965JuMKKLzP4huxTLKJyQoBeBgpoT7LiBE?= =?iso-8859-1?Q?LQ0M64t9N+iGhvwKA9QdCOr8z+r5mO0bNY684ajDupQdQgOd4gXJ74zclp?= =?iso-8859-1?Q?wtVP+Ee97QqLLndHbBGolonX8hrWoSf1KkoZ+ljERQ8fxR1RUFbKBM7Kha?= =?iso-8859-1?Q?1Betf0WPfRugt/7Rc4BGR73fTIfkjCEAwjl3xOmToqL4ac6Aj/lSciC1Kk?= =?iso-8859-1?Q?5Z6NlZqy0cz+In/1x3q1NWNm+gC1Zw3aDZGn5rRrR/UDJ7dDkyDxv/r8OG?= =?iso-8859-1?Q?sK0+MHtK9rYTxSpFSy5KiWkcXavQ5bxEVmKuqK8c/2JUJdovZIq81Zoe3M?= =?iso-8859-1?Q?YDY1QAlOr+7t5WWrTZB6gWT5NIjp7SB98Kfm9i36XrHWt87xmDI3taWFHv?= =?iso-8859-1?Q?v6FnBR4x8lhlRbkTZe16UcbZyO3NeFRqdDjTPZqhpwzEG0gi7w5OSakQjy?= =?iso-8859-1?Q?hr8Gf3Vqeh7W85BKPvichFymETfAxOXZQQVL/zbNZxMhkJ18XvELJexe5F?= =?iso-8859-1?Q?VfU1Kxq/XcUpGh9j3l0Va1JvjIHNjubRVIqa0dDSvB8FYKgf/+a5nXYop/?= =?iso-8859-1?Q?tgBPVk0qY88zkUV4utBZBhQBNO+w3mqNnQILtGClFRvXudQ9GGA26yXDTZ?= =?iso-8859-1?Q?c8oBGyaLrVU3z4jZVuQAHtsBpZg/OVq5HjbR5UFmcqd64chBum5a5COy4L?= =?iso-8859-1?Q?L03IxEGj7ZQ/PKwuU9r3ubNP9xF5hZjY04/zUd6CMz11Dc71pCLnMkSYIS?= =?iso-8859-1?Q?lsJ9BDYo83ufeLI0IwdIqZCF8LFPkOWQI0eHZqIyL/iKd+KL3jsiH/vqqo?= =?iso-8859-1?Q?uJJXlGZCBI0kZjN5boBA32TVOzwflyyeUktH6f9DCuH1FbuaBJ2cD87zXy?= =?iso-8859-1?Q?MKC0VaX/ebzxb7/hPCsq+HTYiwzr57SO6IP+1vT3fStI9T+xu5DCtE1l35?= =?iso-8859-1?Q?tZpuldFTvLTM9JZz+7mVHc4QBd1JlBkNE6t0jMSu/pOhu2Rfb8vAl+e3nt?= =?iso-8859-1?Q?s0c3Lkk/UKdiDuwpk8F+soztLTb/54SIUmURpeUFrG9Xvxz+ZQHvRodsTl?= =?iso-8859-1?Q?exJ5N5CqeXd6XJt9FYZDdJd8Pb0niGzc1zWBsVw+td8ZtLokOz2L6nlgqE?= =?iso-8859-1?Q?xtgx35sKXEjuPLetWcng6mPu0BStbz6zMTL39TidkQLZjbrLoCSwM4c2D5?= =?iso-8859-1?Q?T4/RuDFB8iRWtfDFNz2/1UhpBL8r0BegzC1lOpjrgmzD3Emafq7vyx4dyX?= =?iso-8859-1?Q?b2vmh/3r3MhSVspGg0VcKkkehXWN7xwfiZHgk+4d3WSfNjOTw4vv21n9qk?= =?iso-8859-1?Q?XVQKF7aCokPlkZ85BGevMxD7LhZAjPmff4ih6DvTcQvkQX6fpgeRz8+Cd3?= =?iso-8859-1?Q?q2sX8TMm8yVHPYyvOEGznFcgGHtV902nzHzXVUTboB1w=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?hVPE8nnBEJ5ZNeENMg6/bZ8zCQl3FeXlnFnl9bOUHSiUOU88vLDac0QYcY?= =?iso-8859-1?Q?oSrgv8sn9/rDgwWGnv4HwePzvMKN9Tq3gcOvjcls704ZFTacPXJAWjtbHn?= =?iso-8859-1?Q?Sf/dB2Ehn258/QRN6qpuAz2dfL6CxwXx+YSzWvtKWFKcHnQA8GTccYkGZg?= =?iso-8859-1?Q?R3l7aYlvbKUvf6vsz4j3aypZuifKWNVlJh87de01TJJgIchnQL7+VO735a?= =?iso-8859-1?Q?VAPOsviM/yIa7sOLSC/bSqlyfUv1fMPdHvr2n/o4zcXvBg4hMiJgxnkIKM?= =?iso-8859-1?Q?ywNe9AfTPfdR0qxkyLxgkInCFkMWmJ71iTjkDy28WnO8OcbLthggYkwMNb?= =?iso-8859-1?Q?hDZP1btVvrRC0+KIt+03gXe4WoC/MtE3cETHLkfhirQ7c4Dyza3cn1RcKr?= =?iso-8859-1?Q?5UO1eS2DCTRZXK1WSI6Ku6/QX3SEO0UNkA9okXxxrwnmtpOn5EEmiTPICw?= =?iso-8859-1?Q?wh/oTqGe5X/NKe++04HtrYcknil6JLKG6Oe5cdZOjyYdZzRlJQxU90O6Po?= =?iso-8859-1?Q?vSqBcNXJ4c4ozyGsKhU9RKO6Km7xpxVYSZUzKcV5UG6xrxVusGIxAwTSv5?= =?iso-8859-1?Q?dT1yAcOP26RvqsK1tHbNj9Hr4rrBSnxfTncs6Ck4oMNZl6pLEh+y35VfJv?= =?iso-8859-1?Q?bCMcu3bq690yxpStfjirBw9nfmDpg7LRmTAKCVz4jDbdVjHbGv2C46cNFU?= =?iso-8859-1?Q?ID/cMcbm0Cez1TEeHYDAhrlhZ4ZpyEUqhgnnf3pax8/aQCJ2G2oIjKWEti?= =?iso-8859-1?Q?EpV8FkzbYExBBGgtkK6+7qNguB2aB2vXQ6ZJLB+Jt/nfVHZaFAp0iYeuYK?= =?iso-8859-1?Q?N9FQxllql50WaN7iHZ6a402hmYmGgXEnhWulG8riInJ7EbTbpSXsQqgMzg?= =?iso-8859-1?Q?qVLc9AbtOAyQzQLMjVUwyFTsAabty75wCdY29LZTVJHT6fCxINGOtF+Fr5?= =?iso-8859-1?Q?LWl2xpYlj+hWzfply1qD6Sud1TcRFaIbrRdgIK3C7nnyUWNH8Rs3fwsNVK?= =?iso-8859-1?Q?iaogTG8bkIcOcrvEh4NaXGQSZbPM8DdLtIkzasA0gK7nzXqOj5Bb0RD+uK?= =?iso-8859-1?Q?jV8ScBT8NZ2QDinAH35D1tcQoaLChUXyBgwSbOtUPBgFkt9csA/LNYZsQj?= =?iso-8859-1?Q?Esg5MxcRaQkjZIPTnWuBazpU0VmCOxpWVeLAW/8Nqaw+01GDm39wx5Pius?= =?iso-8859-1?Q?4u+Wa8qotdbCYDZd/1U/CCJ9oiep4/GhqFWqlaaslfI2kp2yyRfDVJXZHt?= =?iso-8859-1?Q?C3+7rWEQw2m9cD/UQnVOJz/uvBM8KXKANQGvd0G9Q3oajsgAVOb3FT9MPU?= =?iso-8859-1?Q?5MkJ9lv3ZfvrrP5L79AnLQ/99gWbMc3XFWqsZ3IdNhc3UAXS8+QySDCDiz?= =?iso-8859-1?Q?2f33MDqwxP+/jZTqik/04l7/3tIxNKMMia+Q1spx+JYI6VVH/5/R+JHVbE?= =?iso-8859-1?Q?KQVYidTRvAkuKG46l9CVbeWC5VYiWSvBZCPcCG0wNk9/ymGpn571zAbUZB?= =?iso-8859-1?Q?snwt5IP+o96oPJxymBOlZPQNf0wTFihDvnYMm7TDJz/85q+ei6d/HUEwBC?= =?iso-8859-1?Q?LxMO8y3wdZu5H3XBiXxQ0V3fHY4hahYXKpDkMzAn5A2apB4Cf8NfE5HLX2?= =?iso-8859-1?Q?Sc4K7zX8qJCY9i5ANA5SNxb0WrWTXSZoSQZQ4uRkvVswtCVfqBHeALQoqY?= =?iso-8859-1?Q?HL72Iyamkdse7fQfg+k=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: eac54e05-469f-46c7-0760-08ddef88f393 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:23.6993 (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: S3ZFeX72Y24KAwVkcq8cGk6LwM5/oEJJ8FgzYax1ZOUBtuCPVCGIXCdc6Ka3IdEgcrVXkJDn/iDBSWFR3ilsvTVLqg/z/XLYBmyv8FqSnPs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757413360064116600 Content-Type: text/plain; charset="utf-8" To properly deactivate physical eSPI routed to a domain 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 0x1FFF. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall --- Changes in V8: - added acked-by from Julien Grall Changes in V7: - added reviewed-by from Volodymyr Babchuk Changes in V6: - updated mask to 0x1fff to avoid confusion - updated commit message - removed reviewed-by as new changes requires additional confirmation from reviewers Changes in V5: - no changes Changes in V4: - added reviewed-by from Volodymyr Babchuk Changes in V3: - no changes Changes in V2: - remove unnecessary CONFIG_GICV3_ESPI ifdef guard --- xen/arch/arm/include/asm/gic_v3_defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/= asm/gic_v3_defs.h index 3370b4cd52..c373b94d19 100644 --- a/xen/arch/arm/include/asm/gic_v3_defs.h +++ b/xen/arch/arm/include/asm/gic_v3_defs.h @@ -211,7 +211,7 @@ #define ICH_LR_VIRTUAL_SHIFT 0 #define ICH_LR_CPUID_MASK 0x7 #define ICH_LR_CPUID_SHIFT 10 -#define ICH_LR_PHYSICAL_MASK 0x3ff +#define ICH_LR_PHYSICAL_MASK 0x1fff #define ICH_LR_PHYSICAL_SHIFT 32 #define ICH_LR_STATE_MASK 0x3 #define ICH_LR_STATE_SHIFT 62 --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757413330; cv=pass; d=zohomail.com; s=zohoarc; b=XI3toJAbt1L6Rn51vo2qZP4/KMGmXCLZ2+wocxkheg+uOppYl6pZTdSSaxOoTYVgAgOObmSgOfqEAW/zoNwNCxXtSxMwvk+b2e6JUXrNZ5s0/3InvopTCOA2cAoBTXTdgeSiznx2gRxyO2QSdJuCUGVWS3Ft0hB3XJIMDnDoj5A= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757413330; 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=+KSmiu/S9+GDUlRSRi8m0qwuFH79DCF3EJZkKQ62VV4=; b=aHcLYEW0BD0Gv8Y3Jsj9LQQ3R5Hyso9s45kpgNDQfvXWWWRwJlpdJ+KmnlRziAbzGFBisZsmAreK1xJuHXT3Q8eYpgWBLh+jZYGjEDXlx6NSjOcFBwwc+qnHsg80DEtEHdL9y3HoZQ/wdIlF8P3mHWYZLkY/9ZjE8vbm/9ThCDg= 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 1757413330311362.1529014042934; Tue, 9 Sep 2025 03:22:10 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116261.1462652 (Exim 4.92) (envelope-from ) id 1uvvTj-000194-M1; Tue, 09 Sep 2025 10:21:35 +0000 Received: by outflank-mailman (output) from mailman id 1116261.1462652; Tue, 09 Sep 2025 10:21:35 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvTj-00018w-IE; Tue, 09 Sep 2025 10:21:35 +0000 Received: by outflank-mailman (input) for mailman id 1116261; Tue, 09 Sep 2025 10:21: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 1uvvI9-0001My-W4 for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:38 +0000 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazlp170100001.outbound.protection.outlook.com [2a01:111:f403:c201::1]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 15f3f546-8d65-11f0-9d13-b5c5bf9af7f9; Tue, 09 Sep 2025 12:09:35 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09: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.9094.021; Tue, 9 Sep 2025 10:09: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: 15f3f546-8d65-11f0-9d13-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rXvHfiZ1y8AHdP2QKxcwOv/UDY7xh/Z7oCeafGF7Y+bQb9R9NddZxXDvZfDbsJg01xcOY3eaz1s5HM4J2OpA4Fp/8jjkdKQEMCO83U/Z6P4uWX5HsqePOrlPKlihPVnfWXoh41MOhN3KfkVnQlD9GF15TLAzztyvyUGdDYhpbnH9oJT2gCmKemvcElKMjtnUmNvs45gwUNIHVuGkcGbbU6cJpotdat3gRTKtXprUJamrReimeEN/MjN35wJxsJ+H+FbH1jrqr7L2JSsXiHl4ZJLhvEFAsLia4xUIJ+Ed6wSu95kbquDdbGAuWoMGox8SooJBUJFbrp0sVCngDHyUDA== 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=+KSmiu/S9+GDUlRSRi8m0qwuFH79DCF3EJZkKQ62VV4=; b=iVp+LzxrazhjGLKSxpM//vomGhWp2wrMW024B399+24JaECsu9c4oqf6FOp7uUMcjs+vO2yGqsstVl5YxSbpINVWNFvpOZIBJQzRyQKYiQy0swCot8h/Vb2C5wfrKajbp/w2AeG5GXShGvfnpm/ryW41j8E2wfp1rnfqJjBvC9sFcljVeN1CJRRQHD1VGNIhYUK/lYVFQyR13mWVciJPShga/YCqOb5krb+6p5Y0OuleD7nuLw/xgAuWBpRKmdhanIExyyMG/cmqXxfFxtgXmrCAZK3vWYpfukp67c4CSiwUIqmKkjZGVqxTTsVsOs4SuppCBIu300pvVhbbPfA+Pg== 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=+KSmiu/S9+GDUlRSRi8m0qwuFH79DCF3EJZkKQ62VV4=; b=uYeIQjhpx1PzEEMkkzPDbYbTqanfY6JfIV5hM5UEoXrSmUP8QEok/GJj2TU5YPfo2H3CsAfVtuY2tUpzYKf5jaV1ZMc7frnqjT7x9MZlar5wf3AgZH2W+bem0Mf/EIQJlz2o60acwxaNDh5MlBXjLmmiX4XVdqUTIVKrNwcWFrWgIhxJWIVY9SCEMAUZDFyvwCBVftJBSFYBTI7ZfkQj6IjwgmoCa6y0NeFOJaMB/M5LPuKqMODS9rQcuhhe83u2i47lyTVNapnaac2xzIlkuP/sq3+vHepuY+zBesHLr8tWk36GkajAT9UL5ZwTpSbqnK0o7MAhelXXcbZ+NFCpeA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Oleksandr Tyshchenko , Volodymyr Babchuk , Julien Grall Subject: [PATCH v8 08/12] xen/arm: vgic: add resource management for extended SPIs Thread-Topic: [PATCH v8 08/12] xen/arm: vgic: add resource management for extended SPIs Thread-Index: AQHcIXHSFZfGO31880KRZV6MierZkg== Date: Tue, 9 Sep 2025 10:09:26 +0000 Message-ID: <368bb1e6842beac65151f02ee6491fcf8a819c02.1757412099.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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: ffbb3c91-80b4-43f6-5743-08ddef88f57c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?Xt6Y00o6LinjQCVbxuyxrjNcjcaB92fKooUxvEW+Jjx2WSoL8v/HMlmHlh?= =?iso-8859-1?Q?RVrq1xpyZ+EPdUgNGkAGe7dB4sqGJDijwUr5YhnDHxcyedR+aYvnrSMiZ0?= =?iso-8859-1?Q?Prs1tX3cI2/aizjEXE6NPgGk/vtEVsGDPL88CYWrBVUMVh1yrTEKeZHZes?= =?iso-8859-1?Q?nQdAkWzjx7tNLGyWK0iORwAQtfM5ZcDTL9dBamtNGvFVNueltSYBqxUsPm?= =?iso-8859-1?Q?KZ81R6A+r56WNBKCXat0wkAyERnvMm9QNQTSoU8QH9t3YdtXJUq7KynHDA?= =?iso-8859-1?Q?ZPdtblhLAonTIA8pIZ90CiqkU/AATUwp5chlcnCXJdyalJZpDzGh+rcm13?= =?iso-8859-1?Q?e71QFStCcwYToxsh4NrsD3E/xccCHwQeQw3qe8vf74PQnLc8Bd/Kpn2ypE?= =?iso-8859-1?Q?v2+Y0NeODWRfL/NCXbGLXD1WJ42wCiz9ZDel+K6g+RJs7aw2SmVCfbONA5?= =?iso-8859-1?Q?67WDRL3ukAuQUHsuKHp1sIPSnuAak+rwGtuIkCNuVcmYAUl6RZr3cXykDb?= =?iso-8859-1?Q?o5YW7pPBSy54njjVugL4bVBaobz+4R1FYQA0f+13olc0Hb2xSmwicwqtNR?= =?iso-8859-1?Q?5t61Y5jWsK3R8ST2kOb7BuHIhdN/fdOJ+qwCTvjCr/cTHMS8IzFAmELQNa?= =?iso-8859-1?Q?f/OVFJvP16OJP1bavCS5e2JwRF2FbgCRaAZuFEDflaynzvMauQWjYo8BxH?= =?iso-8859-1?Q?XSAAyppXKXP7RK6l4ZoZYuPTJt5OkthYF9y+oodHLeeag1nbh4KVP99Uww?= =?iso-8859-1?Q?ViihQ7cGIjQLoICTtgBJrQSdxhyLB3tDt8rupByzJRrFDe4tR2u0vLltin?= =?iso-8859-1?Q?2z0Au2Pry6HmvGJoMXvXYbIoqwhWLrtmu+rhTCA+ThkKfKXKXDvsTzOYSJ?= =?iso-8859-1?Q?PLJJhs4CrWORGtp8MuSxNsY1xWuaLD+3IkASMRjem2ITUIMPCHJGnn23cf?= =?iso-8859-1?Q?klVzkkGVu7gCAWLriZ6NoxuFqDmV8BU6yVarrTBN4gOr797efqMmyErlIL?= =?iso-8859-1?Q?9rmshxuW17phYnDmeLdFJXz51flD9m31lYggBrZVNGvsknf6O0tqM6dFTR?= =?iso-8859-1?Q?2bBeKzPSVh4mGUlFpJnbEmClcHRVUbox8S/5Jw6IJqNV+f0UfxhatEqI/0?= =?iso-8859-1?Q?mXHSbCRy4vlVg0KulxZn+F/iXxArab3KsepF29g4QFlsOzcFYZ646ZAJZS?= =?iso-8859-1?Q?iBJGxuLkpy/+Im2JzGRouNJB5ToKJt4MJqL7kr5wyiQrMIDSWq2zY6fYeY?= =?iso-8859-1?Q?xz2iQ2W2TZTP9xVKPJGnJlrhIF2kMy9Z7etvPoGrWeEoBLz+JG8DjMUWC3?= =?iso-8859-1?Q?oFASgTtQsDB2L/VOAvBXveL2CmP7qtstmIMIQa7io6zUO0C8FLtFYQkZio?= =?iso-8859-1?Q?JNEi5rD1m6zDIHvqgr2mRDZrEQcJ7FVcUqZ1lY0A6LDh/m6WEnugnRrj3Y?= =?iso-8859-1?Q?On+hMdJWMkp2tJnRI60Fl8TTTWaCFxtRDWXz+doXLAFgjkyG/3ZhNDYUcp?= =?iso-8859-1?Q?hPAm/sDYbS1f8hcMrH3uuIxSQ4Pr7ZAT+WE31clS+Jxw=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?I3ixdCl1N6yGUHcY3cbnG0EL9xhESY4HcY9fqkBgLFdhDGMGD3jWm50TKP?= =?iso-8859-1?Q?ZoSKg6lfMZzdsicvwbUjx1ScWF6tv9CgGMK4YikbmUu958gx1IDi3L0DRi?= =?iso-8859-1?Q?PfzKKcKQx3JUeyKEdrxRR9dGwX2FbtCm8S2WVMvi5KbT6TiocHtY3BMbl0?= =?iso-8859-1?Q?893ZSr1ftJm4E8e0isi/B3ymi0oWMd83mqu6yMmv6FJFtpx8wpPuKlUcIO?= =?iso-8859-1?Q?JsFp49EOFQ7PVH6dYXOpt8p72flFtCcs6L9Lazq4SfmWWHeBMM936Oh1iV?= =?iso-8859-1?Q?39+Uq0M+4XDkMl/zoOErAL0SxXH0D2sMF0VDS+zvjqCSdeQyC8gnZ7RWRP?= =?iso-8859-1?Q?OeyWd5WeKl2nYk8JbjkidSxnrjm3/cqGdASJfnqBOspyQ3y2rB7i3p/ydT?= =?iso-8859-1?Q?cjSPVs5FKJ8Xxh83Nvu5Y2AlCAbJRR4yBkCMnuOAfvlW4LZo4DuMmedrIO?= =?iso-8859-1?Q?0c/HPwffWWdr8ezJSsilx1rTvjwLQmhLhx5dv2kW8FGCvUrzyp5S+jQ63I?= =?iso-8859-1?Q?anpNHUkmE8Dk1yifr6p4Psfy1Bqcz+JHHOL3SrAAmMTnsCYVJ1Sk3e4sgP?= =?iso-8859-1?Q?CmhU+rcamINIhr27XipqlVlTLBMcf7wNuTcvO4Z+A3cJ+ZPGc3ho6DLZs2?= =?iso-8859-1?Q?j2Kho8WO7NP+mlXKFnR1nv8LnGcw2haiBcpnoX3N/sZd43t4ME9hbydgTN?= =?iso-8859-1?Q?n34X22qAgeHJhg6keJOLtJiSXuHG6KWZmlup26YzuWHU+a6gARm9i/0tXH?= =?iso-8859-1?Q?XXZJHParMGr2o2kIgMBle6xKPgDXemTiB24RG1mYLrFgy/kepVqEMRxd+K?= =?iso-8859-1?Q?gJ48bIHAWoXRTABWQ1S9UqYC83gzaZVSOPidPLgBUxIzvd4XuPflGpbVbI?= =?iso-8859-1?Q?gFdAMCZAduxUKza893KMAu9fnBaB53w9tFE20sdbhJ4JO3Y5VUn0vTg81/?= =?iso-8859-1?Q?nr222S0eqK/s+0BGdYbiTf/95woPhdWWFSIwgVeb83AMXRrJ4NxFyNmEy1?= =?iso-8859-1?Q?LRl8VQwxkAI+2Lx+l2xrHa8Cqay6fTlea9oaO62O6fLdzX+VjzlCcS1xFj?= =?iso-8859-1?Q?jp1SSgaOpZI9eH3UmHVnoGY8KPafMGSoLoKdA3Odts4M6CJOii1lsbT5uQ?= =?iso-8859-1?Q?ng+5YyVsiRhUOSmWkVwN7v41VtidHeei2ZOoKqiA8M/0VJ508+BBDkyKJw?= =?iso-8859-1?Q?cBSm7kmSGcQ8obXuRoLmqRuv+r5t6QNe6me+/wOOyWyxlsdbTf+CosUSX2?= =?iso-8859-1?Q?+ZiRcgsHCOuYRDpqRt1vzZNOpQidTTc9USEsyROGEPeyKDP4gDyif0sUcc?= =?iso-8859-1?Q?A1tXp9WR+hoU9qrJzx/jEZC7a/tBy0SmrTVxmWRSwqRI/o9vukQZ8M8oks?= =?iso-8859-1?Q?nvEBvDuBETnbwXs49HGtKOs5MSWDVe1BrYpn9C82LKQm45gsCj6VzpiOH/?= =?iso-8859-1?Q?1nZNIByy4hSfdpV8ZCpRy5UZiPfMTPqKacTETLeh5Wv6u5vH75kXvT/nyU?= =?iso-8859-1?Q?Dahais/1r5hrFXlI6DU70lvMgtegBVAlBZ8L2FxLZaCG8X1OebxtkhJmAu?= =?iso-8859-1?Q?4krwNUauMRdcOR6ixT9YdlT/bxyIr3Ku3xDSJTSbyCfIhFYdxX6Ypx57Jw?= =?iso-8859-1?Q?fCCMXjiWu0AWbuLIYr4P/KrdIhc95D6kFQIALgcEbJB10gQ8cmmjgfYm8Q?= =?iso-8859-1?Q?IysfpJ08WYnOzmZ1ZXU=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: ffbb3c91-80b4-43f6-5743-08ddef88f57c X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:26.8772 (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: Bq7w+7OzcTpK5V2kWHaKb05Ta2mbJBCHHprkPuE8K+TmnSony7l+I+At3S9ges+JfdRD2QdDhmc3Zg2/aj34+r8b+tv3PjMZG6ShgE2vUBo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757413332076116601 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 Reviewed-by: Oleksandr Tyshchenko Reviewed-by: Volodymyr Babchuk Acked-by: Julien Grall --- Changes in V8: - minor: add variables in vgic_reserve_virq() and spi_to_pending() to avoid reading from objects that are possibly affected by order of evaluation (fixing 2 cautions of MC3A2.R13.2) - added reviewed-by from Volodymyr Babchuk - added acked-by from Julien Grall Changes in V7: - minor: changed hardcoded value of 32 to NR_LOCAL_IRQS - minor: used local variable idx in spi_to_pending() and vgic_reserve_virq() - minor: added a comment for allocated_irqs and pending_irqs with index mappings - added reviewed-by from Oleksandr Tyshchenko Changes for V6: - introduced a new function for index to virq conversion, idx_to_virq. This allows the removal of eSPI-specific functions and enables the reuse of existing code for regular SPIs - fixed the return value of vgic_allocate_virq in the case of eSPI - updated the error message in route_irq_to_guest(). To simplify it and avoid overcomplicating with INTID ranges, propose removing the information about the max number of IRQs - fixed eSPI rank initialization to avoid using EXT_RANK_IDX2NUM for converting the eSPI rank to the extended range - updated the recalculation logic to avoid the nr_spis > 1020 - NR_LOCAL_IRQS check when nr_spis is reassigned in the case of eSPI - fixed formatting issues for macros - minor change: changed the macros ESPI_INTID2IDX and ESPI_IDX2INTID into appropriate inline functions introduced in the previous patch - minor change: changed int to unsigned int for nr_espis Changes in V5: - removed the has_espi field because it can be determined by checking whether domain->arch.vgic.nr_espis is zero or not - since vgic_ext_rank_offset is not used in this patch, it has been moved to the appropriate patch in the patch series, which implements vgic eSPI registers emulation and requires this function - removed ifdefs for eSPI-specific macros to reduce the number of ifdefs and code duplication in further changes - fixed minor nit: used %pd for printing domain with its ID Changes in V4: - added has_espi field to simplify determining whether a domain is able to operate with eSPI - fixed formatting issues and misspellings Changes in V3: - fixed formatting for lines with more than 80 symbols - introduced helper functions to be able to use stubs in case of CONFIG_GICV3_ESPI disabled, and as a result, reduce the number of #ifdefs - fixed checks for nr_spis in domain_vgic_init - updated comment about nr_spis adjustments with dom0less mention - moved comment with additional explanations before checks - used unsigned int for indexes since they cannot be negative - removed unnecessary parentheses - move vgic_ext_rank_offset to the below ifdef guard, to reduce the number of ifdefs Changes in V2: - change is_espi_rank to is_valid_espi_rank to verify whether the array element ext_shared_irqs exists. The previous version, is_espi_rank, only checked if the rank index was less than the maximum possible eSPI rank index, but this could potentially result in accessing a non-existing array element. To address this, is_valid_espi_rank was introduced, which ensures that the required eSPI rank exists - move gic_number_espis to xen/arm: gicv3: implement handling of GICv3.1 eSPI - update vgic_is_valid_irq checks to allow operating with eSPIs - remove redundant newline in vgic_allocate_virq --- xen/arch/arm/include/asm/vgic.h | 26 ++++- xen/arch/arm/irq.c | 3 +- xen/arch/arm/vgic.c | 190 ++++++++++++++++++++++++++++++-- 3 files changed, 203 insertions(+), 16 deletions(-) diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 3e7cbbb196..caffea092b 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -144,11 +144,25 @@ struct vgic_dist { spinlock_t lock; uint32_t ctlr; int nr_spis; /* Number of SPIs */ - unsigned long *allocated_irqs; /* bitmap of IRQs allocated */ + /* + * Bitmap of allocated IRQs with the following index mapping: + * Local IRQs [0..31] + * Regular SPIs [32..nr_spis + 31] + * Optional, if supported: + * Extended SPIs [nr_spis + 32..nr_spis + nr_espis + 31] + */ + unsigned long *allocated_irqs; struct vgic_irq_rank *shared_irqs; +#ifdef CONFIG_GICV3_ESPI + struct vgic_irq_rank *ext_shared_irqs; + unsigned int nr_espis; /* Number of extended SPIs */ +#endif /* * SPIs are domain global, SGIs and PPIs are per-VCPU and stored in - * struct arch_vcpu. + * struct arch_vcpu. The index mapping is as follows: + * Regular SPIs [0..nr_spis - 1] + * Optional, if supported: + * eSPIs [nr_spis..nr_spis + nr_espis - 1] */ struct pending_irq *pending_irqs; /* Base address for guest GIC */ @@ -243,6 +257,14 @@ struct vgic_ops { /* Number of ranks of interrupt registers for a domain */ #define DOMAIN_NR_RANKS(d) (((d)->arch.vgic.nr_spis+31)/32) =20 +#ifdef CONFIG_GICV3_ESPI +#define DOMAIN_NR_EXT_RANKS(d) (((d)->arch.vgic.nr_espis + 31) / 32) +#endif +#define EXT_RANK_MIN (ESPI_BASE_INTID / 32) +#define EXT_RANK_MAX ((ESPI_MAX_INTID + 31) / 32) +#define EXT_RANK_NUM2IDX(num) ((num) - EXT_RANK_MIN) +#define EXT_RANK_IDX2NUM(idx) ((idx) + EXT_RANK_MIN) + #define vgic_lock(v) spin_lock_irq(&(v)->domain->arch.vgic.lock) #define vgic_unlock(v) spin_unlock_irq(&(v)->domain->arch.vgic.lock) =20 diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index 80befc2913..c3d4d63d88 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -487,8 +487,7 @@ int route_irq_to_guest(struct domain *d, unsigned int v= irq, if ( !vgic_is_valid_line(d, virq) ) { printk(XENLOG_G_ERR - "the vIRQ number %u is too high for domain %u (max =3D %u)\= n", - irq, d->domain_id, vgic_num_irqs(d)); + "invalid vIRQ number %u for domain %pd\n", irq, d); return -EINVAL; } =20 diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index 2bbf4d99aa..eb22de6aa6 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -25,11 +25,61 @@ #include =20 =20 +static inline unsigned int idx_to_virq(struct domain *d, unsigned int idx) +{ + if ( idx >=3D vgic_num_irqs(d) ) + return espi_idx_to_intid(idx - vgic_num_irqs(d)); + + return idx; +} + bool vgic_is_valid_line(struct domain *d, unsigned int virq) { +#ifdef CONFIG_GICV3_ESPI + if ( virq >=3D ESPI_BASE_INTID && + virq < espi_idx_to_intid(d->arch.vgic.nr_espis) ) + return true; +#endif + return virq < vgic_num_irqs(d); } =20 +#ifdef CONFIG_GICV3_ESPI +/* + * Since eSPI indexes start from 4096 and numbers from 1024 to + * 4095 are forbidden, we need to check both lower and upper + * limits for ranks. + */ +static inline bool is_valid_espi_rank(struct domain *d, unsigned int rank) +{ + return rank >=3D EXT_RANK_MIN && + EXT_RANK_NUM2IDX(rank) < DOMAIN_NR_EXT_RANKS(d); +} + +static inline struct vgic_irq_rank *vgic_get_espi_rank(struct vcpu *v, + unsigned int rank) +{ + return &v->domain->arch.vgic.ext_shared_irqs[EXT_RANK_NUM2IDX(rank)]; +} + +#else +static inline bool is_valid_espi_rank(struct domain *d, unsigned int rank) +{ + return false; +} + +/* + * This function is stub and will not be called if CONFIG_GICV3_ESPI=3Dn, + * because in this case, is_valid_espi_rank will always return false. + */ +static inline struct vgic_irq_rank *vgic_get_espi_rank(struct vcpu *v, + unsigned int rank) +{ + ASSERT_UNREACHABLE(); + return NULL; +} +#endif + static inline struct vgic_irq_rank *vgic_get_rank(struct vcpu *v, unsigned int rank) { @@ -37,6 +87,8 @@ static inline struct vgic_irq_rank *vgic_get_rank(struct = vcpu *v, return v->arch.vgic.private_irqs; else if ( rank <=3D DOMAIN_NR_RANKS(v->domain) ) return &v->domain->arch.vgic.shared_irqs[rank - 1]; + else if ( is_valid_espi_rank(v->domain, rank) ) + return vgic_get_espi_rank(v, rank); else return NULL; } @@ -117,6 +169,54 @@ int domain_vgic_register(struct domain *d, unsigned in= t *mmio_count) return 0; } =20 +#ifdef CONFIG_GICV3_ESPI +static unsigned int vgic_num_spi_lines(struct domain *d) +{ + return d->arch.vgic.nr_spis + d->arch.vgic.nr_espis; +} + +static int init_vgic_espi(struct domain *d) +{ + unsigned int i, idx; + + if ( d->arch.vgic.nr_espis =3D=3D 0 ) + return 0; + + d->arch.vgic.ext_shared_irqs =3D + xzalloc_array(struct vgic_irq_rank, DOMAIN_NR_EXT_RANKS(d)); + if ( d->arch.vgic.ext_shared_irqs =3D=3D NULL ) + return -ENOMEM; + + for ( i =3D d->arch.vgic.nr_spis, idx =3D 0; + i < vgic_num_spi_lines(d); i++, idx++ ) + vgic_init_pending_irq(&d->arch.vgic.pending_irqs[i], + espi_idx_to_intid(idx)); + + for ( i =3D 0; i < DOMAIN_NR_EXT_RANKS(d); i++ ) + vgic_rank_init(&d->arch.vgic.ext_shared_irqs[i], + EXT_RANK_IDX2NUM(i), 0); + + return 0; +} + +#else +static int init_vgic_espi(struct domain *d) +{ + return 0; +} + +static unsigned int vgic_num_spi_lines(struct domain *d) +{ + return d->arch.vgic.nr_spis; +} + +#endif + +static unsigned int vgic_num_alloc_irqs(struct domain *d) +{ + return vgic_num_spi_lines(d) + NR_LOCAL_IRQS; +} + int domain_vgic_init(struct domain *d, unsigned int nr_spis) { int i; @@ -133,7 +233,39 @@ int domain_vgic_init(struct domain *d, unsigned int nr= _spis) =20 /* Limit the number of virtual SPIs supported to (1020 - 32) =3D 988 = */ if ( nr_spis > (1020 - NR_LOCAL_IRQS) ) +#ifndef CONFIG_GICV3_ESPI return -EINVAL; +#else + { + /* + * During domain creation, the dom0less DomUs code or toolstack + * specifies the maximum INTID, which is defined in the domain + * config subtracted by 32 to cover the local IRQs (please see + * the comment to VGIC_DEF_NR_SPIS). To compute the actual number + * of eSPI that will be usable for, add back 32 (NR_LOCAL_IRQS). + */ + nr_spis +=3D NR_LOCAL_IRQS; + if ( nr_spis > espi_idx_to_intid(NR_ESPI_IRQS) ) + return -EINVAL; + + if ( nr_spis >=3D ESPI_BASE_INTID ) + { + unsigned int nr_espis =3D min(nr_spis - ESPI_BASE_INTID, 1024U= ); + + /* Verify if GIC HW can handle provided INTID */ + if ( nr_espis > gic_number_espis() ) + return -EINVAL; + + d->arch.vgic.nr_espis =3D nr_espis; + /* Set the maximum available number for regular SPIs */ + nr_spis =3D VGIC_DEF_NR_SPIS; + } + else + { + return -EINVAL; + } + } +#endif =20 d->arch.vgic.nr_spis =3D nr_spis; =20 @@ -145,7 +277,7 @@ int domain_vgic_init(struct domain *d, unsigned int nr_= spis) return -ENOMEM; =20 d->arch.vgic.pending_irqs =3D - xzalloc_array(struct pending_irq, d->arch.vgic.nr_spis); + xzalloc_array(struct pending_irq, vgic_num_spi_lines(d)); if ( d->arch.vgic.pending_irqs =3D=3D NULL ) return -ENOMEM; =20 @@ -156,12 +288,16 @@ int domain_vgic_init(struct domain *d, unsigned int n= r_spis) for ( i =3D 0; i < DOMAIN_NR_RANKS(d); i++ ) vgic_rank_init(&d->arch.vgic.shared_irqs[i], i + 1, 0); =20 + ret =3D init_vgic_espi(d); + if ( ret ) + return ret; + ret =3D d->arch.vgic.handler->domain_init(d); if ( ret ) return ret; =20 d->arch.vgic.allocated_irqs =3D - xzalloc_array(unsigned long, BITS_TO_LONGS(vgic_num_irqs(d))); + xzalloc_array(unsigned long, BITS_TO_LONGS(vgic_num_alloc_irqs(d))= ); if ( !d->arch.vgic.allocated_irqs ) return -ENOMEM; =20 @@ -182,9 +318,12 @@ void domain_vgic_free(struct domain *d) int i; int ret; =20 - for ( i =3D 0; i < (d->arch.vgic.nr_spis); i++ ) + for ( i =3D NR_LOCAL_IRQS; i < vgic_num_alloc_irqs(d); i++ ) { - struct pending_irq *p =3D spi_to_pending(d, i + 32); + struct pending_irq *p; + unsigned int virq =3D idx_to_virq(d, i); + + p =3D spi_to_pending(d, virq); =20 if ( p->desc ) { @@ -198,6 +337,9 @@ void domain_vgic_free(struct domain *d) 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); } @@ -323,10 +465,12 @@ void arch_move_irqs(struct vcpu *v) */ ASSERT(!is_lpi(vgic_num_irqs(d) - 1)); =20 - for ( i =3D 32; i < vgic_num_irqs(d); i++ ) + for ( i =3D NR_LOCAL_IRQS; i < vgic_num_alloc_irqs(d); i++ ) { - v_target =3D vgic_get_target_vcpu(v, i); - p =3D irq_to_pending(v_target, i); + unsigned int virq =3D idx_to_virq(d, i); + + v_target =3D vgic_get_target_vcpu(v, virq); + p =3D irq_to_pending(v_target, virq); =20 if ( v_target =3D=3D v && !test_bit(GIC_IRQ_GUEST_MIGRATING, &p->s= tatus) ) irq_set_affinity(p->desc, cpu_mask); @@ -539,15 +683,28 @@ struct pending_irq *irq_to_pending(struct vcpu *v, un= signed int irq) else if ( is_lpi(irq) ) n =3D v->domain->arch.vgic.handler->lpi_to_pending(v->domain, irq); else - n =3D &v->domain->arch.vgic.pending_irqs[irq - 32]; + n =3D spi_to_pending(v->domain, irq); return n; } =20 struct pending_irq *spi_to_pending(struct domain *d, unsigned int irq) { + unsigned int idx; + ASSERT(irq >=3D NR_LOCAL_IRQS); =20 - return &d->arch.vgic.pending_irqs[irq - 32]; + if ( is_espi(irq) ) + { + unsigned int nr_spis =3D d->arch.vgic.nr_spis; + + idx =3D espi_intid_to_idx(irq) + nr_spis; + } + else + { + idx =3D irq - NR_LOCAL_IRQS; + } + + return &d->arch.vgic.pending_irqs[idx]; } =20 void vgic_clear_pending_irqs(struct vcpu *v) @@ -665,10 +822,19 @@ bool vgic_emulate(struct cpu_user_regs *regs, union h= sr hsr) =20 bool vgic_reserve_virq(struct domain *d, unsigned int virq) { + unsigned int idx =3D virq; + if ( !vgic_is_valid_line(d, virq) ) return false; =20 - return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); + if ( is_espi(virq) ) + { + unsigned int num_regular_irqs =3D vgic_num_irqs(d); + + idx =3D espi_intid_to_idx(virq) + num_regular_irqs; + } + + return !test_and_set_bit(idx, d->arch.vgic.allocated_irqs); } =20 int vgic_allocate_virq(struct domain *d, bool spi) @@ -685,7 +851,7 @@ int vgic_allocate_virq(struct domain *d, bool spi) else { first =3D 32; - end =3D vgic_num_irqs(d); + end =3D vgic_num_alloc_irqs(d); } =20 /* @@ -700,7 +866,7 @@ int vgic_allocate_virq(struct domain *d, bool spi) } while ( test_and_set_bit(virq, d->arch.vgic.allocated_irqs) ); =20 - return virq; + return idx_to_virq(d, virq); } =20 void vgic_free_virq(struct domain *d, unsigned int virq) --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757413116; cv=pass; d=zohomail.com; s=zohoarc; b=ZK6NeWk9d4xpZu0V4iLrjMZTP18V3maKwSYbFMYWPRn/SmrIvnr1LqBY/gGPCsrkplTQWl2MMHvyDpKTP8ouqL4IWTi68IwCwB8btPpwfXeOp0TTLgKuyvyfD87X5B1ghNJ7cASPjUQ4WvW3esI8ZfL1ORWFFLjy9ZbCMOGKDRU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757413116; 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=WxcOto4JZOafCSrYBo7S3JnuTIEtWhZv/gUMQqkd/uc=; b=WVjIFNUyfv6HqQc5ptD9h8s/v/LLZAIlZCGYK0J93LhWLyDgTjFq7CYCYJi7+bSdKzzQE0yo0ZTuxPdAxzOZp8O7/0ZPqpga3Wfj5BV8VZX9gb7t97bA9YdeaY1FYOIeeIvxNjUnDdktHLVhJ4xyreaUweS6bSiG/hgWTTNTpUg= 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 17574131161019.3912035626347; Tue, 9 Sep 2025 03:18:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116206.1462612 (Exim 4.92) (envelope-from ) id 1uvvQc-0006Uz-BS; Tue, 09 Sep 2025 10:18:22 +0000 Received: by outflank-mailman (output) from mailman id 1116206.1462612; Tue, 09 Sep 2025 10:18: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 1uvvQc-0006Us-6v; Tue, 09 Sep 2025 10:18:22 +0000 Received: by outflank-mailman (input) for mailman id 1116206; Tue, 09 Sep 2025 10:18:20 +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 1uvvIB-0001My-W9 for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:40 +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 1756f370-8d65-11f0-9d13-b5c5bf9af7f9; Tue, 09 Sep 2025 12:09:37 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09: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.9094.021; Tue, 9 Sep 2025 10:09:29 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 1756f370-8d65-11f0-9d13-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=N04FdM/jONw6MuYWSB7RR7dP1d4TNMMabl3CnqN0E4Qap1ndOhC66VSuPVHr18emG9jMEH/mkkXrrFGXzbtS8G1UThkjs1WrkXND6l9tBQwaI4WAImlyY+37AtvXsg3i6uV4gcUoBS9b/vy6cMNdmfZUIQss9artPxux8n5rQHmbR1fbBeYdjihmDQKrVjIu7uW3qgQrB4/wxTZMtrOSK8WXnxecziituJNlhNSoCjKuvJCYLHgkUEIINXfXOjrWhb0IOSMBs8OwwuXG51raQmfCYMY7lrbKWMPQkxKhuUflKMWu793B8xGUAMxyfaMG+wmGq9fQ/hN0GVToxUegcg== 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=WxcOto4JZOafCSrYBo7S3JnuTIEtWhZv/gUMQqkd/uc=; b=s9i1/fLSvQ2dctVsZYexmJkaSd79syN32wsSdLVvcaVEhOeAz/VQPXE4YrXxxwId1cYJ5AwSW5KlxHwrdyr4kmba68VsOcFInmwJCDGkEslOKQxqo2ZLP8W4u2r2mBR++Ss6MrPifuq4HlM00iTl+KR4cNVLbAGLdwo8/0va2B3kzZSqdxAN9B/WxWXSPBztHwoXbywEBHwRPaob5142Q7MdDCAXAtjkBvKlk7vEa76WeSOCX5JFWyKCrF8lJL48KLxoZr1b0YjXUryxEbs6vahUpnrroyQDD2cPW9Ii1nCRLYkGhfVKkhCVhuctaio6D+YXC8b7ojMwHexaKdkmWQ== 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=WxcOto4JZOafCSrYBo7S3JnuTIEtWhZv/gUMQqkd/uc=; b=aHBH6/0brleD8QQAZ6nyWViPTJ4CFDoCmmzT94e0G4twp2KHP/RW8TN0V309erTb/l/ir0DoiwNO3nUyxZ7rBvRoZYJpGMJ7vxogUQ+k6xokCw8KBWz8DA43Ic5C+EkPqbGeYOK/yiwj9M4sAkuD9wC5ijLY6sKQrvlTRSQqjUY0pBiGJweLLFEUD2+xVwKgThyZTeUz1itAiQxokMhjaBS9KbTbLkQ7yqoOJtepNgdgKKi8RhClNM4t/HtJyaRe99AhEecZ8Jrm6PXhtfDS4OeTe4xtc2CDu/CpmSutzqEaznw2iBfSXfFvgydBe+i/5wx51m1JdxnocxT36rF/0g== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk , Oleksandr Tyshchenko , Julien Grall Subject: [PATCH v8 09/12] xen/arm: domain_build/dom0less-build: adjust domains config to support eSPIs Thread-Topic: [PATCH v8 09/12] xen/arm: domain_build/dom0less-build: adjust domains config to support eSPIs Thread-Index: AQHcIXHUheH+XMLsykqRJlmFqB5APw== Date: Tue, 9 Sep 2025 10:09:29 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: GV2PR03MB8678:EE_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: fca61201-adbb-4b44-bafc-08ddef88f6fd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?ob7XRII9bUc3lzCE8ZTG6q7qlVdnQZq9xHb2I5fZ+6KxQL82DX6QyyXIi9?= =?iso-8859-1?Q?6SP74P+UZ27beRMw8Hz0tZXaQxbgY7QUwB77T3FwfUyHhXyo+dG2RvNyGK?= =?iso-8859-1?Q?VlNTTpH7vXHvO7AgM3toboEzrdZUprRElcKJboQ5mDRL+VuabliikXgsrN?= =?iso-8859-1?Q?6PZnm19qYrmcw1YgVbx0XrJEoob9SWOeCFGtbm2Vl1qAiCRsK43KRrG0GI?= =?iso-8859-1?Q?pK4ECLHJPhcuvXsGMdNvZi0XWsoaYG/bHS/LXNib2IwJxbe7xr/31T58ER?= =?iso-8859-1?Q?e5WurUQpdtStGsBkGYaWiDCOPDfSckxcy+P4Boh65K+PElO1p3u4cO0jH0?= =?iso-8859-1?Q?9M+FFV4oYa+OOqoJCJ1KeH3MxCSn1pQ+NMpVwQPn+KlANeoLwGLRc7+PYW?= =?iso-8859-1?Q?ndxiaMVS0jvJovN6ZLB/MoIA1p/9OS25r5hhdyNTVRmob4qLZc3T2j9gW8?= =?iso-8859-1?Q?1fSUp5P++Z2jqctMu/ktW6A7OfQQ99FYRcbFe4O/djXa9krOl9vt4bzviV?= =?iso-8859-1?Q?F0k4T7zvm4BKLtDF17V6scfYdQ6bq6SRrVC3EmyyE2hopjglfaQfYRTWFq?= =?iso-8859-1?Q?ee6f5nEedPjamf0XQWDd5A1RK2bTF0ZmCc8b5/i3fz4X1p61d1AcTepJYb?= =?iso-8859-1?Q?q5k1d67iHStA+8RxWbtXWz0QXBUzZ0q+vZw9JBrLh5ie41ryObE78ErrQX?= =?iso-8859-1?Q?4jh1ZXGzV70D8B5TZDnmmUYs5r6VaK2SYMS9XZphSIpgWsUhkoLLDtW9CT?= =?iso-8859-1?Q?JZ/rJL0dvjfP+p3KTZP6VUAsmddWcFUlxn7kya7nOox/k8fGoske+o5S6F?= =?iso-8859-1?Q?Y630Ai3i3a41+uQXFDD887RlzxuEnAdRmXDBUsjDwlJG+Ye9+CNQ9Mt53I?= =?iso-8859-1?Q?0UCHUW2Qh47uc3DFsccNNLARuyRAGJ5XDyi+eRE61lPhfwXkmK5wGTecL1?= =?iso-8859-1?Q?KOwnQx8I+t7AFY8y9OJQPtLTe8Fjktt5/gtuYylXwgbOGHQ6AbTLflLBv2?= =?iso-8859-1?Q?hmY3aE6LVFJdaiZUiFhlj0qGSkkst5CeUubrMarMA+661QkKizlcutn1bh?= =?iso-8859-1?Q?IG/u43USnEn70gw60kGawZYjDSmJEKw/j1Jlt+5MjNQgMi9HDZyWw4R96n?= =?iso-8859-1?Q?/ETf3TRCqvuTUtL9XrsnjYaPWPtPqNH3VqMnYP9gamflhKvJE1zstq1soh?= =?iso-8859-1?Q?U4fq9FOAMhNJBf7vm6CsalMA1fyq7r04RIsRJZ5rc938tYFvYIW+aguNbB?= =?iso-8859-1?Q?YBJwiG7lrBY4P2JGygYzd6bafE8+cplt0uIzuGill+yGmri6y7vQzh/L9a?= =?iso-8859-1?Q?/F/E5Rmp+T2or4s1PzVonhPRYS+8Lc6TYZkaClQOcibnTD/bjDy3NO6Fog?= =?iso-8859-1?Q?aLGmNoS2sC4GVkL+tT+RggMELawEFn0+S0OIk4cWA4rTX5MoxOUMvwgV52?= =?iso-8859-1?Q?gvsMXEpWANE1GhscusfHwtzrrCpKCQxXb0UUMfJ3BzQwZQghLP+cjfeUAn?= =?iso-8859-1?Q?PnAh2ogkKf3RPRcrYH6I73BWt46UgpMsEFQvkdg4NygR9sDgMAYaBfOXgF?= =?iso-8859-1?Q?r7SLCvg=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?dJJNcO1VB/3wCqreEVAVeiLO/gDXoYLH6+uGcRhLp1GhbXHYawJ2Kkrx/v?= =?iso-8859-1?Q?etmIY7ox4/WYDR0tk/uNFBo3TEmHhSLFJCY8JO+6GDHC1dP/2hO1/JI+uJ?= =?iso-8859-1?Q?ARCvJbLRhtCEp4eToag92Oe+tiM32mgPY2DSzVvHjHQPsXh6WJT/Ad/hAb?= =?iso-8859-1?Q?aWW4BXbjbGdpRCmk/YUW5JgAsDwS+QneEO7SW+hCCXJVnTsP5QbqB8f1Ks?= =?iso-8859-1?Q?ewJwIwCytuZNIz1HitU4YpTWpFawdtE6ZIq+sgclsHirOBywajoCM9N1VN?= =?iso-8859-1?Q?4dgOa1Exy6k8O4hDAc1RqDFVPH9CkqHl/avQRsHoKuj9vy48SxUSzGQww9?= =?iso-8859-1?Q?KbwH+5bAtFZCyVSz1quCb1QDZha4TKhaX1++k9SHI9kwBqQ38RzOdwdLxm?= =?iso-8859-1?Q?YPkJ6s8XwBq8f/sdD43nM4cirGwVD/PJP2sqsVYF5AqoxZU1MPTaVQHQQo?= =?iso-8859-1?Q?J4gkieDfkTTmKUYeQHva5cZlr0+rLYAYnQnbv7Bh4szjA0y29V3cSxouu3?= =?iso-8859-1?Q?EnqbVFf4MU1YIQLsnFNbPnTMdD8ioA/wL8zDchg8+S/ETawC2diA98liVZ?= =?iso-8859-1?Q?ZxpYpMHtf49d4C4yAChv0ZJzl+79hvM9uThTlnAD/GB2yBdeCUn7UXKBLE?= =?iso-8859-1?Q?GveSALuE4+ms41YhCWQFeowgufp66n1Wc8OR4OCxgi/GFf/b+nh/20XN57?= =?iso-8859-1?Q?PCmMq3TJhPjrekA4EYRWoGVnOqgSWiYSWT+SVc/6oNLvc/vfWOdeFkteSq?= =?iso-8859-1?Q?Fv9VooltrvrgOvtl+hS7VtpJQLjAxJ9OEoVIHAFnlqXJAlmCJMMTNMgSR+?= =?iso-8859-1?Q?gKJOsPg+DPxZQ6REOk1Al4MyzANAMflrigl780bLTdZcfJBy7kLRw8/9vR?= =?iso-8859-1?Q?Q9fYvdT++s/VEWWNduKfLbmOESOAwPMmbIVWklzRQ+mSFoBAkqpQQYimBE?= =?iso-8859-1?Q?U5YxoZ9LNqe5GuuBXK/dEx3VEQvddE6//bO5nsiSx2e36vgj1WeDVwGAY6?= =?iso-8859-1?Q?ndHB6r3fFDDum8FeBawnKIQjA7HHjlNueGOu1jGEe5va6SsOkcp1JnEAIV?= =?iso-8859-1?Q?FI1YqlWJ5onc7CEKdKmTuyjF8qwEh8E2KVlSPDsRvsiwdU1iOw0zhkYk8y?= =?iso-8859-1?Q?C0gQiXE43Qed1xFGivLCIlUUAdoF4KBd/5xasi3phG81efERd3HowI7Edk?= =?iso-8859-1?Q?G4xh5r0IInD/lXX0hD1oP5m8iPxataRgk1CtAmkJHFqwNPXoMlfM1bZuOV?= =?iso-8859-1?Q?nZaiiVoTKP9K0H9IAQZ481oHMvzTRZbcpBAnp4cSXsJ/SO3f2JMa8Y7IBF?= =?iso-8859-1?Q?xBvE32qYYhXiSH2+yemiTlVGuOklSXrnRfreyfAJVGFLMz0TuBFmaVrY9y?= =?iso-8859-1?Q?flr7cZ19yk7AqsYvM3VCk3MszMP+JD+oGVPapSNHO7boqqOW6fn62V1lSK?= =?iso-8859-1?Q?k8QtL3qxuLqilfxY+2KgysVSEGlU/SJ7Z4KVhc/TYDpsJE9URONIcK2nn7?= =?iso-8859-1?Q?C5JT+AWNQAxjC5BWplALsbUHCVKp/dogOESxLdkAHjsDHa+y71hknTLpZZ?= =?iso-8859-1?Q?x27z82uM4ZcJzvOxiWb6/oHVFkIQP3+SDXaiJDDlAjjMchR57MKkxVw1yf?= =?iso-8859-1?Q?w5IDPbVdFI4SvIGzE4nDXzyoV+mijeZEzoZInVXbl/NWUEmByneEsfyvG0?= =?iso-8859-1?Q?PFlOCFrAK1N1tPVCme0=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: fca61201-adbb-4b44-bafc-08ddef88f6fd X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:29.4335 (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: IuUVRybk7ffyirKrUHV6wRGsrp70fQisfLfSHzb8sPe0M1pwkwJZ8rqZekaMAVv3MH+8SfdM7farVzjJO0o8sO+5VMuGz8OPJ+/zvgdROgc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757413117469116600 Content-Type: text/plain; charset="utf-8" The Dom0 and DomUs logic for the dom0less configuration in create_dom0() and arch_create_domUs() should account for extended SPIs when supported by the hardware and enabled with CONFIG_GICV3_ESPI. These changes ensure proper calculation of the maximum number of SPIs and eSPIs available to Dom0 and DomUs in dom0less setups. When eSPIs are supported by the hardware and CONFIG_GICV3_ESPI is enabled, = the maximum number of eSPI interrupts is calculated using the ESPI_BASE_INTID offset (4096) and is limited to 1024, with 32 IRQs subtracted. To ensure compatibility with non-Dom0 domains, this adjustment is applied by the toolstack during domain creation, while for Dom0 or DomUs in Dom0, it is handled directly during VGIC initialization. If eSPIs are not supported, the calculation defaults to using the standard SPI range, with a maximum value = of 992 interrupt lines, as it works currently. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Reviewed-by: Oleksandr Tyshchenko Acked-by: Julien Grall --- Changes in V8: - added acked-by from Julien Grall Changes in V7: - no changes Changes in V6: - minor: updated the commit message Changes in V5: - fixed minor nits, no functional changes: updated the comment to make it clearer and corrected a misspelling - added reviewed-by from Volodymyr Babchuk and from Oleksandr Tyshchenko Changes in V4: - consolidated the eSPI and SPI logic into a new inline function, vgic_def_nr_spis. Without eSPI support (either due to config being disabled or hardware not supporting it), it will return the regular SPI range, as it works currently. There are no functional changes compared with the previous patch version - removed VGIC_DEF_MAX_SPI macro, to reduce the number of ifdefs Changes in V3: - renamed macro VGIC_DEF_NR_ESPIS to more appropriate VGIC_DEF_MAX_SPI - added eSPI initialization for dom0less setups - fixed comment with mentions about dom0less builds - fixed formatting for lines with more than 80 symbols - updated commit message Changes in V2: - no changes --- xen/arch/arm/dom0less-build.c | 2 +- xen/arch/arm/domain_build.c | 2 +- xen/arch/arm/include/asm/vgic.h | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index 69b9ea22ce..02d5559102 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -285,7 +285,7 @@ void __init arch_create_domUs(struct dt_device_node *no= de, { int vpl011_virq =3D GUEST_VPL011_SPI; =20 - d_cfg->arch.nr_spis =3D VGIC_DEF_NR_SPIS; + d_cfg->arch.nr_spis =3D vgic_def_nr_spis(); =20 /* * The VPL011 virq is GUEST_VPL011_SPI, unless direct-map is diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index d91a71acfd..39eea0be00 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2054,7 +2054,7 @@ void __init create_dom0(void) =20 /* The vGIC for DOM0 is exactly emulating the hardware GIC */ dom0_cfg.arch.gic_version =3D XEN_DOMCTL_CONFIG_GIC_NATIVE; - dom0_cfg.arch.nr_spis =3D VGIC_DEF_NR_SPIS; + dom0_cfg.arch.nr_spis =3D vgic_def_nr_spis(); dom0_cfg.arch.tee_type =3D tee_get_type(); dom0_cfg.max_vcpus =3D dom0_max_vcpus(); =20 diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index caffea092b..24a4a968c3 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -357,6 +357,25 @@ extern void vgic_check_inflight_irqs_pending(struct vc= pu *v, /* Default number of vGIC SPIs. 32 are substracted to cover local IRQs. */ #define VGIC_DEF_NR_SPIS (min(gic_number_lines(), VGIC_MAX_IRQS) - 32) =20 +static inline unsigned int vgic_def_nr_spis(void) +{ +#ifdef CONFIG_GICV3_ESPI + /* + * Check if the hardware supports extended SPIs (even if the appropria= te + * config is set). If not, the common SPI range will be used. Otherwise + * return the maximum eSPI INTID, supported by HW GIC, subtracted by 3= 2. + * For Dom0 and started at boot time DomUs we will add back this value + * during VGIC initialization. This ensures consistent handling for Do= m0 + * and other domains. For the regular SPI range interrupts in this cas= e, + * the maximum value of VGIC_DEF_NR_SPIS will be used. + */ + if ( gic_number_espis() > 0 ) + return ESPI_BASE_INTID + min(gic_number_espis(), 1024U) - 32; +#endif + + return VGIC_DEF_NR_SPIS; +} + extern bool vgic_is_valid_line(struct domain *d, unsigned int virq); =20 static inline bool vgic_is_spi(struct domain *d, unsigned int virq) --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757413465; cv=pass; d=zohomail.com; s=zohoarc; b=UFvHuJn6j8kv3b66AMbAeHfTEtLkXvQ3Onj4Hxw2UFxISll00V40WnV5n++Dl4MUqPZ8uFS25fIp4dOmkrASxEHYKd0c2zxdlaKitLBS1ETQQdrhIx4G8Zt87OApsWHVEJFBSvEJSi4370UYf7/QUnWOqtrupLTgcpHyVqoD11U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757413465; 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=zEVDDkro/4RLcvAdwGV/VFVy/2GMbS04zF19EjNqqRg=; b=ipYLqXKfeXI4lWc0HwcKIbjkCWH0nJJTMvBt8hqvkWcV9mHsUBQtq//axzXCHkZSBE5ayc84F5pL4s2JR/9OH0GgP7koKPPz+uS7CwJAGryR7+ZG7BJylCLxLHCK6he4r6AG0X0NStYeMnmRMu1zhUakDMTUS1I3b3Ro3doQk5c= 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 175741346497465.2978437056554; Tue, 9 Sep 2025 03:24:24 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116305.1462672 (Exim 4.92) (envelope-from ) id 1uvvWA-0002gd-Ee; Tue, 09 Sep 2025 10:24:06 +0000 Received: by outflank-mailman (output) from mailman id 1116305.1462672; Tue, 09 Sep 2025 10:24:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvWA-0002gW-Bs; Tue, 09 Sep 2025 10:24:06 +0000 Received: by outflank-mailman (input) for mailman id 1116305; Tue, 09 Sep 2025 10:24:05 +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 1uvvIF-0001My-0p for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:43 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 19a0ce90-8d65-11f0-9d13-b5c5bf9af7f9; Tue, 09 Sep 2025 12:09:41 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09:32 +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.9094.021; Tue, 9 Sep 2025 10:09:32 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 19a0ce90-8d65-11f0-9d13-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qUpP/MS+ebuHOo5APhBg4SpgMgEvuIK86eLkE0M1/iCRjhnRRXubaaO0ALOPTpgv1mBHn8eSMbtrALEmEQuOzSaCixp997POI9a/nlSMkIemzLj5e7Ro7FZT5utoloDQ1jVdlU1q2WsO3UNvfbAI0DhG4qtJHEOP1O34/m9xqb7p+/LN/SccxXhtaPGQQLwNiI+9FLlDLug6mQ3YbEtnikUhBMUXwgcYB85317u0VcSQv5Pomq/oZSRWJ5pXgD5EZ834iliGgCj9Z6pb/eg5ffO6nWxBH+Gr95fCxPpPZFBsflKPHeknb/uHLR3aJRRLExkAOHeTQlLbkYXckJsfqQ== 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=zEVDDkro/4RLcvAdwGV/VFVy/2GMbS04zF19EjNqqRg=; b=jRxqkOTSq6SuFlqJUkNXectJ51oH4zredxiDHqKG9+T7g+BqNY8oyPAVuTGkYX+QTP6YH822EJ1yrb+zzfZ0mQe3DYGcwYtM38N2ehdg24xljO91Bokg8IBG11dx9tc59ZbbytEbTcIUZcz2XqtC23dBi9fq7l259/1FnyLBId+v/BlPPncDBLn0C4XkBGBkNFfIOIpltefVVbhcL6G/mz+morHhLjnI66j75VO2we40c7MmJyqci4xXV89P3wzjOG69R2BlHFf2Kc9pVnCmRMWFgCkXvkEVckODyp+sOn5eyNyU8sTlZtv8Fsb4LBr2OgdMNFij3r1brgyd6i4xGA== 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=zEVDDkro/4RLcvAdwGV/VFVy/2GMbS04zF19EjNqqRg=; b=JOWaQcsLEX/DsDiTnV3lhqryLe4qoSpUzgne5cfIkdVT2z/EKFSfVarH87Xg9cpGtIdyO6hMW6VICm1oIIipF998m40lqjFF+UecEHfTGsbJwuSNXMyCVQ9sfvuTqxjYMECr0rRsv+vbMc+Mt1aNaAfJsCiaftaNRoPmo3sv2r0QPTo2dHsjoC8bwywOHan3i4oZ5J9xhCcFMcIo4PRH6FaYxaVzpemPk7qaHHZU6FIlZckLTIYoZEpJiyWes/UwyohLjoT7ByXMPVW474KLKriYsu9mLvTshoGQN7PDtalt/46NE4O0HpriWHv5+qmuSQ6j75+h74MfkVEyGnOFZg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Oleksandr Tyshchenko , Julien Grall Subject: [PATCH v8 10/12] xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers Thread-Topic: [PATCH v8 10/12] xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers Thread-Index: AQHcIXHV8u4+2vuOCEqK2GduOtSmvw== Date: Tue, 9 Sep 2025 10:09:31 +0000 Message-ID: <9c52c50708132cdd10f9f3b4168b268a19224c62.1757412099.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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: 77c6cf2f-833e-4002-b1df-08ddef88f874 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?7OjUufHjWxVmOGw+w2pOmROAuwBoQAQNL3zqNl/9Vv6tEs1KZ1LNoVkTYf?= =?iso-8859-1?Q?V5/gyp+B1G0tCIa4Yfq+RvA1MMsQc8CuQDl9hPjv+yvCOuyX5LPoqpSieg?= =?iso-8859-1?Q?E3RafDV+VM4Ob7xIjm/WwLQms4G8ZRhNuoul2tJ2cYN+HU3eSpvP10dxEg?= =?iso-8859-1?Q?friC8gxKPF5u4Tjy3EjhBIvfPIlvU6jmDuxarYlYa2pL3KrwR5hLQR5r6I?= =?iso-8859-1?Q?+6hTFlD6ghz3cYl+nferJae7H6C5VJBk0VreTe/Zd35lqaF7/AKA87uKyU?= =?iso-8859-1?Q?2f8GcMGLGGmC3Nb0D631LXz5nWejBqiyIvISHoDFENLFIKYDRBn0sy+RwK?= =?iso-8859-1?Q?CC/RAl93TnNyyqGhZ6P5RWhWW9KrH+odGIy5dgr7NcgLw8i5srG++Femcu?= =?iso-8859-1?Q?Eh9HIV9FHKqvJJfzz+fzJ5EUYlNB0AjyIdTNUx9Yk3Ba2WaKrHfiuTXQDM?= =?iso-8859-1?Q?G+mksAquQvBwf/nvRxuWHNT28Vedw6iDBLOzEHuRAnJoVrhcU2i0+SQcaC?= =?iso-8859-1?Q?Grkq3a6v+sXjFAGqACAPLUuOT9Vywm8AdLkTNkbHIy+4FB+HbmO36r0N7b?= =?iso-8859-1?Q?6657WIPJejm2EOM5T5EUZA9QFWO7jJW2weJyGW7cn7bU54L9iullvbtZyX?= =?iso-8859-1?Q?hNzp+VGnoEybmBSdELDnfgMos14z93GZrznj9o7qU3o2xB8bxz94dcAvZJ?= =?iso-8859-1?Q?m2CIpNlQCTfNeT/hleIDJ5S15cfI1L7Nh7f9bnyE1XhaGCR2dGHx88HxNz?= =?iso-8859-1?Q?CRvPwrhrGMD2rE0w1YPa77lPDHDfkzno1q54acaAbJrDg6zvmttRNOA7sn?= =?iso-8859-1?Q?F/+6GiHc7IpE40bHn+k5Zlbe5KD/uJKKPbaYT9tOVE7uA0qKCnQ2FzvjlA?= =?iso-8859-1?Q?NhTO36PmONIj/zGPJ8e6mg/7A/UTPhKPEaICLgm7ZZxVlesW+YmqaCHlYI?= =?iso-8859-1?Q?fb5AZHf0MNcJlxGQVsvBHty83XC2KhdgqnzMmAm1L75U75o02/WnZ7XYi3?= =?iso-8859-1?Q?hS4Vk+JCU7OguI28K9aU+TxdyfXhyEi+LpJKgwWEfipwityxu6QIWE3nGm?= =?iso-8859-1?Q?IftsMZObjJBGvF9xlpwBYgDv6FuT1KB5/v0NDJy94IHlsCIFONjHP5gMpC?= =?iso-8859-1?Q?Npnq0GJYrCFNojre4eCWgAM1YiSuxjUgvrhOJpKyRuitwiA3Leu5ihdN1Q?= =?iso-8859-1?Q?4MaaxDFE9UBh4pX8fxzMTP3gDWHDTeEA6kBZqL+tdYkdfLVDrBf2OmXwF/?= =?iso-8859-1?Q?m23uaBsQR3em2MSg2k2q+ns+3rY/N2/iMLYbtOHYBXsguJSOhr5gmTMklC?= =?iso-8859-1?Q?v4ZxYemJcWs9nvT644bgl0fxyCveeG1I7cE4yX3aWmym9J0CL8hHKJdPvp?= =?iso-8859-1?Q?wMxkcn2ayONttS5nCceRNr3fcQu+Buo/9SnP0Locs4Inv+EbhC4zefYcxW?= =?iso-8859-1?Q?UsD1adzkfgEQ+DDLL6ftR3X3YhLsy0s9nez1gAtDov5Ljm/9m4BkIGv8VW?= =?iso-8859-1?Q?d7L2tHs/MbtTia6yg9npKTil9yI0NiJh4agoKLA0DZxA=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?qmKqSwlqwoP4kxvDRuxe4sNGbMarEAS0QeP2Dy8ZTn1C7eKn6FXQYiJpXC?= =?iso-8859-1?Q?QGUeQFtHkDy6QKzm2herLJIpxKhxKX69p6OkDhh4THdJktunaiRSD6vlH1?= =?iso-8859-1?Q?eAF9jGegK3bsjevSSziw5mKDOhJFl93bp3wCT0Ta1MzOVe4TUB9JoJFEG3?= =?iso-8859-1?Q?XVfZ+cmvgZalqtPZ4QSpNBCeRgE/i+R7oTFqyjKDDyE6vonm+Qa4jM800A?= =?iso-8859-1?Q?WXlPcSugeSBELm5v4TPcXUcAaGh6O9/eMkzJtL3txwGnsybLMm/Sk1Hw4n?= =?iso-8859-1?Q?yXOfMXhR5aoCqrvzKz83974cgy96NP1DQv7F+pyoFP1efEXWmVSWVCyZib?= =?iso-8859-1?Q?P7b9qnbGiNIQmGpoQtRVgCE2ytrJMTumVsls65z9JHrs3lpWjmzn0JVCFh?= =?iso-8859-1?Q?vD6OF9J0CsPw9Jz6bqGRtZQP3rZlkwNu+6Pd3/MSDwvjR07tliPkCeA8Q6?= =?iso-8859-1?Q?oKH21HEgtVyE7daVFzCUVHgEYS9FA7bVEe4AGYHOLRabLTF0tIUE96mEt/?= =?iso-8859-1?Q?KvaZGd8wI1ybmGp93sRojD3j+T8miXgcPjOlSlF219dG0fCmCMI3faF/RY?= =?iso-8859-1?Q?D4mCjdya5A+j4cE9c34WVWafwI5D37+MS4lV6iCtj0BeskAgtv1l+Xt4ye?= =?iso-8859-1?Q?b/yFKanIH6vDa/rm8sqVKgV+q+VJt1qcY7vMAESl3Y68TKsiD2Vmj5CgJR?= =?iso-8859-1?Q?tYAry2/oGIkbUZbx8gzOxE6H+U0GFuGuHdO9hEobjdmYsjEXYQIjN9HdpX?= =?iso-8859-1?Q?mgyYyNMQq04KHS1UKL+2Pi91QKcH13qAta2BudJ8hTJ7D1PfYnd9BsVbzS?= =?iso-8859-1?Q?guGuZxCR8FzauteihOWiPUb/I6gMcWbZI6VN3VttZlLxd81jPTS/8MtN6v?= =?iso-8859-1?Q?TR+41jUSiRpS4/EaSp/aMGcutw4u+ksC7W1DH/iYXlxcFrUcE2Kxb44BU8?= =?iso-8859-1?Q?zS25UqPjKmo+iTSQBH2LWHtn3NXnjmn3wTB7kD1WYF+7giKBEiXut6r9fe?= =?iso-8859-1?Q?ELgZco13acRO1uRLcks50OLfXa+K581NqDk9JRbWzI1Fc6q6e6+ocNbgYx?= =?iso-8859-1?Q?8ZJALBbIv2i7k8d1weAwXP764em18s9fh7CXtm9/5QkK1A8k4HpxgDtX+m?= =?iso-8859-1?Q?O9Tb5MuC3skRcx44JPzls5uoWE8XXZtWuJES2LfxM9HWeheByxe0ne5iZL?= =?iso-8859-1?Q?R9iMEs3Vj0IZXv+iDsFlhGCFMEj2Ko851EsnQBc9pL9ouldFQeldz1+klH?= =?iso-8859-1?Q?uAhMBI6YzqqDdmzi2xjcUdQ3NjSVkSaf7Tn+28Ja6codAzEZgeJW6iqP72?= =?iso-8859-1?Q?eABHvJVcsI7UELZlVsFcGSElYP9lMgJ45YAHmbja+RHx+AxyeT79woQ9ws?= =?iso-8859-1?Q?emENlZh9XERuCxYUCy9zm7X9ZdVp1WMvMKn9T/lH9Ev3MLb6usEHdGjtf3?= =?iso-8859-1?Q?VL1OJ6Stb0C8wpuC8Ll4Ec+3opg8mVC2DoVK3J6S6GpU5gZzza32JipWg4?= =?iso-8859-1?Q?0p2IceClaQ5DZGLCbGOSWsGa4K5bH59f8l+YTKmQqhvzSux/V1DTeihtNN?= =?iso-8859-1?Q?bf1MAoM9uuIsDRvrBxqXWnifqZ51ijX5GnoxxKlrwyIdGomzmDPqgd7zLw?= =?iso-8859-1?Q?SdJ6dxylx9KPAUCh88ZdNI1UTcBMcNynMqJJrj0siNEOEHk/8hqo2G4PVm?= =?iso-8859-1?Q?ruQz4Ya34TtMQX4ME5g=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: 77c6cf2f-833e-4002-b1df-08ddef88f874 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:31.8701 (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: 09M40DvE8kvZqI/XAEDwkeFwezEa+x6/q6MITwck21TKleHPyB5GJWs9N/k+BP3gBem7pETLutO5k25p71DL9M8QJmLWpKafn/H0rfEF/4s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757413467047116600 Content-Type: text/plain; charset="utf-8" Implemented support for GICv3.1 extended SPI registers for vGICv3, allowing the emulation of eSPI-specific behavior for guest domains. The implementation includes read and write emulation for eSPI-related registers (e.g., GICD_ISENABLERnE, GICD_IROUTERnE, and others), following a similar approach to the handling of regular SPIs. The eSPI registers, previously located in reserved address ranges, are now adjusted to support MMIO read and write operations correctly when CONFIG_GICV3_ESPI is enabled. The availability of eSPIs and the number of emulated extended SPIs for guest domains is reported by setting the appropriate bits in the GICD_TYPER register, based on the number of eSPIs requested by the domain and supported by the hardware. In cases where the configuration option is disabled, the hardware does not support eSPIs, or the domain does not request such interrupts, the functionality remains unchanged. Signed-off-by: Leonid Komarianskyi Reviewed-by: Oleksandr Tyshchenko Acked-by: Julien Grall --- Changes in V8: - added acked-by from Julien Grall Changes in V7: - minor: renamed vgic_get_rank to vgic_common_rank_offset - minor: updated comment for vgic_common_rank_offset - minor: restored comment for vgic_store_irouter - minor: added sanity checks with asserts to helper functions - added reviewed-by from Oleksandr Tyshchenko Changes in V6: - introduced helper functions: vgic_get_rank and vgic_get_reg_offset to avoid boilerplate code and simplify changes - fixed index initialization in the previous patch ([08/12] xen/arm: vgic: add resource management for extended SPIs) and removed index conversion for vgic_enable_irqs(), vgic_disable_irqs(), vgic_set_irqs_pending(), and vgic_check_inflight_irqs_pending() - grouped SPI and eSPI registers - updated the comment for vgic_store_irouter to reflect parameter changes - minor change: changed the macros ESPI_INTID2IDX and ESPI_IDX2INTID into appropriate inline functions introduced in the previous patch Changes in V5: - since eSPI-specific defines and macros are now available even when the appropriate config is disabled, this allows us to remove many #ifdef guards and reuse the existing code for regular SPIs for eSPIs as well, as eSPIs are processed similarly. This improves code readability and consolidates the register ranges for SPIs and eSPIs in a single place, simplifying future changes or fixes for SPIs and their counterparts from the extended range - moved vgic_ext_rank_offset() from [08/12] xen/arm: vgic: add resource management for extended SPIs as the function was unused before this patch - added stub implementation of vgic_ext_rank_offset() when CONFIG_GICV3_ESP= I=3Dn - removed unnecessary defines for reserved ranges, which were introduced in V4 to reduce the number of #ifdefs. The issue is now resolved by allowing the use of SPI-specific offsets and reworking the logic Changes in V4: - added missing RAZ and write ignore eSPI-specific registers ranges: GICD_NSACRnE and GICD_IGRPMODRnE - changed previously reserved range to cover GICD_NSACRnE and GICD_IGRPMODRnE - introduced GICD_RESERVED_RANGE_START/END defines to remove hardcoded values and reduce the number of ifdefs - fixed reserved ranges with eSPI option enabled: added missing range 0x0F30-0x0F7C - updated the logic for domains that do not support eSPI, but Xen is compiled with the eSPI option. Now, prior to other MMIO checks, we verify whether eSPI is available for the domain or not. If not, it behaves as it does currently - RAZ and WI - fixed print for GICD_ICACTIVERnE - fixed new lines formatting for switch-case Changes in V3: - changed vgic_store_irouter parameters - instead of offset virq is used, to remove the additional bool espi parameter and simplify checks. Also, adjusted parameters for regular SPI. Since the offset parameter was used only for calculating virq number and then reused for finding rank offset, it will not affect functionality. - fixed formatting for goto lables - added newlines after condition - fixed logs for GICD_ISACTIVERnE and GICD_ICACTIVERnE handlers - removed #ifdefs in 2 places where they were adjacent and could be merged Changes in V2: - add missing rank index conversion for pending and inflight irqs --- xen/arch/arm/include/asm/vgic.h | 4 + xen/arch/arm/vgic-v3.c | 203 +++++++++++++++++++++++++------- xen/arch/arm/vgic.c | 22 ++++ 3 files changed, 185 insertions(+), 44 deletions(-) diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 24a4a968c3..31b3d3e5ec 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -324,6 +324,10 @@ extern struct vgic_irq_rank *vgic_rank_offset(struct v= cpu *v, unsigned int b, unsigned int n, unsigned int s); +extern struct vgic_irq_rank *vgic_ext_rank_offset(struct vcpu *v, + unsigned int b, + unsigned int n, + unsigned int s); extern struct vgic_irq_rank *vgic_rank_irq(struct vcpu *v, unsigned int ir= q); extern void vgic_disable_irqs(struct vcpu *v, uint32_t r, unsigned int n); extern void vgic_enable_irqs(struct vcpu *v, uint32_t r, unsigned int n); diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c index 4369c55177..8b1c8eef80 100644 --- a/xen/arch/arm/vgic-v3.c +++ b/xen/arch/arm/vgic-v3.c @@ -107,17 +107,12 @@ static uint64_t vgic_fetch_irouter(struct vgic_irq_ra= nk *rank, /* * Store an IROUTER register in a convenient way and migrate the vIRQ * if necessary. This function only deals with IROUTER32 and onwards. - * - * Note the offset will be aligned to the appropriate boundary. */ static void vgic_store_irouter(struct domain *d, struct vgic_irq_rank *ran= k, - unsigned int offset, uint64_t irouter) + unsigned int virq, uint64_t irouter) { struct vcpu *new_vcpu, *old_vcpu; - unsigned int virq; - - /* There is 1 vIRQ per IROUTER */ - virq =3D offset / NR_BYTES_PER_IROUTER; + unsigned int offset; =20 /* * The IROUTER0-31, used for SGIs/PPIs, are reserved and should @@ -673,6 +668,36 @@ write_reserved: return 1; } =20 +/* + * The assumption is that offsets below espi_base are for + * regular SPI, while those at or above are for eSPI. + */ +static inline struct vgic_irq_rank *vgic_common_rank_offset(struct vcpu *v, + unsigned int b, + uint32_t reg, + unsigned int s, + uint32_t spi_b= ase, + uint32_t espi_= base) +{ + ASSERT(spi_base < espi_base); + + if ( reg < espi_base ) + return vgic_rank_offset(v, b, reg - spi_base, s); + else + return vgic_ext_rank_offset(v, b, reg - espi_base, s); +} + +static inline uint32_t vgic_get_reg_offset(uint32_t reg, uint32_t spi_base, + uint32_t espi_base) +{ + ASSERT(spi_base < espi_base); + + if ( reg < espi_base ) + return reg - spi_base; + else + return reg - espi_base; +} + static int __vgic_v3_distr_common_mmio_read(const char *name, struct vcpu = *v, mmio_info_t *info, uint32_t re= g, register_t *r) @@ -685,13 +710,17 @@ static int __vgic_v3_distr_common_mmio_read(const cha= r *name, struct vcpu *v, { case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): /* We do not implement security extensions for guests, read zero */ if ( dabt.size !=3D DABT_WORD ) goto bad_width; goto read_as_zero; =20 case VRANGE32(GICD_ISENABLER, GICD_ISENABLERN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ISENABLER, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 1, reg, DABT_WORD, GICD_ISENAB= LER, + GICD_ISENABLERnE); if ( rank =3D=3D NULL ) goto read_as_zero; vgic_lock_rank(v, rank, flags); *r =3D vreg_reg32_extract(rank->ienable, info); @@ -699,8 +728,10 @@ static int __vgic_v3_distr_common_mmio_read(const char= *name, struct vcpu *v, return 1; =20 case VRANGE32(GICD_ICENABLER, GICD_ICENABLERN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ICENABLER, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 1, reg, DABT_WORD, GICD_ICENAB= LER, + GICD_ICENABLERnE); if ( rank =3D=3D NULL ) goto read_as_zero; vgic_lock_rank(v, rank, flags); *r =3D vreg_reg32_extract(rank->ienable, info); @@ -710,22 +741,29 @@ static int __vgic_v3_distr_common_mmio_read(const cha= r *name, struct vcpu *v, /* Read the pending status of an IRQ via GICD/GICR is not supported */ case VRANGE32(GICD_ISPENDR, GICD_ISPENDRN): case VRANGE32(GICD_ICPENDR, GICD_ICPENDRN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): goto read_as_zero; =20 /* Read the active status of an IRQ via GICD/GICR is not supported */ case VRANGE32(GICD_ISACTIVER, GICD_ISACTIVERN): case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN): + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): goto read_as_zero; =20 case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): { - uint32_t ipriorityr; + uint32_t ipriorityr, offset; uint8_t rank_index; =20 if ( dabt.size !=3D DABT_BYTE && dabt.size !=3D DABT_WORD ) goto b= ad_width; - rank =3D vgic_rank_offset(v, 8, reg - GICD_IPRIORITYR, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 8, reg, DABT_WORD, GICD_IPRIOR= ITYR, + GICD_IPRIORITYRnE); if ( rank =3D=3D NULL ) goto read_as_zero; - rank_index =3D REG_RANK_INDEX(8, reg - GICD_IPRIORITYR, DABT_WORD); + offset =3D vgic_get_reg_offset(reg, GICD_IPRIORITYR, GICD_IPRIORIT= YRnE); + rank_index =3D REG_RANK_INDEX(8, offset, DABT_WORD); =20 vgic_lock_rank(v, rank, flags); ipriorityr =3D ACCESS_ONCE(rank->ipriorityr[rank_index]); @@ -737,14 +775,17 @@ static int __vgic_v3_distr_common_mmio_read(const cha= r *name, struct vcpu *v, } =20 case VRANGE32(GICD_ICFGR, GICD_ICFGRN): + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): { - uint32_t icfgr; + uint32_t icfgr, offset; =20 if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 2, reg - GICD_ICFGR, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 2, reg, DABT_WORD, GICD_ICFGR, + GICD_ICFGRnE); if ( rank =3D=3D NULL ) goto read_as_zero; + offset =3D vgic_get_reg_offset(reg, GICD_ICFGR, GICD_ICFGRnE); vgic_lock_rank(v, rank, flags); - icfgr =3D rank->icfg[REG_RANK_INDEX(2, reg - GICD_ICFGR, DABT_WORD= )]; + icfgr =3D rank->icfg[REG_RANK_INDEX(2, offset, DABT_WORD)]; vgic_unlock_rank(v, rank, flags); =20 *r =3D vreg_reg32_extract(icfgr, info); @@ -782,12 +823,16 @@ static int __vgic_v3_distr_common_mmio_write(const ch= ar *name, struct vcpu *v, { case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): /* We do not implement security extensions for guests, write ignor= e */ goto write_ignore_32; =20 case VRANGE32(GICD_ISENABLER, GICD_ISENABLERN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ISENABLER, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 1, reg, DABT_WORD, GICD_ISENAB= LER, + GICD_ISENABLERnE); if ( rank =3D=3D NULL ) goto write_ignore; vgic_lock_rank(v, rank, flags); tr =3D rank->ienable; @@ -797,8 +842,10 @@ static int __vgic_v3_distr_common_mmio_write(const cha= r *name, struct vcpu *v, return 1; =20 case VRANGE32(GICD_ICENABLER, GICD_ICENABLERN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ICENABLER, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 1, reg, DABT_WORD, GICD_ICENAB= LER, + GICD_ICENABLERnE); if ( rank =3D=3D NULL ) goto write_ignore; vgic_lock_rank(v, rank, flags); tr =3D rank->ienable; @@ -808,8 +855,10 @@ static int __vgic_v3_distr_common_mmio_write(const cha= r *name, struct vcpu *v, return 1; =20 case VRANGE32(GICD_ISPENDR, GICD_ISPENDRN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ISPENDR, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 1, reg, DABT_WORD, GICD_ISPEND= R, + GICD_ISPENDRnE); if ( rank =3D=3D NULL ) goto write_ignore; =20 vgic_set_irqs_pending(v, r, rank->index); @@ -817,8 +866,10 @@ static int __vgic_v3_distr_common_mmio_write(const cha= r *name, struct vcpu *v, return 1; =20 case VRANGE32(GICD_ICPENDR, GICD_ICPENDRN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 1, reg - GICD_ICPENDR, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 1, reg, DABT_WORD, GICD_ICPEND= R, + GICD_ICPENDRnE); if ( rank =3D=3D NULL ) goto write_ignore; =20 vgic_check_inflight_irqs_pending(v, rank->index, r); @@ -826,28 +877,42 @@ static int __vgic_v3_distr_common_mmio_write(const ch= ar *name, struct vcpu *v, goto write_ignore; =20 case VRANGE32(GICD_ISACTIVER, GICD_ISACTIVERN): + 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_ISACTIVER); + if ( reg < GICD_ISACTIVERnE ) + printk(XENLOG_G_ERR + "%pv: %s: unhandled word write %#"PRIregister" to ISACT= IVER%d\n", + v, name, r, reg - GICD_ISACTIVER); + else + printk(XENLOG_G_ERR + "%pv: %s: unhandled word write %#"PRIregister" to ISACT= IVER%dE\n", + v, name, r, reg - GICD_ISACTIVERnE); return 0; =20 case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN): - printk(XENLOG_G_ERR - "%pv: %s: unhandled word write %#"PRIregister" to ICACTIVER= %d\n", - v, name, r, reg - GICD_ICACTIVER); + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + if ( reg < GICD_ICACTIVERnE ) + printk(XENLOG_G_ERR + "%pv: %s: unhandled word write %#"PRIregister" to ICACT= IVER%d\n", + v, name, r, reg - GICD_ICACTIVER); + else + printk(XENLOG_G_ERR + "%pv: %s: unhandled word write %#"PRIregister" to ICACT= IVER%dE\n", + v, name, r, reg - GICD_ICACTIVERnE); goto write_ignore_32; =20 case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): { - uint32_t *ipriorityr, priority; + uint32_t *ipriorityr, priority, offset; =20 if ( dabt.size !=3D DABT_BYTE && dabt.size !=3D DABT_WORD ) goto b= ad_width; - rank =3D vgic_rank_offset(v, 8, reg - GICD_IPRIORITYR, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 8, reg, DABT_WORD, GICD_IPRIOR= ITYR, + GICD_IPRIORITYRnE); if ( rank =3D=3D NULL ) goto write_ignore; + offset =3D vgic_get_reg_offset(reg, GICD_IPRIORITYR, GICD_IPRIORIT= YRnE); vgic_lock_rank(v, rank, flags); - ipriorityr =3D &rank->ipriorityr[REG_RANK_INDEX(8, reg - GICD_IPRI= ORITYR, - DABT_WORD)]; + ipriorityr =3D &rank->ipriorityr[REG_RANK_INDEX(8, offset, DABT_WO= RD)]; priority =3D ACCESS_ONCE(*ipriorityr); vreg_reg32_update(&priority, r, info); ACCESS_ONCE(*ipriorityr) =3D priority; @@ -859,17 +924,23 @@ static int __vgic_v3_distr_common_mmio_write(const ch= ar *name, struct vcpu *v, goto write_ignore_32; =20 case VRANGE32(GICD_ICFGR + 4, GICD_ICFGRN): /* PPI + SPIs */ + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + { + uint32_t offset; + /* ICFGR1 for PPI's, which is implementation defined if ICFGR1 is programmable or not. We chose to program */ if ( dabt.size !=3D DABT_WORD ) goto bad_width; - rank =3D vgic_rank_offset(v, 2, reg - GICD_ICFGR, DABT_WORD); + rank =3D vgic_common_rank_offset(v, 2, reg, DABT_WORD, GICD_ICFGR, + GICD_ICFGRnE); if ( rank =3D=3D NULL ) goto write_ignore; + offset =3D vgic_get_reg_offset(reg, GICD_ICFGR, GICD_ICFGRnE); vgic_lock_rank(v, rank, flags); - vreg_reg32_update(&rank->icfg[REG_RANK_INDEX(2, reg - GICD_ICFGR, - DABT_WORD)], + vreg_reg32_update(&rank->icfg[REG_RANK_INDEX(2, offset, DABT_WORD)= ], r, info); vgic_unlock_rank(v, rank, flags); return 1; + } =20 default: printk(XENLOG_G_ERR @@ -1129,6 +1200,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 +1275,16 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, m= mio_info_t *info, case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): case VRANGE32(GICD_ICFGR, GICD_ICFGRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): /* * Above all register are common with GICR and GICD * Manage in common @@ -1201,6 +1292,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mm= io_info_t *info, return __vgic_v3_distr_common_mmio_read("vGICD", v, info, gicd_reg= , r); =20 case VRANGE32(GICD_NSACR, GICD_NSACRN): + case VRANGE32(GICD_NSACRnE, GICD_NSACRnEN): /* We do not implement security extensions for guests, read zero */ goto read_as_zero_32; =20 @@ -1216,27 +1308,30 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, = mmio_info_t *info, /* Replaced with GICR_ISPENDR0. So ignore write */ goto read_as_zero_32; =20 - case VRANGE32(0x0F30, 0x60FC): + case VRANGE32(0x0F30, 0x0FFC): goto read_reserved; =20 case VRANGE64(GICD_IROUTER32, GICD_IROUTER1019): + case VRANGE64(GICD_IROUTERnE, GICD_IROUTERnEN): { uint64_t irouter; + uint32_t offset; =20 if ( !vgic_reg64_check_access(dabt) ) goto bad_width; - rank =3D vgic_rank_offset(v, 64, gicd_reg - GICD_IROUTER, - DABT_DOUBLE_WORD); + rank =3D vgic_common_rank_offset(v, 64, gicd_reg, DABT_DOUBLE_WORD, + GICD_IROUTER, GICD_IROUTERnE); if ( rank =3D=3D NULL ) goto read_as_zero; + offset =3D vgic_get_reg_offset(gicd_reg, GICD_IROUTER, GICD_IROUTE= RnE); vgic_lock_rank(v, rank, flags); - irouter =3D vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTER); + irouter =3D vgic_fetch_irouter(rank, offset); vgic_unlock_rank(v, rank, flags); =20 *r =3D vreg_reg64_extract(irouter, info); =20 return 1; } - - case VRANGE32(0x7FE0, 0xBFFC): + case VRANGE32(0x3700, 0x60FC): + case VRANGE32(0xA004, 0xBFFC): goto read_reserved; =20 case VRANGE32(0xC000, 0xFFCC): @@ -1382,12 +1477,23 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v,= mmio_info_t *info, case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): case VRANGE32(GICD_ICFGR, GICD_ICFGRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): /* Above registers are common with GICR and GICD * Manage in common */ return __vgic_v3_distr_common_mmio_write("vGICD", v, info, gicd_reg, r); =20 case VRANGE32(GICD_NSACR, GICD_NSACRN): + case VRANGE32(GICD_NSACRnE, GICD_NSACRnEN): /* We do not implement security extensions for guests, write ignor= e */ goto write_ignore_32; =20 @@ -1405,26 +1511,35 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v,= mmio_info_t *info, if ( dabt.size !=3D DABT_WORD ) goto bad_width; return 0; =20 - case VRANGE32(0x0F30, 0x60FC): + case VRANGE32(0x0F30, 0x0FFC): goto write_reserved; =20 case VRANGE64(GICD_IROUTER32, GICD_IROUTER1019): + case VRANGE64(GICD_IROUTERnE, GICD_IROUTERnEN): { uint64_t irouter; + unsigned int offset, virq; =20 if ( !vgic_reg64_check_access(dabt) ) goto bad_width; - rank =3D vgic_rank_offset(v, 64, gicd_reg - GICD_IROUTER, - DABT_DOUBLE_WORD); + rank =3D vgic_common_rank_offset(v, 64, gicd_reg, DABT_DOUBLE_WORD, + GICD_IROUTER, GICD_IROUTERnE); if ( rank =3D=3D NULL ) goto write_ignore; + offset =3D vgic_get_reg_offset(gicd_reg, GICD_IROUTER, GICD_IROUTE= RnE); vgic_lock_rank(v, rank, flags); - irouter =3D vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTER); + irouter =3D vgic_fetch_irouter(rank, offset); vreg_reg64_update(&irouter, r, info); - vgic_store_irouter(v->domain, rank, gicd_reg - GICD_IROUTER, irout= er); + /* There is 1 vIRQ per IROUTER */ + if ( gicd_reg < GICD_IROUTERnE ) + virq =3D offset / NR_BYTES_PER_IROUTER; + else + virq =3D espi_idx_to_intid(offset / NR_BYTES_PER_IROUTER); + vgic_store_irouter(v->domain, rank, virq, irouter); vgic_unlock_rank(v, rank, flags); return 1; } =20 - case VRANGE32(0x7FE0, 0xBFFC): + case VRANGE32(0x3700, 0x60FC): + case VRANGE32(0xA004, 0xBFFC): goto write_reserved; =20 case VRANGE32(0xC000, 0xFFCC): diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index eb22de6aa6..3ebdf9953f 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -170,6 +170,18 @@ int domain_vgic_register(struct domain *d, unsigned in= t *mmio_count) } =20 #ifdef CONFIG_GICV3_ESPI +/* + * The function behavior is the same as for regular SPIs (vgic_rank_offset= ), + * but it operates with extended SPI ranks. + */ +struct vgic_irq_rank *vgic_ext_rank_offset(struct vcpu *v, unsigned int b, + unsigned int n, unsigned int s) +{ + unsigned int rank =3D REG_RANK_NR(b, (n >> s)); + + return vgic_get_rank(v, rank + EXT_RANK_MIN); +} + static unsigned int vgic_num_spi_lines(struct domain *d) { return d->arch.vgic.nr_spis + d->arch.vgic.nr_espis; @@ -210,6 +222,16 @@ static unsigned int vgic_num_spi_lines(struct domain *= d) return d->arch.vgic.nr_spis; } =20 +/* + * It is expected that, in the case of CONFIG_GICV3_ESPI=3Dn, the function= will + * return NULL. In this scenario, mmio_read/mmio_write will be treated as + * RAZ/WI, as expected. + */ +struct vgic_irq_rank *vgic_ext_rank_offset(struct vcpu *v, unsigned int b, + unsigned int n, unsigned int s) +{ + return NULL; +} #endif =20 static unsigned int vgic_num_alloc_irqs(struct domain *d) --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757413477; cv=pass; d=zohomail.com; s=zohoarc; b=ObrekYZ3R/jtd2YPOSf0UrKwKO5w5A5rHsjMETyxi87VIQI1NksLVbgI2ScV8gN+5AyVZRNgRNuvwdvYy82v4mKh4B/d2i82aNBdtczcqt4uvNSD4rwTn8JkabLsOlqbeBA7d1T9LfuNM3LGAowF+2ApYBj9yFOcgMV86heVM3s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757413477; 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=a6bbvzsVUEc+kw99O4LcZ2YuLUneXWZV+PMGOFt5Akg=; b=fRsVMEiKRtuqVq1RrtO9YgZ/VvgIKH+luHrKEArGYDbFJvq2dSPRxbB8vsQONd59dh7NGNCMF+ESrPv4DZC0RRQkhi+kutpqaskKkTZ7s6bGFiuW6bBaSbazzWva8ziAfuS2OxSeE9Eg2HxNw/YRufReicPRys4GoEB2/346hW4= 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 1757413477512355.9837149828528; Tue, 9 Sep 2025 03:24:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116313.1462681 (Exim 4.92) (envelope-from ) id 1uvvWT-0003Ct-Qx; Tue, 09 Sep 2025 10:24:25 +0000 Received: by outflank-mailman (output) from mailman id 1116313.1462681; Tue, 09 Sep 2025 10:24:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvWT-0003Cm-Nw; Tue, 09 Sep 2025 10:24:25 +0000 Received: by outflank-mailman (input) for mailman id 1116313; Tue, 09 Sep 2025 10:24:24 +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 1uvvIG-0001My-0q for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:44 +0000 Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c207::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 1a9ebc25-8d65-11f0-9d13-b5c5bf9af7f9; Tue, 09 Sep 2025 12:09:42 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09:36 +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.9094.021; Tue, 9 Sep 2025 10:09:35 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 1a9ebc25-8d65-11f0-9d13-b5c5bf9af7f9 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MT2QIuY4zkVz+rPLhRq9WWFVBhKzFEUq8oPdcrFO+gnrWBzV6j/u3pnn0RqHg/uoX0ic2pSnRbViB0e3CuKjqmzQV4KWOeG0NEfaXbmX8ipKTJOJlBlIoRX3dKFgA1if5WGpypoQIdDkJhhhf4GFFctr2oAAaf2stpG9X+fa22hpI5qhj41W064DSQMn3gTqeGd/K+Clc4r0ZrslcW5urRT+glFK2wbfCH4mYf0RGmHtxGvFJIkvUepUzQ036JClJwLsCYUxFK2VSwmjIkJj1n5YevEbOtG3iSRQaBCIk7Qx5JeIAihOqeyoxNbjzW2mMe2OYoAKzGVGIro3sK+PHQ== 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=a6bbvzsVUEc+kw99O4LcZ2YuLUneXWZV+PMGOFt5Akg=; b=IAFnHISyt+/5FLLj3iNrSsV+198JiIj6D3tFtpOVy1o6hyUo9MFKOycIpR2Z+3UkKhgzHM5zqArSH85Jw8aJkdtzmAsMyt2OqVmXXKew88nm/webnd5gd6PAG1CvgOjlzioCfzdeuEEeGzVRA1fg012ISJ6ypEhhm/RLAcX3QRPFFOyLutr7WfZKI4sRf6Pd5qf6hICdQMDEKPy9P8SRQ/M1h5mp2gHL7/q46N8a7nMRL/FH7R7wJ+SDwhEsOOiDN8drS/yR1JquscDYcCPjn8c8XR6h8VFssvgqgyouLt+I1Hrxb2RSkvXl8sziYA1s2512+NWbUQqkqgSYjFXyGA== 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=a6bbvzsVUEc+kw99O4LcZ2YuLUneXWZV+PMGOFt5Akg=; b=mxNcNuhcKlxKCbgB3urZFZy5SWUhg/c8C2IAK5PcEEXKGaRtPn6/wt1xO+H0JUbwLsqpC1O8PkLiY4xhI9rNCCXhx+dYK/HWmWcSnJisURw5D78nhb8mlFIi2pOmTiQMbApnu5drBTwSTvZhfIG9Eys4EVwAtQMyJ1jcTg7n4xeOXR2YLLplU7rdUVR+H/STZSbatrci/0fyjiwkQFixi6CI+wfSAccpAoBFG6LoBE5LfRDs1+pMx/BztgiTFQsK3lGxBmDxas8TlklCcbtisL6ChUaib0PvjdEVuOK1HnIFQ8YV49qx+x8hWwk7bE1vIkPVwjXk4kF0XU8/B8A/kQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Anthony PERARD Subject: [PATCH v8 11/12] doc/man: update description for nr_spis with eSPI Thread-Topic: [PATCH v8 11/12] doc/man: update description for nr_spis with eSPI Thread-Index: AQHcIXHYUoPCk20zLE631w+3FsPjLA== Date: Tue, 9 Sep 2025 10:09:35 +0000 Message-ID: <06fa3e1c3e6cb938df68e1eeda4c20e7cecb2797.1757412099.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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: 5218fcfb-53c6-4ca8-c4f9-08ddef88fac8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?8jHtXvTPLrAi5yQyx7UQileMi1VyFhAUpoDx/0STJW2q8q70mxeirfW1qu?= =?iso-8859-1?Q?6pQYfMp/OFDhFC3FAIC3BfL0k82oRMv4uOfVYt7RIMTiaLrx/N+xgZ3XED?= =?iso-8859-1?Q?iQf7ihFWoAFhDqR6Gl2USIlTrLdxUSJ8bZfT4qRc+l+5f5ia/3HhJl+qUH?= =?iso-8859-1?Q?WziQPLg8QdtwhbnCK6S/JOEPlUNjNbPQHOIu/M67MXI8R/G1OvTSmD4YoT?= =?iso-8859-1?Q?kOsbAcb75nNNQ9lb4Hs626ibELGqLj/zWDhziSex/6sKMltDS0JQdgwYw6?= =?iso-8859-1?Q?UAxi4d6bbqPZWGavun951Iz1FLNVssucdDXlYJAufCKwjJYgIG7VgDUljU?= =?iso-8859-1?Q?+XoFwIU88pRt2otEpaak+InSorqOJITaj1gseRHKVhUZzA22msmLVFoDwK?= =?iso-8859-1?Q?244fdXN8DxtjgtHjJ8Gtr4Tgc2HkWkZmq2B1Q5TCjUg5yMosyNhXtWlsQO?= =?iso-8859-1?Q?vRI8ETDTWEot12zJt9bmR3q874y1U2LTz7n3pOA1la+l732EQJFd7Bl9eq?= =?iso-8859-1?Q?rzHrqOcBO1FeLFC6ex+u0o5MgPwIyGxo2ZP8fpjvCw7AEiHTc9Ze6OJbgx?= =?iso-8859-1?Q?kL3zVOPe58fgqBtFfDpmoBaGPR0c0ar7Y/IC/om1UudH//5cz2rZO3W5EP?= =?iso-8859-1?Q?HzILAT0D5R3vWMRvYXq5IY/IVUfsFmUYcOCWeWhU41XuA+TjGxQZBGEv9q?= =?iso-8859-1?Q?ISwGOn4blG5jOtY+bjaU1HZaeOLoSBHPYAvNsYmeHcu6Tjm4nXE88nIUtS?= =?iso-8859-1?Q?E358Z1OpwOh5v8NxSZP+COY47lITXkCp6Rm8l0keI6nZBcAG5wXTyb719Q?= =?iso-8859-1?Q?7y/85GBVI0Y3TV7b0fHmmLNA9V9nq757oXSk60GPVTTt83kMK8MFKJOQcR?= =?iso-8859-1?Q?0TKyj8hN31WrpNon+Grw0STXNv59EQO9dXpbanLuLwDzsaFyMf1Fog7XM+?= =?iso-8859-1?Q?HeqqHwxohyOFvRRVeH/qg2vjkw2CRfw+Ns7AWbM+27iWnXparqXkfnIUav?= =?iso-8859-1?Q?wWQ9BoadWSy90HFIxZvBX0M8aOht5KRnIA5UCdDeHTTkXaca+3qO5ZQxYs?= =?iso-8859-1?Q?TkAGDhZWc6G39nMbdeQK06vaKmUWk4BTFch2NKI27HIxdaf3acroJXpRwp?= =?iso-8859-1?Q?7O9WjQce5/N2n6Gu/pGO+i/5xG6/6bbcBti4ZjOgDkQu54BNodW6PznrQq?= =?iso-8859-1?Q?ek5sFayH+EAtmEZCbP2UniCvk4tuOsiEXHloiMR+FprUQydMazt1dK08Kb?= =?iso-8859-1?Q?ho+WEcaoNvfLS3xYDcJKO94UGEF6l5g13aq5moz30I9YTm5fDpmT6U6UFN?= =?iso-8859-1?Q?U6ILqcQ2ZeafTP+xWTutMnSHwaR9MsKAIvIVzuaPHEr/YbfTbRkVx1OrvF?= =?iso-8859-1?Q?DFtfAV77Qk7x4ktO0AmmHJNMQ79ZEVAg8JTovJimJUwc7zVjo5xLmpCaAd?= =?iso-8859-1?Q?P505RCdSVBcAZ6MYoWRPBji3kqIzGSYBUU2X+c4Oo2v1KzsbgV4SPY3v/j?= =?iso-8859-1?Q?Bi+E3ZfI4x5q+AIdf80G/Ub7ukQcTp4jfhfxYwNbXcdjpSDLnEmpSDjpW2?= =?iso-8859-1?Q?UV9rd8Y=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?asH6YLO914yDlNBkBFr87NZMo9luCkEVAqOB8CQ+Rz1SkNxUoRWYMXQ4z+?= =?iso-8859-1?Q?e0tx1DOFeHfiy7Cl2E5hKIrDGsEeNHMOHFb6xJ2b6jSWbNZG9xW7wp3c5e?= =?iso-8859-1?Q?B0dDzG2xb5DBUTy/MiXrV+YpdctDucWDpJWBC1p0JBS0RkrBUKKDTR98hJ?= =?iso-8859-1?Q?Jbb2bVIDyDRLKiyjXcQiHMobAX7mxOkIlk/vlTjFtyfjfV4rgm36+MFsBy?= =?iso-8859-1?Q?csZleBjPvudOwErYAYao3Eved2P/Qo0F084Wbc7AEY1f/TfCPXF9S2rLdS?= =?iso-8859-1?Q?6tfWyEfv6li2Ts+Dy/L6f6chzGkOAM3JloBlXS2w/isJUQOep01hpI8mkI?= =?iso-8859-1?Q?LHafd6F3/1NWjk0Kdo8xC3m3RC/ygZFR3QQd/LiT2mHyqRRqx2R0d8YuE0?= =?iso-8859-1?Q?LAZHn/kKBdke1ot+ysmnG/C46Z/9NMkIgBJDdKlklWArd9W+BvTE+uqeBj?= =?iso-8859-1?Q?1xU1V/HMzv/4vqU31kuAG0UgJ66rgCD3onFcyk5iGNX/mUDJux4NJCVHUC?= =?iso-8859-1?Q?hWFZMjwZR1js3Gulpni7Gon9l8OyKPAzPf2Sz9nQ88T1Zt12JtQKlDXA2i?= =?iso-8859-1?Q?nv4W4LMSBvPRumwhsByK4zfW9GqT6fAoJ/iTuSDQJTs38Et8bhlPlb6GMO?= =?iso-8859-1?Q?FEMrEMGVofBfvpx7DNHfl6dc25C2n8iJIurFdmiNTNTQ/UfoTe251XKAu9?= =?iso-8859-1?Q?Vm9kNx2FmL3aatzD67rqO/Tb1O/ZmGt8drBFp5buRaGOeti1MQ+3H4SyvO?= =?iso-8859-1?Q?C27yBSyGYCZcvWs+lMilTT9nWcShjo+s1nN0Qd6ACcPg23HhNtZAh5Wb+B?= =?iso-8859-1?Q?1B+5t2/ceGfv5xuW6ankZwtDlWiyPAB6tHKseEq2HAbohlHr5GR6Acl70w?= =?iso-8859-1?Q?t3IskRdLc9qk68D8FN92g1vVsoa1wxRd6JYlBJgSUfBcplcYnOHdvRUoW0?= =?iso-8859-1?Q?B/ieVxzSH1BH/K/7RLlbgXCFpxB/o3xNMhoZBtnXG3zLtEQ06mKLA63rXn?= =?iso-8859-1?Q?l0K3un+MAD6T/BDgPZ2EldoL64h7ZTENQ0YLsOxINB0WgxdFM8cmKijANc?= =?iso-8859-1?Q?p4myz2hK6DMckGthPDJCkVYYCNJGt3xTWQgWe8JQfidZbtC4nvwfITQjkq?= =?iso-8859-1?Q?BOzMRz3QsNYesfEwn554zDFPB+detYqB8u42xma0eRW9V4/5MOy6doHGWN?= =?iso-8859-1?Q?X6LOu1LDZlLVq3yFCtd4ub8NlVO4/0p2fHXup1ddQtTr5FCkyIFpbwyz8Z?= =?iso-8859-1?Q?57gMjry7sL+p2JBgshiu1r2cvgrkykHXhpBHuK3ut1L6cQskf8J3MWSLmO?= =?iso-8859-1?Q?HEd8Ds1ZeiFswH8tCIwtgI+D1f4/pXvMG0c+Z6eAcydorqcQl7THaCAcPn?= =?iso-8859-1?Q?aAcoP3T6iB9fdpA9jx6xToGs/c0sWe58chNJ+aQLF5P2+yjHXi5d8B/KId?= =?iso-8859-1?Q?xqhUvDknpk+WGn74odqGM7NQmN1ag9rxyLJu0P9cJWfR1nuyhoIU9EvF1d?= =?iso-8859-1?Q?IPsiu38OGW1NXZ2Svsnwpp8ciU6dpnE1OWFfWobqf04zJZIHfF5nQlZinH?= =?iso-8859-1?Q?eNZR4ZV/klo7tWKmOnDCxhjP21agF4vx9grxtwR+/mK+ntbLaQvnuLS5hy?= =?iso-8859-1?Q?pqgMahkjHoclXyjG3yILjXSMThAtBqaLv8+EL870x9PAdIlsT+BntiAzIG?= =?iso-8859-1?Q?78hd59+NhAx2yd7wOE0=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: 5218fcfb-53c6-4ca8-c4f9-08ddef88fac8 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:35.8458 (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: d1Vq5qPbVG7KieHDkr2uEGH5Q6gd4MLUW2ZiQC4qQV0Z0pXZEIctQoViO9Vqm8qDG29rsss8FbtKZt52t+Q5rCAI9Gwgz225amh9J2wQyiM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757413478939116600 Content-Type: text/plain; charset="utf-8" Since eSPI support has been introduced, update the documentation with the appropriate description. Signed-off-by: Leonid Komarianskyi --- The discussion is ongoing and can be addressed in V5. Clarification is needed from the maintainers. Link: - https://lore.kernel.org/xen-devel/87y0r4z717.fsf@epam.com/ Changes in V8: - no changes Changes in V7: - no changes Changes in V6: - no changes Changes in V5: - no changes Changes in V4: - introduced this patch --- docs/man/xl.cfg.5.pod.in | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in index 5362fb0e9a..292ab10331 100644 --- a/docs/man/xl.cfg.5.pod.in +++ b/docs/man/xl.cfg.5.pod.in @@ -3072,11 +3072,14 @@ interval of colors (such as "0-4"). =3Ditem B =20 An optional integer parameter specifying the number of SPIs (Shared -Peripheral Interrupts) to allocate for the domain. Max is 960 SPIs. If -the `nr_spis` parameter is not specified, the value calculated by the tool= stack -will be used for the domain. Otherwise, the value specified by the `nr_spi= s` -parameter will be used. The number of SPIs should match the highest interr= upt -ID that will be assigned to the domain. +Peripheral Interrupts) to allocate for the domain. Max is 960 for regular = SPIs +or 5088 for eSPIs (Extended SPIs). The eSPIs includes an additional 1024 S= PIs +from the eSPI range (4096 to 5119) if the hardware supports extended SPIs +(GICv3.1+) and CONFIG_GICV3_ESPI is enabled. If the `nr_spis` parameter is= not +specified, the value calculated by the toolstack will be used for the doma= in. +Otherwise, the value specified by the `nr_spis` parameter will be used. The +number of SPIs should match the highest interrupt ID that will be assigned= to +the domain. =20 =3Ditem B =20 --=20 2.34.1 From nobody Sun Sep 14 06:29:26 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=1757413191; cv=pass; d=zohomail.com; s=zohoarc; b=GGlEyAB/nrzeC192K1HoAzKsRFGyy4ikOPGFplL6McqIEKK4Hc7ylvSWepDywZwK/z41uezNpgE/W/WoQxYMs1y+jQsrgCg7PhlBXR0pZfpJVR7OVXtSkfSuBE/dPbgbgIfBxKdSQnYlpP0MyuD9T/AxBCa+RaBzqZ6LNX7NUfE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757413191; 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=a7fQLCSN2Xg5hczty36vhSzRR6D7dPrajIYlhliCz/g=; b=P51xQhMl0OjvefgXMgXnk2CWRdJseX5J+P5euEfSQtma+ZxC8oxafoZ2ofmcnTyoqVnXy201s1M/+VjS1V0GJ/Orj5C0mEjaODrvZ/VASdLw+E/CYscjuGhJJ7g8XBNOcn7oVxVdBUlOGdFf6Z14lXbVJ1RY3tjxdUovMnvdDOo= 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 1757413191202960.9270993801563; Tue, 9 Sep 2025 03:19:51 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1116242.1462632 (Exim 4.92) (envelope-from ) id 1uvvRq-0007eV-2M; Tue, 09 Sep 2025 10:19:38 +0000 Received: by outflank-mailman (output) from mailman id 1116242.1462632; Tue, 09 Sep 2025 10:19:38 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uvvRp-0007eO-Up; Tue, 09 Sep 2025 10:19:37 +0000 Received: by outflank-mailman (input) for mailman id 1116242; Tue, 09 Sep 2025 10:19: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 1uvvII-0000yD-JL for xen-devel@lists.xenproject.org; Tue, 09 Sep 2025 10:09:46 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 1bc6b1a4-8d65-11f0-9809-7dc792cee155; Tue, 09 Sep 2025 12:09:45 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by DU4PR03MB10645.eurprd03.prod.outlook.com (2603:10a6:10:58f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Tue, 9 Sep 2025 10:09:39 +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.9094.021; Tue, 9 Sep 2025 10:09:39 +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: 1bc6b1a4-8d65-11f0-9809-7dc792cee155 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JArrhoqG+j/InGzMl+jRgyENeuOXAoxBjzdKJ9j6k1KD3Nrq5/U2bcWqdO9ouhnpskcie19X9lfkKCD8sLMYqYo2pGeAo761OK3FNB3VrJeyowMxMNLR/JIHNoLVBnRq0qu9LAOzc/n5D0ILf+uK+NoJiiHsr0MPvxMcljkP7IXSYnBBS0m0VCn5f6UDGKDIJA7jsv4fwxczoouOduFVQTo5sQON6JD6jBTpbbLM8Dw94WNiWDxRjJ8Cb+gGqgNlw1TZikwEANoAAWt5515N15aoGcKyzWVlb1WjrZryvOUHmDTSByFhlDxjdzlQpcgFFC0C2WeadaWH2rnOugIj4A== 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=a7fQLCSN2Xg5hczty36vhSzRR6D7dPrajIYlhliCz/g=; b=PTO8uXCjQeAjUXyW/vSA6+TpowNhsrhVSxMeX883Sm5x9Jb1BtqDQOafdudehGndiO4hYNThUawdo4jniiE9zzS1LtHM5ccx7njNeF9CR70IfoowF2tTFzol3G9GQMtz3wh0llcKgEFKGAp6EJERqE/a1M1YGskmf7e4SZdD3HzqkByOu1HVr9PMQXiBeZXb5yaxBF8t4cVycEbww7r2EwzbHPjFjWEuzpJb6nbzwGJNajoM6aERijmAkFHVdToGjti46q9z4fnmUdfOgak2vc7Ge4VrGZR7rElYqHFCnwvDnEAkv4cVGKaCbekffOnvekFl6HV9cPt5kzhxu1PO3A== 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=a7fQLCSN2Xg5hczty36vhSzRR6D7dPrajIYlhliCz/g=; b=fm2pDHOmaZUgVL/Nd1EhxOcDq4BQPeS+sdbJeqrU391ZkF5jnO4lzXxfUiZR4ADV3VJP/32My0NVuiH5l+GNF2GsBcUmAaoNaGR4iKn3KlJoODQqaCLlIeLwpCF0Tq4TVfbyPdik18SODrODzuayTadArgkSJ5u7HMvHIUzkxjcPaOwqCT5c4CIfzeHFjrYFTTGXpo/AZ9koEogjICEEM6fzTh2Ki0k+hABJKA63XcDtZ3ABaT7GW2hL1+Ly/iqM75Sloac6whFYP6bDFEQs/1ugGazLMfBc4qam/tW7dYojq+GjdFy8eqqqZpMAqRsohDfnJ89UZRwSMb0+HeyD9Q== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Oleksii Kurochko , Community Manager Subject: [PATCH v8 12/12] CHANGELOG.md: add mention of GICv3.1 eSPI support Thread-Topic: [PATCH v8 12/12] CHANGELOG.md: add mention of GICv3.1 eSPI support Thread-Index: AQHcIXHa6pa5FlfG8EaEsm5Ttfdaow== Date: Tue, 9 Sep 2025 10:09:39 +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_|DU4PR03MB10645:EE_ x-ms-office365-filtering-correlation-id: 4e55f229-bcb5-435c-868d-08ddef88fcc3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700021; x-microsoft-antispam-message-info: =?iso-8859-1?Q?XMlbbsjYdEhkQmIm76HKPFLZjUGZvXf/KCkIQ/toYIULpV2dAdNT/i95yk?= =?iso-8859-1?Q?RZzuz50S/EqNSZR/ghXUWMUTV+Utl5vpNwBurUPT2arxkiQpZ7Xvgw+5QT?= =?iso-8859-1?Q?XmPNq7AHbWdNJr15GJX2zLpF8ECnePkwVdTrRbwlrr7yPi+tUhJGNt2JQe?= =?iso-8859-1?Q?z1aPdo4WwsXRJ9Trr3z05gV3vVlm/mraSTqYzj3iNB6rkBtHgt742iJO5+?= =?iso-8859-1?Q?Gr2P0O0snW9FOv+/TgSmLaea8u2e1uJVpCUhoHk4JIxoIUgg+D37isxDuO?= =?iso-8859-1?Q?QU/q489rr2um/SYjvlOc15z44oHRkrBnp/yrls1IWmfwkWhEV0HgZmIUbg?= =?iso-8859-1?Q?CAZOaleOcvmPe86zPE51XmGMX13yXoQ8eqTwACwBFH8XqyRD+kK8DjBsCs?= =?iso-8859-1?Q?bm3WuZ9mlWZR75lvCaoWQ58Mw2XH037P1kC5m/e+sm2PLX86nN9Iorc+R0?= =?iso-8859-1?Q?af/cCwhsKZIDryZSURmSCNLQPjq6OEkFr0nQFbPQ6auqp/gWkyt+NwG99L?= =?iso-8859-1?Q?jmSzL7yZIKHrsZbBFcw1ycv2nAFgI0qctEqynJln3+ZG7pkx1pvYWqoetV?= =?iso-8859-1?Q?ZkNvU+PHJdk1Vc8V4L55IYp5NS068xcV0dzTyh5WWkJhFMyxOAqPZZNwyf?= =?iso-8859-1?Q?fJ4gyzjK+Kv3kPQMq3OepkNe/oxWO46pg41m+nUiPHYUQ9pPdWMZDMK17X?= =?iso-8859-1?Q?JISTawS9zfd8bCLWKfrlbC18nEyCnr0JP0KhEbOYiaqTIULct1inyX1/r0?= =?iso-8859-1?Q?8tXdG5FVrPDglXVmuDzywhjdd+E747fAH795f5jvruKxsCCBGjpIusHfE+?= =?iso-8859-1?Q?ni0h9CiAh4U0JCrEXMFlCQ9lwibPej5a7cFpAn/d+oMcgFAai7PncU6JKp?= =?iso-8859-1?Q?xkgumRPsUsfxrnL5YPbcobWAV1eBltEcRqSRW5va8Hg5fVGzDvdnXRziU8?= =?iso-8859-1?Q?mt39fUsyM1KjOTKM/PK2b5qbmNV+RZtKVzz/+bj3/X39YaHMWYxPxkzHF/?= =?iso-8859-1?Q?0YLrpZ6uhpSdMxdgvPgdiQFQsFQLMefcvVHh/y4q42qm7vSSddmoygV1QF?= =?iso-8859-1?Q?JsJKBBqA6VIbzwhQG24xNHFhEWN2IzjWDwDORqkqi/wXe3MVuFSlbubY+H?= =?iso-8859-1?Q?n1GFwOfFVbzTeC5G2ra6I4igVMyfBM6wpOtLXAjIBlicYyqLETM8+yCpWx?= =?iso-8859-1?Q?sNfdr97vt2EetGkcWZsoFFdaIUrq9vxjmOuUdOikXAxp3tXa3UpU1tTqxr?= =?iso-8859-1?Q?xxf04eO64iN6sNtGlwu2jiTuymU9mouNkrdHE2Yclo0zaLDqo5RgeizATj?= =?iso-8859-1?Q?lO2TtbJs0fey6+N8ilD18yoPQih7uSMzkDAwxR5tmb8TzoCZa0R8oMFygm?= =?iso-8859-1?Q?hLbtdr1NN9U/GcMq/2/SDmgaoe1TfSXGPt9s1fqjXzcuUm6QEOq6E5uoom?= =?iso-8859-1?Q?Y6E+Bb6K1cA3MXJEa5v3z3RnMyveOmmQ/w4rExHRnApxNI6BrqpEztlDd/?= =?iso-8859-1?Q?A=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)(366016)(1800799024)(376014)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?qQ7wJ23txBcY7+Ek+PIXSE3GeZetM1SxCoCBSrIADRAMmlvS9Q75kszJm0?= =?iso-8859-1?Q?O0PDqDh4pS4VtI6xchWwvDk8G+zamfj6MyYj7oBbDOTkb0wiKnedd1SHB4?= =?iso-8859-1?Q?6t5WWgDcAnr6Qwxt8pYrOadP0g91rB39FYko/b4yrMEeTzCvnapkeXWTAZ?= =?iso-8859-1?Q?DHKF4P45M4VnfwCdS2eiXDzuK2QWJWysIZdB4wqpjLzyaV9kUASqTkAEEN?= =?iso-8859-1?Q?qRCZ/Bh4SsN8lgF+rpAWo85oJkHCD6NML9tUJYFB6cmPVBkv1Dw9+SDgoW?= =?iso-8859-1?Q?lq2O0k6dlwfBDD+wWdkVqpxnBZu4Cy6tIQxGzg5uUKk9D420K0fIRlXafh?= =?iso-8859-1?Q?k0uTy9iWWw/JcaRSYqK5qXxHg3a70UjznY0EVDd67pYXY4LAMnbbma4Dr6?= =?iso-8859-1?Q?QXE73kY40TNWvtiyhWC8goQvHRA4406CczKILvp/ct1p70CWg32Yx9cCYk?= =?iso-8859-1?Q?50XbO/2pQE8cYhB1y39sDOjmoBcVYrCw/mfYWuP1Lj6HFpuoA2st/+zwkO?= =?iso-8859-1?Q?ayGJKT1SYtEPUGWbr2R5h5cIxIVggL+wNiKdKjE20msuSzm2C+jx4auMUM?= =?iso-8859-1?Q?NZyN4hWnLi0iIYqFkrNNuFF+D433GpUUkP7pMjrVhyvYPjn1tXvM0anIkY?= =?iso-8859-1?Q?kcuO5vVx/+BzjKQpwCwg5r8SjYbMScbH49jeg87rCKM4dI6mg5TNb4MhIR?= =?iso-8859-1?Q?oq0+yHxK6oOxcg4QUpkDEhjAfxomjBKjaa34sbuQ4N/IaFPI+nmC9txTe7?= =?iso-8859-1?Q?dgsJQMexknmFP2kHhncQVduvqZD/dzNPPUgmTaBis92GHdW5RjwLIzpQrf?= =?iso-8859-1?Q?n5OdfLcnWmgNBabvQt9AUHz4FkLmqESAXzaSDu0G6DVxQPriszq8kOWlQN?= =?iso-8859-1?Q?G9yBzQVXYzT4BmDMskYOOoMdval0kK+Sy5v84QPtQ0KBpcG5etU6XYfIzR?= =?iso-8859-1?Q?+k19xcV5HOqJ7lxEn9fxPujbMgBvnGOmYOXJ6zcKAk/i7eYo2Q6JIXPip0?= =?iso-8859-1?Q?fZpe3NkEASOtNjVQySBJ/P6hrNuG1NIJnrvE3n5NjhBi6bsfCPx2z+CkbR?= =?iso-8859-1?Q?ENcc0SwNJx0Unw3yq+QBhgeckHA3Gt48HfHsWo/iNie0c5Up+VEUgvvVN1?= =?iso-8859-1?Q?W7Fc6MbTDmgzzrEt4xq+mH/W45KeDT05FZuxvPBxo8DJtKmFBCQGF3DCDQ?= =?iso-8859-1?Q?3tzxgUCmCAyyjamboc1VySDlEDLzTctxQsm5O+QsRstuX1jEgqIQJRawpO?= =?iso-8859-1?Q?W6lT4Gt9JKWYXalBBtR6BrJQky9l9Jfpa4RILwVmuaz2BX9376Du3XE7p6?= =?iso-8859-1?Q?ULPqX09rTvUHZeDV2TUSRmni1X5Ajoh4gl7BrQ2/4USxmqKoKD34WoAwvu?= =?iso-8859-1?Q?ck2ggxMN7moM9C4mj6i/NdOFzzH+L7Qkpp/VD+oy0KA02Tqc2WoNEJ6gDw?= =?iso-8859-1?Q?6Xq+S4X7tVo/dh2Tj7In6QcW+GrFj6flELksrNIPFnJU3q4HTQW4ok/ULR?= =?iso-8859-1?Q?t1G0ipHU95dvkYes4gmU7cs1O58oEkIOb92LVj86qSTcib4xkrz5uKDL19?= =?iso-8859-1?Q?YimzCJXu76Z1Hili3LUVaSwxwM++D6AMr0VvHaTgN+8GLuUwOpLJN9UXF6?= =?iso-8859-1?Q?w51Z3lLS9YnhtCV7Rddqy9ZB1ERPsxxnFwZGrIriaRwi+SLyq67nim3LrZ?= =?iso-8859-1?Q?JhdrlOwAfS7PoHtW2bU=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: 4e55f229-bcb5-435c-868d-08ddef88fcc3 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Sep 2025 10:09:39.1530 (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: IPAxbgG8LYLAEkfrLssMY4+Uuwau8Z08Gmn+gV+fj5fmytmkMM2jofg2L5/5FJGG9QMPytOx15/S6wLHRnLMNhr3Us4gLyfd7lf8vSV9Er8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR03MB10645 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1757413193799124100 Content-Type: text/plain; charset="utf-8" The GICv3.1 eSPI (Extended Shared Peripheral Interrupts) range is already supported with CONFIG_GICV3_ESPI enabled, so this feature should be mentioned in CHANGELOG.md. Signed-off-by: Leonid Komarianskyi Acked-by: Oleksii Kurochko --- Changes in V8: - no changes Changes in V7: - no changes Changes in V6: - no changes Changes in V5: - extended changelog update with a brief explanation of what eSPI is - added acked-by from Oleksii Kurochko, which was received for V3: https://lore.kernel.org/xen-devel/bce5e07c-eee7-481b-a833-4d5d8bbce78f@gm= ail.com/ Changes in V4: - no changes Changes in V3: - introduced this patch --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f31ca08fe..31b4ded444 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,8 @@ The format is based on [Keep a Changelog](https://keepach= angelog.com/en/1.0.0/) =20 - On Arm: - Ability to enable stack protector + - GICv3.1 eSPI (Extended Shared Peripheral Interrupts) support for Xen + and guest domains. =20 ### Removed - On x86: --=20 2.34.1