From nobody Sat Jun 20 14:13:59 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010000.outbound.protection.outlook.com [52.101.84.0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B1543016F1 for ; Thu, 30 Apr 2026 15:35:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.0 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777563329; cv=fail; b=FVwDqX6bKd56XGD6es2LSkDUOfRaW5x/lopfA6vqTOYYsltbSS//mQIeAiq/zCRob/Xt6nOF/KXS15RWVl4GcsxUJnSJos4xndOSA0rDehP4WXaMmjLO8wvp+9Jqo48Wj6rKshBB25joi4vUzorASpChtMaZkIAPfBL1NTf/DtU= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777563329; c=relaxed/simple; bh=rxdSEJyb7xpaGM8QqXS/wI54GqmzNFO4lVNpTuHToeE=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=QV3X9jD6b3bhcvi/7xGhbbEg21Ex/An7ECQSIQTv0spBts9z0RXXoN7OuhjyJYos83pV5p/35Ia7xXjcT0dYU+PZH88n1TEzgUzaH87qouHqEulrnLuaBCGztNvIe+gd8c3pqAQHlALs7NxrDzvQXNF7LjsYxQWeMNPe1/bE5vA= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=N6/E0R8o; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=N6/E0R8o; arc=fail smtp.client-ip=52.101.84.0 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="N6/E0R8o"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="N6/E0R8o" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=svfhMHCI+ARX5ffjc5Vt1jLGvvuDNoh6hVS1ibjdBn0mg1t4YxlQbvktcUgYVfk7SYDl/pHcIoHEqnmT+yotITRkc8ELTFT9DtALPgn+MJPJYEs5uIGdWbhGA6MzJZ93G35xJqvKGqSgmtKRlyDzdba6jKJA/PbaoSAcjSuBRMlibFJLSINyl0NFJ5i6Qj5I0aePKvZcq2T9yGQpr2tLnOc7fWccbZA+mpzlm4RlRNjcrj9Kemsn/j/GG4f4cwoO1Umq/drv5aL631LrsGoHEccheUq/CVuBQOW/eawV3XHRt5mYYDUjOKnm186TaTpRnuv5Fv9W4DdF4MJ5ctXPAA== ARC-Message-Signature: i=2; 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=CojsJ4BLa4EOtfncJicQx0+aZe4GlU79Gbh3SDwP26Y=; b=DkZ1RyiEDm2jyVXAAjE2o/JEAYzf4ahyim9h21AKT+bO49MG0GP/Rt40aFGQ4QhzwiPZfiTCfMX/dIcgBPYVOF1dBiL8QAs2XsUc2Rt3ZQfJaD3nbLpbSv02fFbnpfuImaghq9tIZj2ro37xGXOgpdPbj6y50muMyvIanf+shRtZs6aCoQEHy5py6v60spwxgmNkrxCb4/yhYNXjcNAF/NKaA3sePQgOZBsyqaQTUUO3C6rrnwRTjxn81RCSo1b3gpeAuRjlA2MSaO0j+VfKaQIS3iJZWZNqrC8xWkKFMaMB9S/6e4sloVcjhRl3eJPpzta7YX+csrz3phtEQRMBIA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.infradead.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CojsJ4BLa4EOtfncJicQx0+aZe4GlU79Gbh3SDwP26Y=; b=N6/E0R8okKtL2IBL3/tHI8Kz5qjPPkdxGncRwJo3FPjy+d5BE3kuJYp1ANhjv+mOc4SHwmsrJdCGxpfFEycj8P0pRR7GfxmpFpTbjNqpF4jFJ9bN+Aosxvv5A8835V6t9cL2wnRmnDc71BZ/5cap6XMPq/IWWQ9u0R3Tz6bxP5U= Received: from AS4P192CA0023.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5e1::9) by PA6PR08MB10768.eurprd08.prod.outlook.com (2603:10a6:102:3d2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr 2026 15:35:22 +0000 Received: from AM2PEPF0001C710.eurprd05.prod.outlook.com (2603:10a6:20b:5e1:cafe::e) by AS4P192CA0023.outlook.office365.com (2603:10a6:20b:5e1::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Thu, 30 Apr 2026 15:35:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AM2PEPF0001C710.mail.protection.outlook.com (10.167.16.180) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.22 via Frontend Transport; Thu, 30 Apr 2026 15:35:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PYDG4Eqq6onPJP66WUrApps80e+mWapobkMQz4mCoCAzm8DSz2M1zBWMX7RmD2glwcMJz/lU46vg0NfKfzLShshHKFFix0uFE+stcAybedsuDTPj3TtopAkazod9V95I1HgHI3zICj9V4BZzfG10WIlaACMRyc4C2864+IlF7X/OuWiq3FCsjaBHS+c/KkzkD8LRZj54fiBpJVWdFSwcH9fNKIqqyPQFqeye0Fm5hlfer8xa3LItBR5lQzHTtzcnokLLOuxDMwkLhGw32yKGrMz5ZTO9cUudTnytXBZqASZXFtdB4NWYs8ZC3eeE/YjW9X7/Ppcdsjhrs7MJ6FqkJg== 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=CojsJ4BLa4EOtfncJicQx0+aZe4GlU79Gbh3SDwP26Y=; b=QFY1l7wnvrmDXBHnXAaX4TqUPgoR3FMQeirKyILlxOlhJmxV/pYj0OW44ObnoFiqBduVBZ4UpuImISbgBF4MjYS9BYPIcMr8B8fsDPFjwJDUnkuRcfsT3qD7nUV5j/KnJFQUBj3Hjeq+9cD+08vKY0YMVCuzbUz+1zCKpTEPyrqjvzUqFHxAmV6ounT/HiEE1qK0Y7ZSvSjAMq5H8w+S5+/YrBMP8uTY+/CRVebdrbAxJIvbajX2DQ9Col/kI9at2TjEx09bgML/vzhRBwny8a8Tyt7UNRJcwBcXw8t0aur4CzjpSy3nbqxriJ6fmffZ7GyU9UVYn/yhpa+8gC2VWg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CojsJ4BLa4EOtfncJicQx0+aZe4GlU79Gbh3SDwP26Y=; b=N6/E0R8okKtL2IBL3/tHI8Kz5qjPPkdxGncRwJo3FPjy+d5BE3kuJYp1ANhjv+mOc4SHwmsrJdCGxpfFEycj8P0pRR7GfxmpFpTbjNqpF4jFJ9bN+Aosxvv5A8835V6t9cL2wnRmnDc71BZ/5cap6XMPq/IWWQ9u0R3Tz6bxP5U= Received: from AM6PR08MB3399.eurprd08.prod.outlook.com (2603:10a6:20b:47::18) by AM8PR08MB5828.eurprd08.prod.outlook.com (2603:10a6:20b:1df::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr 2026 15:34:19 +0000 Received: from AM6PR08MB3399.eurprd08.prod.outlook.com ([fe80::59cd:4b6:fceb:3de7]) by AM6PR08MB3399.eurprd08.prod.outlook.com ([fe80::59cd:4b6:fceb:3de7%5]) with mapi id 15.20.9846.025; Thu, 30 Apr 2026 15:34:19 +0000 From: Sascha Bischoff To: "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" CC: nd , Lorenzo Pieralisi , Marc Zyngier , Thomas Gleixner Subject: [PATCH 1/3] irqchip/gic-v5: Move LPI alloc/free into LPI domain Thread-Topic: [PATCH 1/3] irqchip/gic-v5: Move LPI alloc/free into LPI domain Thread-Index: AQHc2LbPXVvomoi+T020nCY0AkLbUw== Date: Thu, 30 Apr 2026 15:34:18 +0000 Message-ID: <20260430153352.3654325-2-sascha.bischoff@arm.com> References: <20260430153352.3654325-1-sascha.bischoff@arm.com> In-Reply-To: <20260430153352.3654325-1-sascha.bischoff@arm.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.34.1 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AM6PR08MB3399:EE_|AM8PR08MB5828:EE_|AM2PEPF0001C710:EE_|PA6PR08MB10768:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a496e7b-065d-415e-7d72-08dea6ce172d x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info-Original: FpGLd4ACswHcmNpkB/YJ+vz3Ti2wIBSmOddDiaipkPfBw5xeleDs57EHh+tTx1EfipEdeYaAFuwMcysAehjrMo6Ro5ZGntF9JPT7f7OX8oQRUyzhSbLajJYBwD61EFzesinssjekZRdm6T+8iex+S/0Fli1/+lHuB/mt73BfdtL7MeO9tsMjZ5JOECipAgRWoMk7LbtTnLyE2c9lfUZwJVJBU+VioLYfGaMGkNR4cLv2s0qDFixksSMwHf8dm4u+uZQ9HbhE43IwItYYd2hOQMh7wnZgiEaf+tkxOtCbN68ZWbx/P1yj63TaMrUmqc+HMW+RkDUiOO61fH9FEzjEpu/Bp6CYLVyPAGI6mp2NldRPKzEo4Eydg56uHm6b3dBZeQi7gIBl+rB50+oA3uVOlcOy4ojWDAvBAjSVUNEiHv7OBZkkoEG7nTrJYPEPtjXT2FcnvGN9GLJ6AODaooJ73bDvfP7Ng5lNbIYxNbsne0AlXqZJytn/xA2kEVFuC9IL75M+jKUUV+FtRGvm8UbH3WMIVgGiduPM0VRFCX1H9I5PjMrf7TefD2YBE4hJOkJS7tO9X7Zmrbl/dNzcf7bf0bfWCFpxsPbgAYn+23K4GWtNih6YtkU1w5H2SQPP3TFzObzkt/HLFAeBM3CkI7RO7GRJiJtFO53jciKGJJnu0aXvUufl5FFTe+fnroMvJdBQfx0uzYz9/ZOvmtJgElAAAviLUIQnliT+KpgcZP8jvPM55K/XO+3P6sa/DhGtupLSxw+EUKt5RY5cy8IpZzY0fZtK+uV8INik9jdFesxSgOs= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR08MB3399.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: CVZ0dZ4nFx/HXs/Y3BnkgJ/81tnMLkmE7eLJlK/O5o3esrVKfMbkcFOp65Lu402P7ubf0lEP4RoFroMj9L8tzY64GMxKgEUu7lGLuEY8xgbNkpq5kPAu8USXL7DjL9JXvmQOEJ1AD4Oh2N+J9U2vhjq7M82TDc3PNDuXSuO3XBIDgIbYcEnU0J4ODxPp0idGi5/NLcbfWowCk4LMQgVYGGftqA4auiBda6Pyfr5cU7g9JClvwCjU853N+nfH42+0psZEFhH94iNUGusXJSkuOS85vB5e+M8OHN+f/MPryGisNSsVcEL0ufwNr1yVtdeu3uQrheBb6VSmY2p2MZBjOQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5828 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM2PEPF0001C710.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8e2cbc14-9eb2-4763-1ec5-08dea6cdf1e0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|14060799003|36860700016|35042699022|82310400026|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: kQPtsWOHDFU27Pl4DR3R0P+XD3Gfv1a8G4LwHKCPkuIXUgDezTCAKJhMCIQAZJmi8gX2bPaZ+v6xey/FxcbSaqy6Fe2mNUGGnDVHZhDXbBATt+C5PiNKn5D26olbwKKHKMIqtC6KhF+3o5vxCn0UVTFqyFt4fcH3N+TwKZgybRrStAdjueIFdTGNPhwYfMraRGr5lynm8SUY4NYvOdHP1biE17PfCPgAATC8GuU14gL+ghKMwq81MPNQFeBo9DRvJB0xvADxvu6wbzzALfAGGitChkI/Lt0IgICPwdLUx6wL1mVGaag/swgUnbp+gHXIawsescE5kqs2TOrflFHD/ZYYUozYRmeXKD8qq9VqLutBMwBAEf6Ael2D1Iu7fa6RsEGSifUmZCE9H+9gukJMn2tiYLXp5CYA6zVBLiCJBaCGZyx920nmcMw/xG0bJ7xR/kXun6n2jc+ip7aXXAbcNxMOohj4uKTqNeT3W2obS+R64RzwretmJ++w0nBkk4ylgyUO5EHI0gu25uDXy3cbzqKpSezkATJ1UC/KsJRzMmfr2P9mEMWZYcpPLSrjHU4PwrdHDIaL76axFYIrlMPTf/oFFsJmtO4McWm3EiAPy/EpRtSGjEvXHV/delNFPordf5ciN9EQy+senCBgzOmp1z2YFT1MFQFCZi1yQQ8QUJs/l502EzNuD5wDxX+jWDitnoxS0NhwjGB4I89R6pvL+z3R76VOUhTAwCyyLymsHz24SafyVPpynwTqVPD72+f6eBtNyMMkqiwuDspGPG7JGg== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(14060799003)(36860700016)(35042699022)(82310400026)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UH8Vr8krO7jc2WkPYL6S1Fht+N9Y5oRmtrbBwvW99lHOk9ZPdaZXLDKks1Eop898oqD7imeutOjES5mNSAb0NgBh085tZFoySOtnqrecGwOoe8d21J1s+WpViBg0PYQbGULQtOC0UhBmrrLP4xoutMnVCj6bTg7o+Ra+DaVjPgxY8cPzxNp6itFiwqxG01KOpzkJsqW7oQE9GPg7x9mChXB/hVBPxAhy0tHF4r9GDVhtj0/sEQKhFZ8t/jj1b4ScSjKJ91R/vyhJFBexVY/Xe3g8H2EZFq7NMvcTeJsQuuz+elFkUtlLiNYDHgIxozxKfnLPx2MiPRL27y+9LtU+zNYE9Cr1NgD/WvWpJbuwtQGbKiT/hGMPD7fuEuz7ECac6y8lUx7ro/wW79Zz6UWfENzmolUzgwhY/5VayMcJl0xAiO0/MXdmZVMo1sbbzNE3 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 15:35:21.4585 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6a496e7b-065d-415e-7d72-08dea6ce172d X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AM2PEPF0001C710.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10768 Content-Type: text/plain; charset="utf-8" Rather than relying on the domains built on top of GICv5's LPI domain to manage LPI allocations and frees, move that into the LPI domain itself. This, rightly, ensures that domains other than the LPI itself have no knowledge of LPI allocations themselves. This not only cleans up the LPI domain itself, but also the IPI and ITS MSI domains which build upon it. While we're at it, drop the helpers wrapping the helpers - gicv5_alloc_lpi() and gicv5_free_lpi() - and directly use alloc_lpi() and release_lpi() instead. Signed-off-by: Sascha Bischoff Reviewed-by: Lorenzo Pieralisi Reviewed-by: Marc Zyngier --- drivers/irqchip/irq-gic-v5-its.c | 14 ++------ drivers/irqchip/irq-gic-v5.c | 54 +++++++++++++++--------------- include/linux/irqchip/arm-gic-v5.h | 3 -- 3 files changed, 29 insertions(+), 42 deletions(-) diff --git a/drivers/irqchip/irq-gic-v5-its.c b/drivers/irqchip/irq-gic-v5-= its.c index 36a8d1368f0e4..36d03f82ef684 100644 --- a/drivers/irqchip/irq-gic-v5-its.c +++ b/drivers/irqchip/irq-gic-v5-its.c @@ -929,8 +929,8 @@ static void gicv5_its_free_eventid(struct gicv5_its_dev= *its_dev, u32 event_id_b static int gicv5_its_irq_domain_alloc(struct irq_domain *domain, unsigned = int virq, unsigned int nr_irqs, void *arg) { - u32 device_id, event_id_base, lpi; struct gicv5_its_dev *its_dev; + u32 device_id, event_id_base; msi_alloc_info_t *info =3D arg; irq_hw_number_t hwirq; struct irq_data *irqd; @@ -949,16 +949,8 @@ static int gicv5_its_irq_domain_alloc(struct irq_domai= n *domain, unsigned int vi device_id =3D its_dev->device_id; =20 for (i =3D 0; i < nr_irqs; i++) { - ret =3D gicv5_alloc_lpi(); - if (ret < 0) { - pr_debug("Failed to find free LPI!\n"); - goto out_free_irqs; - } - lpi =3D ret; - - ret =3D irq_domain_alloc_irqs_parent(domain, virq + i, 1, &lpi); + ret =3D irq_domain_alloc_irqs_parent(domain, virq + i, 1, NULL); if (ret) { - gicv5_free_lpi(lpi); goto out_free_irqs; } =20 @@ -983,7 +975,6 @@ static int gicv5_its_irq_domain_alloc(struct irq_domain= *domain, unsigned int vi out_free_irqs: while (--i >=3D 0) { irqd =3D irq_domain_get_irq_data(domain, virq + i); - gicv5_free_lpi(irqd->parent_data->hwirq); irq_domain_reset_irq_data(irqd); irq_domain_free_irqs_parent(domain, virq + i, 1); } @@ -1013,7 +1004,6 @@ static void gicv5_its_irq_domain_free(struct irq_doma= in *domain, unsigned int vi for (i =3D 0; i < nr_irqs; i++) { d =3D irq_domain_get_irq_data(domain, virq + i); =20 - gicv5_free_lpi(d->parent_data->hwirq); irq_domain_reset_irq_data(d); irq_domain_free_irqs_parent(domain, virq + i, 1); } diff --git a/drivers/irqchip/irq-gic-v5.c b/drivers/irqchip/irq-gic-v5.c index 6b0903be8ebfd..a3c9eaa8ff486 100644 --- a/drivers/irqchip/irq-gic-v5.c +++ b/drivers/irqchip/irq-gic-v5.c @@ -59,16 +59,6 @@ static void release_lpi(u32 lpi) ida_free(&lpi_ida, lpi); } =20 -int gicv5_alloc_lpi(void) -{ - return alloc_lpi(); -} - -void gicv5_free_lpi(u32 lpi) -{ - release_lpi(lpi); -} - static void gicv5_ppi_priority_init(void) { write_sysreg_s(REPEAT_BYTE(GICV5_IRQ_PRI_MI), SYS_ICC_PPI_PRIORITYR0_EL1); @@ -806,18 +796,37 @@ static void gicv5_lpi_config_reset(struct irq_data *d) gicv5_lpi_irq_write_pending_state(d, false); } =20 +static void gicv5_irq_lpi_domain_free(struct irq_domain *domain, unsigned = int virq, + unsigned int nr_irqs) +{ + struct irq_data *d; + + if (WARN_ON_ONCE(nr_irqs !=3D 1)) + return; + + d =3D irq_domain_get_irq_data(domain, virq); + + + release_lpi(d->hwirq); + + irq_set_handler(virq, NULL); + irq_domain_reset_irq_data(d); +} + static int gicv5_irq_lpi_domain_alloc(struct irq_domain *domain, unsigned = int virq, unsigned int nr_irqs, void *arg) { irq_hw_number_t hwirq; struct irq_data *irqd; - u32 *lpi =3D arg; int ret; =20 if (WARN_ON_ONCE(nr_irqs !=3D 1)) return -EINVAL; =20 - hwirq =3D *lpi; + ret =3D alloc_lpi(); + if (ret < 0) + return ret; + hwirq =3D ret; =20 irqd =3D irq_domain_get_irq_data(domain, virq); =20 @@ -826,8 +835,10 @@ static int gicv5_irq_lpi_domain_alloc(struct irq_domai= n *domain, unsigned int vi irqd_set_single_target(irqd); =20 ret =3D gicv5_irs_iste_alloc(hwirq); - if (ret < 0) + if (ret < 0) { + release_lpi(hwirq); return ret; + } =20 gicv5_hwirq_init(hwirq, GICV5_IRQ_PRI_MI, GICV5_HWIRQ_TYPE_LPI); gicv5_lpi_config_reset(irqd); @@ -837,7 +848,7 @@ static int gicv5_irq_lpi_domain_alloc(struct irq_domain= *domain, unsigned int vi =20 static const struct irq_domain_ops gicv5_irq_lpi_domain_ops =3D { .alloc =3D gicv5_irq_lpi_domain_alloc, - .free =3D gicv5_irq_domain_free, + .free =3D gicv5_irq_lpi_domain_free, }; =20 void __init gicv5_init_lpi_domain(void) @@ -859,21 +870,12 @@ static int gicv5_irq_ipi_domain_alloc(struct irq_doma= in *domain, unsigned int vi { struct irq_data *irqd; int ret, i; - u32 lpi; =20 for (i =3D 0; i < nr_irqs; i++) { - ret =3D gicv5_alloc_lpi(); - if (ret < 0) + ret =3D irq_domain_alloc_irqs_parent(domain, virq + i, 1, NULL); + if (ret) return ret; =20 - lpi =3D ret; - - ret =3D irq_domain_alloc_irqs_parent(domain, virq + i, 1, &lpi); - if (ret) { - gicv5_free_lpi(lpi); - return ret; - } - irqd =3D irq_domain_get_irq_data(domain, virq + i); =20 irq_domain_set_hwirq_and_chip(domain, virq + i, i, @@ -899,8 +901,6 @@ static void gicv5_irq_ipi_domain_free(struct irq_domain= *domain, unsigned int vi if (!d) return; =20 - gicv5_free_lpi(d->parent_data->hwirq); - irq_set_handler(virq + i, NULL); irq_domain_reset_irq_data(d); irq_domain_free_irqs_parent(domain, virq + i, 1); diff --git a/include/linux/irqchip/arm-gic-v5.h b/include/linux/irqchip/arm= -gic-v5.h index 40d2fce682940..f78787e654f4c 100644 --- a/include/linux/irqchip/arm-gic-v5.h +++ b/include/linux/irqchip/arm-gic-v5.h @@ -425,9 +425,6 @@ struct gicv5_its_itt_cfg { void gicv5_init_lpis(u32 max); void gicv5_deinit_lpis(void); =20 -int gicv5_alloc_lpi(void); -void gicv5_free_lpi(u32 lpi); - void __init gicv5_its_of_probe(struct device_node *parent); void __init gicv5_its_acpi_probe(void); #endif --=20 2.34.1 From nobody Sat Jun 20 14:13:59 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013054.outbound.protection.outlook.com [40.107.162.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 27DFB2EA151 for ; Thu, 30 Apr 2026 15:35:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.54 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777563350; cv=fail; b=mt6+5EuopwdtjawRrl7ZTVgz1hS0Xi70QoDSH14SrWyqGDNSyDDfo9OklC8jawJsyaWAdoJzRKDtVm8F/YSN2uqdgUWMHS+ztWa64s4zNYYK73R9cZcx3MbGwEEJ9sSmFaDaobP6+U15UwWYWLsvPNfTRgHbit3tQHhEDqdmt+Y= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777563350; c=relaxed/simple; bh=QwQryB3jtsNLvJy0sQc7OJ+SW9xnoPwM3XQdoEmdnf4=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=KT4pDeS0fSTZLUxgTir6GFncYk8kzunBVcWCUclubYHLoGAAQF58w/nux8JtTRsaeip13U4EKRehWNt6g0obAtgJ8IOsPGQayBjYYaGU8KCWxDFe9h0d3M51MUio7TrjA16btfByt0HbnR8LQip0shTpbX30OneVVaqoLg5MmVg= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=mwqwEf2e; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=mwqwEf2e; arc=fail smtp.client-ip=40.107.162.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="mwqwEf2e"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="mwqwEf2e" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=QFCa5ALfXo0NmJUpjZhEhIDSWoEYgQ7ZiXGnwrawjn273OHeeOupa0Q9E33C+UMC7VhGrxQKGHwFcD7AgBB5c5U6YBFeBk44ivrTWGk+zMEXSYO8kAQjCS34/gghjqx8SkHel+Jd6CtXGS149UJ1Ow55n0L+T7v5tGc979aQN9DBC9m3nV3+t9PBBh+0Ze891wBHCvBPlZQRZIkzXtMdWBabpw55V/nnG0p5FzY2OF60yVlIdZPpWxNB6QPMpOvKelY/cEbfz5La92CADPAJb0Gzpb9GmfF7bp1GW8nERHWjP1wrWZTxi7oGx3QeA6ADDcoo9o9AAy3IYgd2g8cqkg== ARC-Message-Signature: i=2; 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=j49/ivFxAi4ti+W3UyRbCXT7+aIM6afFVDH28pIQhE8=; b=Ugn2p4LzaAkyMdwfnPrSL6AYBJz0LUMCtiXR2qGX59zn4i+pCggZ4G0DyPnzIwd5lbg8sBTzprKl5tlKy6AdR9b9qRXwYNgSLGvu09IrMaw0duFKrQ1QNUPYHeSEjeWTBpAq5d4SHQRKULmnyismEIfWGmiM3DsQXcY+7PJtiy+pEW71U4cR1qUQz9jxH3Z31Uol0fci4JR7h57LLGa7haA9iOcAQJIpouMQh86h1Egk7v8Asgm6kulcpkxIg55UgErAcbXTuoz5PaEMwkCQYYlkYj8sD2k0C7QySfSjULhNF4kVGnY1Za0bgEUIlSeK3RBzlOSQr408mCdAGiTRlw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.infradead.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j49/ivFxAi4ti+W3UyRbCXT7+aIM6afFVDH28pIQhE8=; b=mwqwEf2eucEN1268VamXoo8v++V8wVqBt0d+QHOzUEcbRLO/DcGQ69m7OZH1rSvCNew35lMcBxclztyNmRU0/N8kkqKxwSHnRVnl3kJtRTSvoe/pfrHGZb5qaBtnovSuZBKuBYQGkP3YG6tRXmKjNBrPSSrq40Anmf4Kovx5wO4= Received: from DB8PR04CA0006.eurprd04.prod.outlook.com (2603:10a6:10:110::16) by GV2PR08MB9302.eurprd08.prod.outlook.com (2603:10a6:150:d4::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr 2026 15:35:42 +0000 Received: from DU2PEPF00028D05.eurprd03.prod.outlook.com (2603:10a6:10:110:cafe::a5) by DB8PR04CA0006.outlook.office365.com (2603:10a6:10:110::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.26 via Frontend Transport; Thu, 30 Apr 2026 15:35:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF00028D05.mail.protection.outlook.com (10.167.242.165) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9870.22 via Frontend Transport; Thu, 30 Apr 2026 15:35:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JsBVufJYKKIFnP50x2MI7jpWTnTcQQonyPcneEiHQcvx5JG41KNx9dxZyu9tlnABVQ4aifBt0s4QsXlS8456g9WjPdFhUilDrtuHzi4Y0xOvKv6RwhttXvF3o2vKcoeIA0AT3A5SxvNCdeu32x2QgLMJ1kDIcF323ZzstgGoDEQJxYUWj3TCF+tpzJDTxoZOTe9KtdNPuydwkzlBH7aGR8COyKw076TxS15P7JGDTwkiM6bpxIX63DG+Wr7tFS5QpxenfdW3wGWSUeiiYoQUhyI7m5uHbbBfWP6L9PCE809TGPEbOd6jXZWnmVBMJ4IVn5ajsyeieCYOJSZb4HmZAA== 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=j49/ivFxAi4ti+W3UyRbCXT7+aIM6afFVDH28pIQhE8=; b=fp15qasTDv0qNGMBRQ/RNNbs0dnINO2ll2aS0L1Eib9Oz/FahgPugcrtVSlc4QBcPAw78CSd+t4Jplh52a48a49me0ZCLcilO59rH7L2lNhQiPepbweRYcLFwnJxPXz5Pxqqon6CDvgHXSiEpFwinkTtaV8i2KlLtPjh4vBnIs1CBrxcLVkGphqHYNhg4Tqu0tGygHKbEpVPJ3/KMOl9Yq9f4qPZsfmeEwc46ZoqpXiNVdHaLOgfzW4CTwmfd8u/hmv21NG4g5K45c9dYgR5KTDDjxq+hZiFw65tDmMJ7ENtdwPffrRMd3eghtp2C0+nzCWV2RC19n6r0RSVjtxRwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j49/ivFxAi4ti+W3UyRbCXT7+aIM6afFVDH28pIQhE8=; b=mwqwEf2eucEN1268VamXoo8v++V8wVqBt0d+QHOzUEcbRLO/DcGQ69m7OZH1rSvCNew35lMcBxclztyNmRU0/N8kkqKxwSHnRVnl3kJtRTSvoe/pfrHGZb5qaBtnovSuZBKuBYQGkP3YG6tRXmKjNBrPSSrq40Anmf4Kovx5wO4= Received: from AM6PR08MB3399.eurprd08.prod.outlook.com (2603:10a6:20b:47::18) by AM8PR08MB5828.eurprd08.prod.outlook.com (2603:10a6:20b:1df::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr 2026 15:34:39 +0000 Received: from AM6PR08MB3399.eurprd08.prod.outlook.com ([fe80::59cd:4b6:fceb:3de7]) by AM6PR08MB3399.eurprd08.prod.outlook.com ([fe80::59cd:4b6:fceb:3de7%5]) with mapi id 15.20.9846.025; Thu, 30 Apr 2026 15:34:39 +0000 From: Sascha Bischoff To: "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" CC: nd , Lorenzo Pieralisi , Marc Zyngier , Thomas Gleixner Subject: [PATCH 2/3] irqchip/gic-v5: Allow for nr_irqs > 1 for LPI alloc and teardown Thread-Topic: [PATCH 2/3] irqchip/gic-v5: Allow for nr_irqs > 1 for LPI alloc and teardown Thread-Index: AQHc2Lbb0knNe6Mm9U2QLy3yD6nFRQ== Date: Thu, 30 Apr 2026 15:34:39 +0000 Message-ID: <20260430153352.3654325-3-sascha.bischoff@arm.com> References: <20260430153352.3654325-1-sascha.bischoff@arm.com> In-Reply-To: <20260430153352.3654325-1-sascha.bischoff@arm.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.34.1 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AM6PR08MB3399:EE_|AM8PR08MB5828:EE_|DU2PEPF00028D05:EE_|GV2PR08MB9302:EE_ X-MS-Office365-Filtering-Correlation-Id: 79e0ed34-86cb-4263-3a67-08dea6ce235b x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|376014|1800799024|38070700021|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info-Original: 3ra4iPXXzcRqCNKZ/d0G4G3V41iSl8PEdqE8itP4DbQzh5FnPfnogFM4BtyvpjLXE1eGEYIgHsrqe1p9aGQ3FWiaGZcuRr5qXKotOFQDBfckeCiIizAA6rsC4OEEC398Dn/JW1RisD7JSuJ8ZsxX4YSEG1iYxnUVsIyyUfLefeK7P8KpnsuRsZ29AzeaP5cKkgNgNeMnhB+R8zDfZhifTg/csSIofT/pyWfYDjOcb2aDdHLg4PnAnaIVmTws5BZ1j0LsJ/kNoVad48xJwscz/EQGacPxN9Hu3AyxbVuWkAto2/ztHQ26Ph2f3jSQAmVlB2BLKTiqW9H+oFjJfMiw9Wp4u1Qh29QPnt+/Qma6gFD+/p9/6Y6nFTKphZgeSLxRc7b66Z1zd0715k3leNjI2E2pPzZKKJA4gYxM6ZVx81wo+mDrYivposWnG8H2+ewan83k0slz3Ed+T922ZxzRB18g+cYDWUs/UC1f+GRcIPZnZUWGSJzsa82UOxhLb7seiCrel1fsBOtWutQ0uzxpFIrP+RdiRWWNdkJxB7DL49oZJEOaPATVPr0Ve48zhD8KXLC574utBo7B2YHhHTfb3luWzg208BO3wKBTj2scnem40tUhmXHxjzwNcg3mnD/92slLLjyLJKgKIFQh8oTVkTJ5TrXHRBbttlnq8SIygYLBCINJav1UhxYbC9B7p6qNA5EST4gQACDThBxs/ILq41e2SgVeb8jz+h/2OUm205XYUtOZqiwwDiSu72gzt5h116Yh+NmsDY8XiR/KabbLqA/70BYXcmx2hBeQBMC0FII= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR08MB3399.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: O9R8n02l2i+RI2JXiPXceC0wpoE8r784YeHa9i7DSiKs4y0gd4ymCXEHRMirCwS/dZFIPizZ76sbKSdfUHL69RiooGl4eOQSe0ajxtSlg760yzjdstUO9n4SoMh9gOcoDWq/v3Ndc9evirJs+kfjbjBREn6IpomYwbyjUffuBdWoPzKyjhSFWYmY1DuhMutfTrDoKi/qDVsD0dRlkDip9h31TZnIpZCogb+Tvb4p2HGNFngn0cgpSpDtkEUfYOQ/WKkS9/WT/v2o/Uo9GJH8pq+Fkqgh4BWCpcIW7URqC/Mhq+N8R11PcDwYUZGUz6zuimPu7ccLKSGCL3Gu7C2cKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5828 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D05.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: abc0c9c1-74a7-47f1-5d3f-08dea6cdfe11 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|376014|36860700016|82310400026|14060799003|1800799024|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: MGpvPI4o1Rw4YfPgi57XB8ud/DobOIoickvmRb9w3wBPZfGrMGyMicEh2hc82oYmfR3tfcFraTSvYpnmL4X+3omfK9DFQlE7AT8guPV1PI6PCVWh0wDfr7tunaLHrTzydfOy+xObI1q9M/b4cbnugBHyspnf/dotV5lx2oIPHesGPmnMr8ZFzFycWNP77f3lyl3jsl5otcCVLGtB4ZPwAVcotP6t1ZnZXKTcTzRkdHOwqdS9FFptm5ouLhCmk5v8kNGp1RoYAV5G+uJwKJk0h9G/Y7NtqjCh+robV2MN7DcHbr9xwCE3ZbIC+xadL+E1xuW1rIREcJfGXoyYpikn/sqIkuXfqZla5sZj7apmYmAbNxzTyqZNfrWtLVJCa/EAq+iKspcu3JohEzduwjLxNe614TMf2jHyVtyQ7ATVoyZuL5wr2GBBmAbsbOYy3cRF9Lga3kkkw3ya4p51pQp3wGaIQx8LEIPRJfr6q45Fyn26GYUCM9o2rd/fC2aO0GZnqaKmPnalekCW1dzfDemGxls+Ftbib7lm5waCkN4AOacdbsmFCfXapS7ur/oBVdeH9LPElwlx/Vd5M67tAsYxKbI5IhhXz2Tfu+LTMVo06R+sq+GwIZh2C6gYIS2ygzcfpScE4OJDLm8GiKM3WKe32xY7IIk20AWFpZFtyqu5Cpa7T8JbzuSA4+7eMyOsUwOX27joggX/Ofujb1Tl0yQMDmNo7xxDJi5kb7/fZe7IGwuydEevVOUJTn4e3cIuOH12jS1lJS+vweayhrBd0cfS1w== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(35042699022)(376014)(36860700016)(82310400026)(14060799003)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gVjtvZbJHtlggHfNBv+yJ5woHgUxlbNSVTA/PB7PiGBg981a4VaSiCbxhQ9gSboHQIqBHaEZKnssc1nmsDhlEcnT4susauRdV9JOHl+uHqU69VcWxv+RmKlbyQ+qvDUdpWPsh9aLsF8c4NCSKpSDmy93slJ8ksKlxtnuamuilZ3//D3AE8mus7WT9EpqmgaMGcgH7+3DZ7o4kHerp8VikxzQio88lCl+WIJCJ1BkRZymNE5Fha1NOx5y+Ba/2qdGAflLA0/UjHqK7i4g+lwuOSCcHyTR6vV7r5YcL//87ENBRPHthnjOjHxbIi1ZVN1tTfKDZMgGrXa+96VYxWZJrJ/SC1vt2GLoB3ziIYBPtgRI3BKxNLDhR6uGcavQCXG4zN13LlrBzKBsdswdSQ1+v9GPmKBrTw+gP6+gyB+Y5oHTlQHISn+7dkMQtnsJqcdV X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 15:35:41.8822 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 79e0ed34-86cb-4263-3a67-08dea6ce235b X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D05.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9302 Content-Type: text/plain; charset="utf-8" Formerly the LPI allocaion and freeing was handled by the domains built on top of the LPI domain, and hence the LPI to use was passed in from the child domain. This mandadated that LPI allocation and freeing was done one at a time, rather than for a range of interrupts in one go. Now that the underlying restriction has been removed and all LPI tracking happens within the LPI domain itself, drop the requirement to allocate and free LPIs one-by-one. While we're at it, clean up the IPI allocation to request all LPIs in one go, rather than requesting them one at a time. Incidentally, this fixes a unwind bug for IPIs where previously allocated entries were not unwound on a failed parent allocation. Signed-off-by: Sascha Bischoff Reviewed-by: Lorenzo Pieralisi Reviewed-by: Marc Zyngier --- drivers/irqchip/irq-gic-v5.c | 70 +++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/drivers/irqchip/irq-gic-v5.c b/drivers/irqchip/irq-gic-v5.c index a3c9eaa8ff486..61a70fe48bc32 100644 --- a/drivers/irqchip/irq-gic-v5.c +++ b/drivers/irqchip/irq-gic-v5.c @@ -800,17 +800,16 @@ static void gicv5_irq_lpi_domain_free(struct irq_doma= in *domain, unsigned int vi unsigned int nr_irqs) { struct irq_data *d; + int i; =20 - if (WARN_ON_ONCE(nr_irqs !=3D 1)) - return; - - d =3D irq_domain_get_irq_data(domain, virq); - + for (i =3D 0; i < nr_irqs; i++) { + d =3D irq_domain_get_irq_data(domain, virq + i); =20 - release_lpi(d->hwirq); + release_lpi(d->hwirq); =20 - irq_set_handler(virq, NULL); - irq_domain_reset_irq_data(d); + irq_set_handler(virq + i, NULL); + irq_domain_reset_irq_data(d); + } } =20 static int gicv5_irq_lpi_domain_alloc(struct irq_domain *domain, unsigned = int virq, @@ -818,32 +817,38 @@ static int gicv5_irq_lpi_domain_alloc(struct irq_doma= in *domain, unsigned int vi { irq_hw_number_t hwirq; struct irq_data *irqd; - int ret; - - if (WARN_ON_ONCE(nr_irqs !=3D 1)) - return -EINVAL; + int ret, i; =20 - ret =3D alloc_lpi(); - if (ret < 0) - return ret; - hwirq =3D ret; + for (i =3D 0; i < nr_irqs; i++) { + ret =3D alloc_lpi(); + if (ret < 0) + goto out_free_lpis; + hwirq =3D ret; + + ret =3D gicv5_irs_iste_alloc(hwirq); + if (ret < 0) { + /* Undo partial state first, then clean up the rest */ + release_lpi(hwirq); + goto out_free_lpis; + } =20 - irqd =3D irq_domain_get_irq_data(domain, virq); + irqd =3D irq_domain_get_irq_data(domain, virq + i); =20 - irq_domain_set_info(domain, virq, hwirq, &gicv5_lpi_irq_chip, NULL, - handle_fasteoi_irq, NULL, NULL); - irqd_set_single_target(irqd); + irq_domain_set_info(domain, virq + i, hwirq, &gicv5_lpi_irq_chip, + NULL, handle_fasteoi_irq, NULL, NULL); + irqd_set_single_target(irqd); =20 - ret =3D gicv5_irs_iste_alloc(hwirq); - if (ret < 0) { - release_lpi(hwirq); - return ret; + gicv5_hwirq_init(hwirq, GICV5_IRQ_PRI_MI, GICV5_HWIRQ_TYPE_LPI); + gicv5_lpi_config_reset(irqd); } =20 - gicv5_hwirq_init(hwirq, GICV5_IRQ_PRI_MI, GICV5_HWIRQ_TYPE_LPI); - gicv5_lpi_config_reset(irqd); - return 0; + +out_free_lpis: + if (i) + gicv5_irq_lpi_domain_free(domain, virq, i); + + return ret; } =20 static const struct irq_domain_ops gicv5_irq_lpi_domain_ops =3D { @@ -871,11 +876,11 @@ static int gicv5_irq_ipi_domain_alloc(struct irq_doma= in *domain, unsigned int vi struct irq_data *irqd; int ret, i; =20 - for (i =3D 0; i < nr_irqs; i++) { - ret =3D irq_domain_alloc_irqs_parent(domain, virq + i, 1, NULL); - if (ret) - return ret; + ret =3D irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, arg); + if (ret) + return ret; =20 + for (i =3D 0; i < nr_irqs; i++) { irqd =3D irq_domain_get_irq_data(domain, virq + i); =20 irq_domain_set_hwirq_and_chip(domain, virq + i, i, @@ -903,8 +908,9 @@ static void gicv5_irq_ipi_domain_free(struct irq_domain= *domain, unsigned int vi =20 irq_set_handler(virq + i, NULL); irq_domain_reset_irq_data(d); - irq_domain_free_irqs_parent(domain, virq + i, 1); } + + irq_domain_free_irqs_parent(domain, virq, nr_irqs); } =20 static const struct irq_domain_ops gicv5_irq_ipi_domain_ops =3D { --=20 2.34.1 From nobody Sat Jun 20 14:13:59 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011008.outbound.protection.outlook.com [52.101.65.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F215D27A123 for ; Thu, 30 Apr 2026 15:36:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.8 ARC-Seal: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777563369; cv=fail; b=gCliFUJIKwSR8bjkDIIUvPNpKOZ34Ja2q86CECne7kSD0gpZqgHXbHbD+/QL48sWHJM9l3VYtz8T6Cpc4MfSxfQBZeIyRLDHVlgHZm7xmsNCBndtHTny4sZIJwWghkAEEfHE+vFUhNoriWsnlY+D/qb1B9k3h1zNpgg3iECOeZg= ARC-Message-Signature: i=3; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777563369; c=relaxed/simple; bh=nARaBZq8ucB1FqOjWspCA/zht92s0HToCCT4aTBAFSE=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=vFCCjQhEaDk2asy5KpErts6fRmgaIQWTnR6BzyR1CEcsP1oLv8fK5juq4SoDL5Yrjf08CItbxYZLeoDvbkriDI43jHxRZem885pgdnNJ/iCNATPntQfkoKJmSaF0FCKgtBotRPSzAbHA1791rPxnBkwoEcFvQysp/ehKG/VNBXs= ARC-Authentication-Results: i=3; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=IxW/WIh4; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=IxW/WIh4; arc=fail smtp.client-ip=52.101.65.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="IxW/WIh4"; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="IxW/WIh4" ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=dsl5nrrQYJ6iUZTwfCchS8PvQb5JkD96lirBu35C1amwByujthcvexihbHcEdr/OLkFE45smAHI8LEkYMRHkZURUBXyB/7jdjZadl+2ko/neO9h7ImCF/+bypQ+XhagdwCXgXOrkKHYg6SsVUDf2EOjaarItrJ3bSe1xeokAozMw9xWOYAi6oCpDK+9MiEVX0GCm1UdQM+AHe3QBdqFvBbBQ1LzmG1rXHzr4x0HG8v2LvxUeBaC/9widuyr5zpoHeV/8RPD1sX/aeK4Uact7qJDS2cLDApxhetyKA+NNDY/wzqk/YyNBjzKwHb6NQXGA0NQqI0aliNy76uywJU3S5g== ARC-Message-Signature: i=2; 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=5Mk9fd14xg9cuY2J0dvONSJfwXFrD1HcZnn+irTqETA=; b=qw8a7GcA9sunG489i4XcUk1F0Re/VE9npDE1zg2WkHlh7ayboe4hL3AYRZosoocEJWKnWqRThwg7HFei0DS+Q9r3qoNlv4RyWdtDIVwwgCdddi7z/9pcVMo5n3+BqxvqBufb65PSPVe5C5cGI1lPimaiuWeqdA+hlmujmVzyZMBRGCNCSU6nw2Uj86A7xSVYDjQkSUihjj6j+UITUxha0B5pqv/XZrUueMaOu0ADYPxf8RVPNKRAwKeBOJWqzyTimUhoOVHo37/38kDN+oMDGaBFSMxBrvO3yAo1OYOUocMHzuZFUSkRztO/6dcRY3edbILRaEl8UcCrSDxgt9ydbg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=lists.infradead.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5Mk9fd14xg9cuY2J0dvONSJfwXFrD1HcZnn+irTqETA=; b=IxW/WIh4hxtdGMTKQZjr3GHkkroZdCOV39DHPAx4Gkfa2pmGqNDq7ZSIrPOiMOGQeSZw4+Z0PLIx7YJhKp2wGuTVApcbatpK/RXEvPQxa5ADW0uzIukkZ69MX0nGeUs9VU9KNF+n0xLCK1NUOdFKfB2o+HYBvLHUhDR8HdWTg8o= Received: from DUZPR01CA0328.eurprd01.prod.exchangelabs.com (2603:10a6:10:4ba::13) by AMDPR08MB11527.eurprd08.prod.outlook.com (2603:10a6:20b:716::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.21; Thu, 30 Apr 2026 15:36:04 +0000 Received: from DB1PEPF000509EE.eurprd03.prod.outlook.com (2603:10a6:10:4ba:cafe::64) by DUZPR01CA0328.outlook.office365.com (2603:10a6:10:4ba::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.30 via Frontend Transport; Thu, 30 Apr 2026 15:36:04 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF000509EE.mail.protection.outlook.com (10.167.242.72) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18 via Frontend Transport; Thu, 30 Apr 2026 15:36:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ovjyEsocJJAqhu32hU38NqF7h/8xT/J1tK52FSFZ6tMsCge2G/telWAlR7yjELyltibsfs1UYl8I2VBJGtFIjTu+U8XQbBoF6x2mTY4I9oDELB7sGZpglqtycishwmWWKOrYdg9Z6Qr7qIzrU9pBP/89cI+zUaeUigCzGBzFrlv6ENHw+ZcPq2XQwrfEqIYlBDCdgz06bl2y2dVGfTJMSA7aNpjb76AdmGC/iYAsr1LMlybnxwxN1jenTAdbY5JRzEK4LZZtqZWyBKizx3jAK6qDOtBrE88s9QCM6ddTfkhxVZmcPVHKQpxaj0gV2dLtqCjhUSnKcWnnZkExyRL2cA== 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=5Mk9fd14xg9cuY2J0dvONSJfwXFrD1HcZnn+irTqETA=; b=QVFP91pq9qJ7qqegbrP7ZmwS/rtmcLJB4uaBSOFc2VKWptwVMJt4ssgSsUX7xyCwysML/EoByyQVUKWvhY+VrvNL0L+AS411lv2CLONz3H2M2J70BRjsdrWQYnR/DYzflNxmXDryGuPykjyI2MpUA4dBiKl2AGksVnXC/3d36Y9AatxyK2tgkxSaewCDODXGxg3s+7V5aCB/NAtivjcXYwbIcY9047R4jDon1foPexyHxWBpm3gpfnJTHsmVcf9MDjkLt8ezYyhfk3gmfBdkv82B1u4OWwm/EQf+Rfa3/ErxTG1BqoNepCvC7Hv1aOj2RXb/98LHYpy6a2wTfobHvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5Mk9fd14xg9cuY2J0dvONSJfwXFrD1HcZnn+irTqETA=; b=IxW/WIh4hxtdGMTKQZjr3GHkkroZdCOV39DHPAx4Gkfa2pmGqNDq7ZSIrPOiMOGQeSZw4+Z0PLIx7YJhKp2wGuTVApcbatpK/RXEvPQxa5ADW0uzIukkZ69MX0nGeUs9VU9KNF+n0xLCK1NUOdFKfB2o+HYBvLHUhDR8HdWTg8o= Received: from AM6PR08MB3399.eurprd08.prod.outlook.com (2603:10a6:20b:47::18) by DB9PR08MB9490.eurprd08.prod.outlook.com (2603:10a6:10:45b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr 2026 15:35:00 +0000 Received: from AM6PR08MB3399.eurprd08.prod.outlook.com ([fe80::59cd:4b6:fceb:3de7]) by AM6PR08MB3399.eurprd08.prod.outlook.com ([fe80::59cd:4b6:fceb:3de7%5]) with mapi id 15.20.9846.025; Thu, 30 Apr 2026 15:34:59 +0000 From: Sascha Bischoff To: "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" CC: nd , Lorenzo Pieralisi , Marc Zyngier , Thomas Gleixner Subject: [PATCH 3/3] irqchip/gic-v5: Allocate ITS parent LPIs as a range Thread-Topic: [PATCH 3/3] irqchip/gic-v5: Allocate ITS parent LPIs as a range Thread-Index: AQHc2LbnvlMVCcIPykKm9ZWm8OVADw== Date: Thu, 30 Apr 2026 15:34:59 +0000 Message-ID: <20260430153352.3654325-4-sascha.bischoff@arm.com> References: <20260430153352.3654325-1-sascha.bischoff@arm.com> In-Reply-To: <20260430153352.3654325-1-sascha.bischoff@arm.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.34.1 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: AM6PR08MB3399:EE_|DB9PR08MB9490:EE_|DB1PEPF000509EE:EE_|AMDPR08MB11527:EE_ X-MS-Office365-Filtering-Correlation-Id: 4854af30-0d9d-40fc-6f28-08dea6ce3077 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|1800799024|376014|18002099003|56012099003|22082099003|38070700021; X-Microsoft-Antispam-Message-Info-Original: 9tr2U/WFPlb2LZqfSrAARw8wxUlZvnfNOiYs4sc+uhm9kbrzr1WRrwEbaIg0K0d+6kUnYBiqxO964wZ9Z6KQOk1mA/Rq2ClczFA07/Kz2ao+7SVl0GIeBcayCqMLf7slN+zpsCSLYmaqNplFC86tVOquK/uoZke9gzG0leqkZJ3UKRvN99bDopUcmKH/LxPNhD2Jv6FHTgiIDyqqor/s3+Leu2n5cQgV0JFZNXSrs0heiBgWcYG+2bzSH5E3FhhAo1t/C8ek/cqKRHohDLKbP5jHVeDsaTO6npt44Dv3otIqI2gk1JQJVQiQDus7jcW24b1YPKijelnRXJoXjk2nIBkSlKyMVbKimQuzNdPpVsXToRghvS0X+CjW7VOysI2QLWZO4vo6jLt8//eQhAEMIyjra+MWOX3+UkD7115mqYfRxIVeyxuTr/oNvk7gDQCzr2kVzPa2hM3rogyf0HJvZm4IJqDiEbDcePGBumTHaDwV42OIJEMj0LxJOpp1gHlHehJUsOZjYJ7ihu8lYYvbDiBoboRU4gt9IzBrGuXia/IikB3tEgrhqTr9UTNyBpaVE1ZsLGrRjulrc0HDVMZDYbbMfdqDWOonbYbf3ARFXmBPbh9D2B4s0LgPvG17rStvhV4b4wnbTAeLTUTqv9uc/HJ8Y+q+QHd9HhNfKt7ZutCCg+m8JPUD8Sl/N4fjroBXP30zpZgsz68B2IPWwYhl2kJNktWwnArUM1h5N6r5f7oGRjjnouUa6R4SrgTVTy98/jwKHzD/fAPWzCzwhsy+iSMpDK+jBjoACsSrhZIkLTY= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR08MB3399.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(18002099003)(56012099003)(22082099003)(38070700021);DIR:OUT;SFP:1101; Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: n1WrXs1IrkhTuK014CCiQmn8BftbmN1Q4Ybr2gJMXlR0HyLL64ltLIBNmt7YEEH7YM3mJaO2YGQdeJpCr04H/9IMYenlXQ09M28zKMyKJocvXK/kpUORy7ywrRky9LezG/u9lroEj8gF7nqR5pfJ3QOfjMeON4nFS4yWHaQl3H0LQ/JUUlYuKYIME4FbLY77nqNNzYWKElreQyE8ijvvbOhS7UwcGQMe44C7WO+8jmqmWYoPld9uHZri3us6VLBs5tOCyp/ENLQpSde6821m8TbEtfgeUZ6XPmWGLCtAiZ3FO2NXsTnUlxZmIKO6w9v7lZp/tOjnNLQ6puFrIxNxsg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9490 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509EE.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 12001fa7-a9c1-4387-8514-08dea6ce0a4a X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|35042699022|82310400026|376014|36860700016|1800799024|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: iA7Ozwprf3FeH6Rw0qsNXFYAlm8hXPbkgee1bbFYWbqSjmSj/xzNI8uDiq6i8wRlaHLplnQzaCuSKlLO0Qrt4b7GxaHM1vI1elOmLiH3XNJxDA/PF9Cvbf8X22SzY1uO47ZC2z3GF0uGvck8LUifYNDSBOslGQ4gJb/Ui8Pcjb7dx7EpoKOci/gLLa54FLy5/pnlHxZlC5E9An/R4WDzC5qmVHJXS1u1Vm7lwcMdqSQw8ZtjqNaLtjbk8HDGQr6IlhWHLr4ZDGM0lHVcSt/3JAm7eEl/B28QGHeP6KZvWk6IId6oCN7UPPjvkB12DzKPcIsIutJQkNfFC+xhGJr+XlBdPLGJcz5ISLRv4YIYwthLXLYkJVSKMRllgg6liA/6TOf7Lo+FKoU4GVgBJl5wRQC685EfHlZITDRvnseVIhG6LtV9lvDsqluJ6VOdHW+PeBMbhGTi17uwR8oBZf9Wg3/ekZDNknx+r1+iaLcfHbpnPgahGS55YPVi0T6xN9O+vKqMbWVG9evHDNXXOmD0YPVhHtcHeVIbCzAineNqm4sJFuiV6v1uYJGHyynVvyoGOQ65DQ6dY22de0USC//QFnlpEODIWp5m5hDOtMhFvjlYrfEg/jeI18acMJ0I0DnB0jpnpf+TiFWQBQgjZ56yzxq0Rd3ODTjCU2QZ+GVzYlYmz8Iafm6ADMiQTpqoJb+yhGsyljBhy7a4oUyhqJi2NqW6frPPKDy6piJX9LA451R4PpamPLNjfBmFc/bKsTy5SA8LVewA+5oaVqbG0yOitw== X-Forefront-Antispam-Report: CIP:4.158.2.129;CTRY:GB;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:outbound-uk1.az.dlp.m.darktrace.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(14060799003)(35042699022)(82310400026)(376014)(36860700016)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: OeCt5jLjBOViUezvqgI8LzR9sFhd0jsc38RvexDmOrDjmRExQDgretzRk+l8efWywQ/QBd/CUUrZM37K9DH7lhJ4voCFECAjGPUpUaOITaMn8ol/vaz0gYxaxDhl9Etwcajp4lZSjg5kvSkmpLOAeUiLTFkyRMJI/YhAR0de6hv0uCRK+Y3PK1EtaVdGWJqfCNtWW7zKAnuxu5J7Xa82UGGFj1fPOkkTQZG5hI8CvuQaiZAGqVN24314gJsTspCeG1pb99FJreMGrPxgabXvXx5S/F2GRYjrrXbdb+kx2uSNjJQb7APt+Zgb6aPQRlpFiBJR65K9K1tEQSVVMNVWLGh9wXDCeQJ9f1pOA9CSs8b8sPnonWnvetwoa1BAssnjppWgRB0n2Sk1cya+ROwYCHGNeueNif7HsGibhYrr9wKsobRVo4qAgo3Jc0ImE8jh X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2026 15:36:03.8797 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4854af30-0d9d-40fc-6f28-08dea6ce3077 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[4.158.2.129];Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509EE.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMDPR08MB11527 Content-Type: text/plain; charset="utf-8" The ITS MSI domain no longer manages LPI allocation directly. LPIs are allocated and freed by the parent LPI domain, which can now handle a full range of interrupts and unwind partial allocations internally. Make the ITS domain request and release the parent IRQs as a single range instead of iterating over each interrupt. The ITS allocation path then only needs to reserve EventIDs, allocate the parent range, and fill in the ITS irq_data for each MSI. Since no operation in the per-MSI loop can fail, the partial parent-free unwind becomes unnecessary. On teardown, reset the ITS irq_data for the range and then release the parent range in one call, leaving LPI teardown to the LPI domain. Signed-off-by: Sascha Bischoff Reviewed-by: Lorenzo Pieralisi Reviewed-by: Marc Zyngier --- drivers/irqchip/irq-gic-v5-its.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/drivers/irqchip/irq-gic-v5-its.c b/drivers/irqchip/irq-gic-v5-= its.c index 36d03f82ef684..28e39b065de0e 100644 --- a/drivers/irqchip/irq-gic-v5-its.c +++ b/drivers/irqchip/irq-gic-v5-its.c @@ -937,6 +937,7 @@ static int gicv5_its_irq_domain_alloc(struct irq_domain= *domain, unsigned int vi int ret, i; =20 its_dev =3D info->scratchpad[0].ptr; + device_id =3D its_dev->device_id; =20 ret =3D gicv5_its_alloc_eventid(its_dev, info, nr_irqs, &event_id_base); if (ret) @@ -946,14 +947,11 @@ static int gicv5_its_irq_domain_alloc(struct irq_doma= in *domain, unsigned int vi if (ret) goto out_eventid; =20 - device_id =3D its_dev->device_id; + ret =3D irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, NULL); + if (ret) + goto out_eventid; =20 for (i =3D 0; i < nr_irqs; i++) { - ret =3D irq_domain_alloc_irqs_parent(domain, virq + i, 1, NULL); - if (ret) { - goto out_free_irqs; - } - /* * Store eventid and deviceid into the hwirq for later use. * @@ -972,12 +970,6 @@ static int gicv5_its_irq_domain_alloc(struct irq_domai= n *domain, unsigned int vi =20 return 0; =20 -out_free_irqs: - while (--i >=3D 0) { - irqd =3D irq_domain_get_irq_data(domain, virq + i); - irq_domain_reset_irq_data(irqd); - irq_domain_free_irqs_parent(domain, virq + i, 1); - } out_eventid: gicv5_its_free_eventid(its_dev, event_id_base, nr_irqs); return ret; @@ -1000,14 +992,14 @@ static void gicv5_its_irq_domain_free(struct irq_dom= ain *domain, unsigned int vi bitmap_release_region(its_dev->event_map, event_id_base, get_count_order(nr_irqs)); =20 - /* Hierarchically free irq data */ for (i =3D 0; i < nr_irqs; i++) { d =3D irq_domain_get_irq_data(domain, virq + i); - irq_domain_reset_irq_data(d); - irq_domain_free_irqs_parent(domain, virq + i, 1); } =20 + /* Hierarchically free irq data */ + irq_domain_free_irqs_parent(domain, virq, nr_irqs); + gicv5_its_syncr(its, its_dev); gicv5_irs_syncr(); } --=20 2.34.1