From nobody Fri Oct 31 03:41:54 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=1756319068; cv=pass; d=zohomail.com; s=zohoarc; b=XMyUqWgJGQw8rT951jHMNeC/H9l8Fyt/NQPHpYErlvJcd5Rqkf0nKX4MJesycmNwU0choxDS12XdAnNC7BOMMaN815PYRAWkwThL5oCPDe790Cg9k/N2nOZvYw8+CWI3Sf9wd1DddhBYhDj7FPrtS7M3dqSh0fZLIL3rnybkg8g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319068; 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=rg0pipsxluNUTLAfrvU29jgR6fAYKaQkc7w6WIEy79k=; b=ZQHk4wb2lYlJgXW/mSaQyUB0kwowFDCgW69BoyIiHZnSOiiPQfoIoloTfqATFnF0DslhcgVw2E7JNdLQwmh6Cp+ObmyBb4DFEGXKKhPd1fodo/JFUETRPgua2zo1dCrHvA3tMz2rGu8DR+SxzKtwe2iTZq0PN2vS6eFMQTOGrcA= 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 1756319068608106.00048363888664; Wed, 27 Aug 2025 11:24:28 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096716.1451326 (Exim 4.92) (envelope-from ) id 1urKoZ-00070w-Ty; Wed, 27 Aug 2025 18:24:07 +0000 Received: by outflank-mailman (output) from mailman id 1096716.1451326; Wed, 27 Aug 2025 18:24: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 1urKoZ-00070p-RC; Wed, 27 Aug 2025 18:24:07 +0000 Received: by outflank-mailman (input) for mailman id 1096716; Wed, 27 Aug 2025 18:24: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 1urKoY-000703-Fw for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:06 +0000 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazlp170130006.outbound.protection.outlook.com [2a01:111:f403:c201::6]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 02b74e1f-8373-11f0-aeb2-fb57b961d000; Wed, 27 Aug 2025 20:24:05 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:01 +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.9052.014; Wed, 27 Aug 2025 18:24:01 +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: 02b74e1f-8373-11f0-aeb2-fb57b961d000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lS3DI0ZzvEijgmjtZDg6u316K/+J1b4Gs6OzU2fOSs60UBQ/0C2QTxRIKp26cux+cVnMHgDlXK48MsGtzDikV3I1JdaxCqjqcQxZOjuHqRUwdlYmt3iite0HrcHNMWayoXzmHNN0EOpi6Cea3QgvUcv6rrhcgPcuIWDHvo5jLEs1IM0+8XIp17rNaIv6AmXwT8Y7s43IggHHGRQarCU5b862Xb68JH/HBfGzKBoPYV+T8sAye+BXeuI2DhkHNSXE5T09SuYrE/6LwWdkQMLnVj7N+7cuJQ/tQ/YVfJUdBo4KlSLU7C6fEolSlu57uFOur+H8MXfPZ213SPoy/9/2rA== 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=rg0pipsxluNUTLAfrvU29jgR6fAYKaQkc7w6WIEy79k=; b=zGu9z4W9JkXU7K400NWSve/Vw9lkvgvf2ELftXJiqht+l+Y10abkUwUInKAYOG5j2B63hKSEwf3YutgQ2LNxuafC1XSxDYu6Kc1JizQ9iRMyP1O0VQyTs+UG7G/gih3QyU+pKxiJlbn/dGB3GGOIAjGC41TqzkrAs7mIGUlVknV02bzK4a868yEb5G6mhUWuPycRo9yfznf+zWPaefUWt1d+l1XXl6tVkd4DVerH7j7ocw74i1+uiaTZJah8I2RlHM/7n7GxlCPSdwGJvZMeipG7txJwUxS6NT+RHfKZDePmdltOuCE8XEECvqmTxqtUM+xuJS9G9HzNtOKu3A8PxA== 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=rg0pipsxluNUTLAfrvU29jgR6fAYKaQkc7w6WIEy79k=; b=OQK/vFaK6peWq+j6WaHRTxnIiFB3MghZ8kINLjArDnYB613AgwBJGa+rjh/mlMxYDQp59H48UQzi/05Hr+sWRwYA+vvQhGukxJhxANbRXaCJkl5UIde4Z6vEUr7UK3/DHMd8NShpCsPU3LOokcskFJJ2HGjB4j/Qxfw6vC6pZQoUmtDEPx2+p4MqSAk07x9LQxFJLl9vSkq7x3UYriF/ExjDYTJ6WBPZZJdU3MgChzUa7CZssM4Emm3wJE/7qFaY9iePUNbmbECGG4mSj5bh0S7aXKtBP3P/HKjuZ3U5dCEtfCth7XmwmGhLtUlsgV8TyNG+vszvH8qU8mT3Rd8EZw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk Subject: [PATCH v4 01/12] xen/arm: gicv3: refactor obtaining GIC addresses for common operations Thread-Topic: [PATCH v4 01/12] xen/arm: gicv3: refactor obtaining GIC addresses for common operations Thread-Index: AQHcF3/CtR1KedyUO0e9jC2sdgHn6g== Date: Wed, 27 Aug 2025 18:24:01 +0000 Message-ID: <5f511d386c7f20b09106aa0202e0989477eff498.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: bc26998e-9a49-42e4-dbe3-08dde596e560 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?Q3Nl9aedbjM/3VZ4EjNeL7nsOtr0mKtG19VCxX3rTR/qIvjJ38ze9XUsvf?= =?iso-8859-1?Q?VbO0P7Tsci+pLv+IPAX/giYZ0Mdh56Ja9dx7oHX7DrpQZsaZ0sonExKZdf?= =?iso-8859-1?Q?cJ3LnVR3Z3R3XsCq1iavYpaQ0ZpBN/86jyMdAnEfyAJiTWATklEW1K/sYZ?= =?iso-8859-1?Q?4gRxhen4CdtCT1WCvZ2H8pMhDlnMCEZ6rHCmSClLGE6ArBpkTi2nK+DDSv?= =?iso-8859-1?Q?ObMp5R6b7og8lKkG0gLkkg6l/iE8FfvatcS070D19xqTNGeOG4X0YOawIL?= =?iso-8859-1?Q?zztfgC+euVvmDkjz2rKmTpChfFmOslRSifegEKMHtk9qPWVd+y1b4OrHec?= =?iso-8859-1?Q?RBLvOdADK1lGBIVbh0Oc7ikkd7kelOXKak4qwqsi6Gu7QHLpdiMSbCrKtf?= =?iso-8859-1?Q?itd0Yi7YEisT9WBXbMA6Y5rSkKeyhOog4sjPYEcJuNyfV0JRcN29qqybhR?= =?iso-8859-1?Q?qAAb8E22hk2y1eq8vJ2P9A3br41t+VTEfahJwHUrqUw61WspKImNBqlnfN?= =?iso-8859-1?Q?hPffIftr7wyFhr2wdB3LRXY1xG3Ubz81adrw0iMampB8e3IAcpAIWbinkd?= =?iso-8859-1?Q?jvMa5t9V4tcHU/r8xAl6y1dYgFNQtLi3ofzsFV82I4MKWX8cWzVEJJy01R?= =?iso-8859-1?Q?vA6Xvl+75oSlbiwpwiUpVsyq5950cbz2F3FSbENc5/YP4C0ZC73Vhpi2O/?= =?iso-8859-1?Q?Bg6mS4PEi1JOgKba5RPR0+qo1JaH52CHntgZ9ilzFEYi7WlR1O0o8hsJIw?= =?iso-8859-1?Q?Ba9nEsaTW2ItgIoxmBO3nvnVyOy7kerujRSTVuTF+BgE5O2tLYQAetRPXj?= =?iso-8859-1?Q?ZFQzdAtTD6BUUA1zdivBtiJebWaMw9zwRAPLiiQ+A80sW2Hyj5rc7wI6Fx?= =?iso-8859-1?Q?qs9cR36EBscVyUJRMORi0LxqwunYWQXtR9XsQS1amE7cDtA3q8WU6FNrVu?= =?iso-8859-1?Q?nVEktLcORcJo5D2NSo3d3oJIVG+xYlYqDGaPA9yrwOBE/LPqE94z18fzYY?= =?iso-8859-1?Q?q+FwVeBj4LEkx4+S0Qkdr7O+G1mwF50DOPnml/PIFEDV9d28ZXhtfgD31F?= =?iso-8859-1?Q?gHZopWzTt4JvF4I7Zjumf8cRMxrJ9ZXDMhbk+ivZ5lGDrQ5mUUFFWz+yFQ?= =?iso-8859-1?Q?PKvnAfL3Puco0JBog04GWhFqcbIrzJ3uQ0PXnTQba+jEPvGR3je/69GDcX?= =?iso-8859-1?Q?Aae8U26XMmvxLm4R9DaOwxNZgv1GtV7DU3RUQCTpw2Wf1ZNM+0kLE7Oxpe?= =?iso-8859-1?Q?QiW5/fKOF8aYO35jsiaCgBLs6Q2bOXKz6pg4ZyLAn1CK5V8fAJmDy3XKlR?= =?iso-8859-1?Q?1C09onERiES3HwCrZ8K9oYIOg8geV5DC378OOKWSvb/Ife840gmrRi96Sp?= =?iso-8859-1?Q?zEHAgkZzhZ+JG5yGuU3Sjt6FQl9LrMgXhFt/9MLSYhKFs6bCQEqJBCddtN?= =?iso-8859-1?Q?E10s5eDPCnXW1mlkmEGl+D0ynkbflHwSq6QONX7HNsmWhORtv84391vtLl?= =?iso-8859-1?Q?brOVKbjjBtt7jRLFuxEB4z3H5NXgmKWm3truweuolBcw=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?UoBdPHGJM9G6NyFvE2IinF5ZFwf13gOnddbuFagXw5CmxmxZkEvhMVSC8U?= =?iso-8859-1?Q?p7m8kMzt0nmRmqBj3BXexhFdUvvxw5r9Sh5mFsoA3onxej1qaQHqjKeXgf?= =?iso-8859-1?Q?pa95qN0doPXtw9uGBZflPqLxZnb7OwpQFlR1rW4hlotpvGgn/gOmx6tYa7?= =?iso-8859-1?Q?9mInU1BSKDe5Z0q9VKNFJO+CzT1ZWxfw0GTDRO2T+pSC2hWS6m6myfKnjQ?= =?iso-8859-1?Q?SYvboIHlAdZ0tQOLvJbFX4yaPRrK+8Y/fOpLWUXbNT/H/J8aiH6+ZTmTHr?= =?iso-8859-1?Q?S0kyD4eYi6mAMGft8wt6vuTRWCV89iJowITgNccgElY0PmepEc5Nu6/aC5?= =?iso-8859-1?Q?7yTBrqv535doMFE1m7eVlAsM3WvFTA8R+8d6OiKVK6yu4/QdChX36m8tnt?= =?iso-8859-1?Q?kd0uEglBAyFaIhrOek4n/OIJiHZVhwRJ/HyGOQXQrupL1+f3lsaLUgJe9K?= =?iso-8859-1?Q?/fRHZHeFGmAmuA03ZavHlRbJS5TxyusxUR5BQLEz3ROH1zwhNAPs/Lnf1j?= =?iso-8859-1?Q?ivWvJRKM1u58pm6Lm/NXWRMj0b8cKWxgUFMKhoVZ8i0aZLq2Jr8sG96JK/?= =?iso-8859-1?Q?58YSi5cT1EFrFhd4pZucZ1YtobkGe00QurVI+hVZsEdJYExCLi99gxUEHm?= =?iso-8859-1?Q?ospZ3AmkTXJYI+7/sRc/OPTGjSR6k7GVyCp/Z9aQB7UqJw0p63O3j7xMif?= =?iso-8859-1?Q?YszWWJ76PkiTG0jtm0HfT714JmENH1uXX/S0DHD0XIlBQG/ISbapQrgZj2?= =?iso-8859-1?Q?9Iv9T5Q3nuoKD6kwTDuS+6Lh6ktisKNMvXeapGD5mZKuK2UGLNcTEO2FZa?= =?iso-8859-1?Q?arHddP9hoe07dyiS+9KOxaj5+KDCimaMQwZlcRNwb2NfmIiYOzW72MEFCi?= =?iso-8859-1?Q?C/FjoU0G+3CYeXF+RDuq5n4jEiNpPwP3ghWk3KMB/w085TljSyfrhO/wbz?= =?iso-8859-1?Q?ivfD3DnEIPMiFxyj7SZAIHj6FBSg7/E6gm4PR0A/JDwZ8gv2uNmGcObywq?= =?iso-8859-1?Q?fT0jebTtwZ525gSra5LGoPbzimwV2DHh23mVHBUGMA2EhyFxiq6LOGeHJQ?= =?iso-8859-1?Q?SqB0nP2pt8PTXoMRd+VTivR8HyVFcyKCDPF6dDYpInwGQ9eLp2ESJxnnbO?= =?iso-8859-1?Q?h4qlBrt1oc7SmveR/0f/ndlYsY9JGSSjE2rUcVcAB/5GBPUF/yrAbQ6QQR?= =?iso-8859-1?Q?Xkaim1lmIUiqPbKLNQfB01ek9sUY+1/nHx+gIYSzSg1tRLyt7+RUyn3fJZ?= =?iso-8859-1?Q?B+Yug6X4DrliloFs4Sfvyzq/MR7mCb694PLCVcM4MkdGxa4alb+0g8Ty5f?= =?iso-8859-1?Q?WCGge9OYotrgeu7BdtEyFapaF7JezPFZUJrsavdM46v+Ghe1zKUqDTfYYf?= =?iso-8859-1?Q?4MfqCnbXlDgQ6ylJ/VfbYXEsOzy0sVzGgf8J55R/UszkuG9fD2tETjBjIC?= =?iso-8859-1?Q?bVLOgq24wJsli4m9wusw4UHNScQAaQIKhKryCexcqyNRY6lN/1vvaYAJZ1?= =?iso-8859-1?Q?Evvwf5RQHUchm/A+D+YsqPklsRQmFMLgLIpqbhV2scRqbokIh8ONos6CDB?= =?iso-8859-1?Q?FuJL4XsYAbYZPWBqoRweXBb15oGld0X0lHjt9SkBudJA81eGtOus5mCtKS?= =?iso-8859-1?Q?oq2ZxZsPUuSDSRYqf/QuJZev0V9DQ/EcGP4z2H6ZhUvR2z9v1PXgF6s0DM?= =?iso-8859-1?Q?RDuR6c+pe+vAZFle2co=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: bc26998e-9a49-42e4-dbe3-08dde596e560 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:01.2602 (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: IMiHFohBLdcb/BzA3kJmKfNQ/5MOfrH1YgBBVlEwv/sCZFhUo7biz6Dqdx798LM329C8beFIrdk0VXCcMfs0PrHRy++oYh0lOhJgjn/1040= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319071349116600 Content-Type: text/plain; charset="utf-8" Currently, many common functions perform the same operations to calculate GIC register addresses. This patch consolidates the similar code into a separate helper function to improve maintainability and reduce duplicatio= n. This refactoring also simplifies the implementation of eSPI support in futu= re changes. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk Acked-by are different because they don't carry a full review. So for=20 Acked-by: Julien Grall --- Changes in V4: - no changes Changes in V3: - changed panic() in get_addr_by_offset() to printing warning and ASSERT_UNREACHABLE() - added verification of return pointer from get_addr_by_offset() in the callers - moved invocation of get_addr_by_offset() from spinlock guards, since it is not necessarry - added RB from Volodymyr Babchuk Changes in V2: - no changes --- xen/arch/arm/gic-v3.c | 114 +++++++++++++++++++++++---------- xen/arch/arm/include/asm/irq.h | 1 + 2 files changed, 81 insertions(+), 34 deletions(-) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index cd3e1acf79..a959fefebe 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -445,17 +445,67 @@ static void gicv3_dump_state(const struct vcpu *v) } } =20 +static void __iomem *get_addr_by_offset(struct irq_desc *irqd, u32 offset) +{ + switch ( irqd->irq ) + { + case 0 ... (NR_GIC_LOCAL_IRQS - 1): + switch ( offset ) + { + case GICD_ISENABLER: + case GICD_ICENABLER: + case GICD_ISPENDR: + case GICD_ICPENDR: + case GICD_ISACTIVER: + case GICD_ICACTIVER: + return (GICD_RDIST_SGI_BASE + offset); + case GICD_ICFGR: + return (GICD_RDIST_SGI_BASE + GICR_ICFGR1); + case GICD_IPRIORITYR: + return (GICD_RDIST_SGI_BASE + GICR_IPRIORITYR0 + irqd->irq); + default: + break; + } + case NR_GIC_LOCAL_IRQS ... SPI_MAX_INTID: + switch ( offset ) + { + case GICD_ISENABLER: + case GICD_ICENABLER: + case GICD_ISPENDR: + case GICD_ICPENDR: + case GICD_ISACTIVER: + case GICD_ICACTIVER: + return (GICD + offset + (irqd->irq / 32) * 4); + case GICD_ICFGR: + return (GICD + GICD_ICFGR + (irqd->irq / 16) * 4); + case GICD_IROUTER: + return (GICD + GICD_IROUTER + irqd->irq * 8); + case GICD_IPRIORITYR: + return (GICD + GICD_IPRIORITYR + irqd->irq); + default: + break; + } + default: + break; + } + + /* Something went wrong, we shouldn't be able to reach here */ + printk(XENLOG_WARNING "GICv3: WARNING: Invalid offset 0x%x for IRQ#%d", + offset, irqd->irq); + ASSERT_UNREACHABLE(); + + return NULL; +} + static void gicv3_poke_irq(struct irq_desc *irqd, u32 offset, bool wait_fo= r_rwp) { u32 mask =3D 1U << (irqd->irq % 32); - void __iomem *base; + void __iomem *addr =3D get_addr_by_offset(irqd, offset); =20 - if ( irqd->irq < NR_GIC_LOCAL_IRQS ) - base =3D GICD_RDIST_SGI_BASE; - else - base =3D GICD; + if ( addr =3D=3D NULL ) + return; =20 - writel_relaxed(mask, base + offset + (irqd->irq / 32) * 4); + writel_relaxed(mask, addr); =20 if ( wait_for_rwp ) gicv3_wait_for_rwp(irqd->irq); @@ -463,15 +513,12 @@ static void gicv3_poke_irq(struct irq_desc *irqd, u32= offset, bool wait_for_rwp) =20 static bool gicv3_peek_irq(struct irq_desc *irqd, u32 offset) { - void __iomem *base; - unsigned int irq =3D irqd->irq; + void __iomem *addr =3D get_addr_by_offset(irqd, offset); =20 - if ( irq >=3D NR_GIC_LOCAL_IRQS) - base =3D GICD + (irq / 32) * 4; - else - base =3D GICD_RDIST_SGI_BASE; + if ( addr =3D=3D NULL ) + return false; =20 - return !!(readl(base + offset) & (1U << (irq % 32))); + return !!(readl(addr) & (1U << (irqd->irq % 32))); } =20 static void gicv3_unmask_irq(struct irq_desc *irqd) @@ -558,30 +605,28 @@ static inline uint64_t gicv3_mpidr_to_affinity(int cp= u) static void gicv3_set_irq_type(struct irq_desc *desc, unsigned int type) { uint32_t cfg, actual, edgebit; - void __iomem *base; - unsigned int irq =3D desc->irq; + void __iomem *addr; =20 /* SGI's are always edge-triggered not need to call GICD_ICFGR0 */ - ASSERT(irq >=3D NR_GIC_SGI); + ASSERT(desc->irq >=3D NR_GIC_SGI); =20 - spin_lock(&gicv3.lock); + addr =3D get_addr_by_offset(desc, GICD_ICFGR); + if ( addr =3D=3D NULL ) + return; =20 - if ( irq >=3D NR_GIC_LOCAL_IRQS) - base =3D GICD + GICD_ICFGR + (irq / 16) * 4; - else - base =3D GICD_RDIST_SGI_BASE + GICR_ICFGR1; + spin_lock(&gicv3.lock); =20 - cfg =3D readl_relaxed(base); + cfg =3D readl_relaxed(addr); =20 - edgebit =3D 2u << (2 * (irq % 16)); + edgebit =3D 2u << (2 * (desc->irq % 16)); if ( type & IRQ_TYPE_LEVEL_MASK ) cfg &=3D ~edgebit; else if ( type & IRQ_TYPE_EDGE_BOTH ) cfg |=3D edgebit; =20 - writel_relaxed(cfg, base); + writel_relaxed(cfg, addr); =20 - actual =3D readl_relaxed(base); + actual =3D readl_relaxed(addr); if ( ( cfg & edgebit ) ^ ( actual & edgebit ) ) { printk(XENLOG_WARNING "GICv3: WARNING: " @@ -600,16 +645,13 @@ static void gicv3_set_irq_type(struct irq_desc *desc,= unsigned int type) static void gicv3_set_irq_priority(struct irq_desc *desc, unsigned int priority) { - unsigned int irq =3D desc->irq; + void __iomem *addr =3D get_addr_by_offset(desc, GICD_IPRIORITYR); =20 - spin_lock(&gicv3.lock); - - /* Set priority */ - if ( irq < NR_GIC_LOCAL_IRQS ) - writeb_relaxed(priority, GICD_RDIST_SGI_BASE + GICR_IPRIORITYR0 + = irq); - else - writeb_relaxed(priority, GICD + GICD_IPRIORITYR + irq); + if ( addr =3D=3D NULL ) + return; =20 + spin_lock(&gicv3.lock); + writeb_relaxed(priority, addr); spin_unlock(&gicv3.lock); } =20 @@ -1273,6 +1315,10 @@ static void gicv3_irq_set_affinity(struct irq_desc *= desc, const cpumask_t *mask) { unsigned int cpu; uint64_t affinity; + void __iomem *addr =3D get_addr_by_offset(desc, GICD_IROUTER); + + if ( addr =3D=3D NULL ) + return; =20 ASSERT(!cpumask_empty(mask)); =20 @@ -1284,7 +1330,7 @@ static void gicv3_irq_set_affinity(struct irq_desc *d= esc, const cpumask_t *mask) affinity &=3D ~GICD_IROUTER_SPI_MODE_ANY; =20 if ( desc->irq >=3D NR_GIC_LOCAL_IRQS ) - writeq_relaxed_non_atomic(affinity, (GICD + GICD_IROUTER + desc->i= rq * 8)); + writeq_relaxed_non_atomic(affinity, addr); =20 spin_unlock(&gicv3.lock); } diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h index fce7e42a33..5bc6475eb4 100644 --- a/xen/arch/arm/include/asm/irq.h +++ b/xen/arch/arm/include/asm/irq.h @@ -29,6 +29,7 @@ struct arch_irq_desc { */ #define NR_IRQS 1024 =20 +#define SPI_MAX_INTID 1019 #define LPI_OFFSET 8192 =20 /* LPIs are always numbered starting at 8192, so 0 is a good invalid case.= */ --=20 2.34.1 From nobody Fri Oct 31 03:41:54 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=1756319071; cv=pass; d=zohomail.com; s=zohoarc; b=HKjwlRw6LkF+XE3g7qB1KUfL6StC/CP1p28ZKpw7UZgZglozP7rhK73N1eRFY3QD9IbYbuVdE5ktOtzKTcIxgoZhnXzutj9o+b4GKfLhvqa7jaHTmBhUENvix/pMbg52fycwjvgR5UBC0H7UJi8df5MOdO4a+4AMD0g/T9Jb3/4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319071; 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=nz65tM7PzKVphk+yYvuSYrGmPb7ybjDiWD2dFYW8W1k=; b=ADLz330F4CXtNhz1r14E3iCJehYnoZ6bbQVk5NlavzOGufYCyFRwCXNPCUKM8VrHHgbYecyeFD1IXrmPWCmlKum7VMWob9QXs2mXMomRgOUwX3BCgDBtUV4wTaUnApnUbBOumnGf6Z+pINAKjfo6eUoJra3hafq7XYpW42IdJIU= 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 1756319071714766.1951929753334; Wed, 27 Aug 2025 11:24:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096717.1451337 (Exim 4.92) (envelope-from ) id 1urKob-0007FW-5x; Wed, 27 Aug 2025 18:24:09 +0000 Received: by outflank-mailman (output) from mailman id 1096717.1451337; Wed, 27 Aug 2025 18:24:09 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKob-0007FP-2a; Wed, 27 Aug 2025 18:24:09 +0000 Received: by outflank-mailman (input) for mailman id 1096717; Wed, 27 Aug 2025 18:24:08 +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 1urKoa-000703-0r for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:08 +0000 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c200::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 04a6d8a6-8373-11f0-aeb2-fb57b961d000; Wed, 27 Aug 2025 20:24:07 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:05 +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.9052.014; Wed, 27 Aug 2025 18:24: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: 04a6d8a6-8373-11f0-aeb2-fb57b961d000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KeNXKJ/tbWnWTIE9S5rZH44sZY4iy7k+0TFW0KeJm6/2IYLIeKownRU7I05jI251/lf8UsdwmK9tkBfCaoX5KMn9/77glp50JsaJhXap2x3849gD7Bz0qLAl+Gpa3qrdHZPjis4Av3/ha0wxH9rPlR/3z+VI4WHlO9z+i03FP0iZYQH2oXLrV6/hhUg+sGkE/oYuXqTt0hva35cn67ecE0V+kuAswCWvqA0Gi7Bj7LoDrXRNtxnFsfRsH70DiHYasbZKCLY0GM9ICoTbUf8l/jqn9V1xIN4awG42eXlbaebS1Zn2+YHetVU2E4BJxvoC7UXJEVNlPUwen9mw+xqdeA== 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=nz65tM7PzKVphk+yYvuSYrGmPb7ybjDiWD2dFYW8W1k=; b=wPipBqCziiwKz0e6y6E/sFTpLX+PWFiDhtQ2dmlc1J5a/6ULhGLzEMBG3+3sgnum0z4ac3YYnF3985JAU9snCMvbfeetCAyZ/17pw/FsupyACK1t97elYKpT/D5B5F1p6MNxB99GiH+D/L1rOuVSSoJNeepPHCLz1YTujBkfw7iY8YgUgyNOOVhWLji6mAzbNFsry0bkRm/a0HFhcsUAOPsCb39jDwqC5/07CQ/1bNB7WW8sphngdV4a4vTJEoFYICb5b4ro9fZg5X+nlcPktJ8Fh46Ca1mCgIxsA++5mACbgO3hp4H6UQ5zzTCzRaV9xPK2F8e5AUFZiLOyjmkxMg== 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=nz65tM7PzKVphk+yYvuSYrGmPb7ybjDiWD2dFYW8W1k=; b=XormrpYkXoBegam7HdPaO3BBxkuhxvryawJGnKRbk2SW3Xzcz4gpHqWOERftixJfFzuc5dbCCpVqT/Ly1LitMuRZpTiW8MDJnIZoPmZlYVIhcePvCFzwJB33ZuY1C3nF0ZFqmF1eNUAOBGOWi1/z4vEQlwAMVpVcIBs/G3fh5jFzTNOQHWcQNEtw2NSfDVGfJfZk4uUnf5akEL7/i+TF+Oa/QPrSpuFqU5CwunfvkoBP+bqrM6ka8mDOwPowIyOEdPVTn2uhN6rHB9CgjQf6qAeSB99IFFctTPZkCJ/+WvsBVbnWZ+S0wpnefgFSVAsg5P16lbTJVjZdtRiRUbgXiA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk Subject: [PATCH v4 02/12] xen/arm: gic: implement helper functions for INTID checks Thread-Topic: [PATCH v4 02/12] xen/arm: gic: implement helper functions for INTID checks Thread-Index: AQHcF3/Ff+oSmGvjakq9bpLMhjgPlA== Date: Wed, 27 Aug 2025 18:24:04 +0000 Message-ID: <684757e6710826200bcc153e4c711b27483ee796.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: eaac357a-d390-435a-73e3-08dde596e780 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?9GyHdcO3HZ6qjOaW6G5Rj3cXJ5qEEOJ80D6077LR+JUxGECgWLLgvyBhYp?= =?iso-8859-1?Q?IOzXBsJ8bIjHb2uFb5GCl7DbGsimR0QVKV61yt98rpBJgBETCcXFs9Svw/?= =?iso-8859-1?Q?jhyzPMg33I2Lnl3umN0lf7qdwT6Cm/GRWDxe3Jel68ku1YVWq6gMPRqptM?= =?iso-8859-1?Q?xV1z7333sdnzhdlUdZoADLLRGU45jfA1HzNWH2MRdvKCePiR6naj5K0gum?= =?iso-8859-1?Q?IbUZa6+4P7k3139f8iIsv/+he/V+QBQZJiXhR3k4oKP6XEQK1uugx1GlQn?= =?iso-8859-1?Q?3qcP7fCrzHKKBOMgkx52mR1SV9Moj56ijQ4vrRQeeuB0GoriYVFTVfMb/c?= =?iso-8859-1?Q?GhVgWb1CQNITwIt/NJt6IBx1DuwNMQYc3+IJX1sHxglDEknhx1oLw5mFob?= =?iso-8859-1?Q?d5Vo3gwYO8i1ASptHyI4zkd2oy8UbAXIcgUSQkv+0918N6j2z2vrNjNGba?= =?iso-8859-1?Q?zaUkUQ3mxH01RMo6nDFYAPtcPhzmZAtsO3FjLH0N/wqF4iNwPMbyfwTosE?= =?iso-8859-1?Q?IYT/ME+WQEUd88Jkuf9+QhpR48mooL+EWVZWHvfAtYYQrRt/Ixfg/3oX14?= =?iso-8859-1?Q?oSy9aNjlS/xIX3ZF4vDuxhpU9l12ddINY6uYY4feozCjTDhxdM8wLpN6mT?= =?iso-8859-1?Q?4EZhgkauVpEMmi6/zpw1Fl7j0Hi4L+RRsQ3+wVNP3TSRFNLHX1VrLxFCBP?= =?iso-8859-1?Q?VzFtOPMllaC9N2ZsoexVxgFStLOS61+sLLc93Hlwm6ndlKbGP2ffEp21RU?= =?iso-8859-1?Q?neXCK4Ugwzb/2SxnKLpXTTjQCd7Sy8jFDO7InXiN5fHjssPrgBvGFmJKN9?= =?iso-8859-1?Q?fuKj7TEdfsq41IQ1QjP9dpBNiVbl8mHr6jB/p05lvnCCsF441KzSidgnFx?= =?iso-8859-1?Q?RIRzcBkXnatTwZ4lomrDY1QpQ55ZIvZz8URDL29ibIaDhgrxGOgpTCKrDM?= =?iso-8859-1?Q?iWpuu3iVC9dy5VZGhCiQpLWje43jY62hvDj57+HLgP8boVyxSAQLGI5kqj?= =?iso-8859-1?Q?jmK2OovUWIufrauGELy6Px0SGiUFb1FsDsS5nIzzMb18HXcf5v7p2sNQFP?= =?iso-8859-1?Q?xawuPSoOqQYWHWCHRGjfTnkxvWpbIIb0C9hKvoZFV1VbH+XgTRbVctgZ1k?= =?iso-8859-1?Q?lT1AriimOJgI4qenKUyUmGUTs9Xt4dKde29pbo3HVXg5DLqyg4VzKd2/L+?= =?iso-8859-1?Q?di2yIxYK+sd1+6BdBymrr99Ppq10m5gC+WMd75Ar8xC08VsdUSzcyr2DZh?= =?iso-8859-1?Q?sARZllRboZCaKiVKW88brRl3BrNmFU9c6qBcFblIhkMoLpixQwfV3F9rCa?= =?iso-8859-1?Q?MGEq7hQe0VsvJJTB0WtUqQOfsvM14uMSVEW3VVkQa+fOY0CPDljLiKOoD5?= =?iso-8859-1?Q?LO8iwGWEufy2fGtAoJ575bNJ4Bnwc2eMusIA8i7V4clu69XMSd1dHryJQa?= =?iso-8859-1?Q?r8Ffd25PEEMkHI9NtI9XuOhvahBNzwCutZ96gWCJX9eKmMK3f6yCTe7JYy?= =?iso-8859-1?Q?T0qFh366mD5KC0zWST//nS+jcvnf65BFdCgjZ2T1kPG8lPAsmPObFFANvq?= =?iso-8859-1?Q?v71k8kw=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?uENEI1RyGp57m4dsnVCiOcjGaWPK0BTGeWjB1qTTjFXMwvJx97QmcZtEm2?= =?iso-8859-1?Q?rzJrGdR/9X8q0Mij7gA04PkmiA5eAzKNRW8fiJQ9IFPhc2VtnC965+5L3+?= =?iso-8859-1?Q?DDVz0OrsldvfjIrxaRWZswZ5zLESa5xnITEsLUssQcemI3XLWBlu66wPDj?= =?iso-8859-1?Q?VZndB3+EQjm6lh8bPhS7DlNk2//hnMMLxAIMPhzBeclsldRx8ZdRYanXCN?= =?iso-8859-1?Q?IiOzoP1lXa191tuR2MMFKZKAegQKwBc6KUxMFlc+gAyWJlltLZ/mZ/b6BI?= =?iso-8859-1?Q?dJPcSAMrZCFjClN1g2bxKs7zqJ9v0uzs3mqVbeav0a9IFFciY2AhDX6K4v?= =?iso-8859-1?Q?syhHKO8fj7a1AY1PkEoWH3GrsQXVSypNWI5/ULzCim8kjyh3fvzYBs4WyS?= =?iso-8859-1?Q?e6uxkeCOfA49Z9KQWGeBSUxcscAcM6e4OqJAiQaKjDhII7waHNVheRj3V3?= =?iso-8859-1?Q?kWnmrqaFLqe1sy+BAoMmiY/YAVyx6ccszTOS6kQwRqDN8tEGBcE8OyvFtR?= =?iso-8859-1?Q?w2UfMyPDF8ut9HWt8xc40O0goyGjFJdvgAsAbjNtVvo9C8uQid7q0Qcevp?= =?iso-8859-1?Q?J17LIifBtSUyhrDmjC/8rG9e6mEuy3UOn3493dN5f0gwQswYI9QakglNld?= =?iso-8859-1?Q?0W4RmvU5PUueTSYUDdianAK15vPsXet2cRVAerxvODPZYjUk9bksH7olKU?= =?iso-8859-1?Q?L1z8kOrYth2rKiabv2QvIzAYz3VOz+M5CryWQkoS219f9lEV7GGioaM5IM?= =?iso-8859-1?Q?Xxw1VfIMgu92L+l0zdRLzeJmL+VoU2+9rlmDb7Y3uJkd3zqad4wS/ifTBV?= =?iso-8859-1?Q?my+2d+0MCwnrr3KkRSyF1lKBORXcpyRzZ3/Xao5ZO7ev4uvoIQggzhR8js?= =?iso-8859-1?Q?CINJvf+srP8Fk7RI7md3YK9qKiIkJ42czeih67MQsM1ZLfI4IA/omF7T/z?= =?iso-8859-1?Q?iIxKeMUSekG4FTM80e2HogZoaGouRgp0MNDahByKmqIIBhpXuX2bZ9xD/T?= =?iso-8859-1?Q?nl6wiXgtHK7Xr+1wvlXQ7jg7ssJrxmRc57POJpHRuGGIduQOSYaZIxTUv9?= =?iso-8859-1?Q?z+rqUccC3eFfkk0WKLjZvnqlUE5k72JXh/QpNouglIFhCpJxa6jJpnOW34?= =?iso-8859-1?Q?OJccq7FuBQa4X23WMafRQB/qlf5vRR9zvOS/W5dPSsxSbqQdsehr7zin+/?= =?iso-8859-1?Q?7mdkRGBdixuWGmUhq4DftJ1iYnZ52OlZZKl2KFqJEEM7/04n27IH5+cZ7u?= =?iso-8859-1?Q?hI61XVeQqtqVm0dexVf9zSuT4iQSh/X+QidPLjwTrSB3bDNo4OmEMoHrB0?= =?iso-8859-1?Q?h2raY7zy3JBzTDsWHiX02bYoTsMQdmPsR6987LvdwAtRT7iYFAPqOPChBP?= =?iso-8859-1?Q?AQhm45T6SKnXyev/qdCboKceYBiUBnqwhV/tuVAt+l5K0V/eomWr14eQK3?= =?iso-8859-1?Q?z2tgEFaDENMqOUZWi0A6mJoxZA1/G4IiXbMwA/O59nyQ0BKPcwKPu+7NFp?= =?iso-8859-1?Q?RJDGU5tuJmiP0wtaSp36wqryIokDgYdL5IEnYm/cStia21erodIXBv5e7m?= =?iso-8859-1?Q?dxiMP+NAXo1oLuvbLJGTDfcoWapurLNizV6MAMPbB8uPAkB1OKG5I1RX6w?= =?iso-8859-1?Q?O9rwk6yGgTZxvmN4iw4GXYXtcqbf7LRIvicBrJMwAFakW428nAFiGXpBgs?= =?iso-8859-1?Q?hvDUHzftIbxkPgzWjMc=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: eaac357a-d390-435a-73e3-08dde596e780 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:04.8189 (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: euKlBioGLFcaZ1wU1FJ5LsTvrb74thoHCGhsYnCQcmiM7caNbN2EHABYnFom7sxL/s5EggxLJsMfjZaEcflQSJha2UdFFLaa79dT15EedOM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319073962124100 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 V4: - removed redundant parentheses - added reviewed-by from Volodymyr Babchuk Changes in V3: - renamed gic_is_valid_irq to gic_is_valid_line and gic_is_shared_irq to gic_is_spi - updated commit message Changes in V2: - introduced this patch Changes for V4: Changes in V4: - removed redundant parentheses - added reviewed-by from Volodymyr Babchuk --- xen/arch/arm/gic.c | 2 +- xen/arch/arm/include/asm/gic.h | 9 +++++++++ xen/arch/arm/irq.c | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c index e80fe0ca24..9220eef6ea 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -111,7 +111,7 @@ static void gic_set_irq_priority(struct irq_desc *desc,= unsigned int priority) void gic_route_irq_to_xen(struct irq_desc *desc, unsigned int priority) { ASSERT(priority <=3D 0xff); /* Only 8 bits of priority */ - ASSERT(desc->irq < gic_number_lines());/* Can't route interrupts that = don't exist */ + ASSERT(gic_is_valid_line(desc->irq));/* Can't route interrupts that do= n't exist */ 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 Fri Oct 31 03:41:54 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=1756319068; cv=pass; d=zohomail.com; s=zohoarc; b=eWe3CqX9akuHlxxBAlXoOXsOLU7IULWotMCvkouH1PglVHh9CI6Cht1wfUpwkcO/mU3Kz7IZrZwhIbDNT3sT0kSsFT1uf6+3jkM6ASyuFCYMkvqHLs5sZiIUlnyVfPSaTXoaGuKn2SwHlC5kdcUZjmXKvi8iPXKu7Dk8Hu3GQ28= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319068; 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=MHYfYbL55imOCCjjrRRn+AUcBXKR1hjc8iKikRGMauo=; b=AgeXDFNjovzL2NCwT9adaWPqvf2YUN8Ty2fx3XLdX4ebFVhPyZMvgY48Um3n1cRPOg3Q0fNUiCtupgsFasL2h0KqNXolj6LlUF4sPfGY8NpaTt34O5c4Xxe9ACQ4/+Hr+l1sZNvp/K4Ecjb3qjUEi4yucT0Y+NpJYDPEJX1ZdP0= 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 1756319068912520.5377010803109; Wed, 27 Aug 2025 11:24:28 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096718.1451347 (Exim 4.92) (envelope-from ) id 1urKod-0007XB-Je; Wed, 27 Aug 2025 18:24:11 +0000 Received: by outflank-mailman (output) from mailman id 1096718.1451347; Wed, 27 Aug 2025 18:24:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKod-0007X0-Gd; Wed, 27 Aug 2025 18:24:11 +0000 Received: by outflank-mailman (input) for mailman id 1096718; Wed, 27 Aug 2025 18:24:10 +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 1urKoc-000703-JN for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:10 +0000 Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazlp170130006.outbound.protection.outlook.com [2a01:111:f403:c201::6]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 0636dbd7-8373-11f0-aeb2-fb57b961d000; Wed, 27 Aug 2025 20:24:09 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:08 +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.9052.014; Wed, 27 Aug 2025 18:24:08 +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: 0636dbd7-8373-11f0-aeb2-fb57b961d000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ICgT/toCM4iCFcbzr1UGtg6gTNptlI3QqCJNcsCIYGUH6BVVCoB8Xje+LoBi8G+bJW2q4egUMlxyWk88KV7ptExuJOGeDvG+Q22vXYfg1NqFrKHrD5aww+x9P3x5VBd71FhLQ83F9Ucq9+XTRiJtvDp93dXKwguRwD7yfNkAKhXJvLunnvJ6kruj+fDb/h1XXATjy4IDH4kRI1PFyqZnYiJrtt+9nVQAkMH7DzkpgeyaiycWryiOp2PYrmbHvg/s8FJIBtMzjwgTxrY6QnkehX4p04Z9BAuKrLJjU9YqCE/Qc+6vJ9Pk+a6WtusvQXebHm9Mg/VCjb3ojbo+ZqTCvA== 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=MHYfYbL55imOCCjjrRRn+AUcBXKR1hjc8iKikRGMauo=; b=HVDjHHJNLglbId77+ufkOurqYdSfYX6wL8xvVj4YQ9/yAWDegYkhn28TrCbFYrQLK3yN4afKTPfw3D3EDXMeH8tPZZXRSN0tKSFOQOeXJFfWRSftdr5qp0OjBd5WXipNr5jSlwU4wE/QpICxIsBQNbOLeUDe3Erhu07WN99Ohusv6+umG7bzNlkADInLlDdiu0BTX3yRnizJWY6kHujosJ4hXcm3pG0rWzVifR0aHYWS98CEAFKsSI2YDzUOskn2oZX7hu32cVieh5t6qpUtH4dTz29IyEA7WUXFIZ+wf02gAhsDuaBjI/lH5cxy5Z1tyCZSfxOKCcmJbeSrxrpa9g== 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=MHYfYbL55imOCCjjrRRn+AUcBXKR1hjc8iKikRGMauo=; b=pwfpQlcGgZypRuOZxeo0o0s3UNoB4Bm3EI/omSYr88x4skZ+0e2gfToaLWfBFMF4LmGO8OWyU5l5ZpMKx+CCBY+pXLbXQSK3Kks2tT8kZEh/7EaVomj6cP4xtF7MLOrAAV5xgZZCnBNOtzvyvCICfFMQOg2NPRFHpbkbZm8zxuPI9CrbMIJC0YMuq7sHjt96jXBl7C0UFxbj68SLZiwo8NWIqtJCjSVZJ3mNhL0vfKmGXu8RruewbXwX73CSQpTEuUQGQJB8aAAF4U7h+TonJT2D225YP5atjsQ8HV/HHmPDSifoj6PevSS+yt1LTB7642eaViz6njD1nyYlNg51VQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v4 03/12] xen/arm: vgic: implement helper functions for virq checks Thread-Topic: [PATCH v4 03/12] xen/arm: vgic: implement helper functions for virq checks Thread-Index: AQHcF3/Ha+nKa9jlz0+nkOWkY9CitQ== Date: Wed, 27 Aug 2025 18:24:08 +0000 Message-ID: <65b148aea56b1a35fa061b0d8284584da97153a9.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: 54844cb9-4a9b-4ee8-e3f5-08dde596e9ab x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?m8qsv0+bp4QF46g/0g5vYODFL3aFdttb3iGJsaj6oqZuj9DxKSoyqkHba2?= =?iso-8859-1?Q?N6ZoHZLjQIqQtu47F9xUT+Jr9oLbBulxwhvFt2PZaF8j/KQ2nPWdITEzqk?= =?iso-8859-1?Q?UpePgZ4FDt9owvmPJUwvX3ms2rYqIIDo0kyUvoycvevZ1QGBA6h944DJyx?= =?iso-8859-1?Q?MYpWxgQPatqDf97/3dyrbypgzvGKQS1yWlS473a9oOZ9+LDVkSzQAXt3sP?= =?iso-8859-1?Q?w7TDlhtp4FwbwqPYrkkbBIsd0oEQye17smE07WDYyI1m/93GcfB4qho+k9?= =?iso-8859-1?Q?kLj2THa00Wh6ZNxnfdecZ7f9HU08DKtbDHuRmnZTT3dCiOLUIgIkAgPjrn?= =?iso-8859-1?Q?+FJOW3afIIjJAW4qhsZx2Yxa/B38ePZ/jK6Pq5OK7yzibt+QXjRcZNgotX?= =?iso-8859-1?Q?pbBtoJoq0NF4T2gPvEMNm5S9w5OHV6maTFe1tM6DH5G55t83HwSSRixRJz?= =?iso-8859-1?Q?0oKx8p0N8kLTNQb8rEsmXks7i4J/98Zzw+j89P3J3nLNIJ6x9FHGPTB9+H?= =?iso-8859-1?Q?BcPMJozEeJGPGdSBgufl7owqf4XAYFvCJTfl4B1eISPVZHbk4RBSwshvEp?= =?iso-8859-1?Q?wZaOor0VeiuA1z8Lk4+dLyt3oV3kQXwjnl3QkP8+IG85hYL1Ofu6W20uVy?= =?iso-8859-1?Q?s/jVYKFk9R2zSAEpG3txZLorlcbCwyqlRrHCxcEiNaxRD070+vlyKCIB2O?= =?iso-8859-1?Q?rZsxHt4VSaXY/Hjsc8rvuD8KsCS3GgdncFWzRq7SQQRq7JQ9lM9H3FNEM9?= =?iso-8859-1?Q?Eh61YyXomxzC702Y2dJMx0OiLu9ILbWMeivVDd+DgspmXn/VwIG7bhqDnf?= =?iso-8859-1?Q?visw12FdrhjhGGsKwRVcM+WoSnr76ro91vGKkYzIolhRQchjkhsOeHOUWj?= =?iso-8859-1?Q?cb/mu0VVkSF9ZpPXjgbiNT7DET4Fwc5nUU5QhYVtBeCpQ6UrY5a4J3scpY?= =?iso-8859-1?Q?td+7u17fepOEoe1fzOTjYqUymTlO7me8ltaDx9f4y7HZT9EkvWVcg7ofPq?= =?iso-8859-1?Q?BgG5UBvT38Sipcer4JYLq48Lh8FTFej8zWOmChktJT4uOhvB0Ys4BXFIy0?= =?iso-8859-1?Q?o/kLA2exYL2ppmzf3gIrelIu69wip9dF0UsQKJeBPx6DKB6bXvjQdciIE2?= =?iso-8859-1?Q?NoMhstX3SVfwGeikBknuDx6JIIgTi7lYWxkXvtDmO5vbfOyNX5y7t5ct6q?= =?iso-8859-1?Q?oJRef1IwG9ZjKDyRMZWPwYdRuF98FCO0X5zCpylwKIT/tJS420KCkAzy9t?= =?iso-8859-1?Q?U6JTb3ngyRI2MzHBEGhcpdq/oKqaQ8HyVWx+9WbrlEyzVdtG/As/2bCwwK?= =?iso-8859-1?Q?wUKhG/57TGjUCXoihNkuWnqrssXKzeWf6anGked8wSSH/UtAAc4XjEcEur?= =?iso-8859-1?Q?wMvwT0rSv2QbAdSOyZYybZcy+7xuzr7uV6z59Llup1ofGaqxarqUyK5BTl?= =?iso-8859-1?Q?Rcx0V7ym2NQJYf4vW/MRlTa/kO2JYSs4pXRWwuSc0Au+rIKpdvl2tJtymM?= =?iso-8859-1?Q?6KcdLXAPBHJxz0/kJXHN7Wj3t2zQFFKv6TqlMyZx1rR0CLDHEP+gIJ8hkS?= =?iso-8859-1?Q?m5OknaM=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?tXR7veJTUi4ZC9pRwfAdAE1kEYQ8ttHYMYkzdQauCPoC1iYxdgK+YCbtNb?= =?iso-8859-1?Q?rKiMsBF14YTs8INMkB43DkeBFFQSF/6OSNt7daziDIY0mnvw6JGxQ70BnY?= =?iso-8859-1?Q?2f665uO/TokIixY6B7Gvgo2B+PmTZ3MP9KaE0tezhED8H5wg3Q7VB5BJcI?= =?iso-8859-1?Q?zkRasEFHLl51KYwfeQfH/kuUv4ahhVtEK1RzrvIdNRvz/YzHna20G4TNNJ?= =?iso-8859-1?Q?iSCA56RhLBOxPamz2QxwAndd3eM7ZBmJn9vOhe/TXN/yRdixmubDzFnGT7?= =?iso-8859-1?Q?Jad2oNTAWGGu9AwCBaTqaS97x5wuhdVySLaO6lhvRV2iUM+PCre5EPAdzP?= =?iso-8859-1?Q?hrZzdxU1yTIXhunWBTuN5S5+871YmzNqA1PdVpEK7eBd8ptH0b3vOie8Lt?= =?iso-8859-1?Q?H6kzFtkapcndVIc5zD3Dh0bgQ9HnKAUNfv/PiOArZmfCFVPCwo6jUARClY?= =?iso-8859-1?Q?13AhtbGjKIfWQ43EsYHYH/mXfVGXaLra565s5VV7kpapciLXYPnRYvSr4N?= =?iso-8859-1?Q?+IzhMM6Mk0G8YOueimg5+hxo6iqpVKTfdH9WlpEgWTKFWQFbhiNhk90juu?= =?iso-8859-1?Q?Dtb5AEJNBdi11XETrGbasAhDda8vQ/J0IesDk02j4KiybVygI8jPahS5f6?= =?iso-8859-1?Q?gMx7GAZ23rXJJ7jumc5ZkHWYbhc6p8GurMj268Z8Qpm/1epMGxYq74dV46?= =?iso-8859-1?Q?iMWys44mZUe4z/6zfRhAv+ovnW5dM5v++fZHshId3XIiEFdyefX4vYMTxw?= =?iso-8859-1?Q?CZiHSX/zOcVNIhJlk4JWJc1e/yvpEjCf5XL9n00pTdvpfJkSB0UCqayyQj?= =?iso-8859-1?Q?CBGSPoaPK+wxbEaTNtBshqE0jKZTYky70jVdZV1pr+5hx6c96aU8BbNSC3?= =?iso-8859-1?Q?NXWaG9MybZFOXOCmreiDyI0wNfUCyM/An3aeOQ8/wCJ1sc2qhTxQPndDZm?= =?iso-8859-1?Q?ky4w71Xybb/87e2Sh9j1Xp5QAYWCmbopw7sO+7JgxRG1JKFZWycUT6xXmn?= =?iso-8859-1?Q?6y1YdOljwqj7QXZ4rLC+zWuCMEesAXtkPiu1jJDVlRTAF6dLRO8e1nzOdd?= =?iso-8859-1?Q?rx9J2+BA5IQTU+Zid2zEWzZWJATiG1R3nVLRnsHzoVwpB5fCi+hLP4jskU?= =?iso-8859-1?Q?POJ1hjv6dNlb31ulY/+sRzD1AqAD+VHjLVxM1wftN0nLfyw4/E6QdSNx1D?= =?iso-8859-1?Q?HQA/Y6np8fff+123aSwv8oqkAu2Ho/q9XyaallxM7u9dfWT1v9F95dCVMq?= =?iso-8859-1?Q?2E55AoeAAVvcAAzm73DeB+J6kJant6Psos2c5t5HNxkGfs8m/8QktMfMcC?= =?iso-8859-1?Q?6Kc7+IB1A5lpm/xY0yNUbFnkdu+forp34UAo1/9815NP6/PicABK1o5UuR?= =?iso-8859-1?Q?68/CjUfArKUVvHrq7l2PlexbCKVZBu1FuAWkvY7VuWsj2Q/VJhsMCII3x6?= =?iso-8859-1?Q?Jhb88ePDYMjDsTxy0glE8gMjlesrOMJ0I0FCv65twB3bJ37XDyMyd6ukOk?= =?iso-8859-1?Q?rCoQeau3naQBz+Y6aEj46jEKXlsVtJ9df7Y4LJZG5Ic+52dq5LSC6x8OKQ?= =?iso-8859-1?Q?suIx4zxOx6EIZiCcPvjY59tPdn+La6W1TmmYz25FpshHtUiCbUC64mGptD?= =?iso-8859-1?Q?v16ZiQ2pZczXg0qqXnrjvLK9wz57nP97WhA82KMAFbrbCBwU1tKhvKCXz4?= =?iso-8859-1?Q?29p2z7pvTaz9d5U4rxk=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: 54844cb9-4a9b-4ee8-e3f5-08dde596e9ab X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:08.4142 (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: YtU2bPhbfRH6XDSrChiLi7LcY764L24d05eQPoRo8vrcC07nAsJIzSjGxchMp9OlfM9HlMvibA19X8xP6b4J1gV/xenFT1A2IeulYemCz84= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319072003124100 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 Acked-by: Julien Grall Reviewed-by: Oleksandr Tyshchenko Reviewed-by: Volodymyr Babchuk --- 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 9220eef6ea..b88237ccda 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -133,8 +133,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 Fri Oct 31 03:41:54 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=1756319077; cv=pass; d=zohomail.com; s=zohoarc; b=gexAxKPXOq+dFt7vLjzHevY5dEUYQwDeLwalMT9xD4rHFe3awaNVV3NkDOhUx2Reqetc4QRjWu74BVzgbfyHGwHQELGo51Ob0z8lUz14Q0NUtaLVNPFcTaP8tVHhPE0hATqZdpVDZIPDjeDlW2Wg2NPK2Fl9hFWNHsdHH3YyZsw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319077; 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=MyzvRD3goWG0CAbjT5ybklt5dHwN3er0gQFoa1Mh8U8=; b=Gfbgc7zQEvN5sEi9l3iH8UsYnxVxJsAZcZpN66HwqNptCQ460Gg21IFiac6dVozbvsO1qIrpv2oRqfOS2fK6YezLTbvs8JYfVVf1GQSaeOR9kruoXvGZqMpl/72OFLFkoQM6jCQsGvwcD8h9VlXK6wOdXKTcdc/Li/G5CTWrBi0= 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 1756319077717555.4359471821599; Wed, 27 Aug 2025 11:24:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096722.1451357 (Exim 4.92) (envelope-from ) id 1urKoj-0007vl-RT; Wed, 27 Aug 2025 18:24:17 +0000 Received: by outflank-mailman (output) from mailman id 1096722.1451357; Wed, 27 Aug 2025 18:24:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKoj-0007vc-O2; Wed, 27 Aug 2025 18:24:17 +0000 Received: by outflank-mailman (input) for mailman id 1096722; Wed, 27 Aug 2025 18:24:16 +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 1urKoi-000703-7p for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:16 +0000 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c200::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 08e80296-8373-11f0-aeb2-fb57b961d000; Wed, 27 Aug 2025 20:24:14 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:12 +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.9052.014; Wed, 27 Aug 2025 18:24:12 +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: 08e80296-8373-11f0-aeb2-fb57b961d000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EYQ6XegoCr2RhXzcTHNLi15iEStY8CXT8JJcOpB4HrKl8EWJpABlF2HF8j4MhIfSEBl+1R1KehKAK5OynO3PFRz8Ju47CDTsAwz33uwycAHIfIHq/I3/HswLolbbNVMcCVq+EZaJW3z7nG0AMJ3Tz1GXuuslFmej9wJXSxKoxm8lTwxSqOLDrHhUnzeR9CYEkNpqagw9jMpVUGRPM7NK1BiOEmBAujOm85V2BDOD7vWIQ38F5shDajxFDoDHwI+cqkQqv3tsBpidN7RBF7Hf39itW4248/DH4vtm8rqcIJjj2jK6dEOjxcEuHDHJ3quopPsTINVBx1ECRDfnyb+ZnA== 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=MyzvRD3goWG0CAbjT5ybklt5dHwN3er0gQFoa1Mh8U8=; b=cBp/lLoT0xhjdy/0ezH55yCZPEdfIPjcZcTf1E8qLTHs/66z73fGTmGCsJCXGEsPPAlSBnoHaux8nnDkKmGChS9whNLlHTl4vZJSpuDRmz3je7vp85gk/a9Fd53HtEePaLo8Z+LSlr28NjVYS8/+37T6C697Q7VVBer1imVHvttZwEdvz06TiHb+x3dc3fJPLOdc6XVaEotNRZQfzBACMla89Ckb0q2efhqNHsgMONcHeyL7dYK/5V587vknmDVaPWbOc8U0aOfpil946ZIX3SOroF9ok7rGv4jAsgWTHKBjTQ6b4BEZ4W3/sTTBZhrbhOVpRuyIEU5TK4irh/FsBQ== 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=MyzvRD3goWG0CAbjT5ybklt5dHwN3er0gQFoa1Mh8U8=; b=jPDWb3n39P8dmfBN7KiuiR7KZvdvmy2Qjbh3F14groL3yGjmKjoj8AP82o1dpAj9iWl2nV6++S1ESqkhLL9tB2GJXGKKMfyvqMFZtIXSCvNAGtJqf8+1Jt+5cwYezg9HNyvgVrVPC42snduDUitS130k7qceDnXYgp6+rWxoZNo/By6GhvKTBDzbaomHuo5mcCEa9+wN7GMucoL8uaguIdvi3l2fcxYAI6KSfwjQHSMVlfsWBizW6HeoqCYplMhyMKUCUvDZjNOXKY0/XrFWw0c4CEuLzE9OXFIP+7fjasY8kXXhApMCKfpL7+useBdUYWtr+UCi50xZmgsTBdXLuQ== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk Subject: [PATCH v4 04/12] xen/arm/irq: add handling for IRQs in the eSPI range Thread-Topic: [PATCH v4 04/12] xen/arm/irq: add handling for IRQs in the eSPI range Thread-Index: AQHcF3/JNF+Qat2pckartE+JXKhKmg== Date: Wed, 27 Aug 2025 18:24:12 +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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: 2f0459ad-5133-44c6-799c-08dde596ebd7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?WibnUA58nXtE1jvedygY8iI8CuIabIUp+WLO2H8xOuNWn8rLHgG4leZb0m?= =?iso-8859-1?Q?KpINXo9B2KxogE7LR+U7b4rtmsVupcamvefmispZqcjfPxjnbJ/JZC4ctf?= =?iso-8859-1?Q?S7UcHax4mCRbkGRLYEkVcLRf0RjQ5MV7PbJlej0dq2b1afhPVGAIxCPqV+?= =?iso-8859-1?Q?Lnosga2JAz1+RJCXYTk6OOaqxpKmHD0zDn/Y6pRwqv3qb+17PMJh/uAaoU?= =?iso-8859-1?Q?fujFEwPcrstCGcaUSzXa4vquuZejhJZLrNWheFAavkvLb51rzQ/70ZL20P?= =?iso-8859-1?Q?2xzKC2+ENiD1bZ/2KWD+mMm0l0nY0eh42wXXuuniieKh9fukQTb2Gji1Om?= =?iso-8859-1?Q?C18oS8bi94po2uHPKJcHb8FeOkK/91gggRsH0bAFwCr/5L+++WNAt/b2+T?= =?iso-8859-1?Q?6+sPvIG2cCZpaY38FJaPNE0A9d/1T5Vno9FWwngxovlZpuGNAtPPwXs5Zq?= =?iso-8859-1?Q?jofLdGGNK0cJMQC6WE91FjjQkCjcWsHOzL0r48GKKeRM08uX8znMhYfvni?= =?iso-8859-1?Q?8W/W4SJMPJBLbg3AZoNXjI+vZnKlLnqXYuvbeNNQMP6I/pkF5+zeAUQwSY?= =?iso-8859-1?Q?V7rV4MHOueLMMA1+sXcU3nr4ghiGLhnJA3a3ndvXbn0th8kOQ+7LmTZtvl?= =?iso-8859-1?Q?6rlHDAsWElXG79Oq2ZZtHpi5u/iSyC0u6rIRhK/cAJjNyqOZ1n0kA+kayo?= =?iso-8859-1?Q?WA9lfFEFzsS0p7aJrF/ZxUfzoS1axUHYKrae6EGrzWjuO3nPNgnwHqaniq?= =?iso-8859-1?Q?wyXyE7lLLsVeZgp5q/bDuYa6MFRBYf8Dt6bma+c/K9xQdjGDFhAuXLMZEc?= =?iso-8859-1?Q?Q5qV5SBGVb5XMDuoDSUeByQP+dtJ/AsGAB7JrNTi+0suLCRSQRRBRt6DEB?= =?iso-8859-1?Q?LLIorTYHBGL2psov66cAW4gopOaZu/CV0PEA+m7SecMdph6mH04Nw4TiqZ?= =?iso-8859-1?Q?ceGb90Yqjl0L/QADCrATRoz3cePynKCLt33fFehMNfk1JudSSSuE0mPNgc?= =?iso-8859-1?Q?C3RdvOKI8kELNkBIAbDw69D6NFoffa4vlwDyTENoPY3oP6SfsyP54Tw3Wl?= =?iso-8859-1?Q?hzh1w2Hp6T5c88qIVCZCOHm4bbLcvd9ODhcYlDabfbEYJGBx7aTMm81YpL?= =?iso-8859-1?Q?KcSvx5ZrZ3gVeQ48hLBSEnTVXkJ5QtftZzLEqOjupTKT4Tj4+yztJLTzB2?= =?iso-8859-1?Q?Ia1bC5Ks8lA7eLgU7hWoFmA9W1pbqofc8R1Xj0xZeV2hrdhqVHx+cbz+R+?= =?iso-8859-1?Q?Pe9tuM5RTYVHjXV9tASE5bnfAtR3CEAIGc85KSMpobI7d4MGrDcn6fJsR/?= =?iso-8859-1?Q?m4ySbepHAcp1rqPApvN59nOULz5P5TU8GOnInVgC0XObUgaoARMk+HOMhd?= =?iso-8859-1?Q?zOjSR81nFrXA41WCI4n24is6dmBZIQIiDAhe8aIfncrFr0P+aJ0b2zBQwP?= =?iso-8859-1?Q?DKvE7cmyGTHjR7nGf+6a1Z/HplGk9HW1K2iaOCS613p7ibAnzI7BruRhaw?= =?iso-8859-1?Q?g9WvoEt6OUB9lrg6Wq7/ig6iMlSINcGt9FSucEZ9EtIrdjUn7widvdHXSW?= =?iso-8859-1?Q?tLQKiYs=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Ps+SMne+ZPvXzli+J1EFcLTIhCIDhuoW6g1LLOtjEDg6gDXG0gtmFi2QcT?= =?iso-8859-1?Q?cmKziU54LVA5Q1TL9uZBPW1+JvPkPVfXlDbCT1OHL3yYdlQxMqZW9uePy2?= =?iso-8859-1?Q?OQHV8mVifkUEbHptI8Q/5lNe8blNEFV+TUKEznUl2i/dgYDaO/oSDCwZYm?= =?iso-8859-1?Q?7OW0ffBsl1kpHFTWjJNZd0/3t07rwabqNfOstXvktNRrYAI4QMx/ZDjloe?= =?iso-8859-1?Q?fToe0HNX28NLolCNXHfTCO0xaItoAosJ5PWPlpViqlYJHzGAMqDI48DBIZ?= =?iso-8859-1?Q?Ssgd6fDTxDzVLaMetIdWlFUS82645s4kBDh6YgKMoiv6pL1RzeTZTR9yy7?= =?iso-8859-1?Q?nxvBB/D0nSaDiwaBLyxqx2h2XU+L0kCKqcC4v1Ehol5nWf0UzUc/0vBTfP?= =?iso-8859-1?Q?K3uuQNy3DdVJadNo/tZQ1hEagK55xipTStanlCazPIKy2rnMSOkSic0FGh?= =?iso-8859-1?Q?iGMdD+EpflxIynecZ6T3vG5J9MwKqGLw8Q2XZ17fInSVl6yKuvn0gyHusz?= =?iso-8859-1?Q?680nztvnfx3dYL2XgXMH4wcn0kg+0cI8PiLin46wKnPmmLEkEb9iUCbWUy?= =?iso-8859-1?Q?/mHk99rI85wNrSuwikT+77r61f91kz8andBP63E162RGXtcvwLZzEMN4oy?= =?iso-8859-1?Q?AKtzv78tPTIqjc5X9B5oH2aqW4zzxGrPFtsMJMe4PCMsMSa3u9zILYfxYH?= =?iso-8859-1?Q?7copZetW8ad02y1nYrN1o4q0crzQRPc0ou9ZwOhdQX6O5T+UwT5pauJDC0?= =?iso-8859-1?Q?wtNuJcoODYAJELHxIV5ylCNBGjKFw4wRt0ILAVOCeMaxg8D0XD34nSPt8W?= =?iso-8859-1?Q?JRotjVQ3wyR/PXGHR3TdWN2GmpBy3RNT8kCIpkjy+uV1x0x8yuJ+y4vrNJ?= =?iso-8859-1?Q?hJ/6U94TfndxOpV+Yo/RU1wHepMhsqZ5BFi0h6P4y8whOtGsMAwndIJx7N?= =?iso-8859-1?Q?iGMUWX721VEilN58MubzMIvH7M1dnEx2nslfyLb5ILO+GPWUGuw9HaRwjc?= =?iso-8859-1?Q?WjCyVh2qesCQPEZSvdYK7v2u4arhqSLlV0JR4GJQSlM1A4HBmKFSfnyRzm?= =?iso-8859-1?Q?nQutCrD7qyvPp6AzNpy6p8HwVPU4/jWj87DXtWDC8LS0MYeGxYzxxihHzT?= =?iso-8859-1?Q?We4kDFNN2bmpOs7UelOhXKj1SF2ny1n5mrfgZqSRiKYyP4ElftT4TNW51t?= =?iso-8859-1?Q?coWOevEu9k6mGvN98x6/No8huE7omwZoKk26cPKWygHydqgrkWtjachwRp?= =?iso-8859-1?Q?tofv8HuQ+eeTSiZ1l2Ni8qmPTe1T8/ZqV9QJZ1mM5qf2u0k9C4FOmukb2L?= =?iso-8859-1?Q?/PBLA/tUMWqJ4X87em3H7bGsRyKO6C/RIqTcJswZgzYPlsUrUmzeWeiEiB?= =?iso-8859-1?Q?kKgfZeMk7phA1BevF9GxOq8zcxgXy3HcqeDc4oebhsKZPO3QZ7h0AdvAeA?= =?iso-8859-1?Q?ja3u8QLVy07xtt0k+mq+IJqoQpcXrJasvhhzgslCVySfIp0KG7KYx84vVi?= =?iso-8859-1?Q?PNEP4ZMuODagKY72GqwwCadp5U0ZImHCWIKzDk3MqxARq4nBy0tFxRPMmr?= =?iso-8859-1?Q?4yTgyE7bfhJ/b5G9KhKEO5zhzYetBMQ7dOkRzyyut18+AtlVFUg3wKtH/+?= =?iso-8859-1?Q?1uDs2RYxjDT5CeEM+v05jkib9Xyw3hSC5AKurpEvXeYjVtdTITOKFyRr/s?= =?iso-8859-1?Q?j8yW/xWhksSYoaLGEjY=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: 2f0459ad-5133-44c6-799c-08dde596ebd7 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:12.0554 (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: E9KeFiwjgVGyEE1yYcI9DcwH2XAFBIV20u8i++ynnR8zb36D/XZ/pNz3I0gmWZ6YKTd6m3lNzZGEOOXd7ZzhFDu60WgBzO9/JOqCU5uETRE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319080085124100 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 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 | 26 +++++++++++++++++ xen/arch/arm/irq.c | 52 +++++++++++++++++++++++++++++++++- 3 files changed, 85 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 17df147b25..43b05533b1 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -135,6 +135,14 @@ config GICV3 Driver for the ARM Generic Interrupt Controller v3. If unsure, use the default setting. =20 +config GICV3_ESPI + bool "Extended SPI range support" + depends on GICV3 && !NEW_VGIC + help + Allow Xen and domains to use interrupt numbers from the extended SPI + range, from 4096 to 5119. This feature is introduced in GICv3.1 + architecture. + config HAS_ITS bool "GICv3 ITS MSI controller support (UNSUPPORTED)" if UNSUPPORT= ED depends on GICV3 && !NEW_VGIC && !ARM_32 diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h index 5bc6475eb4..221dbf23a2 100644 --- a/xen/arch/arm/include/asm/irq.h +++ b/xen/arch/arm/include/asm/irq.h @@ -32,6 +32,15 @@ struct arch_irq_desc { #define SPI_MAX_INTID 1019 #define LPI_OFFSET 8192 =20 +#ifdef CONFIG_GICV3_ESPI +#define ESPI_BASE_INTID 4096 +#define ESPI_MAX_INTID 5119 +#define NR_ESPI_IRQS 1024 + +#define ESPI_INTID2IDX(intid) ((intid) - ESPI_BASE_INTID) +#define ESPI_IDX2INTID(idx) ((idx) + ESPI_BASE_INTID) +#endif + /* LPIs are always numbered starting at 8192, so 0 is a good invalid case.= */ #define INVALID_LPI 0 =20 @@ -39,7 +48,15 @@ struct arch_irq_desc { #define INVALID_IRQ 1023 =20 extern const unsigned int nr_irqs; +#ifdef CONFIG_GICV3_ESPI +/* + * This will also cover the eSPI range, as some critical devices + * for booting Xen (e.g., serial) may use this type of interrupts. + */ +#define nr_static_irqs (ESPI_MAX_INTID + 1) +#else #define nr_static_irqs NR_IRQS +#endif =20 struct irq_desc; struct irqaction; @@ -55,6 +72,15 @@ static inline bool is_lpi(unsigned int irq) return irq >=3D LPI_OFFSET; } =20 +static inline bool is_espi(unsigned int irq) +{ +#ifdef CONFIG_GICV3_ESPI + return (irq >=3D ESPI_BASE_INTID && irq <=3D ESPI_MAX_INTID); +#else + return false; +#endif +} + #define domain_pirq_to_irq(d, pirq) (pirq) =20 bool is_assignable_irq(unsigned int irq); diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c index b8eccfc924..adb5e49ea3 100644 --- a/xen/arch/arm/irq.c +++ b/xen/arch/arm/irq.c @@ -19,7 +19,11 @@ #include #include =20 +#ifdef CONFIG_GICV3_ESPI +const unsigned int nr_irqs =3D ESPI_MAX_INTID + 1; +#else const unsigned int nr_irqs =3D NR_IRQS; +#endif =20 static unsigned int local_irqs_type[NR_LOCAL_IRQS]; static DEFINE_SPINLOCK(local_irqs_type_lock); @@ -46,6 +50,49 @@ void irq_end_none(struct irq_desc *irq) } =20 static irq_desc_t irq_desc[NR_IRQS - NR_LOCAL_IRQS]; +#ifdef CONFIG_GICV3_ESPI +static irq_desc_t espi_desc[NR_ESPI_IRQS]; + +static struct irq_desc *espi_to_desc(unsigned int irq) +{ + return &espi_desc[ESPI_INTID2IDX(irq)]; +} + +static int __init init_espi_data(void) +{ + int irq; + + for ( irq =3D ESPI_BASE_INTID; irq <=3D ESPI_MAX_INTID; irq++ ) + { + struct irq_desc *desc =3D irq_to_desc(irq); + int rc =3D init_one_irq_desc(desc); + + if ( rc ) + return rc; + + desc->irq =3D irq; + desc->action =3D NULL; + } + + return 0; +} +#else +/* + * This function is stub and will not be called if CONFIG_GICV3_ESPI=3Dn, + * because in this case, is_espi will always return false. + */ +static struct irq_desc *espi_to_desc(unsigned int irq) +{ + ASSERT_UNREACHABLE(); + return NULL; +} + +static int __init init_espi_data(void) +{ + return 0; +} +#endif + static DEFINE_PER_CPU(irq_desc_t[NR_LOCAL_IRQS], local_irq_desc); =20 struct irq_desc *__irq_to_desc(unsigned int irq) @@ -53,6 +100,9 @@ struct irq_desc *__irq_to_desc(unsigned int irq) if ( irq < NR_LOCAL_IRQS ) return &this_cpu(local_irq_desc)[irq]; =20 + if ( is_espi(irq) ) + return espi_to_desc(irq); + return &irq_desc[irq-NR_LOCAL_IRQS]; } =20 @@ -79,7 +129,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 Fri Oct 31 03:41:54 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=1756319073; cv=pass; d=zohomail.com; s=zohoarc; b=DyvlN/QWVTDmkiQXHBxD5ebLWVhMrwREvRL5cdU8+B/Hpv/K0IMllUtbhaUZc57f2iHuff02TOimZaK5HdG8BaP2eTWqq2DmibaohxdTHySLpqCw8ElnWCWdildd3gW6tfeohDOBirHNSwBM8pbf/uevWnvh7MJOkMx3dqsl9TE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319073; 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=FM8UwXdPVdtJK8SQjKi99w43kbIEgGw3VBvnMlD7ASg=; b=gfwfcfMfxPvixcRGCS6MooHHjdhpq9rTFQ0ybvP4j0dSPwK/TRjP0TdbTsnRpRcPgiZI6fib0Pi8FcFRP1QYV28WEr/g0iyJWyRugPMVJFbV9MaLFwLVVDGw+jmUTtCz+p5y5r5tJ+cC+Wy49EAqfBk7bAWOrljntHmjGPf8y0g= 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 1756319073340151.5838047204487; Wed, 27 Aug 2025 11:24:33 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096723.1451367 (Exim 4.92) (envelope-from ) id 1urKol-0008DQ-6S; Wed, 27 Aug 2025 18:24:19 +0000 Received: by outflank-mailman (output) from mailman id 1096723.1451367; Wed, 27 Aug 2025 18:24: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 1urKol-0008DJ-2X; Wed, 27 Aug 2025 18:24:19 +0000 Received: by outflank-mailman (input) for mailman id 1096723; Wed, 27 Aug 2025 18:24: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 1urKoj-000703-82 for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:17 +0000 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [2a01:111:f403:c200::3]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 0991623b-8373-11f0-aeb2-fb57b961d000; Wed, 27 Aug 2025 20:24:15 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:14 +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.9052.014; Wed, 27 Aug 2025 18:24:14 +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: 0991623b-8373-11f0-aeb2-fb57b961d000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OMvvLHaVv1+8dTLsVvXjhlbJ4qPYkr317PwOfjgN9coDItuOmf4qaalcKb8yB0cKJvghzYoMYfFsNz2C2+PYgTO0KbBPR04O9/xc+cbtOm+c7A0FNS0RP6p1zzeB+XNSmgvAEpOphi9G0XP2zszFTTE24tFgXjaTV8bgucAyhSYBtOA1e+5qnz45Xe4lofAWX9SpIsq91MbfDg+9esIS8OTE2X2FGiHvKIIew+dy03JuU2dk1O6IwaJRJ0nnOvHUfJ2Yuuge38QAEP0q2A+hNNtA1Iy6JeXLPD2pEMsoH2FDb9fOXRMWJO1343hOIrFM4vr2dt6obcFDI+QE0bnXrw== 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=FM8UwXdPVdtJK8SQjKi99w43kbIEgGw3VBvnMlD7ASg=; b=hFN3Ud4LY2tvJeF0vhNxVVVmJRBeMVmELF0fygfsYT8TBt1uetDmK+mWkZWO0BhU3o418BgxwpgkCrnYgSRxhMH5mig5cytucHCq1qap6tg0gMinGUW9Iv6eoEUu8OkowInbpdkkPbw2Bi+gA/5lmVjLckdLFuQkrmDOUZfkYctvY/6kWZHmeHRAIhD9LgMimAfRWCrRmghQcRuE7EFGmy74Uq09xNTVtdW9cVMy5Ti0Z9CivS3w9XzQURUE3OEpE5um8I5Po4WVhLzQo+v2PyBxcqvpV+8zy2kzSg+R3rFJ8x6I8mGtCeLYmXz3YYHVgGh3RebnC5QLWyQP1BH6eQ== 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=FM8UwXdPVdtJK8SQjKi99w43kbIEgGw3VBvnMlD7ASg=; b=BNz6j9HpKkaHJE75UO1oMwEUoINypVaxL6zywTolMn9HrmX3uHJuau9r9FGjmVZVRIGeC/hHlBROnulPz0dVuaw0T/8fT/qkDVAHIg7Leg772bVDnnogCe7i4KNog/nYDGuDVn0pwy2bM3iDlx3arPqvTc+cpeL0A5TMd3njMXBPireRqhfCQB/Qltzr2/uGwO3uFUplY3cOwNKtuZpsrIQqZQ9Lx9a/mzOiUtceDNjOvsFplNdQB3r+Qxe5SzfQ6qoxhVLQui4NC1AvAisT6oWnuhaiRq97V1U1LgAsuMoaalaF6NeM7X8V5zy2x9tru7g9FdP43YTOo7mmgE/pEA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk Subject: [PATCH v4 05/12] xen/arm: gicv3: implement handling of GICv3.1 eSPI Thread-Topic: [PATCH v4 05/12] xen/arm: gicv3: implement handling of GICv3.1 eSPI Thread-Index: AQHcF3/KB15KvpnNkEu7nU8vywEQ/Q== Date: Wed, 27 Aug 2025 18:24:13 +0000 Message-ID: <864522724dd6058952cad8b505b0589750b7f8d7.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: 4918f4ac-34c5-4db0-8b07-08dde596ecee x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?nh6rG3yLcj3gO/nwW0JMe9gIxuOVZ0FsdSzhe5Gp4iAlGtUwpJgc4Gro9U?= =?iso-8859-1?Q?AI4zu23LPX6XWc63/MNphPvcTip52Y7izpihLRHO41bXnfbE3DnaNeV/CU?= =?iso-8859-1?Q?G8eZmcoG+eN9UTOwAu9nx/31ZOoXNnk1VK3U+TRS+m1O7cQki5eCDSMQ+X?= =?iso-8859-1?Q?qMxh9RXrTJATT8IAj3mbgwGNwH1uMJ3ghEqDIGJ2wMs7CPpWbnHUsh3ux0?= =?iso-8859-1?Q?n1I3TKpGguXHQEjNdVTBj5yvR3O/YaA7ItLFWgVVhq7INqRrMHdzq7pnSc?= =?iso-8859-1?Q?m37K3WIT5ruJbSCl8QwLP9+aBVOX3cczZ8nBnvRKzhG1H76Dc3vzM49hc0?= =?iso-8859-1?Q?vsUmk2Qtoq52IRD/mebYB3ChBUBXZYaFcCTBdpZgSM8vUrlwH+uFZGZvCY?= =?iso-8859-1?Q?rwiqr5opp5FJ8A6QVWyVzcH8fJsPQCcWb5OfbZA9eSDsK7XOQhTVPvqwm0?= =?iso-8859-1?Q?E/FKy0teFG0nbXw4E53Nk5BTSwxYlYfJ+snRfnKiDGH1yYqEeD6lbEmDDn?= =?iso-8859-1?Q?oKMQXkU/I2wuBIqa+Lx1p/eVzh6LufEkJ1g2LQEQx/NNwGJAfirtY+pEYj?= =?iso-8859-1?Q?H5U3P65Bdph53Pg/kDIKddQo0DkECdjCrjmkdm8Bn+fr3USwMPvinTbVeL?= =?iso-8859-1?Q?qA9QHAnTd5PAwmY/lBZX8/3zK75KAjjybY6BuDWcdPu56Cb7POJ0NQNgUK?= =?iso-8859-1?Q?+CwLLKoG08WscULE9MlUs55kL4cz05XEhfy8/uP5A8AjQkl+/vXDWWqqlA?= =?iso-8859-1?Q?SIdk9cxz0BOnJGBrHdzxGXgiXylHnHL9ItTvGscnSyBzSIvYEREXlmGwJI?= =?iso-8859-1?Q?gJZqrMujnP4O3IjqWAAhVU3wRreHzVxvGlaSxmlSO9HYi4HHKW6CVrcqRf?= =?iso-8859-1?Q?RmN3VRoXwA1/1fQa2w4kMVYPdAbRF+eRgYlt3EaVteXt6ivjp/j4YrLGsG?= =?iso-8859-1?Q?eTLGnidSmRjE4o1w3TBf651rF0R6HS031cVaqcLGGNhflA7m79RaGxbfqM?= =?iso-8859-1?Q?8WvIXhwdetyyr77H8Kvk9R2gOb1vdnvIfInENxv2fKCwQU7pb2kncFGMWr?= =?iso-8859-1?Q?cOb/Zx8N+deJMh2rgicM2CC7ielqW65MokbunVl34toWnEQKfCvs4h2sFH?= =?iso-8859-1?Q?O5653tqQafft2ZBBVZBv2ucIy9221E9iZtNRtEvNacB9HCVCfUax7EJH3l?= =?iso-8859-1?Q?2U82ZimbmMhQCDKqwlACHImPnan1tkJ60eUCB7PrIA3Z96k3/JDDTdNyib?= =?iso-8859-1?Q?0IdDssJzvDNFUz0fq96rS6pCZrhGcDZi9lA0B+DunyeD3BjaHGF7HLIoZ0?= =?iso-8859-1?Q?JTQVWzDb57nkr/Sh7y8zUc7vv7PPnnLEfbDsFOLnh0DDVbOGJSRgB4i0Xr?= =?iso-8859-1?Q?4dajNEibGuYfjhqO/8dURWyNDA9qx7CMgJX4KyCroWL7sjFODTaAHOALT1?= =?iso-8859-1?Q?9hnLhkg8eymJuo/8sRp4US/GbFDApEswhmgLwZxyU/er3SVxUncJjTDwTD?= =?iso-8859-1?Q?2G/JaFAX+pZR21ThepOIqJk7fQUEYwN49DsPl3aDEsUtB6Yh22NFPMVgAz?= =?iso-8859-1?Q?RinTu38=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?H+e2RKZ9C+/RcgMyLAeC3qne7l8A91hVANgFAwZSTcGNBvYK2lxklvjRSs?= =?iso-8859-1?Q?n6rWWpBx1FdV6YE18YUjtPFv1WxE9Q5BVKRdh+QQCLfESQ2P4+0W9gbFx4?= =?iso-8859-1?Q?+0iqlUlJXLuEPxcGQwZFSS+xNhlGgnXVsG9oZHH+Ny2g3Ho2PJtC316KLH?= =?iso-8859-1?Q?QsX7xWWJNMw4dsvXMpJoJ+AwCNgPDTXMlMmXgbuXA4fri6YKqci3UzUiYR?= =?iso-8859-1?Q?m/q726NvmvPxm7GvtDUJoKzd90j913HJ1zXWXLVzbj9fBiuSbs7P5AMjNR?= =?iso-8859-1?Q?Gcu/9c/sE7OcTNG7yZOdSWWAhWDk8jB2RcWBYka2ahFcmG3Hm6yw0JPiZX?= =?iso-8859-1?Q?GPEydhZCixvb07aLXiIa7EWtTZOOBRR9Hg0C9tQl06RL17X4Uv8qV2XrpO?= =?iso-8859-1?Q?yaLkYpUn4aMmlQpTOqNhD4mi2nBTOKcNn1Yf2zs8cKuQb3M5b8t6gfQHzY?= =?iso-8859-1?Q?pqbGDV9rZr57HSvLpbUfEKJJbmq40T/T3IpAQKofPs96aLaCnBYrf5F+mO?= =?iso-8859-1?Q?qhn8ujDzL1EbpN++AEDd8q+oYXJQjsVQT8IOQfYx1E7gGGyxSUEMFk6h1W?= =?iso-8859-1?Q?KSVHIi19hEoJtxxtlE6Us3ZU8i1eLtLh1DvILXCH3iCXJ/KUpGhpT1X00l?= =?iso-8859-1?Q?hQ45hPV3VcRlm4ntec1uCU62xCgLneaoPIrxOT1gYluHomKkEvax+kXKqB?= =?iso-8859-1?Q?mSFbbfz1nmYzfke7/IA5d5FSFXWqV20cmoHQs44+TEEj5lLu7NbB/o/juX?= =?iso-8859-1?Q?NFDzOAasCO8SsZPAWPqj+PNxspZK+Al88agyxgWb4zFadkB+sbbhNZDFeB?= =?iso-8859-1?Q?YCkM9iYei50OYBuTBK98HFPcoT16kyRwVlEj2h5UdeVxJIfblRI4T0gPCO?= =?iso-8859-1?Q?337lLUwfs6eWkA3A4q8hMWPGggCVltAdwJL0KwMBevVSpjamfc64+aKsat?= =?iso-8859-1?Q?FL8J944rU5q6rWpqgygozY0vuvttMxOoyVNEh5ID7TECME8Ke6fjUE/xPW?= =?iso-8859-1?Q?z7mt1OdRXE2IgHwr7fid5uo6B+nkvYLUTmlhFL0/0Ra49+gUtdY4svwd2l?= =?iso-8859-1?Q?Ba2T6xa5Agzq2paxmbks59ZF6hnEv/VLxx+1oc/BelIBGQHUjzujIUhjHT?= =?iso-8859-1?Q?LzLdC7AtQ4yxwbyBDS0zwjRwiBkKdAbhMNDdjfYgiIAEpsN4YTkRrxkpax?= =?iso-8859-1?Q?LJU1+0gemCjt+G53h+zY26Um2MbbT6cEGqCkGbXnX1wyihbB9wqS1iTf45?= =?iso-8859-1?Q?AmM3wok/IORkE0HQ46n3CiJEw47FQvdZyZUhZdq97A02yeHGnhWrywQGTZ?= =?iso-8859-1?Q?3FJ3hieXMYgAOwyPcR0DeXmC+QWiARO+R6cqXN3FSxynvy80SAQM8gIO4Q?= =?iso-8859-1?Q?RaPyj3r21DBRNL1vM+EGbHCD6qoD2/Gk/bJV9dnBjQOST8FB730/y28fOT?= =?iso-8859-1?Q?+yOCsPqEbqeA/dFQaeBy2PUK11lD+ABHtX4l+Cv8uDAI/fmzcXAQ8t1Rj7?= =?iso-8859-1?Q?g60eabw8/JdV5aO8RMtqJD0IFl1gtmJ/mNhFxF43oCBkMXbi37dxFMObFI?= =?iso-8859-1?Q?7Lk3mDIrnKm1bbtecZLFv3DIpHT1Ioo5PigWs0k8IqgjI8XT8gExvCOyfg?= =?iso-8859-1?Q?vi9/wb8norUZJOkLf6yQhVEb6GqXYIuzajZIdUWNDvLNEvyQz7eAXw9LSk?= =?iso-8859-1?Q?GtXlDVfitGFYioZ0uE0=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: 4918f4ac-34c5-4db0-8b07-08dde596ecee X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:13.9069 (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: vNqf3aV4FEHqxvf48Ty1I3UAdFqc2lCRtxUW4gT0fXmwF9DZWUYI+ACmVmoBBKllvJXASmhEP51IUCiNH2wlM1EMQtmsi/DxWN365D4B6L8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319074388116600 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: Volodymyr Babchuk Reviewed-by: Oleksandr Tyshchenko --- 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 Changes for V4: Changes in V4: - added offsets for GICD_IGRPMODRnE and GICD_NSACRnE that are required for vGIC emulation - added newline after ifdef and before gic_is_valid_line - added reviewed-by from Volodymyr Babchuk - added a log banner with eSPI information, similar to the one for regular SPI --- xen/arch/arm/gic-v3.c | 82 ++++++++++++++++++++++++++ xen/arch/arm/include/asm/gic.h | 22 +++++++ xen/arch/arm/include/asm/gic_v3_defs.h | 38 ++++++++++++ 3 files changed, 142 insertions(+) diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c index a959fefebe..b939a1f490 100644 --- a/xen/arch/arm/gic-v3.c +++ b/xen/arch/arm/gic-v3.c @@ -485,6 +485,36 @@ static void __iomem *get_addr_by_offset(struct irq_des= c *irqd, u32 offset) default: break; } +#ifdef CONFIG_GICV3_ESPI + case ESPI_BASE_INTID ... ESPI_MAX_INTID: + { + u32 irq_index =3D ESPI_INTID2IDX(irqd->irq); + + switch ( offset ) + { + case GICD_ISENABLER: + return (GICD + GICD_ISENABLERnE + (irq_index / 32) * 4); + case GICD_ICENABLER: + return (GICD + GICD_ICENABLERnE + (irq_index / 32) * 4); + case GICD_ISPENDR: + return (GICD + GICD_ISPENDRnE + (irq_index / 32) * 4); + case GICD_ICPENDR: + return (GICD + GICD_ICPENDRnE + (irq_index / 32) * 4); + case GICD_ISACTIVER: + return (GICD + GICD_ISACTIVERnE + (irq_index / 32) * 4); + case GICD_ICACTIVER: + return (GICD + GICD_ICACTIVERnE + (irq_index / 32) * 4); + case GICD_ICFGR: + return (GICD + GICD_ICFGRnE + (irq_index / 16) * 4); + case GICD_IROUTER: + return (GICD + GICD_IROUTERnE + irq_index * 8); + case GICD_IPRIORITYR: + return (GICD + GICD_IPRIORITYRnE + irq_index); + default: + break; + } + } +#endif default: break; } @@ -655,6 +685,54 @@ static void gicv3_set_irq_priority(struct irq_desc *de= sc, spin_unlock(&gicv3.lock); } =20 +#ifdef CONFIG_GICV3_ESPI +unsigned int gic_number_espis(void) +{ + return gic_hw_ops->info->nr_espi; +} + +static void __init gicv3_dist_espi_common_init(uint32_t type) +{ + unsigned int espi_nr, i; + + espi_nr =3D min(1024U, GICD_TYPER_ESPIS_NUM(type)); + gicv3_info.nr_espi =3D espi_nr; + /* The GIC HW doesn't support eSPI, so we can leave from here */ + if ( gicv3_info.nr_espi =3D=3D 0 ) + return; + + printk("GICv3: %d eSPI lines\n", gicv3_info.nr_espi); + + for ( i =3D 0; i < espi_nr; i +=3D 16 ) + writel_relaxed(0, GICD + GICD_ICFGRnE + (i / 16) * 4); + + for ( i =3D 0; i < espi_nr; i +=3D 4 ) + writel_relaxed(GIC_PRI_IRQ_ALL, + GICD + GICD_IPRIORITYRnE + (i / 4) * 4); + + for ( i =3D 0; i < espi_nr; i +=3D 32 ) + { + writel_relaxed(GENMASK(31, 0), GICD + GICD_ICENABLERnE + (i / 32) = * 4); + writel_relaxed(GENMASK(31, 0), GICD + GICD_ICACTIVERnE + (i / 32) = * 4); + } + + for ( i =3D 0; i < espi_nr; i +=3D 32 ) + writel_relaxed(GENMASK(31, 0), GICD + GICD_IGROUPRnE + (i / 32) * = 4); +} + +static void __init gicv3_dist_espi_init_aff(uint64_t affinity) +{ + unsigned int i; + + for ( i =3D 0; i < gicv3_info.nr_espi; i++ ) + writeq_relaxed_non_atomic(affinity, GICD + GICD_IROUTERnE + i * 8); +} +#else +static void __init gicv3_dist_espi_common_init(uint32_t type) { } + +static void __init gicv3_dist_espi_init_aff(uint64_t affinity) { } +#endif + static void __init gicv3_dist_init(void) { uint32_t type; @@ -700,6 +778,8 @@ static void __init gicv3_dist_init(void) for ( i =3D NR_GIC_LOCAL_IRQS; i < nr_lines; i +=3D 32 ) writel_relaxed(GENMASK(31, 0), GICD + GICD_IGROUPR + (i / 32) * 4); =20 + gicv3_dist_espi_common_init(type); + gicv3_dist_wait_for_rwp(); =20 /* Turn on the distributor */ @@ -713,6 +793,8 @@ static void __init gicv3_dist_init(void) =20 for ( i =3D NR_GIC_LOCAL_IRQS; i < nr_lines; i++ ) writeq_relaxed_non_atomic(affinity, GICD + GICD_IROUTER + i * 8); + + gicv3_dist_espi_init_aff(affinity); } =20 static int gicv3_enable_redist(void) diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h index 3fcee42675..1e747dcd99 100644 --- a/xen/arch/arm/include/asm/gic.h +++ b/xen/arch/arm/include/asm/gic.h @@ -306,8 +306,26 @@ extern void gic_dump_vgic_info(struct vcpu *v); =20 /* Number of interrupt lines */ extern unsigned int gic_number_lines(void); +#ifdef CONFIG_GICV3_ESPI +extern unsigned int gic_number_espis(void); + +static inline bool gic_is_valid_espi(unsigned int irq) +{ + return (irq >=3D ESPI_BASE_INTID && + irq < ESPI_IDX2INTID(gic_number_espis())); +} +#else +static inline bool gic_is_valid_espi(unsigned int irq) +{ + return false; +} +#endif + static inline bool gic_is_valid_line(unsigned int irq) { + if ( gic_is_valid_espi(irq) ) + return true; + return irq < gic_number_lines(); } =20 @@ -325,6 +343,10 @@ struct gic_info { enum gic_version hw_version; /* Number of GIC lines supported */ unsigned int nr_lines; +#ifdef CONFIG_GICV3_ESPI + /* Number of GIC eSPI supported */ + unsigned int nr_espi; +#endif /* Number of LR registers */ uint8_t nr_lrs; /* Maintenance irq number */ diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/= asm/gic_v3_defs.h index 2af093e774..c10db9bd05 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 +#ifdef CONFIG_GICV3_ESPI +/* Additional registers for GICv3.1 */ +#define GICD_IGROUPRnE (0x1000) +#define GICD_IGROUPRnEN (0x107C) +#define GICD_ISENABLERnE (0x1200) +#define GICD_ISENABLERnEN (0x127C) +#define GICD_ICENABLERnE (0x1400) +#define GICD_ICENABLERnEN (0x147C) +#define GICD_ISPENDRnE (0x1600) +#define GICD_ISPENDRnEN (0x167C) +#define GICD_ICPENDRnE (0x1800) +#define GICD_ICPENDRnEN (0x187C) +#define GICD_ISACTIVERnE (0x1A00) +#define GICD_ISACTIVERnEN (0x1A7C) +#define GICD_ICACTIVERnE (0x1C00) +#define GICD_ICACTIVERnEN (0x1C7C) +#define GICD_IPRIORITYRnE (0x2000) +#define GICD_IPRIORITYRnEN (0x23FC) +#define GICD_ICFGRnE (0x3000) +#define GICD_ICFGRnEN (0x30FC) +#define GICD_IGRPMODRnE (0x3400) +#define GICD_IGRPMODRnEN (0x347C) +#define GICD_NSACRnE (0x3600) +#define GICD_NSACRnEN (0x36FC) +#define GICD_IROUTERnE (0x8000) +#define GICD_IROUTERnEN (0x9FFC) + +#define GICD_TYPER_ESPI_SHIFT 8 +#define GICD_TYPER_ESPI_RANGE_SHIFT 27 +#define GICD_TYPER_ESPI_RANGE_MASK (0x1F) +#define GICD_TYPER_ESPI (1U << GICD_TYPER_ESPI_SHIFT) +#define GICD_TYPER_ESPI_RANGE(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 Fri Oct 31 03:41:54 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=1756319082; cv=pass; d=zohomail.com; s=zohoarc; b=j+6r9Fr3OooJcF26m3slWgr/79W9o0MRNWj/gDjo67S2LcXFAOY4mrwAcabhC8Wsb+cbn8+0HrsmVCTIaiPguzL5JkKWB59lRFjg3ZeUQbbBKqeyvfzectx61uunw4v0fk5FUA5Ycn5Gg5NLxD8zoZPFoxFcIyBqD9HRzPbnL7U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319082; 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=pnzy15kpQUB2aljLQCGM3xkSvJVu3LwpRqowKjns4VU=; b=Gbc/PK4ESbTTu5RsxKpU7CEHQJTrI3hVvLSj8LCezM+C4SreH9NMQl6wK9pnowSEz6UsW6mZcYHKppWGY97VW7Or5hOcC/By/Lan27Rz7BC6n6vhrgjPiWAq78ii7JnNbgS7Tj/p3FkjAW6GNA55g8I8le8OH1EfFgU51eFPjs0= 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 1756319082039328.8826975080332; Wed, 27 Aug 2025 11:24:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096724.1451377 (Exim 4.92) (envelope-from ) id 1urKoo-00008o-Dn; Wed, 27 Aug 2025 18:24:22 +0000 Received: by outflank-mailman (output) from mailman id 1096724.1451377; Wed, 27 Aug 2025 18:24: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 1urKoo-00008X-Ar; Wed, 27 Aug 2025 18:24:22 +0000 Received: by outflank-mailman (input) for mailman id 1096724; Wed, 27 Aug 2025 18:24:20 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKom-0006ki-9Q for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:20 +0000 Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c200::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 0b4580af-8373-11f0-ae26-e363de0e7a9e; Wed, 27 Aug 2025 20:24:18 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24: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.9052.014; Wed, 27 Aug 2025 18:24: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: 0b4580af-8373-11f0-ae26-e363de0e7a9e ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=caOTPuYbSmSZGNZz0sOkiN8aby/w/eVMiaspTw2yf0jydc1jQl9I5TWBmaTx7sc/gWg+j2IzFU/OnNqLxWcU5/t6M9I68GC87J+FAcn7GnsNE2sBtEAVGeG/dSFcA1/RIOG9/osDjyLWGK2INj4FG/ixp2ZcOEP+agvY2fYq6cFLzjyJBC7adWdxtDafT8+kf6IzOOte3XkpbIaYMhi7mxcZ3bMHD2T799SojUR5pDS8ynPXvcWF/x79348HDxJYTUBWI4pXn10R0wZB6EByq6k5nSua+UgH/eMevWRtKfw5j+2Ezh6HlnpoO3jcBbCPvtqr9Us8C5OGpma/tntEOw== 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=pnzy15kpQUB2aljLQCGM3xkSvJVu3LwpRqowKjns4VU=; b=WbzwsnMHPyo416rotW7Ppf669zQHzYFnx8ZEj/jY1P3hnI/xQFDUA+NtGOoI1CCCnwtQBSGZJftSDUpMj89uUlKQQQADO6wVSYMKF78XcggyqdnlnEHwjqRo1/s4MeeJKBNTjj+hN+Q3bFeexn1RXZrMOkGFnytWy4uJaMlaGw1ruuK8SIJ9jgJytnhZ6WY7akZ5uF27M8P9jyb88uHhPB1frrpBqWEhb3gu3DvUbMTpnjT3UHLS5OzMDYGoVuifKWfa1mR7VysqS6Dw3vQdOD+Hgnray7TDDWSeUnFpHpWTULUNCZItPEobIcgDEhlGLw2rfkNwN4vop3iYdpeKiA== 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=pnzy15kpQUB2aljLQCGM3xkSvJVu3LwpRqowKjns4VU=; b=QojNKQuZXKbiT/n5uTxVj9XfkiNUvHaoOd/re1TVPxWPS9hOmr3LERAcieH4xJNB1Lwx+O3TyXIXP5AWke8xHdOQWC1n4lf638x0yshulwu3zmiy02pKLzwwfZmwvusmz9aQ173ElrAM2bNMeDDqplzErtWJ6O3xWER0NQIKYFCXDNpE9xsZwmTAmBB7dJU17MdcfQDzDyf3H4FlpMwX+A1nmZBx3SB8lGULWGsSz47bB6QdAX/ttRDXNgNyXC7KF7zYdia8yDvKGvFeXFfDPwihzxqKpv3xYlxsVn6yuGWTs8QQjeFv4LkuneevFbT54/Tz1VHg6SZonb2rhfrRJw== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk Subject: [PATCH v4 06/12] xen/arm/irq: allow eSPI processing in the gic_interrupt function Thread-Topic: [PATCH v4 06/12] xen/arm/irq: allow eSPI processing in the gic_interrupt function Thread-Index: AQHcF3/Loedl2G5iukGvdwDJKvr6zw== Date: Wed, 27 Aug 2025 18:24:16 +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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: 9344efa6-74fd-4d89-2777-08dde596ee48 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?qVQoUBaJAntHW6rOogsb28f6bsHsNHRlyx9MB7V/p6lUg1kjRhRcxSkLTR?= =?iso-8859-1?Q?oWnqiT8O+9K8OSfHhooiQ/f5OvCX4O2i1Cwoba/2yE4bUmL25EBN58nXf6?= =?iso-8859-1?Q?QFWBAisgjTO1MkZ7WaUCWt1VIELgP+qPOTVRpf9JKnvcKOTOG6DhNVGZcP?= =?iso-8859-1?Q?WtSD3fVU+HBPXLsFgCrFjHwhNUHAJOq5LhfbGi+DYGqFQDekoqpzdK9gyn?= =?iso-8859-1?Q?jmQ+ZTd3bVQhMWAX9Lr5V4IL4xruAVdpIfk/FNU1q06UP/xy7tb8R/JTCf?= =?iso-8859-1?Q?UtEW2sbBtG7pFnekFS1uC87D/kOzF+GSUzzr/1i5Vu6xN81FP297cXeNAC?= =?iso-8859-1?Q?7v8x4dFoxG+D+1N8LgboYObN50HErXUDfHvfQ77A7bcMW9d+PsIXr3Ta6y?= =?iso-8859-1?Q?p5aQ+F0fQcgonJ704wU/ZMExHy7WLurPTAaLSQ9fG4HBpHro++yJqLlV+b?= =?iso-8859-1?Q?aqptIF5wBH2OntCR21zXwVMs4KN5a8/HQ6U6DbvKA+UMd0EK+XjykvchPy?= =?iso-8859-1?Q?txfLMc6etMbv39EemT7/23CwI8jpiYYj4wFPl/5lJrILnY22n9khSOZjR5?= =?iso-8859-1?Q?ZIOvd9iIp6eSIbnhI8ZKvpZ2rXzyO57iOMAsGKlP4a0m2LbV/j33EYacT0?= =?iso-8859-1?Q?IWI2gzcmvCGoUipLYele3gPXOQbj8uM5vco804jyRoAnXPV9b9dH9vjzAo?= =?iso-8859-1?Q?ma0/FCNPAl903h1aZQkYyrvVz9LwBfH0V/ae52TU9iwk2Zu3rhVkJpMvIR?= =?iso-8859-1?Q?HZ9H6GUK/uxkXS1KGgkOC8rVK/PhifEeA1D7JuXYYDzzRb5RVMc418dXh3?= =?iso-8859-1?Q?y55/pVO/djxkwRiUm98Y2icrbFoMEPzaDV1dJ5NxA9VXrlSvizKhaGhcGC?= =?iso-8859-1?Q?ahwF5X9f959sCoSREXX9oeJNDkgt4yhc0b3dJVJJeadJf0xELNPKOkMeO+?= =?iso-8859-1?Q?SbldMsP3A629KkP0lKm3H3mDy+/FE6TruQ7Bqk9No7iLd+YZgsyEEdEIBQ?= =?iso-8859-1?Q?/qbKDRv0aNPG+aeo3ewXz5CLFMrhxQSZI3olnMLAaKhENRD1qgat/bDuM7?= =?iso-8859-1?Q?mGR8K4YE4dKxyEZPfpL24VMK0YJ+HsjENL6+w9RKHAA9UFafy9pO011p4h?= =?iso-8859-1?Q?/dkPx50q4t/bSQXUr1Ytwh11iYvnHNV7MfJbFTwbuTSPucVP1Q3T9vHbhW?= =?iso-8859-1?Q?dJ0Xe7yG7SOv3bTCFgpFL3qO2i25SKrLhd8dv9aguhb+43meDWvUOa6dDV?= =?iso-8859-1?Q?p44HaNRyvWyfH4sP8adqHykgiH0rdMYGLECBAQlsIUN3CaEIPXMq8pVRgC?= =?iso-8859-1?Q?m5Ny1RgxbOmvBvu/86KigHxo47wiDWNb4QdWXhshUppiT6LLqqsaGXdKOZ?= =?iso-8859-1?Q?sH5o4sHHXBvwsMMtc0Jv6LIUqtO13BWhT9CGbxMAvy9iLmyoGChG4ABnxo?= =?iso-8859-1?Q?I0NDeBLYUvhkSwM3LLwnv4SWsoIVVtQFPQeBdrI1quHRmDq4NvTaZIN/ZK?= =?iso-8859-1?Q?FxnLDfCZRGok0mUSNJii84+5f2kzfDDYCJ7WFGkCmk0A=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?/soGEYtSDdA4qda4sBo6Pm0qujdGpXKCGJubRFkYWH1pK6At2lR7LONJFf?= =?iso-8859-1?Q?gnTBZxFw+4+r9SY5a67PQeqic1KMlmbM0CfrQG2Ninx2hP+GMCY1xhutMV?= =?iso-8859-1?Q?aLYtjEk6taR6y9BG5YLiXj8xBTv4+LPSvLCvbYPUpovb7COLUKgrlT4o1g?= =?iso-8859-1?Q?Prn7sM2uv4lY1QyuUegJwli4tYc/IAEljJ9F3KklRFi1Pq/f7PpgpyCL4j?= =?iso-8859-1?Q?RaZdoxIygLqxg4/cXENzWfpucKobFDApf/kYl6O1EurLQr/rjf7/ixzxdI?= =?iso-8859-1?Q?2Tz+JnkpulvGa4ddbR7k9ikyrpp6THPV8QyzqSmFEZJlrYhKakmtVy8Ilp?= =?iso-8859-1?Q?9sdAa4B7zlg26IYFTuMSzW3TLmwxK7pRj7BqUGUfNfOITVq18E+gVxTLSF?= =?iso-8859-1?Q?yyKVU8t7Qm+QatHM4pWl6gU58selu9mgvPo0wim5ZuraYAiQJObpBSBr1u?= =?iso-8859-1?Q?s9TWkHBj6qWXvBMpgqANrMwg6SGMAdKfV0o3QWDieilNKsg/lEKYQ3TRRz?= =?iso-8859-1?Q?MKYFAWK+ZshD7neQSGQK3DopqyADb7hipzv3avy12UdKE1aZyOVswhxWKH?= =?iso-8859-1?Q?+Uy9N0/IeUlruK2rqYYxkYUmDCIaVNIBP/mUQhpBK+RxhL8l1R8IA7kTa6?= =?iso-8859-1?Q?0pfjc65jOWXZHR6oemsBppGtRYR//Xm5dneFaZGepnvKV1ifVbUdnNAbjr?= =?iso-8859-1?Q?ehiKKOP2zc0PsV1BRXfe7HAlyyTSeZ6I+gtfnGC0Ipy+uhqNOcHWFhwLIl?= =?iso-8859-1?Q?k5E9724xS63sh6sl0dRm0HdsSUXCE8Bsc531lRfTyr/ZfR+zSrnkkOlvKk?= =?iso-8859-1?Q?oxnpnPCYqsg7qP6vDRX5iUbuMe6ScYDcFYCJ+mRXHPDqDIo+5VUBMJBHbv?= =?iso-8859-1?Q?+I+MTH/CbIRXm6qnoY/mH8G9uVaX4P3xo3suSlwE+W68auAgexdlWA2CoB?= =?iso-8859-1?Q?QQd74O6MtDQUwcTqDJalOV9SMTTml/AGcEaj7zAYGGiUKYZrQj6tzc9xQK?= =?iso-8859-1?Q?wPtvcHRDGbfgubD5F92C5j1hak0c60GzLVVE6K+3J65kGbog5RMIXb715P?= =?iso-8859-1?Q?CdKoXvorWPnFtgFfJ/qOezoLZ5GTaB1ZG6NJHQYVI4CFjAxQslWjsHTGCL?= =?iso-8859-1?Q?89NcHmVXchxofVDodxHLbs3RJF6E8k+pCrfJ4gxOpMRTJlwUnxKoJvK//C?= =?iso-8859-1?Q?YbYoVYw09fEP2YOK7jS8EFcKYfO8N5d3p7OCvW7fZXGHD3wkeucUtQeviG?= =?iso-8859-1?Q?FBZnoJ6QzVz4Syp67vtWEvUlXycoGvaqwZFGKj8nqEHF4XR7/9e+ooUQ2y?= =?iso-8859-1?Q?B+11IP1K0C2opBkrU0QfEfJUVIUMGWJ7InlB19H4E7vLMoI87rFAD+CYEh?= =?iso-8859-1?Q?7PVxXk9t/b44F86qq8TF2v/HswE5XpgjNQKIKBbgTDvPzqrtkeM7ZCP9EX?= =?iso-8859-1?Q?PNHTlzibza3ssFUtlTYQx/toE5u7lqLYr0kWkycxSSoq8xey1Jt0emmlHI?= =?iso-8859-1?Q?8uy5mOLN8YL3U2p6SlWI7ewE0ne9ffKrxA0RDQ2dLtyCPtuYA13lWrjbfZ?= =?iso-8859-1?Q?yghjCERO45uNAqPdNczi3EUqBnFWCw69NVQx7DQcItoHH//7BEf6REYWwZ?= =?iso-8859-1?Q?OdCIhTYmpkTl6QJqn2eR42gH09WFTV8cz3feW+Jbcyr+zza6vIRgApbQy1?= =?iso-8859-1?Q?TAwA/c2GHNsh/nS9bFg=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: 9344efa6-74fd-4d89-2777-08dde596ee48 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:16.1982 (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: gf0ejP/ASFlV8kSgx5Oy0148USNOQAuQFtprLhu+xwLNL8a08UmYxhLjnEdlWng7c1MYW82rE+ROG1UjoSt5XxrfF44XDCGlcoica0ksnFw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319084022124100 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 --- 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 b88237ccda..634b77c987 100644 --- a/xen/arch/arm/gic.c +++ b/xen/arch/arm/gic.c @@ -341,7 +341,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 Fri Oct 31 03:41:54 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=1756319076; cv=pass; d=zohomail.com; s=zohoarc; b=DncrQ96ig/M8Qq8t7ZMJ7204LefnJ6OO86fDKLtM+2kuMZmOS07Fvwra7nx2I2+Nzzz0JMWkgAQSXI0MKJACqeLVZnRx8xh7UvZa5u8foHoo4NoiiScyW/ZhX3V/8PxTJ3P8Iq4IL/huT1bQYHwHKaNiueIzx01OmkWs23dSPKc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319076; 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=jtL0A0E37mr33YnP99iRQLje8SLn7K4xvKHMnjNefTQ=; b=WYOI/QlgGeI7sckX985qBJ+7/J5Anfz60+lIm5HH4XovNLSSKRBFlzHefoRvObYPeyBYpjNwnK9RbO+4XLm4IY4HyezVDpJMKAxqF67Ts8uqiM7PBEwoRe0oNfCHaFMF11Ci4SBoClkonQD5hWPm4wgH6mxtzO8JkMn+eEv4/+o= 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 175631907697076.92359002224055; Wed, 27 Aug 2025 11:24:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096728.1451384 (Exim 4.92) (envelope-from ) id 1urKop-0000Hf-59; Wed, 27 Aug 2025 18:24:23 +0000 Received: by outflank-mailman (output) from mailman id 1096728.1451384; Wed, 27 Aug 2025 18:24:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKoo-0000HJ-Vj; Wed, 27 Aug 2025 18:24:22 +0000 Received: by outflank-mailman (input) for mailman id 1096728; Wed, 27 Aug 2025 18:24:21 +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 1urKon-0006ki-RL for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:21 +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 0c766d63-8373-11f0-ae26-e363de0e7a9e; Wed, 27 Aug 2025 20:24:20 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:18 +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.9052.014; Wed, 27 Aug 2025 18:24:18 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 0c766d63-8373-11f0-ae26-e363de0e7a9e ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=stRNwQiGfgmnifNR4o/pUG8P5CPOGAKq/dS/HjSNuhH2myIDMHglHFYmnn7VwWck2GG4ssevOECy3eng2qbiCDKvjF3WbiCvLMX00GTYMdLuzUdHZSbGqstJEp9dAtx+kQA9yHgKho4sP+nfbjY+fs/5pWLed2Zj1FOxTIdfFUxzd25K36bh5usWHEdBjaqhccSgy/WOrNJpW/rxRFRodySgjqSaLHSiwgS3FaA4ftW56416n4jxV6DvPUMp8pmlj2fkhiSRM8J7I4jNJTn1t9/YX/3sjsbBSu0baV+W15kzIOkeHCnT87BNRrkpdEZsv/n/Kbkr6oz5eXaYxSdCwA== 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=jtL0A0E37mr33YnP99iRQLje8SLn7K4xvKHMnjNefTQ=; b=QbHAg8rGQBGD7hSe3/SV75Lh3Z4Nm6dtz95LIu/y+sCXCypEJgCGnyhYaLSLuPmZPv9AHXa3XH87WllB41QqcFrjxCecPt35B63DLGyJYoLlQz/+w5RGos0jJPBQWC2uxvIYOXxm3rRblx+Nt6agbtC8w9UkSSkAPI5BhYo876ITu9Oq3okvBp4/xRs4FktJodGdt6CDirsUcVe+w5i/31pTAxYW4d/GheZk8T0pz0uy7COXCr5OCfklYOZTs2RODCPyiuE0yUw17vUcd3vs+b346+V9JZkHZPywBdrwSvbuLvAKh1nbsYfdvLBPMvuc9y1M68G3hA6lEoY/eMUnTg== 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=jtL0A0E37mr33YnP99iRQLje8SLn7K4xvKHMnjNefTQ=; b=k8rsPW75Y5Mqvjwzdfsh4uBS/06EsFWvXIXJLVy06Lsi8lvxAB7nS7ZuRNzFqAR4/rt3ViI7ciU/Z8NbPWTK3fanKRottohsYuXHMnlE3W0UtcCG6Ye9fNLfabi20pEqc0J8wCqbxk8p9lzSKQ6dx5K347qBdJS25k/Fyf50WPVwUrZEQggdpXVXVzXZBs077/TVYxQnHF3SDJkFPeMVCfppyHCsQhTLOY0tedT9sCLimSZJbWsjY1Kn5PBLFEO35Cq0u5mySWjMRF3k71vxjvm0mYSJSrMn/D3nVB2+mH7BkDSnTytDFGQpISGcbLnBzia8g01zBcgAWae6UjDsZg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Volodymyr Babchuk Subject: [PATCH v4 07/12] xen/arm: gicv3: modify ICH_LR_PHYSICAL_MASK to allow eSPI processing Thread-Topic: [PATCH v4 07/12] xen/arm: gicv3: modify ICH_LR_PHYSICAL_MASK to allow eSPI processing Thread-Index: AQHcF3/M1ETcfpgi90idtTPd2WZvfg== Date: Wed, 27 Aug 2025 18:24:18 +0000 Message-ID: <2252a686e800a9752cb22473c68236cb27734c26.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: e4d14e36-eb2c-431b-cc0b-08dde596ef6f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?hinUjiR2lQxHZ+cxsZ5SbdeLz7xNuc6Tcuqd77FwHdfYuC3Ch4g9YuOb06?= =?iso-8859-1?Q?0kx/YN5Ir36mQL6ohXM2C2Stb+bE23eW3pwGx1erpOhHwIcVm0ca/OSDJf?= =?iso-8859-1?Q?lqkjzTVorZ6w4hZL2dSUbG2+0kzpEgt5AlotCRstOzUTGiLpE8m9JuuL9+?= =?iso-8859-1?Q?3GYn58CLKEwiVnXfw+iUHFDQcimVDH9XlgmLRg3+9q8xKp41MI96ZJ8h4Q?= =?iso-8859-1?Q?46yxU5oir8ZtzLjOMowGGqjZf6shrVuvHpeXQn0YuoFd8cu7V9alIq53Wh?= =?iso-8859-1?Q?OaUXPkzGTq1F4bGArgXGk5t2j5QpWijV0hz8ACE6UpcEuKecmULLfiuD+t?= =?iso-8859-1?Q?wuvI0BgKNcoevM73Pal8GxlgKOf/xsyHE40P0oRo8fClYs7kDdBeLv4812?= =?iso-8859-1?Q?LkoJeUGqy1Ka+2nLioeKLqJ+KRtHrCf3y2CFLfRmfcL60I8Kua3Pdffg7u?= =?iso-8859-1?Q?u6WB06PMEor+OKPEDdJG3k5V2p0z3/5Et99jsTq6DfddqM6tJYksBWBr/b?= =?iso-8859-1?Q?zjG1A3VBjbbw8ap3uDPKua21NgUB4bzCuA4cTj61Sarul5xqebZvuCnlz+?= =?iso-8859-1?Q?ugzQoGy792K63wHEH2nGVCQShlWnEw/GnoR72XgQ8LyPikySKH1r+7KWwl?= =?iso-8859-1?Q?KK0M8SXHprDu/tmCcvOr2U7XfF+4Pgb1S99KdiP8w4v1qSH3qNTRXV1RPE?= =?iso-8859-1?Q?ghHmQzYBiBr0n8qCli08gg/9xla5Ajk+UOyw26/tel5HjoCdIzDzP7XWF0?= =?iso-8859-1?Q?Ej05xLwQOgqjcgpipGvMqWM/bHZ2770O0lvLy9d+McOkCXKR3V+GbRPODs?= =?iso-8859-1?Q?N1XiweqX8x2qur74cVdQ6mN3+QvsTtGHdcmpuUwIYMN6+UXLNxx370h9AJ?= =?iso-8859-1?Q?Ka2D7dIZYZqRYTIm8Qgu7+hldn1FGxPxWbGni7H+A4d7E7P3nho+uh3/Vo?= =?iso-8859-1?Q?rLXM7m0HVdlFEm//DuCaplCjCHxqeUNSt/gOu2LqFofHyjRcYevwJu+oo2?= =?iso-8859-1?Q?z5N6Rvb1c3FV7DOiPi9ps5jPe60OyYsr8ybMHnOlJHI70A/31GhriHNYMx?= =?iso-8859-1?Q?7Y53NHwKbNFiAbwwJOiGrqhx6GHyTuGOAVDXNhxMDHH4rvmPAReAph4eY2?= =?iso-8859-1?Q?iHbXVCv4jJJhzb870bmZXx4F8L7guEM8lO5NgZP2eqTdAPoGG1ZHPX5KXF?= =?iso-8859-1?Q?ebCyF00e/gG8oN7GBBtldwym2BiDx4NoS6Weu0MVKhZvDfMm+U5t25HSLr?= =?iso-8859-1?Q?5PSb5ANIrxyqacDVlXK6+zfFMtBDBr2SgML5bgWlxdbvLsw4s8nmuds8Vi?= =?iso-8859-1?Q?uVk8XAlb4lxtoRxjThsJ5kulC0vuDFF9ojUyD6+j5xVV2hwH9kj/wNXN0a?= =?iso-8859-1?Q?0cI/OKcDYneHvj1qEbYsuYhDuViWUwJX5LP1W4PphOli8u2jGSeenSwSRG?= =?iso-8859-1?Q?oRGqrNBgT4pEuLJQ5gMhB1P5UBgRJdPfDtLrUZRIRj15+eAz8kTNygflnV?= =?iso-8859-1?Q?APsvs3k8KPZ8PmMQViq+ZWDRxm4fqQsW4LMj29KRh/kw=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?45LZdY0NfjWvD1Icm5PF2X03tsrvzAaa+zHTOtLtlhZkopMgkMnVnfU70m?= =?iso-8859-1?Q?Nos5hr1bl9Z71PiZMv5hikpytYmS5bSps5K014mCUgHAjajgdSXv8Jfbp7?= =?iso-8859-1?Q?byJwq4OnH86YWO2KEjYORCbTCvyQ8jYuk5K1nFXIAbpMp4wIDMSuHYavjg?= =?iso-8859-1?Q?XuqbTLozVDojnIBV0pGBDJuIUcdAfbTUBAgCAgIeM4ldLteLCFzEAdoxs3?= =?iso-8859-1?Q?AvyqNWQybysmZBu/jKODOwL7R7ZgfV92ZO2IdVeRciKEjmlOqINydctP0T?= =?iso-8859-1?Q?dKgIAuKjBMOIUCsBdR2J4aZfLLSo/Ka4RcTgVPugkAvbKFWHjOzYr2PJp7?= =?iso-8859-1?Q?QBuLbUNG/touCOhHjAqBjbW4qdzrJUjvY7p8zmunZSu9a1qk9IE3R/bVHH?= =?iso-8859-1?Q?fzNg9DxcqukAPcGrXAGrVwM+yQn+oPHDcpJW2Gr+OZzgi8kAuPG7pCoRE4?= =?iso-8859-1?Q?EDRQl6ZY82eG9XD0rC/D/tu9yukazJTJzVHcSii/EKdvPLGPCusBXxPaZy?= =?iso-8859-1?Q?K7HUFB0K3iGVl9GBPSfMLd8jY3vg3PQChKn8hG50kFEVNL5d7nctoiBsHi?= =?iso-8859-1?Q?KE/lc8amgzO7tPAxdIJ15Uh0Taa08xUxtwqnsVDujFkd91sPnDL0tUQGab?= =?iso-8859-1?Q?62B5Qd94lPwIxkf1BiTv21anBv0zM7uNHJ0gzJpK5Qn0BfUFH9dpOIdiHc?= =?iso-8859-1?Q?Bm2zOsd8225gAt6i4XAYjxCIvjFFs3F7yd52DDntvlUmLXFEGpXP885SOj?= =?iso-8859-1?Q?ARuYgyxy2/Ftmf063SFIck6lAqBO5z7rUJv9UPF+uv32ri778ifAXZf1Vb?= =?iso-8859-1?Q?55PHuciIC90LC/rgLFH7z+ow73j+jaPK7wyDI77EiCNCRt8T2OYzanU9/K?= =?iso-8859-1?Q?5R1yOmjqxMa0vDRBuOS6DCgUdiA7vB2NzJdGqpgqseTL7PoNid55cTde2C?= =?iso-8859-1?Q?RUkXy0IS8xyL1hn7SGZ+oJ5LheE0KCYWHAxjo3Sn/hBaE892rlFHJbJWt8?= =?iso-8859-1?Q?i+rjoLbSCb5iYoU1khXRu7YOpSU+Z6Wp/mqmsfjZqmgfvIZ8D6K4O5XbEB?= =?iso-8859-1?Q?AMPjieO5lgE9lwr1d8cNHt0erJHFaLVnnvsdSrteqhtRS374Q+KgvlvWIz?= =?iso-8859-1?Q?Mztx+EYMWjXaH3wEexR7QrcWkZli66qCaCTgeiCPvQ4cmZA9ri/AeKr7AV?= =?iso-8859-1?Q?fuyBa4UPZVuVAyJny+LpJgMloWVno/bS9F+SHdub3EAjYmXk0vGC8hfOZa?= =?iso-8859-1?Q?3SMsY9FU5ZVUPIr+9R3HL9v3hZeHts+YmA+Wr+RRsOCw+M5m0HcNMuZGgq?= =?iso-8859-1?Q?q7wpkNzlm9CAOu0kxnrquDiI1Be/obpnwnmIKE70+G1Fxt/nrSq2+J0WXM?= =?iso-8859-1?Q?o/sVALz1tekTvetLnd7RZYkzWTf2avbs7VJO0lYfpq0K3ek1ecdqArr5PA?= =?iso-8859-1?Q?0HlpaipgxsJtqrFpZ9/qTTtboMdmuiGNu55IklqODH8mDgLfvdFMFqGDF6?= =?iso-8859-1?Q?sTpbMnruspEUvypg/i6RNWxvwnmYZCIQlU3ptwJo76j1wNGXdBWiA1WMqo?= =?iso-8859-1?Q?7Q4KE7JH8B+NTj66gM5VQiwLuBwOyMKgXjhz/PK69GOwV5aOJkLZFtTv5Z?= =?iso-8859-1?Q?jhNR3dv1jvo73XNEsbhLN9O50HOPJGQMhpL202bsdgOhc4J8WZEgXiUwBK?= =?iso-8859-1?Q?Dvl4SSOpLa4FR0Xh91k=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: e4d14e36-eb2c-431b-cc0b-08dde596ef6f X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:18.0817 (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: CTMOeAOqLPxZbbmdTxaJXpbr5l4BCMLomfsDGC4rlSOcE7GR7alxDzzIgHQBU+iRlr/OjzZrH5AGdlNsvKLnKP3v+VYHHysOX4oh+MC5DL0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319078264116601 Content-Type: text/plain; charset="utf-8" To properly deactivate guest interrupts and allow them to be retriggered after the initial trigger, the LR needs to be updated. The current implementation ignores interrupts outside the range specified by the mask 0x3FF, which only covers IRQ numbers up to 1023. To enable processing of eSPI interrupts, this patch updates the mask to 0x13FF. Signed-off-by: Leonid Komarianskyi Reviewed-by: Volodymyr Babchuk --- Changes in 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 c10db9bd05..eedb7af1fe 100644 --- a/xen/arch/arm/include/asm/gic_v3_defs.h +++ b/xen/arch/arm/include/asm/gic_v3_defs.h @@ -211,7 +211,7 @@ #define ICH_LR_VIRTUAL_SHIFT 0 #define ICH_LR_CPUID_MASK 0x7 #define ICH_LR_CPUID_SHIFT 10 -#define ICH_LR_PHYSICAL_MASK 0x3ff +#define ICH_LR_PHYSICAL_MASK 0x13ff #define ICH_LR_PHYSICAL_SHIFT 32 #define ICH_LR_STATE_MASK 0x3 #define ICH_LR_STATE_SHIFT 62 --=20 2.34.1 From nobody Fri Oct 31 03:41:54 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=1756319090; cv=pass; d=zohomail.com; s=zohoarc; b=ZtHxmw1Sh9EtcB4AzN/HYN+hGU2GfZZpLlDPEiKfGWlm1ZC3yXaQaDZQNIbC+usu4g3N87uHMcqGuSFXuS0AD790CAIVHdcnSgsEkdWNkD8Sa0uWQ5GS02nKQXVFoYxQQWE4WDxqOgFMO99X4vlQvD+yN9uNjf/mpWMCiGfBqOs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319090; 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=F6L4FXvFQbNB8ZhT4YotPvnWrT6H2MRs1xEiJVaPXYI=; b=C8dCeN2DE+PewwIZrgwtEtDyT2ntpMAbJINKcV7BQjyhTPpr6gF0fQpkHrq6kLiI4JGuVY+kt4ZCVO5FTMhpY22GCTV7ueBVbNsAhhnUXje5Lh7L21MOazaJIp5Y/DM4HIRM1ybdg65dxtiXQsbSgcGhEkz3aOmddMWFvdUi7Yw= 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 1756319090922100.66288686288351; Wed, 27 Aug 2025 11:24:50 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096733.1451397 (Exim 4.92) (envelope-from ) id 1urKot-0000vU-JM; Wed, 27 Aug 2025 18:24:27 +0000 Received: by outflank-mailman (output) from mailman id 1096733.1451397; Wed, 27 Aug 2025 18:24: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 1urKot-0000ul-EI; Wed, 27 Aug 2025 18:24:27 +0000 Received: by outflank-mailman (input) for mailman id 1096733; Wed, 27 Aug 2025 18:24:25 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKor-0006ki-AF for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:25 +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 0d63a65a-8373-11f0-ae26-e363de0e7a9e; Wed, 27 Aug 2025 20:24:21 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:20 +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.9052.014; Wed, 27 Aug 2025 18:24:19 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 0d63a65a-8373-11f0-ae26-e363de0e7a9e ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w3mDpdBaV9713AyQXLHKmPRuDZ7raRoU8CQqQnVwhNbilNJWU7X9cVQpm92fZG20Q0xjNMILghNcQWW9MnM/9nr1K2I4bW28qjiL8WhyctDBWWlZkLigUpu5iCe5aRZ3b+Tg5oZKZL7KWcLHgQI0AGAp+Mz/Q3F4nMZ9vc2avWojgd7mTz3mNuc/Q90eS5UdWEk0ReGZ/H+QbPQqnwYjDGWVfr/03SE5bwwF2qSl06olfr1nDZjZ2bJGF1hPCb7Yxlw6xCYG14dTdu5u6It6vMMjMQpgbCL4fc7J+rzuqh8hLagpF9/13PO5R+/axTeZNC7gZn3YPHiKeTvgkn6wcg== 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=F6L4FXvFQbNB8ZhT4YotPvnWrT6H2MRs1xEiJVaPXYI=; b=HmIbLjDpSZBVEE4PPVtOW4L8Ar+8/Xtdea3p45R6mfcx2EHvTxkO7t0kWHcqmwaAYG/E1Gopb7rNmgkx4yishvB7eW27liC16BzMGqWIO6PCOIJyMxZxO/J9VY70kVhbsX7oHYD0kTcBT14JgE/JAwhxS7mP1/ZhHlaupyvfY5+2lXcibj4pZjvYBf5ZCB+uRhCnEsULgIi5Yj7H6EVygxEpirN09HxIX8z2wLKqFg3LNFWDrL5yElRk0I9DXRExevDxhgxXWRLAf3+CkRsoyYSYhOGkIZ8YqD1/wqAsAU/bDnPed6HL7qOrobJPeBS8M/vxUGsYzpFig7vqG1yf7w== 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=F6L4FXvFQbNB8ZhT4YotPvnWrT6H2MRs1xEiJVaPXYI=; b=ebXhZuQKIJNZpyxof0jisw9TfpHuycZCrQpmGNJA7X35tD20xgMj36nKctvdxaJ8iJc0Xt1S5OzloWaCf8d/eIhPUVP36gEuQO5bPBW4REzxXVAju5jo64LPXTcX2MBweS+JaLCzSXHiFZtq2RY3LmvVNwNVitRT/g8PBVz7le+FUaE5ApCeFp3pArSVIKtpMx8r3KurPnshvhMmuZsYsJov99pIGDojqV5g7h8E4hmQowu1Tfxfm0PVRUtMTTrqHJPaLKwstc8UQ+MCKxUhwIFj62VBb4iCaWiRYEolXeyv4ynh21v8p62wdazbkQQqoUdxhkWNoGt+JWwRQ2Zgeg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v4 08/12] xen/arm: vgic: add resource management for extended SPIs Thread-Topic: [PATCH v4 08/12] xen/arm: vgic: add resource management for extended SPIs Thread-Index: AQHcF3/NodAFMh424U2CquWmKsv0JA== Date: Wed, 27 Aug 2025 18:24:19 +0000 Message-ID: <9e8a11b024833c1b91b8806e7708bf35b04a8f6e.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: e378047f-1755-4721-71b8-08dde596f078 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?d2N6JBLl/4/N9ZhOxtW7e7QEodM0RdFo96W5KUjETxAR5rgvaA2cD8n70Y?= =?iso-8859-1?Q?xPXNjHt4VTpnKIoWRyqecZBeZtpQvRrz18LWZv23gDD35CbA2sk6rLJRig?= =?iso-8859-1?Q?S9Cr7Gh3iRjzzlOWbF3P9g3LuOuAmbjbNsXdBFLXew1rt605U3YM7havgH?= =?iso-8859-1?Q?A7NWUEnworTD3KnSfXiyRNvE3NH7fUvNPYapzgjP+0hXtPHvchG75TZhGy?= =?iso-8859-1?Q?/BmWFbH6q6Si4OxFHWCTIG/kuaoaQm2ziVKSrUA/tWsq5Ds+2Iztfjjd9H?= =?iso-8859-1?Q?NamyJu6l+KQ3De8DqnwUJ9ojCeRzFBo6vZGFLZUw1sTspVvjhcmcQEBElL?= =?iso-8859-1?Q?1wqQPLdc3fzosnkvxATTDFZbP5NXjTX52aXI6nAzErwDczbJwzN0+kOG/S?= =?iso-8859-1?Q?JaBAdIyWqqml1b6IUAKNTv9Gp9EY3iXFGe6YaHSKNu1TqH9YejM0z59oWY?= =?iso-8859-1?Q?7B7hTmuOBmlZRO5v+OYgINPv97KjW6/omXR9jzjcL0svhJaCeFUPMDNeec?= =?iso-8859-1?Q?tfmVooJlEpi5mpVlCiGJ0gKf37fcWDVeTV+BlIuGOXr9qlOstbkISTFoUJ?= =?iso-8859-1?Q?1Ej/cgWW7Wl/x4bEXKXekbG0V1/l8agQfrRE0O3iLNwvraahDcmedDurJP?= =?iso-8859-1?Q?r8Dy+Tb8Y5S5tyQ1uBHrMfj1rLhexiVMsK0WteU8W3BaN1xqn5Mls0o/6w?= =?iso-8859-1?Q?1iOChPoMCiHKRGRTjCz/qDZ5ebPP/gunMVJvVqofJuOWLLlVrrn8lhxykI?= =?iso-8859-1?Q?vggjD8fY4xQq+rC/BXjNLdxP/sNkoL6C0aSQQIA9tl2lZZr93bMFq4eTj3?= =?iso-8859-1?Q?Wkbs6RYPE/wuYXw3nW+BZqZJqOu+Uck9x2WR/qZwciWWHVvzxTvjm9vfYU?= =?iso-8859-1?Q?g7AojVx8UaQy5h+KcNCQ0uVN3ObJsiRvhLMRMl20Ovsj9QyQ0HHKPpnHBF?= =?iso-8859-1?Q?IgBy7NLQ8BD+yp3PYxdcnOSTAfCjbXy0zfCkVJnq5hqVSBDiy8YVUBJ6uF?= =?iso-8859-1?Q?7T1i4DEvvhRPKc+gxf0VMBC1NqhKSJZBs7guyeQJQN0r1TGQF8mZ1BoNBJ?= =?iso-8859-1?Q?7+8IZbTDfqjUT1JVI4Vy09ZvCRcLQTBDZ7VSaQ32VSMMZnNQfeFNnAx1jW?= =?iso-8859-1?Q?r4j5Pn2ZLLO+VH9z67RzeDuLcykFMp7X1REak8T4rrDPiPnocZL9ZMFAMc?= =?iso-8859-1?Q?DCaXsfnItsW5tUguC20q5oSqs0RMzNtXNutoKFGfh5AnMHWPjC/pG6aRl2?= =?iso-8859-1?Q?UKJ1ZZYqQRaPHMg6FUHQqvgdzMhv8XtjxfNWlDYYY4MO0QpUGHfniceA3Y?= =?iso-8859-1?Q?A1IulavZBDcHphGoaTykf2khlBxc+zIyKE9ZKwVVe+zZr05+PMELV1MTvV?= =?iso-8859-1?Q?S3dpu5yMq0GlikJCLO391wFnHyUQcx0DBNBxmcR/R0DIyh10bdb3Glv79B?= =?iso-8859-1?Q?rQSG2J+K2bpSnsRqJWoGbuL6UzGgfvp+UgYGBA/SHS2GYWkjQwM625cABz?= =?iso-8859-1?Q?ZvL58WvHgcXZcXHKIMmdM5Gl6ozByeIL4OkC0UNdAFIw=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?dwENzEJFF0cgNtN92m1QeeW8SJWHO8dSVMqbr+kI5RZYiC+6g2MvMUkj9x?= =?iso-8859-1?Q?CJc62U8yqXfH4XDlgq0Cbg9WvA0XuKuxnSMuzx+ylxgQToRdUhtQy7t0lm?= =?iso-8859-1?Q?jmoc2oVhvHn1uA6kxKFrWpkSaGwmHK6s1tFPBX6oiK5zOBsWXySUkYVJy6?= =?iso-8859-1?Q?+7vCKzWeYX1cC65eSr4B4Eh93oBNlOxp0NMubgLFM5ol84hkuNy1FZvKuN?= =?iso-8859-1?Q?3sFo3E9iAQ+QkIzHMRdgLwSzps+fvqGfxY4kyEX1CnBdm0+oXgs6+Dx87f?= =?iso-8859-1?Q?PKeDPlrorSwcJ7FOaoMQp9Csv/4UNYBSddczGvniK/EYuHSKvSb6J7uKwA?= =?iso-8859-1?Q?Y37VlqVZic05jLNpsQ5UP/Fs8SuOggz875cPuqVcEC47+GEJi+sDrRH5ow?= =?iso-8859-1?Q?/wn1RHsX/EAcHSrde/R2w4dnsrcScmzMM4GlTxBaonmosaw3ieWHetBGnB?= =?iso-8859-1?Q?gzAUxAlkI7kEZIO+C22ift3A/Kc1qHcZRNAAGLu6QBtG9Y5chKrVRVL0n6?= =?iso-8859-1?Q?ZQHWplzfMfkfNDt+/eSqA1BJhdfzL+OXagVmZhGFCFGQaR7vDlFQ9ovAKF?= =?iso-8859-1?Q?UVpFtt+oPwPR3W0dRR49wPuuIJ06X9dV/ehU+1F1QoufR7GsdhEaFe7Zkr?= =?iso-8859-1?Q?7zjtGR5AVYpUt66pIzmAAZIdNIgoaZYJJ6Jk5PbeeI0yWa2FxcNC01V/vP?= =?iso-8859-1?Q?sPk7c46IaWYXrJAl5XddAGvEeKG/kdN8xxNFsMpN/0wDlR79YvHL96gzoV?= =?iso-8859-1?Q?vT5cCZWyC3ydq0Mw6DtJyGngai1gVT5tXfBumdc6agYVgyt/BCC1I/D+bb?= =?iso-8859-1?Q?Do3r/3y9bYs3RMi1sGHmkY0kCE3rBXhZcwO597fdaNQKbIJxPH+61uBA79?= =?iso-8859-1?Q?WwcGFA6Obd8ck0eQqe9aGm95Y6AQpihwuu7WkCLHi//jV0Qzek4OlqRgMa?= =?iso-8859-1?Q?+HFNjIM58ojy6X3AP5Wo9q6DD4JViUteih6A53rQc8VFDLZBIP0bpoZ+qG?= =?iso-8859-1?Q?lnhLG1t5MD2td7wslB39EE7unY+Le2aaRwh+6q9EOKfIWuN0RBnzleOQ3A?= =?iso-8859-1?Q?NzYC1KUIkIcb4E8PdhEqEN78mK9kt5/p4U9YciN7KTaji8pGtcgeUkt4Am?= =?iso-8859-1?Q?AC6E2sVSUSgnchgHyaOPhOp1fH/kmGd9YI4D6gvYM1VtW8+1JhYKatplUC?= =?iso-8859-1?Q?F+/t5TqmfAtHB4IwRH4Mt9Ih8tZuGDBWOppuuqvJKebR7GhqauOjBrPRol?= =?iso-8859-1?Q?RUmMLtCPq+exFkxHf/Oq9yYbOMGYuSxOv4vOsU040fgqyK3PV79AzIfdjA?= =?iso-8859-1?Q?ZS2e/FlUwzFGWRdZqnI4VvxVVeAdNl25yInM8uwyRRVW9ezL4r+EWqNXfo?= =?iso-8859-1?Q?GNt+ZFzwNZUYJQrzmsLMMZ2bTqQ3PpeW3mJijjZfOHviPcMIkIjl8vR6O+?= =?iso-8859-1?Q?vGyfN5eYXdDQVbfjLIsWpNet866fmC90ilu3xM6sx5v8p95oRuksuLuvFg?= =?iso-8859-1?Q?eYbODjHQUSrSbsemdQv5arFWc/ZjT1mVDfhOHPXbhvLXx9R3xpa0NLO0Yz?= =?iso-8859-1?Q?kxVZMm1q4VemAIM+TLhm/9MhwLqRLdhyEf2MkVJzl+GtdRbUN+VjEUp93C?= =?iso-8859-1?Q?EJ/FATL6csp/XERVzMxcTLkk22pBRWLlKvNy3ezMPLSiiZdWb/eLbni2cU?= =?iso-8859-1?Q?Zoqc5ulEd44HG602rIk=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: e378047f-1755-4721-71b8-08dde596f078 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:19.8572 (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: umwuZCqRqeMgAL9AjXzEmFcvskxIjVB9DwIMBYMYNwvLeowBW6QEyV8CVQ18uPgDbA2weIpX5mSGZRpJ58NUOmqaUyyAMJLy7Z/8J9muWp0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319092329124100 Content-Type: text/plain; charset="utf-8" This change introduces resource management in the VGIC to handle extended SPIs introduced in GICv3.1. The pending_irqs and allocated_irqs arrays are resized to support the required number of eSPIs, based on what is supported by the hardware and requested by the guest. A new field, ext_shared_irqs, is added to the VGIC structure to store information about eSPIs, similar to how shared_irqs is used for regular SPIs. Since the eSPI range starts at INTID 4096 and INTIDs between 1025 and 4095 are reserved, helper macros are introduced to simplify the transformation of indices and to enable easier access to eSPI-specific resources. These changes prepare the VGIC for processing eSPIs as required by future functionality. The initialization and deinitialization paths for vgic have been updated to allocate and free these resources appropriately. Additionally, updated handling of INTIDs greater than 1024, passed from the toolstack during domain creation, and verification logic ensures only valid SPI or eSPI INTIDs are used. The existing SPI behavior remains unaffected when guests do not request eSPIs, GIC hardware does not support them, or the CONFIG_GICV3_ESPI option is disabled. Signed-off-by: Leonid Komarianskyi --- Changes in 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 | 20 +++ xen/arch/arm/vgic.c | 213 +++++++++++++++++++++++++++++++- 2 files changed, 230 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi= c.h index 3e7cbbb196..fb4cea73eb 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -146,6 +146,12 @@ struct vgic_dist { int nr_spis; /* Number of SPIs */ unsigned long *allocated_irqs; /* bitmap of IRQs allocated */ struct vgic_irq_rank *shared_irqs; +#ifdef CONFIG_GICV3_ESPI + struct vgic_irq_rank *ext_shared_irqs; + int nr_espis; /* Number of extended SPIs */ + /* To simplify determining whether a domain is able to operate with eS= PI */ + bool has_espi; +#endif /* * SPIs are domain global, SGIs and PPIs are per-VCPU and stored in * struct arch_vcpu. @@ -243,6 +249,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) +#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) +#endif + #define vgic_lock(v) spin_lock_irq(&(v)->domain->arch.vgic.lock) #define vgic_unlock(v) spin_unlock_irq(&(v)->domain->arch.vgic.lock) =20 @@ -302,6 +316,12 @@ extern struct vgic_irq_rank *vgic_rank_offset(struct v= cpu *v, unsigned int b, unsigned int n, unsigned int s); +#ifdef CONFIG_GICV3_ESPI +extern struct vgic_irq_rank *vgic_ext_rank_offset(struct vcpu *v, + unsigned int b, + unsigned int n, + unsigned int s); +#endif extern struct vgic_irq_rank *vgic_rank_irq(struct vcpu *v, unsigned int ir= q); extern void vgic_disable_irqs(struct vcpu *v, uint32_t r, unsigned int n); extern void vgic_enable_irqs(struct vcpu *v, uint32_t r, unsigned int n); diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c index 2bbf4d99aa..f4b80cb05f 100644 --- a/xen/arch/arm/vgic.c +++ b/xen/arch/arm/vgic.c @@ -27,9 +27,82 @@ =20 bool vgic_is_valid_line(struct domain *d, unsigned int virq) { +#ifdef CONFIG_GICV3_ESPI + if ( virq >=3D ESPI_BASE_INTID && + virq < ESPI_IDX2INTID(d->arch.vgic.nr_espis) ) + return true; +#endif + return virq < vgic_num_irqs(d); } =20 +#ifdef CONFIG_GICV3_ESPI +/* + * Since eSPI indexes start from 4096 and numbers from 1024 to + * 4095 are forbidden, we need to check both lower and upper + * limits for ranks. + */ +static inline bool is_valid_espi_rank(struct domain *d, unsigned int rank) +{ + return rank >=3D EXT_RANK_MIN && + EXT_RANK_NUM2IDX(rank) < DOMAIN_NR_EXT_RANKS(d); +} + +static inline struct vgic_irq_rank *vgic_get_espi_rank(struct vcpu *v, + unsigned int rank) +{ + return &v->domain->arch.vgic.ext_shared_irqs[EXT_RANK_NUM2IDX(rank)]; +} + +static inline bool vgic_reserve_espi_virq(struct domain *d, unsigned int v= irq) +{ + return !test_and_set_bit(ESPI_INTID2IDX(virq) + vgic_num_irqs(d), + d->arch.vgic.allocated_irqs); +} + +static void arch_move_espis(struct vcpu *v) +{ + const cpumask_t *cpu_mask =3D cpumask_of(v->processor); + struct domain *d =3D v->domain; + struct pending_irq *p; + struct vcpu *v_target; + unsigned int i; + + for ( i =3D ESPI_BASE_INTID; + i < EXT_RANK_IDX2NUM(d->arch.vgic.nr_espis); i++ ) + { + v_target =3D vgic_get_target_vcpu(v, i); + p =3D irq_to_pending(v_target, i); + + if ( v_target =3D=3D v && !test_bit(GIC_IRQ_GUEST_MIGRATING, &p->s= tatus) ) + irq_set_affinity(p->desc, cpu_mask); + } +} +#else +static inline bool is_valid_espi_rank(struct domain *d, unsigned int rank) +{ + return false; +} + +/* + * This function is stub and will not be called if CONFIG_GICV3_ESPI=3Dn, + * because in this case, is_valid_espi_rank will always return false. + */ +static inline struct vgic_irq_rank *vgic_get_espi_rank(struct vcpu *v, + unsigned int rank) +{ + ASSERT_UNREACHABLE(); + return NULL; +} + +static inline bool vgic_reserve_espi_virq(struct domain *d, unsigned int v= irq) +{ + return false; +} + +static void arch_move_espis(struct vcpu *v) { } +#endif + static inline struct vgic_irq_rank *vgic_get_rank(struct vcpu *v, unsigned int rank) { @@ -37,6 +110,8 @@ static inline struct vgic_irq_rank *vgic_get_rank(struct= vcpu *v, return v->arch.vgic.private_irqs; else if ( rank <=3D DOMAIN_NR_RANKS(v->domain) ) return &v->domain->arch.vgic.shared_irqs[rank - 1]; + else if ( is_valid_espi_rank(v->domain, rank) ) + return vgic_get_espi_rank(v, rank); else return NULL; } @@ -117,6 +192,74 @@ int domain_vgic_register(struct domain *d, unsigned in= t *mmio_count) return 0; } =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; +} + +static int init_vgic_espi(struct domain *d) +{ + unsigned int i, idx; + + if ( d->arch.vgic.nr_espis =3D=3D 0 ) + return 0; + + d->arch.vgic.ext_shared_irqs =3D + xzalloc_array(struct vgic_irq_rank, DOMAIN_NR_EXT_RANKS(d)); + if ( d->arch.vgic.ext_shared_irqs =3D=3D NULL ) + return -ENOMEM; + + for ( i =3D d->arch.vgic.nr_spis, idx =3D 0; + i < vgic_num_spi_lines(d); i++, idx++ ) + vgic_init_pending_irq(&d->arch.vgic.pending_irqs[i], + ESPI_IDX2INTID(idx)); + + for ( i =3D 0; i < DOMAIN_NR_EXT_RANKS(d); i++ ) + vgic_rank_init(&d->arch.vgic.ext_shared_irqs[i], i, 0); + + return 0; +} + +struct pending_irq *espi_to_pending(struct domain *d, unsigned int irq) +{ + irq =3D ESPI_INTID2IDX(irq) + d->arch.vgic.nr_spis; + return &d->arch.vgic.pending_irqs[irq]; +} +#else +static unsigned int init_vgic_espi(struct domain *d) +{ + return 0; +} + +static unsigned int vgic_num_spi_lines(struct domain *d) +{ + return d->arch.vgic.nr_spis; +} + +struct pending_irq *espi_to_pending(struct domain *d, unsigned int irq) +{ + return NULL; +} +#endif + +static unsigned int vgic_num_alloc_irqs(struct domain *d) +{ + return vgic_num_spi_lines(d) + NR_LOCAL_IRQS; +} + int domain_vgic_init(struct domain *d, unsigned int nr_spis) { int i; @@ -131,6 +274,38 @@ int domain_vgic_init(struct domain *d, unsigned int nr= _spis) */ nr_spis =3D ROUNDUP(nr_spis, 32); =20 +#ifdef CONFIG_GICV3_ESPI + /* + * During domain creation, the dom0less DomUs code or toolstack specif= ies + * the maximum INTID, which is defined in the domain config subtracted= by + * 32 to cover the local IRQs (please see the comment to VGIC_DEF_NR_S= PIS). + * To compute the actual number of eSPI that will be usable for, + * add back 32. + */ + if ( nr_spis + 32 > ESPI_IDX2INTID(NR_ESPI_IRQS) ) + return -EINVAL; + + if ( nr_spis + 32 >=3D ESPI_BASE_INTID ) + { + d->arch.vgic.nr_espis =3D min(nr_spis - ESPI_BASE_INTID + 32, 1024= U); + /* Verify if GIC HW can handle provided INTID */ + if ( d->arch.vgic.nr_espis > gic_number_espis() ) + return -EINVAL; + /* + * Set the maximum available number for regular + * SPI to pass the next check + */ + nr_spis =3D VGIC_DEF_NR_SPIS; + d->arch.vgic.has_espi =3D true; + } + else + { + /* Domain will use the regular SPI range */ + d->arch.vgic.nr_espis =3D 0; + d->arch.vgic.has_espi =3D false; + } +#endif + /* Limit the number of virtual SPIs supported to (1020 - 32) =3D 988 = */ if ( nr_spis > (1020 - NR_LOCAL_IRQS) ) return -EINVAL; @@ -145,7 +320,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 +331,16 @@ int domain_vgic_init(struct domain *d, unsigned int n= r_spis) for ( i =3D 0; i < DOMAIN_NR_RANKS(d); i++ ) vgic_rank_init(&d->arch.vgic.shared_irqs[i], i + 1, 0); =20 + ret =3D init_vgic_espi(d); + if ( ret ) + return ret; + ret =3D d->arch.vgic.handler->domain_init(d); if ( ret ) return ret; =20 d->arch.vgic.allocated_irqs =3D - xzalloc_array(unsigned long, BITS_TO_LONGS(vgic_num_irqs(d))); + xzalloc_array(unsigned long, BITS_TO_LONGS(vgic_num_alloc_irqs(d))= ); if ( !d->arch.vgic.allocated_irqs ) return -ENOMEM; =20 @@ -195,9 +374,27 @@ void domain_vgic_free(struct domain *d) } } =20 +#ifdef CONFIG_GICV3_ESPI + for ( i =3D 0; i < d->arch.vgic.nr_espis; i++ ) + { + struct pending_irq *p =3D spi_to_pending(d, ESPI_IDX2INTID(i)); + + if ( p->desc ) + { + ret =3D release_guest_irq(d, p->irq); + if ( ret ) + dprintk(XENLOG_G_WARNING, "d%u: Failed to release virq %u = ret =3D %d\n", + d->domain_id, p->irq, ret); + } + } +#endif + if ( d->arch.vgic.handler ) d->arch.vgic.handler->domain_free(d); xfree(d->arch.vgic.shared_irqs); +#ifdef CONFIG_GICV3_ESPI + xfree(d->arch.vgic.ext_shared_irqs); +#endif xfree(d->arch.vgic.pending_irqs); xfree(d->arch.vgic.allocated_irqs); } @@ -331,6 +528,8 @@ void arch_move_irqs(struct vcpu *v) if ( v_target =3D=3D v && !test_bit(GIC_IRQ_GUEST_MIGRATING, &p->s= tatus) ) irq_set_affinity(p->desc, cpu_mask); } + + arch_move_espis(v); } =20 void vgic_disable_irqs(struct vcpu *v, uint32_t r, unsigned int n) @@ -538,6 +737,8 @@ struct pending_irq *irq_to_pending(struct vcpu *v, unsi= gned int irq) n =3D &v->arch.vgic.pending_irqs[irq]; else if ( is_lpi(irq) ) n =3D v->domain->arch.vgic.handler->lpi_to_pending(v->domain, irq); + else if ( is_espi(irq) ) + n =3D espi_to_pending(v->domain, irq); else n =3D &v->domain->arch.vgic.pending_irqs[irq - 32]; return n; @@ -547,6 +748,9 @@ struct pending_irq *spi_to_pending(struct domain *d, un= signed int irq) { ASSERT(irq >=3D NR_LOCAL_IRQS); =20 + if ( is_espi(irq) ) + return espi_to_pending(d, irq); + return &d->arch.vgic.pending_irqs[irq - 32]; } =20 @@ -668,6 +872,9 @@ bool vgic_reserve_virq(struct domain *d, unsigned int v= irq) if ( !vgic_is_valid_line(d, virq) ) return false; =20 + if ( is_espi(virq) ) + return vgic_reserve_espi_virq(d, virq); + return !test_and_set_bit(virq, d->arch.vgic.allocated_irqs); } =20 @@ -685,7 +892,7 @@ int vgic_allocate_virq(struct domain *d, bool spi) else { first =3D 32; - end =3D vgic_num_irqs(d); + end =3D vgic_num_alloc_irqs(d); } =20 /* --=20 2.34.1 From nobody Fri Oct 31 03:41:54 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=1756319082; cv=pass; d=zohomail.com; s=zohoarc; b=oEm7xd9THvmY8y24ky1xIncPKvZ8gUoPDB0eMfsja6RXI2eDrK6NJwaFj/LevHSUYJsDOmIeL1uTlMe5qxMoMJvJm78dnCQDicbGxyI8FI+kPatrk9vKnZYgJBX4OY4VyngfGzT2UUNREjpJg8shzjIgAEkXwVytym13PAmV0As= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319082; 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=+PQ9mtfgp+ElDWfvJmhV5S2DGgOIPnn7uteqiPRvflg=; b=BOZ3FmkWjdWHx25U8qTTWw5c0l64QRu8EUZ8m+p9h0wIr1riGunxXqzPE+G+GNXyxQh26MZ3ptsd/K4lzHvbIxAxztjhtN0OKsrQxc0rgSynYCO9NNH+rzL/cAfRt7QmiGWKifzp35z6H7Ohyg1zGf4KDFmtimvOPV1aSAMyR9U= 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 175631908267546.15459482249753; Wed, 27 Aug 2025 11:24:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096737.1451407 (Exim 4.92) (envelope-from ) id 1urKov-0001Lx-Cb; Wed, 27 Aug 2025 18:24:29 +0000 Received: by outflank-mailman (output) from mailman id 1096737.1451407; Wed, 27 Aug 2025 18:24:29 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKov-0001LE-1y; Wed, 27 Aug 2025 18:24:29 +0000 Received: by outflank-mailman (input) for mailman id 1096737; Wed, 27 Aug 2025 18:24:27 +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 1urKot-0006ki-AL for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:27 +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 0e92b5f7-8373-11f0-ae26-e363de0e7a9e; Wed, 27 Aug 2025 20:24:23 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24: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.9052.014; Wed, 27 Aug 2025 18:24: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: 0e92b5f7-8373-11f0-ae26-e363de0e7a9e ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=snvsoNxT9MIm7DktgNbN2T7m53F+99+smHpVAx22NRB/eMM5D+OxOeKnu1gIS1D2JcViBOOHhzXn1UFyGYbAT2yZMK4FWcRaO1DI/4ulHXTKSmXK0scIpA5MMliImDb7bo8IMnxWxpiaaxRJEEA7fnJLSs1ilhRyGGikJm+NhnGHK0DWVduACIoQuoTy+vowoli7G7e9BW7Lz2u9SR2riC5RUA3NWRLWzxtONuK03I+nVrhzv6ZFRZ2CgP+uhsGpqrzYf3mrMej9i9xaYix1F8xkKr2WNEgYGxl2FN1xzBMlw4od4v7ZIbWxR0CN01WsJRukvprb6VyV31Ruq+af7A== 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=+PQ9mtfgp+ElDWfvJmhV5S2DGgOIPnn7uteqiPRvflg=; b=WfZxLp+yyNYzk4W9eFjd8fNEKs1bOn/2w/gnI5L01vEIk35AXWUgJWiyP8nTqD1BCYYWfSnZgBsP9SD7SIHifj9uP0uBKbpIpWBQpO+zCiy1lCoADq3b3oQXMsJrOB0l9w4cKaSjo5VhlgCkVEKNHnQTDoQ2lieOIFhXJC7OVOArncc5lI0FOoHoIXq1vmL0ouOilDJr8kbXEJfVCoXg8whAKY90CtuebDkWOpE0OHla0GTp2tZJMD0wMqVjUSjyAMzQfivof8FTvcEG3YCQpzrSq/jTrgK6rOVTI9LO2/kVuxuPjFGKh9CG/jlPW2G1pGjCQHTFaRCgSW9nST609w== 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=+PQ9mtfgp+ElDWfvJmhV5S2DGgOIPnn7uteqiPRvflg=; b=BqQCLEU9dDROJ+HsOdUH+Wb5Sq8QYTo2ATchpn9pZNvGX4C67PvnYbJqD59eeyZK+Mlu3KNcBKJqXF2qftJKSWpbd4RTSXWfssO6n9sy/dqlw2HTqzNPC0B0VKjuKrg+r/gsZ+mJ3nZWxHkcQh2c/uNs9IRddC5ZLRPaJRLcVMOQhil9QUakDTPaj0CsUgV++ozq47huy23VcOAg+zPD5CGu8xI0t4MTPJGLEFhqczM858R/ceJH3eMIDe85U9jb2+irSDbASG4f1ulS3McwBy+DbrdRWjK6bRaVLjVN6EVP019lcq3R9bYHbYnhAWR74L8F/vc6gDYJ9Jn149KB9Q== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v4 09/12] xen/arm: domain_build/dom0less-build: adjust domains config to support eSPIs Thread-Topic: [PATCH v4 09/12] xen/arm: domain_build/dom0less-build: adjust domains config to support eSPIs Thread-Index: AQHcF3/Ont2iCNudZU+HGYrvI6u3EQ== Date: Wed, 27 Aug 2025 18:24:21 +0000 Message-ID: <66b39c4ba25e7a19beeca62ab23f5d3ab3cbae52.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: 83ebfd62-94de-4179-525c-08dde596f14a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?NsOc4OUFHt+hNoHBbci4vygN09oStk8yXzV12UAZ6rco90Gm9X/wmmO9PG?= =?iso-8859-1?Q?CJNUnBKE1NP5pQsFFPHSFQY8nxjMw4urc/6tJnK6+gQ9mrqLGzHSIg3/Ss?= =?iso-8859-1?Q?/oLSmGLW4NfrnP6gfu/5Bh4RHgVvLNZReyJqJ+1XvDadASuXUtf24MSQiO?= =?iso-8859-1?Q?uzlA/7vcg9YQH+g0vMzQSLydvATFPQ0OIdmLLGjW9ujJEHxiNw+B7N+J+5?= =?iso-8859-1?Q?DvQcZU/TozkGnCSz+gurRVT08FdFYvPc1xA7LPbbJ1G8P4ML89GS/HYm3f?= =?iso-8859-1?Q?GV0jHBPWHBM5iEtxJ615XihrlWAGU9/0oaDCCaBSeIcF1JwzCERlIT55xV?= =?iso-8859-1?Q?03d4qWTUlyz6kp8tY1M8XRnS3e8M0xv2Xpf/m8CVBmADRoNEtrknO4HkOp?= =?iso-8859-1?Q?4q2OSDDZpCR1m926IMSmmtRpiqev5tSe6o1q62F62MeCb/E4zZV5AA6LpZ?= =?iso-8859-1?Q?UI/TV1XeDC830r2JufJ31jEFPcjhAGv7UWALB6zd5X8I12X2MBC19n7vMm?= =?iso-8859-1?Q?4weM1vcspiLG4HE44GhatccnoK904OT38/r5TZ8ZTys91i/6IbdlM+s0R4?= =?iso-8859-1?Q?wHlqcwddajsHru5KND4j7ml4UG2Lr+NgHgE0qdFFkFuTvcX4E/H8hhFbvc?= =?iso-8859-1?Q?zxopdlbvkCqhiVZbCOz+EKRvuVaNdcUq8lFoHDCFJi5/qT7szQkbdIX52l?= =?iso-8859-1?Q?d8LnecKfqF+a/vp0LxegS4s7Xv5ijdvzLAG33NZ37qlPa05akWCoZKE829?= =?iso-8859-1?Q?o7jGjpjmy4zxMI2vU1u8G+z1GAB79HNjquP08GADnOK+LJbr3V9gRPorNJ?= =?iso-8859-1?Q?OR+g/EtLPL6Z31G8QoHaJl5ICqUVOOBCfbZsP+1ONbc08nuheea0kEF6jr?= =?iso-8859-1?Q?U476Vy+HZkp3kCGUa/A5AyaOCbRqhswJt8fqAMosJgwbD5jRJvBxy13I/V?= =?iso-8859-1?Q?p4aJ6aZewCxk1KKJi6bv5Yr8OXzGIer4dQIz1/AgdNv4ykZBkyW3Hw6jYp?= =?iso-8859-1?Q?+MkTiUpt3R6LxdkNeC1fPB5w47oJ9+EIZcxtMHC1sYCSTNGrVrsB9xLgUL?= =?iso-8859-1?Q?5zhixB0yXepHbdQqrQh+JQYoCjQRGR/HJd2NujNuTos3+xBHCVO79yBJqM?= =?iso-8859-1?Q?ppAGXNr930MPhXaweUGGix4AYGg0alLMWBIX7jdIUYI9gLo9EcBnhSSSLd?= =?iso-8859-1?Q?QpB3J5t2fEDZ7dKpq6GwYI8a0yEBnqc9hE9qFFZD//tvjwvLN1men568FS?= =?iso-8859-1?Q?hiWwdFXpNRQi45NfvCqypMbZ4koOwG0s13Ii2hNu7RKNFmjADU9ugVr60+?= =?iso-8859-1?Q?29kjTac8eqpdG4bN8w14Za5L8eI5hCLik4WFZNQFKvgllkKxkMobqfQZU4?= =?iso-8859-1?Q?7VkdmQKDyOYtRdyKzjWJqY+aUpj7eZ6K3WfFBwDdCSfoB+XsIYlcxLvW7/?= =?iso-8859-1?Q?W6hkFsPPqVoqUcZK6Y0i2GewK9Q2Rk9l/3XWen0I3ZcdgSzdkqe1qAovQt?= =?iso-8859-1?Q?LWrY/2+NZwW9D+3J1jtKlSeePBK1pUl5WLl2HjyYwIsA=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?bllhr1EbVqTKBG6hHoJ1gch3tvL1ZlpgVqQSqkzc5mKwnGJ2GsWFqWo6FI?= =?iso-8859-1?Q?lPqTwPayg2QIV0qrawgarcnLk2OQCSGTPA4HEgSyA4itcaB/qFddon4l6d?= =?iso-8859-1?Q?7FTXkfU9/HGWzWIE/Vb76AbX1n7M+jptWe+EzpHmo8c8aY6IcVlDLUBNsL?= =?iso-8859-1?Q?GgGIGknIp+WYPL3tw8qH2frfOOvjoiIXQ1H1ND10sGxiohlKOv/zxGLR0t?= =?iso-8859-1?Q?JOB/hm6tlVObSzCXJEMakpFCNuYlKLmcwVujiWYdpd2a3zsAU/qDK+E2yc?= =?iso-8859-1?Q?6AW0hQ1hOCYK9zq+1XioHoOEImORdKJxIIsjYfsWXJVvVuxz7ICxIq/j2u?= =?iso-8859-1?Q?LSPe7H5935L3Atb9LLsVhk+UNzONduLKJsJLXR7wDsl8SzbtvbsEFz+EH9?= =?iso-8859-1?Q?PQbJ5S8XH3tpX7IvkDbiiI3JwjFUe0bL+iLNY3hnQJfRVcmgH5eS3nOVz8?= =?iso-8859-1?Q?+bmU9oUWlAwLM54ojVLdTQ8P4fuh6drsSjKyOFLDvLGKKZ1Em24ojnERMS?= =?iso-8859-1?Q?vGLIMdJQNC4dRQriEo9eRdYHrVwEez74cP6iJR2fD9czbFMM2Vs7RxOfAA?= =?iso-8859-1?Q?diaKz3vj4t0k/QblQ1FNB6EoxiNqaDZ2Kp4wZAawjmuz+3HGvKD9RbK+NU?= =?iso-8859-1?Q?aqtgNpE1QYKLD4JwNKqkzaM/aTDlX4AIvumi50oJwPYRCU474WhfvUXlLm?= =?iso-8859-1?Q?oAUPV2yLbclrnU11ams3eEnGAHelGcoXtFfS+U1i8BWozaCLjZKnYvJ+wV?= =?iso-8859-1?Q?TlSJpcpNtseI8wIl9w/WG+SNEifDHhHGcuvUrW28e1c7nSQz2HXczEwxFl?= =?iso-8859-1?Q?Dqj0J/c/zvKyqoa6fxTFWRc6xk1oXCRJz0DgpTdQfrpvpcHoS3PihFncxe?= =?iso-8859-1?Q?EovmXXTtmh5FMos53QPaf1afpyzo0g/0uGPepTpGq7ksR1Tes9/PRJ8jlQ?= =?iso-8859-1?Q?pCmVti9GSS2iPVaj5SO6MJfhcGSz2rl2s+cbpw92WOWHxMq15LP4/Xmfz1?= =?iso-8859-1?Q?ee+RbcFQIpQpjaAoLaEl6FrSxlBzTShhTY+jCEa+Sv9uaoc42RNokj7Kan?= =?iso-8859-1?Q?rIDwInHcZIb6Z9k6mG45GeDf/gGI3wJIO30LoSKf3JYhmZh88Mp1YLUgY+?= =?iso-8859-1?Q?0M5izG6jrobz4vdI6+ThcPBZxUJpldPSpJlvfsPaA83fk8Uj+nvMvcmjhy?= =?iso-8859-1?Q?Yvc8eHBNklkpjp38rYGXEUT4t1R9z98+CP0aZ9bh9Y0ve0FfzFFXCNbYPI?= =?iso-8859-1?Q?C8BQD/vNAy30MH00CBvsyqYHUKpEiZLyn1jwrm7unmuH2q11NLwginpA8m?= =?iso-8859-1?Q?fREsSadhA1/d3fN1W5BG7Gjks8eHbd95t3RA2gMB1cN0rIE8q1MZAE79x6?= =?iso-8859-1?Q?o9FH+D7Cb8rDMMI3PssN2kIbMHz8VTM4FNdaiD/MEYUMgmtImbb1BaNrCM?= =?iso-8859-1?Q?VuAjjr+zbkNQ2PRRa1wvOfsofVHb4oDLTfRxUXhYJcgbPoUdzVT/1EEQAm?= =?iso-8859-1?Q?rxHOUwlXnE3l5a/ybeCqeiPd5sJrCMggB7M86IfnolShuecfrfj8HGPc9T?= =?iso-8859-1?Q?UaT7754Gqrs3OoWb0Z0tPdU2D9r3RqHjY35EGUtUASuKpOx8c9GET2feCx?= =?iso-8859-1?Q?ah3RQOFAN+Tqzbb/xBqCOt5sxGTtf5lsXQFcxY9fyUyYrSaGm2XG/uQBiU?= =?iso-8859-1?Q?HlRsUdb5XLiAewZQnW0=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: 83ebfd62-94de-4179-525c-08dde596f14a X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:21.2003 (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: ayW9qOpsl1JpFhNkLEwSyhBDtDF2gMvfIUM34GCnbghLlPDxcJjAv+hzUuhafYTmA7FiEq376zHBXFRIWby5BmZvB1QJujSPMQUw5gwJPbw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319084366116600 Content-Type: text/plain; charset="utf-8" The Dom0 and DomUs logic for the dom0less configuration in create_dom0() and arch_create_domUs() has been updated to account for extended SPIs when supported by the hardware and enabled with CONFIG_GICV3_ESPI. These changes ensure the proper calculation of the maximum number of SPIs and eSPIs avail= able to Dom0 and DomUs in dom0less setups. When eSPIs are supported by the hardware and CONFIG_GICV3_ESPI is enabled, = the maximum number of eSPI interrupts is calculated using the ESPI_BASE_INTID offset (4096) and is limited to 1024, with 32 IRQs subtracted. To ensure compatibility with non-Dom0 domains, this adjustment is applied by the toolstack during domain creation, while for Dom0 or DomUs in Dom0, it is handled directly during VGIC initialization. If eSPIs are not supported, the calculation defaults to using the standard SPI range, with a maximum value = of 992 interrupt lines, as it works currently. Signed-off-by: Leonid Komarianskyi Reviewed-by: Oleksandr Tyshchenko Reviewed-by: Volodymyr Babchuk --- 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 | 21 +++++++++++++++++++++ 3 files changed, 23 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 fb4cea73eb..11f9d216eb 100644 --- a/xen/arch/arm/include/asm/vgic.h +++ b/xen/arch/arm/include/asm/vgic.h @@ -355,6 +355,27 @@ 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 + * returns the maximum eSPI INTID, supported by HW GIC, subtracted by = 32. + * For non-Dom0 domains, the toolstack or arch_create_domUs function + * applies the same adjustment to cover local IRQs (please, see comment + * for macro that is used for regular SPIs - VGIC_DEF_NR_SPIS). We will + * add back this value during VGIC initialization. This ensures consis= tent + * handling for Dom0 and other domains. For the regular SPI range inte= rrupts + * in this case, 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 Fri Oct 31 03:41:54 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=1756319092; cv=pass; d=zohomail.com; s=zohoarc; b=LUE4PMjKl+ax9oCRpYeaMj18Mg8/LMYXvxoytTTFOwNOftIOuQjTad7FM8iBZmP+dN6UBI0PFDOqNI4TJF/FV+Iqw1aJ94KxdLL+ZRhkkNAYSPIHJgDHc9kK2jB3mL3Tcg6mJuCHk29Rd2tNZLl0tgFR176Q76UBUciNj6mSe8Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319092; 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=anilZOdhlS2ZHLYSyDc2Ak0Qj1UUYrMkpewbdPgEXe0=; b=kRXSD/PUGi+9DMJa5Ex+hc+8kAOYQ+tBInTZEiQOhzjvowlatGotQopVpJqd3svcpzllpeIfDvdJP1lSOJrR9u2IE+516m/s34ceM6ymMv1AwrZMuU7IOeWC/ENKbEuEZfKIzKXArFCOa/qrJc+B4qJmBgk6au1E7h3LcKF3Z6Y= 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 1756319092604901.4465742363147; Wed, 27 Aug 2025 11:24:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096740.1451416 (Exim 4.92) (envelope-from ) id 1urKow-0001fK-Ox; Wed, 27 Aug 2025 18:24:30 +0000 Received: by outflank-mailman (output) from mailman id 1096740.1451416; Wed, 27 Aug 2025 18:24:30 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKow-0001eQ-Ge; Wed, 27 Aug 2025 18:24:30 +0000 Received: by outflank-mailman (input) for mailman id 1096740; Wed, 27 Aug 2025 18:24:28 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKou-0006ki-AI for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24: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 0f8c82e1-8373-11f0-ae26-e363de0e7a9e; Wed, 27 Aug 2025 20:24:25 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24: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.9052.014; Wed, 27 Aug 2025 18:24: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: 0f8c82e1-8373-11f0-ae26-e363de0e7a9e ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HAqwLuIe/9cusClOKPBD9ey2jRYMcr9WOJSPJUooRp9zrYUA4axSCuQd0U/EeHsxxmL2VXeqyZXOrTBcfqObGDC+rFiaRlBh7jB9FROYKcJ9nP9b+5Nj8QJXTU/war38UDJ8t/yqSdWTlyBk9f5WyxKTqpuUE0QMDXdg28w/QJmU1wV+JKpr93L5choFXWCd8sww74hfevy6u2h42SQh45Gq/0p8pf7w1wP6PoMqlyl2RQFJFKk0jBHdLbpckSuJ/BHXOJAdHBofrE60NS3F5SAiQyoDWZCI+VcUDReYcYOtbTBntRBx/V6IJp+vMsYcdYol4VhhSZhqThKsGNljCw== 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=anilZOdhlS2ZHLYSyDc2Ak0Qj1UUYrMkpewbdPgEXe0=; b=PsYRhvTZ9b0n0/PpSPQBmuUm4cL8gbxM64DRTrliwiav00Rev99CD+5d1tHb/BGt1xa9dmbHCvvGCthpuCac5yvY9EzocST/7KBxgqEx4r2xPF1cU9IP5vMdJ9S/RSvoU9yThWRtwPDMQpy3kGJJpc7cZN93U2PqjyaAj/Nl8QquJZam5W8SQ2hr13j4rTAhMz16K4C8IprlLP2JETRTlJHue8xxK00ytDO9CnXF7FeXRcylA1dqUEgDAWsgccEjxXuRXeKb3C+1cPQtgUqKa3dSIOfkxnaTB3pfPDp2XmlLCLNFRhVkhuRR2EN4c49uFqPgvsMx6c5a7wMGL8TS6Q== 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=anilZOdhlS2ZHLYSyDc2Ak0Qj1UUYrMkpewbdPgEXe0=; b=WlE9oY0CKmPrH8e0op2MOUjkEmxaRjx+c+7wYY5wByicTfJ97br3b5+MC0DMvInhfUreoMXFU4RItPvkSjowFSRPqm/SALitQAVCSqmcuqxZ4PpMpBt830zaCE3jZ9JBAtdfSp7ju9yohxhBtIgKaLumiHMB2Z+RVnkDns/Yf1bSR81t2SYaKyWjDlUWVZQrdW3bfJNXIqgysAadipNe1IMnGR43xiiTFj0KIprPr4SSUaDpprMtCc0ncvevq+A6rnyXrxj4Ne2QKCoZxD7Vxn1jKAR2GBZI9xSmbLV//YUOhWGiQ/eq1tdRuH6SS/0bwkn67eqtZqP8iUSe+L9vQA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v4 10/12] xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers Thread-Topic: [PATCH v4 10/12] xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers Thread-Index: AQHcF3/PMGQJ9ZKjmEOWPrVRdE59HQ== Date: Wed, 27 Aug 2025 18:24:22 +0000 Message-ID: <6b312e1997da5abdf592f66d16067f4330431ded.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: de8081e7-0b1b-45a3-cd37-08dde596f24b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?e+u4IVGPpXV1olKhW59UZxK+rvtwkteGzSjXofWHFVLVha/Kxj5k8QyG59?= =?iso-8859-1?Q?V/CKfbvHggRbYms45/wy4wYn5pvOYIIUbhxq7OYuzst98BOcAMZfGTpRDp?= =?iso-8859-1?Q?+9HVSTXqKnGbTIb/0glLl4oOY+Z7sYntmlD2xpUvtYx82Na2YZhSzM9vf7?= =?iso-8859-1?Q?V8hB5OeNO1wO4HDZ6ObqHqE/imqc3pJhsSzv+LhC3N6000xN00GjySMuLS?= =?iso-8859-1?Q?yOIYRo0b8t/Q20ixTLZs1Z/vQ+eXqHcW96Wqf++0ksON32//7ZjhIUcCW6?= =?iso-8859-1?Q?domtkoZnEqejnLTCKcLVjswGzg/WBr5ZPqls3NwZgQzVXcFdFlqX1qrczr?= =?iso-8859-1?Q?eadOY6rmtLrIYuKiww0NxiUVjkq/Nj06zhP/TuHFruisqpRrXcaCTtgzC5?= =?iso-8859-1?Q?+FhYBiFPCjG2IN2IJk6oLSgjQ9N7E7cCfqcFgKdjHkRR4CLR5X3SnM5LDY?= =?iso-8859-1?Q?ijmBkntqo/HSONYKkZ1wt3nsJ5lJ+Uke80r8ajGM4BUcgt7V7itP0VBbC9?= =?iso-8859-1?Q?pyhzuRSIH6WsbAmxeyh9iUORpB3Lx8+Hy4LLprrVu6v5X2EAbgffdhEaj1?= =?iso-8859-1?Q?wI5V4zIjWccz/ugNpqaDC53mg4CA5nzrOFRxyF2hixKZfppIfKe6b9NCbg?= =?iso-8859-1?Q?RKCPSj5eIH/xB7/bRhVKEqmEiAJV7W44Ltn+BUMDMPn424gef82BeQO5yN?= =?iso-8859-1?Q?mFy+WG/MS+I743Vv15NMGIp/MiZI35A6l+xC5RmDMpBdF8pYVff4W3uTSR?= =?iso-8859-1?Q?1l3xOPcqfdmMs9s28wioKqllvC6ZLIJq5mOtmoEqr/pdawzgzH1GZ4Wrsk?= =?iso-8859-1?Q?RjpPORyZFKe/dbJ6tVWcg9L+OMcieAE1GhinIWMUQ3jpy+yZVjrbNtgKOH?= =?iso-8859-1?Q?shwIJ6M0K5z5Njy8tbd9jl+JlgYYGgAYWOkgO5CvUWv50c84/8Bs5g7zHI?= =?iso-8859-1?Q?4eNdPOz0MqEXolLWC3+DgOXFL6+Og/xprr3hUyAfsRCv4LVdM2yTz+z+Nv?= =?iso-8859-1?Q?+jBjAJIoQEvcJlNs25C/ayL/4ZJWYnTcr+Vv8FuxJZ7bm43G0H6ie6SsBy?= =?iso-8859-1?Q?Ri2cnktVKMcxWnwt2xIKI7Lvc81M7Db4npvrshjCfXsRjIjEonOFsq21KD?= =?iso-8859-1?Q?7SEWTQXVSFqGLXcUfT79tGK2AyF42PwNltso7nU3EeAA+QowgiXdTB5RAG?= =?iso-8859-1?Q?Rg2uS3xklpMJWOzKj3ljWGakzJ7g78tUfvtIpQKn1rlWBEZSCtzzSVzCEG?= =?iso-8859-1?Q?T4iXO7IK0G1+4qiq8nj7kEYi/GacYpkTccWH7ObF/djaVyOTdRhIOCQeA6?= =?iso-8859-1?Q?75KkiS881bRtm3hk6Wubti0RG9yHGeiwhtJMEFXF0KMyPsQu8XWBU0rUnZ?= =?iso-8859-1?Q?rGfUCgr+TqRkF9ePp23efvaEa4tMtQAvfjiu2hmw22lri0NDGBalfMF8p0?= =?iso-8859-1?Q?HurMkw8qIPYzwWyFcFpEKLTuKj7s/WHBXdtPwq1X4Lhc9Kv0hG7xoCq/rk?= =?iso-8859-1?Q?4TREI/B9TNSm6TKbcDhe/9VFqXPUX9WHXdTx/ip/4oag=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?9vGwg9RgUTIqN8GkUiQRu65hy5h0POUjroC40xqbK+LtCp1tbuTmpw8B6h?= =?iso-8859-1?Q?i7lJQm86rShWLKHnVBk1LnySmpmd7U0bW9rrq27E1OYgYKKBCsrQvdJ/ti?= =?iso-8859-1?Q?xqJ9izcgqj4WpQOFQrnPuaMrmTIrMtyB7nwgVi0tcYJuJSfBKwzXmdpnXs?= =?iso-8859-1?Q?K0M3a4mEzXqbeAQqsuwrj8VYAGSMMCXCZI3SmT/iR723e2gu8Z3/gqTara?= =?iso-8859-1?Q?yZqUZlegCvApXh6UQ5Ms4kQGPq3j4nF24PEWAqMJlheSeekExsbXO56ZwH?= =?iso-8859-1?Q?7j8g+DDfPFlBI5qJEAO+fOCe8AVVHWcjMOk8AYvbDVzoQ8VhniSolYYIpU?= =?iso-8859-1?Q?IVlS3SZqUg5d/p79PDCOiENZQv7FLc+nuC34wPS4ajx+aSD2n+wrfzFKB8?= =?iso-8859-1?Q?kdmQMofPEbaIQpB0m3iG8SQuPXSTIDkzBgLk+Uw1+RYaL0IigWLiblJJmE?= =?iso-8859-1?Q?oceiGtULSEkfF+bDOXV1LjEMytlblugty6FV4wtDWq5+wFxlbKYsPiF3IE?= =?iso-8859-1?Q?1To+Lc7+KGsHuoBy1BhxZ3vHEXb8ZlsXSXPlhvi5PXtE8xksLU61ZgDVKr?= =?iso-8859-1?Q?GFgqaps/KOHCFl4SVUJKJwog6QYxS6gLsI6PhIZNu3w94v79E3xyiTupSB?= =?iso-8859-1?Q?v68+m5ltgK2odDQeHTsf/xCp8QDq80h+OmcRy8xNq4vHW3BFoFpBeIlDQl?= =?iso-8859-1?Q?qjd7kfjMYWucaXEuznXha1+Qx/pWVq56AbwjvuOJYZ9DrEKN6Dhc9+Xsd8?= =?iso-8859-1?Q?ZI0u7VcYEFhJ36K5NJeOjydNO7m19k8TCLYKn2Z27LqDCN78mrmn2NTf3b?= =?iso-8859-1?Q?uOajuMOjogMmDp5xiPm5Q/L9vSvPHga8g5OutULWgAJRrWVTqRS7BNnB+l?= =?iso-8859-1?Q?I4+UT8UpAi6itYSc1L2Ii/ZYXsEwY7Rribqg66dX95jUJ0j+nv3zMYKD7n?= =?iso-8859-1?Q?B96yKQnVHtSLh08B8dj4B994DLx/6jwYKMEIAziNwFKXZiDuI7RmMQ0BeR?= =?iso-8859-1?Q?zH94XAbXh3EB3Xr/mKToDUCHkH85+QY04IvqKP7/LzabPoMX7WbZasBjAS?= =?iso-8859-1?Q?XLQ5noSsbMrar74PXBW+hjM8W/CPkPmO3oomZwmTktqeVKSAk7iLDMNJig?= =?iso-8859-1?Q?nQvSn9JtGfWJq1hLOEK8cYwvN9Z1zrLL89226KeuhfHbY+az7K2DO8GQeY?= =?iso-8859-1?Q?P9ptym1j02k/zPZvMY2+gfNFltQxQ5jYlneAAbjMU1vqbBKWus7vJj2SgD?= =?iso-8859-1?Q?/fCTuLY5xrO/9/O7iIgXwoYJVPbFITcsRvhXtIZ7EVtxlUqoWGeUJEu0YJ?= =?iso-8859-1?Q?9dy5sDak/vifA0Iz/0zxodbMzci24RDZF8aaNLyxBKbTU4GdcQjt+mKcH+?= =?iso-8859-1?Q?fDNJ6i0Aq8PeXkcJUEfMRmQGW+XD6s7yb5pv/e7TbbuUBovN+2QygG9Un+?= =?iso-8859-1?Q?WwLgdT7pE16UN1RjZy4/nGvxzB0GLfEWSIjs8Gsa+aMuYk+AiSz4oGN1dc?= =?iso-8859-1?Q?2X3mavYuDmFvRpFD8MGR4nzXK1HcGaWwI6dDvQ6YzJnQhxFNWY66tlYekh?= =?iso-8859-1?Q?R1e+jX9MRlKQhSKGgM6PdipusNY3AtaG7G7jHI3fG0B3HrRgYyvL5AKMgk?= =?iso-8859-1?Q?ELckUgvfMxmoX9hCBr2OLZ6wXY0qZ0IrqksB8TcxGdqvn0KDPMSNO8JblS?= =?iso-8859-1?Q?Tm/n5B0rZEu5sCqivSI=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: de8081e7-0b1b-45a3-cd37-08dde596f24b X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:22.9072 (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: GoqBeuoZjLMHB1czKuKjzCPpDuCLgSkYsj6BItliSBQqeiYqbG//L5snxWgDk2WV8fRUwnsER98aTE86lmD+lhr3bLDf+H67Y7QGfPdKJGs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319094305124100 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 --- 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/vgic-v3.c | 333 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 319 insertions(+), 14 deletions(-) diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c index 4369c55177..ca19f24634 100644 --- a/xen/arch/arm/vgic-v3.c +++ b/xen/arch/arm/vgic-v3.c @@ -42,6 +42,36 @@ */ #define VGICD_CTLR_DEFAULT (GICD_CTLR_ARE_NS) =20 +/* + * Common start and end of reserved ranges for + * both eSPI and non-eSPI builds + */ +#define GICD_RESERVED_RANGE1_START (0x0F30) +#define GICD_RESERVED_RANGE2_END (0xBFFC) + +#ifdef CONFIG_GICV3_ESPI + +#define GICD_RESERVED_RANGE1_END (0x0F7C) + +#define GICD_RESERVED_RANGE2_START (0xA004) + +/* + * In case eSPI is enabled, there is an additional + * reserved range after the eSPI-specific registers + */ +#define GICD_RESERVED_RANGE3_START (0x3700) +#define GICD_RESERVED_RANGE3_END (0x60FC) +#else + +/* + * In case eSPI is disabled, the range with eSPI-specific + * registers is marked as reserved + */ +#define GICD_RESERVED_RANGE1_END (0x60FC) + +#define GICD_RESERVED_RANGE2_START (0x7FE0) +#endif + static struct { bool enabled; /* Distributor interface address */ @@ -111,13 +141,10 @@ static uint64_t vgic_fetch_irouter(struct vgic_irq_ra= nk *rank, * Note the offset will be aligned to the appropriate boundary. */ static void vgic_store_irouter(struct domain *d, struct vgic_irq_rank *ran= k, - unsigned int offset, uint64_t irouter) + unsigned int virq, uint64_t irouter) { struct vcpu *new_vcpu, *old_vcpu; - unsigned int virq; - - /* There is 1 vIRQ per IROUTER */ - virq =3D offset / NR_BYTES_PER_IROUTER; + unsigned int offset; =20 /* * The IROUTER0-31, used for SGIs/PPIs, are reserved and should @@ -685,6 +712,10 @@ static int __vgic_v3_distr_common_mmio_read(const char= *name, struct vcpu *v, { case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): +#endif /* We do not implement security extensions for guests, read zero */ if ( dabt.size !=3D DABT_WORD ) goto bad_width; goto read_as_zero; @@ -710,11 +741,19 @@ static int __vgic_v3_distr_common_mmio_read(const cha= r *name, struct vcpu *v, /* Read the pending status of an IRQ via GICD/GICR is not supported */ case VRANGE32(GICD_ISPENDR, GICD_ISPENDRN): case VRANGE32(GICD_ICPENDR, GICD_ICPENDRN): +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): +#endif goto read_as_zero; =20 /* Read the active status of an IRQ via GICD/GICR is not supported */ case VRANGE32(GICD_ISACTIVER, GICD_ISACTIVERN): case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN): +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): +#endif goto read_as_zero; =20 case VRANGE32(GICD_IPRIORITYR, GICD_IPRIORITYRN): @@ -752,6 +791,69 @@ static int __vgic_v3_distr_common_mmio_read(const char= *name, struct vcpu *v, return 1; } =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISENABLERnE, DABT_W= ORD); + if ( rank =3D=3D NULL ) + goto read_as_zero; + vgic_lock_rank(v, rank, flags); + *r =3D vreg_reg32_extract(rank->ienable, info); + vgic_unlock_rank(v, rank, flags); + return 1; + + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICENABLERnE, DABT_W= ORD); + if ( rank =3D=3D NULL ) + goto read_as_zero; + vgic_lock_rank(v, rank, flags); + *r =3D vreg_reg32_extract(rank->ienable, info); + vgic_unlock_rank(v, rank, flags); + return 1; + + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + { + uint32_t ipriorityr; + uint8_t rank_index; + + if ( dabt.size !=3D DABT_BYTE && dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 8, reg - GICD_IPRIORITYRnE, DABT_= WORD); + if ( rank =3D=3D NULL ) + goto read_as_zero; + rank_index =3D REG_RANK_INDEX(8, reg - GICD_IPRIORITYRnE, DABT_WOR= D); + + vgic_lock_rank(v, rank, flags); + ipriorityr =3D ACCESS_ONCE(rank->ipriorityr[rank_index]); + vgic_unlock_rank(v, rank, flags); + + *r =3D vreg_reg32_extract(ipriorityr, info); + + return 1; + } + + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + { + uint32_t icfgr; + + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 2, reg - GICD_ICFGRnE, DABT_WORD); + if ( rank =3D=3D NULL ) + goto read_as_zero; + vgic_lock_rank(v, rank, flags); + icfgr =3D rank->icfg[REG_RANK_INDEX(2, reg - GICD_ICFGRnE, DABT_WO= RD)]; + vgic_unlock_rank(v, rank, flags); + + *r =3D vreg_reg32_extract(icfgr, info); + + return 1; + } +#endif + default: printk(XENLOG_G_ERR "%pv: %s: unhandled read r%d offset %#08x\n", @@ -782,6 +884,10 @@ static int __vgic_v3_distr_common_mmio_write(const cha= r *name, struct vcpu *v, { case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_IGRPMODR, GICD_IGRPMODRN): +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): +#endif /* We do not implement security extensions for guests, write ignor= e */ goto write_ignore_32; =20 @@ -871,6 +977,102 @@ static int __vgic_v3_distr_common_mmio_write(const ch= ar *name, struct vcpu *v, vgic_unlock_rank(v, rank, flags); return 1; =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISENABLERnE, DABT_W= ORD); + if ( rank =3D=3D NULL ) + goto write_ignore; + vgic_lock_rank(v, rank, flags); + tr =3D rank->ienable; + vreg_reg32_setbits(&rank->ienable, r, info); + vgic_enable_irqs(v, (rank->ienable) & (~tr), EXT_RANK_IDX2NUM(rank= ->index)); + vgic_unlock_rank(v, rank, flags); + return 1; + + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICENABLERnE, DABT_W= ORD); + if ( rank =3D=3D NULL ) + goto write_ignore; + vgic_lock_rank(v, rank, flags); + tr =3D rank->ienable; + vreg_reg32_clearbits(&rank->ienable, r, info); + vgic_disable_irqs(v, (~rank->ienable) & tr, EXT_RANK_IDX2NUM(rank-= >index)); + vgic_unlock_rank(v, rank, flags); + return 1; + + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ISPENDRnE, DABT_WOR= D); + if ( rank =3D=3D NULL ) + goto write_ignore; + + vgic_set_irqs_pending(v, r, EXT_RANK_IDX2NUM(rank->index)); + + return 1; + + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 1, reg - GICD_ICPENDRnE, DABT_WOR= D); + if ( rank =3D=3D NULL ) + goto write_ignore; + + vgic_check_inflight_irqs_pending(v, EXT_RANK_IDX2NUM(rank->index),= r); + + goto write_ignore; + + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + printk(XENLOG_G_ERR + "%pv: %s: unhandled word write %#"PRIregister" to ISACTIVER= %dE\n", + v, name, r, reg - GICD_ISACTIVERnE); + return 0; + + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + printk(XENLOG_G_ERR + "%pv: %s: unhandled word write %#"PRIregister" to ICACTIVER= %dE\n", + v, name, r, reg - GICD_ICACTIVERnE); + goto write_ignore_32; + + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + { + uint32_t *ipriorityr, priority; + + if ( dabt.size !=3D DABT_BYTE && dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 8, reg - GICD_IPRIORITYRnE, DABT_= WORD); + if ( rank =3D=3D NULL ) + goto write_ignore; + vgic_lock_rank(v, rank, flags); + ipriorityr =3D &rank->ipriorityr[REG_RANK_INDEX(8, reg - GICD_IPRI= ORITYRnE, + DABT_WORD)]; + priority =3D ACCESS_ONCE(*ipriorityr); + vreg_reg32_update(&priority, r, info); + ACCESS_ONCE(*ipriorityr) =3D priority; + vgic_unlock_rank(v, rank, flags); + return 1; + } + + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + if ( dabt.size !=3D DABT_WORD ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 2, reg - GICD_ICFGRnE, DABT_WORD); + if ( rank =3D=3D NULL ) + goto write_ignore; + vgic_lock_rank(v, rank, flags); + vreg_reg32_update(&rank->icfg[REG_RANK_INDEX(2, reg - GICD_ICFGRnE, + DABT_WORD)], + r, info); + vgic_unlock_rank(v, rank, flags); + return 1; +#endif + default: printk(XENLOG_G_ERR "%pv: %s: unhandled write r%d=3D%"PRIregister" offset %#08x= \n", @@ -1129,6 +1331,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.has_espi ) + { + /* 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 @@ -1184,6 +1396,21 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, m= mio_info_t *info, case VRANGE32(0x005C, 0x007C): goto read_reserved; =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): + if ( !v->domain->arch.vgic.has_espi ) + goto read_reserved; + return __vgic_v3_distr_common_mmio_read("vGICD", v, info, gicd_reg= , r); +#endif case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_ISENABLER, GICD_ISENABLERN): case VRANGE32(GICD_ICENABLER, GICD_ICENABLERN): @@ -1200,6 +1427,11 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, m= mio_info_t *info, */ return __vgic_v3_distr_common_mmio_read("vGICD", v, info, gicd_reg= , r); =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_NSACRnE, GICD_NSACRnEN): + if ( !v->domain->arch.vgic.has_espi ) + goto read_reserved; +#endif case VRANGE32(GICD_NSACR, GICD_NSACRN): /* We do not implement security extensions for guests, read zero */ goto read_as_zero_32; @@ -1216,7 +1448,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mm= io_info_t *info, /* Replaced with GICR_ISPENDR0. So ignore write */ goto read_as_zero_32; =20 - case VRANGE32(0x0F30, 0x60FC): + case VRANGE32(GICD_RESERVED_RANGE1_START, GICD_RESERVED_RANGE1_END): goto read_reserved; =20 case VRANGE64(GICD_IROUTER32, GICD_IROUTER1019): @@ -1235,8 +1467,32 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, m= mio_info_t *info, =20 return 1; } +#ifdef CONFIG_GICV3_ESPI + case VRANGE64(GICD_IROUTERnE, GICD_IROUTERnEN): + { + uint64_t irouter; =20 - case VRANGE32(0x7FE0, 0xBFFC): + if ( !v->domain->arch.vgic.has_espi ) + goto read_reserved; + + if ( !vgic_reg64_check_access(dabt) ) + goto bad_width; + rank =3D vgic_ext_rank_offset(v, 64, gicd_reg - GICD_IROUTERnE, + DABT_DOUBLE_WORD); + if ( rank =3D=3D NULL ) + goto read_as_zero; + vgic_lock_rank(v, rank, flags); + irouter =3D vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTERnE); + vgic_unlock_rank(v, rank, flags); + + *r =3D vreg_reg64_extract(irouter, info); + + return 1; + } + + case VRANGE32(GICD_RESERVED_RANGE3_START, GICD_RESERVED_RANGE3_END): +#endif + case VRANGE32(GICD_RESERVED_RANGE2_START, GICD_RESERVED_RANGE2_END): goto read_reserved; =20 case VRANGE32(0xC000, 0xFFCC): @@ -1372,6 +1628,23 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v, = mmio_info_t *info, case VRANGE32(0x005C, 0x007C): goto write_reserved; =20 +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_IGROUPRnE, GICD_IGROUPRnEN): + case VRANGE32(GICD_ISENABLERnE, GICD_ISENABLERnEN): + case VRANGE32(GICD_ICENABLERnE, GICD_ICENABLERnEN): + case VRANGE32(GICD_ISPENDRnE, GICD_ISPENDRnEN): + case VRANGE32(GICD_ICPENDRnE, GICD_ICPENDRnEN): + case VRANGE32(GICD_ISACTIVERnE, GICD_ISACTIVERnEN): + case VRANGE32(GICD_ICACTIVERnE, GICD_ICACTIVERnEN): + case VRANGE32(GICD_IPRIORITYRnE, GICD_IPRIORITYRnEN): + case VRANGE32(GICD_ICFGRnE, GICD_ICFGRnEN): + case VRANGE32(GICD_IGRPMODRnE, GICD_IGRPMODRnEN): + if ( !v->domain->arch.vgic.has_espi ) + goto write_reserved; + return __vgic_v3_distr_common_mmio_write("vGICD", v, info, + gicd_reg, r); +#endif + case VRANGE32(GICD_IGROUPR, GICD_IGROUPRN): case VRANGE32(GICD_ISENABLER, GICD_ISENABLERN): case VRANGE32(GICD_ICENABLER, GICD_ICENABLERN): @@ -1386,7 +1659,11 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v, = mmio_info_t *info, * Manage in common */ return __vgic_v3_distr_common_mmio_write("vGICD", v, info, gicd_reg, r); - +#ifdef CONFIG_GICV3_ESPI + case VRANGE32(GICD_NSACRnE, GICD_NSACRnEN): + if ( !v->domain->arch.vgic.has_espi ) + goto write_reserved; +#endif case VRANGE32(GICD_NSACR, GICD_NSACRN): /* We do not implement security extensions for guests, write ignor= e */ goto write_ignore_32; @@ -1405,26 +1682,54 @@ 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(GICD_RESERVED_RANGE1_START, GICD_RESERVED_RANGE1_END): goto write_reserved; =20 case VRANGE64(GICD_IROUTER32, GICD_IROUTER1019): { 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); + offset =3D gicd_reg - GICD_IROUTER; + rank =3D vgic_rank_offset(v, 64, offset, DABT_DOUBLE_WORD); if ( rank =3D=3D NULL ) goto write_ignore; vgic_lock_rank(v, rank, flags); - irouter =3D vgic_fetch_irouter(rank, gicd_reg - GICD_IROUTER); + irouter =3D vgic_fetch_irouter(rank, offset); vreg_reg64_update(&irouter, r, info); - vgic_store_irouter(v->domain, rank, gicd_reg - GICD_IROUTER, irout= er); + virq =3D offset / NR_BYTES_PER_IROUTER; + vgic_store_irouter(v->domain, rank, virq, irouter); vgic_unlock_rank(v, rank, flags); return 1; } =20 - case VRANGE32(0x7FE0, 0xBFFC): +#ifdef CONFIG_GICV3_ESPI + case VRANGE64(GICD_IROUTERnE, GICD_IROUTERnEN): + { + uint64_t irouter; + unsigned int offset, virq; + + if ( !v->domain->arch.vgic.has_espi ) + goto write_reserved; + + if ( !vgic_reg64_check_access(dabt) ) + goto bad_width; + offset =3D gicd_reg - GICD_IROUTERnE; + rank =3D vgic_ext_rank_offset(v, 64, offset, DABT_DOUBLE_WORD); + if ( rank =3D=3D NULL ) + goto write_ignore; + vgic_lock_rank(v, rank, flags); + irouter =3D vgic_fetch_irouter(rank, offset); + vreg_reg64_update(&irouter, r, info); + virq =3D ESPI_IDX2INTID(offset / NR_BYTES_PER_IROUTER); + vgic_store_irouter(v->domain, rank, virq, irouter); + vgic_unlock_rank(v, rank, flags); + return 1; + } + + case VRANGE32(GICD_RESERVED_RANGE3_START, GICD_RESERVED_RANGE3_END): +#endif + case VRANGE32(GICD_RESERVED_RANGE2_START, GICD_RESERVED_RANGE2_END): goto write_reserved; =20 case VRANGE32(0xC000, 0xFFCC): --=20 2.34.1 From nobody Fri Oct 31 03:41:54 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=1756319498; cv=pass; d=zohomail.com; s=zohoarc; b=alyCThPWbID0CEQnp5FS4iDnNWUDHgMj0jFU03k0poEzdXKLDz5fdxBD24M8GthnPbsS6xmEtUmCL4m754ulDDzWrOyihQIZV/KS7nP8pG1EFBOw07P4E4Sjnet5yGu7yzPGFWiiZD4K+LN0J1ov5NUbkKDpM2tORwmkwXZ0wjg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319498; 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=P59BS93ETcKG4P0KEy57U1s5baIHMLjBk3TnuOaGCfU=; b=SjRB/x4ZwuZWtY3Cbaan/Qegc3FSJK6JDLcuc7IxnQMahG+okU2M0Eerw/ojwYnXPzzcczFtKtDm6gyAYdeG2qxYCPwJBRtn8u9F0n6KJ82Ivz3kYgjHRsx1K3uqdz7tFcror+ax3hY9My1zFA0iC9PQT3IIu3w87YyyNPnKttc= 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 1756319498059431.65796211088673; Wed, 27 Aug 2025 11:31:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096809.1451437 (Exim 4.92) (envelope-from ) id 1urKve-0005jg-UX; Wed, 27 Aug 2025 18:31:26 +0000 Received: by outflank-mailman (output) from mailman id 1096809.1451437; Wed, 27 Aug 2025 18:31:26 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKve-0005jX-RY; Wed, 27 Aug 2025 18:31:26 +0000 Received: by outflank-mailman (input) for mailman id 1096809; Wed, 27 Aug 2025 18:31:25 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKow-0006ki-Ak for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:30 +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 10da613f-8373-11f0-ae26-e363de0e7a9e; Wed, 27 Aug 2025 20:24:27 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:24 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.9052.014; Wed, 27 Aug 2025 18:24:24 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 10da613f-8373-11f0-ae26-e363de0e7a9e ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=af4fTr8gP9KxbRQiOgP90/NUmLwvypl/Ir4GiApeS4oT7t3aIlifsPq0IajoT/p7pQEAh7F3Zm7MuC1Bc5A7+9vdLWJ1q3RnIa8ZDAZ4hSDFRHtG1AZ2mY0ilUErEq9iTi+bemSzTlL+/2FkZ16A179nerVfH8fX4EiMJuQ6TLjmJ0tBgyEUTtTcVdMAJdF5KsHU5xsaLekxpq5e4E+R6t131RLiFXn7ThDDpFJI4YQD+RPTieH3z339WvvWAy3qZVzm4aAfvyMarRY3ac6HqVCH3xWsqFQn20WesSHRagNEfautRTKCBpjc3ptxDod3jrRwExlH0h7EjFN5RKRG5w== 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=P59BS93ETcKG4P0KEy57U1s5baIHMLjBk3TnuOaGCfU=; b=AfoeuotC2PpMOUbDTlDH98Jnmh65kVP0Lgs0MbYJvuCF4IxvyCXmI4tCseiW8d6QKNjC8edbF12owpmwBrblBcBAUIMaAzz4NKNUg3mmZxvj1X1qc+To4Ii/41av5ib8Q/EtU4H4g0SD0KcErFiHrCOgVMMEx5gYCk4QV+Vuqi4x15ZRnpC6v4G66AMWRSwNm1gKZakilrR/DIMqRTT0IuMtYDSUOsyZwVTFPB1r4yW8IkybON9/fi6mZ1sHlY6GaHhVp2skvek3rV0gHFG/p7vCgkD3PaXppYk49JJutdraT6FZZtGnQ1XZrKK4rEiFIis4IWogZoHJVvYrXIfbXA== 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=P59BS93ETcKG4P0KEy57U1s5baIHMLjBk3TnuOaGCfU=; b=g4LqAdyD4mT5n6NADjvReW7iFXvwomq0kf+h3CAHhA6HHTvfYaoj00KnPEGQoCRvAUFfXPBsoWvb8QrKRIIl0LOCwfIaFJCO/QwBdyzn6PftcxqnF/0GdHO4yco60EFgxN6k/djeyv10crNLIYH39+6RtcCsC+oCjvcWavRaBdyXe3eikjJxXJ+dCo283k66Sie/WhfcBmGxVmtROjrrV9OaJVLIqXYCpSsu98qHOCQPX36mNWSUHn9dokrMHe0dURoPDUxywpSxYPdX/qZSmUdoiE67O7QuCC6fUibtNrhj4OqIBlDmP9WsQ6E2BXzZxTJxXCyXS7fSWRyPqiCMiA== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Anthony PERARD Subject: [PATCH v4 11/12] doc/man: update description for nr_spis with eSPI Thread-Topic: [PATCH v4 11/12] doc/man: update description for nr_spis with eSPI Thread-Index: AQHcF3/Q0bamE1jhy06ZtBrEohbynw== Date: Wed, 27 Aug 2025 18:24:24 +0000 Message-ID: <50cd1899b328e82bd517ae0dd0e400e9cfee0999.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: f80c8cf4-721e-445f-8472-08dde596f31d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?CvrKr9e19yJrHSXUZpIz3BHjDLk8FpAjfbUzBvbsDqX4U5qNDQpEUCFkL4?= =?iso-8859-1?Q?9DZa+GuuiDzGL9HiCaEJ+J037biOoaYz7z1eV2fU0ZRpOdAULD8XGCjPDJ?= =?iso-8859-1?Q?1DuGQ1NmRmU0edpqiAsS0c+04jBqpp2CjhfQRLVGJk1UQtqtopvgOf2uk0?= =?iso-8859-1?Q?Y6Ivx7+0gQbAeTNFuWFCT59CWhelG1zRWS8vcPskXZmUuQUBLa2xbHQMcU?= =?iso-8859-1?Q?Yz7/IfK9wT9fWARKPCba7LCQQxO+ox1qkVMZNI0qmS4oyvybfVN21DylcY?= =?iso-8859-1?Q?Ar5+ZB2I7nMugWcM3dl7T5Gz3+2rxTiLbC72REgIm/h3WauZy1Kg4b1ta0?= =?iso-8859-1?Q?mojdxJhGHRMgv6HhNdgDQxjMpivl0NrLXfbW6GArx/yroY5TXOtuA9tt7d?= =?iso-8859-1?Q?zfhUkeq5wnaajjmlAp58/v2lL6Ay68KM+8MmcRgeEcfZc7Ka5eBvEEr7hO?= =?iso-8859-1?Q?9HqiN++E+rgGDmGueY7/SyYssvm84Hpn6jAFk/YZg99+IVN62ouYZcJlwV?= =?iso-8859-1?Q?1pPeTUHNRnxtbiQANCocMuostLmW5XifKv4SVI7KpwQzca9gcoVvoFL7rA?= =?iso-8859-1?Q?9YRFg4cqBQMkG33a6r/5TEahRddtnJO+ydZd2Ugj7bXTFBn/Vmqe7iaxmC?= =?iso-8859-1?Q?UUoF19nk9/U7eQGHwgURImYPCWym3DdF2uR3ev6421wGw5gpby0vrOcDcr?= =?iso-8859-1?Q?AP2sYD1Ee5p92rt6M8kuFzS0CIt/rHGwg7FyQLp6L5W9xB0nkKurpD63wM?= =?iso-8859-1?Q?NbbqyseAGHd5agEGMW4Dw/0HeHDnkWo9w+9tCh6s6rclzgxohFYfjeU/Ph?= =?iso-8859-1?Q?uaLocdgFaFiy/OtgTS3czZMx2dqGKf3R5sOC3sjmlgs8PXRioKN1nPghyw?= =?iso-8859-1?Q?by+44eQXuQJIt+/EmO6Hi0UDErJNZz4dIcaiOOaNB1bJm6TZiNQMvEHF0z?= =?iso-8859-1?Q?/S1gRUJd7ssluzYaexjIDc2chZG/bAdsv7tAz6cKDejejZA37P3cLM6y3E?= =?iso-8859-1?Q?5sNKd1L6dIBicgao7DZNKUxYBYvFxpMBUkrST+ViJcU74wH/zpIHtX/xyy?= =?iso-8859-1?Q?uU5Z6Tyd1zsZwQgQC0PnbYP5EMOa9JsKF3QlGyoR4CMiFaTl02t/RiCows?= =?iso-8859-1?Q?Us+OzBmIeH3kxz3c7EWoZl9I4K4yyQEjYk9rMqXPQVImDpXepY7ncE1j0H?= =?iso-8859-1?Q?M6XjHNtvDPEVQj44/8uW5BO+cXRYzYObZ7ZAeuKNdpwcdIcFlx1DOiceQh?= =?iso-8859-1?Q?bVcIc/A4/40lsQDDlD+U8LT2dGiu8ThaIuUA80m9GTjR9Xpa5jLYQpjQA1?= =?iso-8859-1?Q?TQyzCebHIN3wT2EZBTrGJfu9tHLWE4k9ZRX8bVJ/c8H+DX/MDcpJeBBzAr?= =?iso-8859-1?Q?Ry31KCVX8sLMO3c0ejjWWTI0MAp+bDP1EQA+0OEk0ChECZDcWiXgudC971?= =?iso-8859-1?Q?EEZQ0G2E6w6osWhsNU5Y5drVfbLPtwEwolwgnf7AV8JVp3ipWBOx5kQ/Ar?= =?iso-8859-1?Q?mAqLprZqqvuknxZCQwJKIlRAoAfzLSpfP66sORHVvcsEFMwhuMYJMyYenD?= =?iso-8859-1?Q?uTy0hsA=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?I+wtVbNl2X59aXw96xgH8ZywL+TA5BgiT/C61xntblyYWokmhGeC5hXceB?= =?iso-8859-1?Q?fG1m3o6uuO/USJ4W6ItIHNFlXF5Si/tjZ1Zs0jneOWeTZNld9DAmRgugl5?= =?iso-8859-1?Q?mr58tOaVmtBSgi7LBfmZihPjz+jOdWj2B5SNj7hPUQ1nbBR77GNTAsTyMU?= =?iso-8859-1?Q?tGZ+IfH2f/vmzBKj5AMCce1LsRWm4a2Ppr9enzW56yy/Tl6ZQsPGHeMTl8?= =?iso-8859-1?Q?oEwKipKWff4/OPUBjkza/gOvIxdjBstIag675mzACNp3+sCRoOAzhGYARL?= =?iso-8859-1?Q?3P1Q3EuR+/f3+afG+8UJFZBR5X00vxt7sEhxvdUPDMh81tpVvwuX8o3TMJ?= =?iso-8859-1?Q?nShsuQFf9qjUeO71sh1Xk9yO2DG6x2GY/rQEYLCObEo+ANSHzXoTrwcTNj?= =?iso-8859-1?Q?ulsfWUdRs2CvG9lQeTfdKcJSB04zK1lJjg9pkjy7I3yv7KHuIf+bFe9XxH?= =?iso-8859-1?Q?OCMkPB2ofs812FFH0yfh+HUB3ysexNAagH93mR2xCDxSHhr7+23kFJwn46?= =?iso-8859-1?Q?wLs3/QjZZWroLNWnXMulnI7Qz+WW+E1I0EA1cc8rSm70kToB6D2Xu7poRX?= =?iso-8859-1?Q?SleEVYe9Lf3VT240OATh6C6Z1TeOaEePO/0/b4BEBNlZtm2u8lnnJfT6jJ?= =?iso-8859-1?Q?L5rwFJYcsM3pLMq6uWMFEoPACfQnh7EyNtzcqpKcPvj903IFzZd6vSvLu9?= =?iso-8859-1?Q?5K2UXSqZ62rCmj5Dq+LRpfkeYBogDs9N6/ox7MjMM3/2QW5pH4xTAyTC2D?= =?iso-8859-1?Q?4NJmlSMzDxmVp9h77iI8y/rkAqblNJP1H85JLRC7fdsKWNrmCQdBkQe/QH?= =?iso-8859-1?Q?s2ZWW0YWBrPpb68NbbYUXRH0v2MZHc8/cZgI1hBzlr5NrcktlbI09o+HRV?= =?iso-8859-1?Q?1hGnpd5pA1iH1f/PKHY287O12829VSxj4Mu3Uzh3TdTy9HHJz0+Wvu70Dt?= =?iso-8859-1?Q?dRWSjOBUa7cSKsgQ31P6Mbe61rcvSfvfMPonh3N0ULtTjXtVM7h1aqaIoe?= =?iso-8859-1?Q?C5qQNeZJVaO86uf2p8e7Lb84WuZrW3Kfh0ahzta56TrXUq/lAXj8eNEW3W?= =?iso-8859-1?Q?EQyicJ5wm3+/KD2kMuy+qv+N1ZJlVDBAcC76210owia9roXkKa4DkvTqeO?= =?iso-8859-1?Q?NeJI9oDWMHX7hHek5gNI9GU+K+mhyjkVvJWsceJu+7oDW6musxrZKc4UoG?= =?iso-8859-1?Q?JQldg+iHfc61WkxxfQgV/aKFn5/At+4gVF2Gv442NDKgvDCTAqZJ65qHlI?= =?iso-8859-1?Q?JRS1vpiRElKTSNlBBA0iz1B38+MbqEPynJg8n66WE+fDcsK0wD61l8VxL3?= =?iso-8859-1?Q?wAwAaEVS+CQCjabpUUAMmbC8eZeb7oglR7ftSNz2Wp4dY6Fh9lWpcrtAjp?= =?iso-8859-1?Q?93Yay83dzLbMJV9CbkZC36mb204OF2oh6ZavWFGX88InssWAVmRec/H646?= =?iso-8859-1?Q?bKKTc7iUjYVm/Jv7fDGcn8QAWTDTa7lX/CJ+IYn7K4g0VOhlpFxGhZx7fX?= =?iso-8859-1?Q?2ZSB+acvXqAUjtfut8A7/OQuN03AhzWDaIlzGXSRnNrF5VTI2MNvM0EZRH?= =?iso-8859-1?Q?2foCLc0k79QTVb4X07FE+z/1pbQti4mWWBFxGoo32rCuOMP19bmd45Gu0z?= =?iso-8859-1?Q?sQl69Sc2OMdRYjts64Nj8iVZRIWze26hvjZEoV3l/9dzQx+hvMkXNWZVbq?= =?iso-8859-1?Q?yRFb0yoc7XWW1d0IXq0=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: f80c8cf4-721e-445f-8472-08dde596f31d X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:24.2978 (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: 8GhAX9WUyQ7EzvnkcYFPZYIDxe9oxmTWI+eOssPvBo9B67IUxQ1mV3/CBQ5uoYG9cdiPS1S6JKZ6vBdV3GaSv2AtMpEm/hO9wNsVOfCnVxw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319499195124100 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 --- 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 Fri Oct 31 03:41:54 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=1756319490; cv=pass; d=zohomail.com; s=zohoarc; b=ZNcCcB9w6LysLGXPqLIeI7YuyzIampsstRY5UcMTSo62hVWIXEhDfbAoiazFMh6Qnn8IKej2HZRb5zkdA37Ggyin5aHNrfF7PgMY2N+sxLoRQp1r+63fB6cHzI61DnkGue7oKrvETrztm3HOHY6c2CbPfllEy4c6eGjsagTHYQ4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756319490; 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=W6MIjZW1CBjFKc4mIxF2/dfXj2CJ3BIGOeBCmG7IwAA=; b=cXh9rar5YxadrjUywrsd8Ppuo4ZAyyyulQYgbnvN5M4djMSb0iR4rAjY5lnfoRuBtdjV9EYgLK+W4QP+FoTFeG3rjosB/RSSxqpP3x/4ZRoCp071M3HR1WLvdViCnLLbRjSikLCibY3atoRY3CzuazrX+pW0RCLmVr3QeSJ7/7w= 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 1756319490801397.14610704233826; Wed, 27 Aug 2025 11:31:30 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1096792.1451427 (Exim 4.92) (envelope-from ) id 1urKvR-0005NU-MQ; Wed, 27 Aug 2025 18:31:13 +0000 Received: by outflank-mailman (output) from mailman id 1096792.1451427; Wed, 27 Aug 2025 18:31:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1urKvR-0005NN-Je; Wed, 27 Aug 2025 18:31:13 +0000 Received: by outflank-mailman (input) for mailman id 1096792; Wed, 27 Aug 2025 18:31:12 +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 1urKoz-0006ki-Ax for xen-devel@lists.xenproject.org; Wed, 27 Aug 2025 18:24:33 +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 11c811e7-8373-11f0-ae26-e363de0e7a9e; Wed, 27 Aug 2025 20:24:29 +0200 (CEST) Received: from GV2PR03MB8678.eurprd03.prod.outlook.com (2603:10a6:150:7d::13) by MRWPR03MB11023.eurprd03.prod.outlook.com (2603:10a6:501:76::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.15; Wed, 27 Aug 2025 18:24:26 +0000 Received: from GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9]) by GV2PR03MB8678.eurprd03.prod.outlook.com ([fe80::4eb:3e7b:1ffa:25f9%6]) with mapi id 15.20.9052.014; Wed, 27 Aug 2025 18:24:26 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 11c811e7-8373-11f0-ae26-e363de0e7a9e ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Zq8I/z3/7Dx1xNkTft5pdwISwjyr6+V4PgueqiAz2hP6g/2JM82Ke6JkgYP9KkDGjsi6m7+9RUpkO2JyhHeTsNwTtWiqK/dyx9qWm5fbdcmg0zHN2XH7n+1bKb53OiAGV7csC8goaMINQgfgNTxJlKoJixNFC5lf4GVpStYF1Nuxw4bhQHer5cOFkXq6BekIiO/qeqJcEnD4nrv0GQu1/12iZb7P1bGkvad329Vs1shKXPyjZHMPQg1WIQa6QU0JW/GQjIgMfH78srYGNDU/dhNq8QX15MN8F+wLz492jCE0J4olhBIj1N+lfavOzxH921Ek9dF23kltlnwQqGgm6Q== 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=W6MIjZW1CBjFKc4mIxF2/dfXj2CJ3BIGOeBCmG7IwAA=; b=evwaXSzYY16QWlEIPABZBWaeHi0eCWncUpT+BqcL0Oh/CO+E6RW9pAryGsuf+zG2X3iogShhv/erjsaJrZPrs5Cgym5BNjfLIhXSP2H9FLu2Rp3PD+KrMJzJr4g1OBZ/2BS0JdMr1pAhK8j1WhNSQbUOWaIThXJBP495TUX+m4TZ4u1MKqA7vaOoy4FWGhUgLAHBGqQffV1Ojc5C4VRIwrWw1oTzqPt/Lr7vLCI0B9Tn0FeGB1jwCeBwSHO6wfedSaU1UUBQsyoQ42YSTLOfSiPx/fuTZIACiBkddiAMz5PgHmK8WfmE+MGR9qQ1RFqKCqzFytZY8bC9Hd5xq9hgRg== 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=W6MIjZW1CBjFKc4mIxF2/dfXj2CJ3BIGOeBCmG7IwAA=; b=UwoLXNOrH2PnugzQNcTpMGhkBbNY4EaX+J7qjA3SF5CziNGfoF9F8JTOucKqOxboTlVqjL8LzZSgqdq9muQVdW9Oc91DHIFzbg8cpD92tnjwJO7pZmWk85g5OlPU92l0bdsT0GJZyxc9TkJ0l+/ShedW+gYdh9PLqQU2OgrRQsoyWfIjcDdajkkisH1CiFh8RG7lWL9Z4RxzjsDmr2VKQGokXRVdFQVZmhKCGtJxy/H0vV30iAxTlUh28bM7d/qKy4JR0f0uqqR32MR0G1lgVgEQmU8w5V90lp+TSgCqquSrOXwAbrdlR9G1hdFhE52UH8Ax8+yqgw+uJ9rQRlFvIg== From: Leonid Komarianskyi To: "xen-devel@lists.xenproject.org" CC: "olekstysh@gmail.com" , Leonid Komarianskyi , Oleksii Kurochko , Community Manager Subject: [PATCH v4 12/12] CHANGELOG.md: add mention of GICv3.1 eSPI support Thread-Topic: [PATCH v4 12/12] CHANGELOG.md: add mention of GICv3.1 eSPI support Thread-Index: AQHcF3/RJqCaSCtYv0easljTcStgWQ== Date: Wed, 27 Aug 2025 18:24:26 +0000 Message-ID: <735dc5095eab0511384e6c8c14d789e86d3ce300.1756317702.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_|MRWPR03MB11023:EE_ x-ms-office365-filtering-correlation-id: eb214470-6306-4e54-64ef-08dde596f46b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?Q?oJ5Q5LrAR/c71k3RkApxm1jIZlpDGVQqqJOQFPE9GafzAoiBmb4i7xMJ9U?= =?iso-8859-1?Q?Fvr6uZvQ4Ev4esAJe3y69fAZvVS3CDX41cO89VEBSKg/O4hr4GOE7ts5BX?= =?iso-8859-1?Q?fEUr3cOfUm8LZAPu8i3MFb+mi6D6RpByZ1SJWi/gDofVEdXPHvZYs6qvlq?= =?iso-8859-1?Q?v2IjKi4Jzu2rJGDl1Sw70Z6oFO/Cn1UfzPAftA7G5fnqgsE/DeDtKIUxYd?= =?iso-8859-1?Q?XuWawIbgvIqnq97mYTBfQplS7fRXtYMY1lcBEhJF4G3cmS4scyC8lgepzU?= =?iso-8859-1?Q?pnbZhcmNRlbINkDHlUt2CX1Vc9TkcxoYAjgsknGcD6pAa+B/Il8/8HCgDc?= =?iso-8859-1?Q?l8axPxJQZj7Ek8dyyfSsKrqhTkyMq7ooku4sbe6RhdRrVZckOS+trHfNRw?= =?iso-8859-1?Q?E+/TDgWCd+9dxIJ8dG5HAgQ440ItOy44A26P2o4EaG0sGmV4AlzL0tDqUJ?= =?iso-8859-1?Q?soT6OUm5gPKPjJciAI56fQciku7PAQhR1ZSqiKyJQpGcyDMWdT1SJR8W5u?= =?iso-8859-1?Q?HzfzPL7BtXCFoHcmy9EUpnuhDE4idpVeeibtaPxJTAtiqo83W7T61VwIVO?= =?iso-8859-1?Q?psss0TQFdC/YYjOCHZNoo63lGByrv9EW9os0g8PUxtUl1az9JVmcmkoLdN?= =?iso-8859-1?Q?7PIhkyWnhj4AjVeFz5DmC5xtMGK1dbXiOo/Fu+fuQxkG7TMCaZPpFJ+Nk2?= =?iso-8859-1?Q?cAOcHv8D8KocpA6l2CmiN0hgq3NynKsgKf1VNBxVd4066qSINitAc3lYq0?= =?iso-8859-1?Q?whne1Sb3uIYzOhbwbKV7AV7ZvipuR46sWCrcaXE3c+gRvUYCH6jmHNyWr7?= =?iso-8859-1?Q?P8pedJuYrTq3//uaJCSH43CAnMXlkwKRBcGc04TtoUOkeHuPG0Wfyb/cpE?= =?iso-8859-1?Q?zIxY/XTOyfl3W2ia4sNuL/jMMu8TLobVGbfVUSjSfqhgznFzdquIkioCai?= =?iso-8859-1?Q?g7F+MPj74c1izGAJFdRcwYPNSWEzWXvsvYymXbJipbw3d/yXKcwNQOYSQD?= =?iso-8859-1?Q?edvjzmMBdbH7zj3QaonP7AO7SJOe+yhrom37N6+wbACzAmdxVARgYt5zlw?= =?iso-8859-1?Q?mLFUEuOsXj99XW/tO/rhkzT6tiBUwxWrIZpNTkuU6vwkQhUIP+G9CWqywn?= =?iso-8859-1?Q?IlwoZCpphJ3Z5HtBEHZAhksx1jLTkL3rGvZfzYXezMxy/+P8OO8SrZQeFK?= =?iso-8859-1?Q?Vd2ighgm8nK9GzjynGNxU1TxzY9Yw69u6OXKJHRmnY91tzTKSeHuhcfxFN?= =?iso-8859-1?Q?L5kQBgnHz9FzKYeEvjL33V/mF40Q2nth4X/n4LEaXI9GxpEu1KM6t1V+2s?= =?iso-8859-1?Q?X8hnKOhmrgdAPbhVrh4ZMEcM1HF1C7UgVGKW72KDBbuDxolIT5dqbiHRng?= =?iso-8859-1?Q?C4vZ01jJK0pLNfMdT4EK5GdX60PxXDW8fIQk29pLjpBb/TqQobCQHDZJCt?= =?iso-8859-1?Q?N0IhQO0t1bdWTLRpWvAVEAFwSlCdm2jsb3dRJnEV6UNsZnskiZgDH3Etzf?= =?iso-8859-1?Q?E=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)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?4xlDhsmOOGAlnRhW4M4ywd4+A2aYR4oYWCy4mgs2VXArQzTMhOabaUH03k?= =?iso-8859-1?Q?Jg6eEVz/YQjP3YuQc/bgrlh9P83JlmVgzwNPb3Zyx5Dqqtn73BoihXRx6f?= =?iso-8859-1?Q?e8hc70cIWimji0uCDAJixwQm83GNxDtHTGKU5RQmYFduoB+ExXyzA1Pleu?= =?iso-8859-1?Q?WBRH/CXCV8U/1spNI3eQNkheOLnoLglajoLzoT2ONosIVO7Q2zOZ2QALxf?= =?iso-8859-1?Q?/vfn3+l6f4hIAcBKmkj6a7g26LUiMVJ1/4EyNvlTp6IUAqJZE7JynNxKlo?= =?iso-8859-1?Q?Yb4JmzoH1YdGypKHaEHHRwgFJLZHNOFM5x9G89G6Z5myoUR6SDVA0v369d?= =?iso-8859-1?Q?esfq4iKtmO0UnzCY6VFFlMkDBed61kpftzrNmxy2/SvB62A0wMCjNTIOws?= =?iso-8859-1?Q?RLonRhUQ2ygi2fMqYsZY1fhn/FpKG+BZfL2acMkOPnQokAWm3u93mFP8m5?= =?iso-8859-1?Q?yYnBTwmtbpizVkVmNJNpmFpRMkbGh5u+h+36HCpcLdd1puCthkaLGPLcIC?= =?iso-8859-1?Q?ea5rLGL/pBpJCk7j6HYPiAg9+1mniLS+xmzPHu3/oAM88MMBwqFtc878FM?= =?iso-8859-1?Q?8hXRznW6NNztipdHoW4OG6BDM1twl10OGNNgBakCCLkj7JDDDG8PrDcc2o?= =?iso-8859-1?Q?Fkv7qqqIao3nTDPs1Vgp8So3xNpy9mveJ47vQTORqTpMj0TdlGcanFl08e?= =?iso-8859-1?Q?p/Y3uHx4N0t9v/mUHsREsqChVvBMcSv130YNj/ft0tLZCGVur1RXoX3jn/?= =?iso-8859-1?Q?PEDMjW5pn/sCXGBlwKabbqhi8aqVUSANA/opQsYyySWDTa58Ne92iTDarT?= =?iso-8859-1?Q?C44ECn1dBFuuCm7Nnt3t9ZKOb5Dul35ZM2tO6b22JtDp1A1GtdvsIQYHhc?= =?iso-8859-1?Q?pNAeZGzgVLGyAKm7poxtp/vRy6DNV88zNcV2yLBwFewR/lPaMzw8YNJsw9?= =?iso-8859-1?Q?vjA5/fT/ySkqVsQFKYy1ApOACbBI4KkYUEAXXLbR3cbeFdcFb0aGm/Wj7Q?= =?iso-8859-1?Q?oirTRzjzGPfu/zbKojItoWlmxL7jC+J+U4Fq4NHTHXp02FCDzZoX0MePvO?= =?iso-8859-1?Q?p1jx6VCRtU3TZ5+LfyNSTvgf9iNGB93TSZ43ZlYf/irB+xUDj/sk7kCn57?= =?iso-8859-1?Q?zffzEARTW54rKSur8KFQIDsCYtID+hsHcrzMXU39plXD5/0aYyG6qtZ9dR?= =?iso-8859-1?Q?3hD2gstGkqW0llUaXYRWVUB6DD7xBb0nptYLwwG3ODgmOkTwyRREuoujmK?= =?iso-8859-1?Q?cd4JDiGQn5oKjLwZDpPV5zN6Xrzdozx0lR5tMMDaRZERS9rTqnSRdEI0wp?= =?iso-8859-1?Q?K1h5Er6qj4cfVKCTirb3Hga/un+GYY50MppS+E4Xty6kjbmlyyMo0KZzdP?= =?iso-8859-1?Q?wZag6ipK0sVwUv7H6veUmr+8qpaiBkKwFdFx+6D+8O0drBpsdL1Q9jysHY?= =?iso-8859-1?Q?cyzj+F9RDnkiL6wV938jUYFj1xgbBWjya3rKK4vhr6CMWpos/66wux7QVT?= =?iso-8859-1?Q?iTYrRPvkMbiy2NliRw/xS3T0iPj3RWYTiRLUTltX+5e+HCnS4p08BlnJ5q?= =?iso-8859-1?Q?zMg6ciYhYu/UwdZExzahgMMCLSTFV2WisB4CNxS6T8QeF8DlqGkN9JverL?= =?iso-8859-1?Q?5fzGXQIRchF7rJEmh1i1nUrxAcUBnpXYuJtKiItuMTtp9w6eowiCn4H4La?= =?iso-8859-1?Q?ji7jHlxwoi6vVzg+c0c=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: eb214470-6306-4e54-64ef-08dde596f46b X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Aug 2025 18:24:26.4467 (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: L+T6t4MSpsmFOgnAqz0VfjK4abphLIblzA2gRq96b3m0e+SaigcV1lkUXwMdc8iI3ew5OWXunKl3Q+2bVEFUyM79COkhJOc33KfUOpvn0kQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRWPR03MB11023 X-ZohoMail-DKIM: pass (identity @epam.com) X-ZM-MESSAGEID: 1756319491350116600 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 --- Changes in V3: - introduced this patch --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f31ca08fe..dc34d29d99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ 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 support =20 ### Removed - On x86: --=20 2.34.1