From nobody Tue Sep 29 13:20:31 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010057.outbound.protection.outlook.com [52.101.84.57]) (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 C6DA43515D3 for ; Fri, 7 Aug 2026 07:24:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786087476; cv=fail; b=FmxIOT4JfEkEc7M/OW6Gc2bgUECk9TUoeyaWm/cxS9CqcAxiaQC+YvBBriL/ol8JG1atFdO/HoPUtYbLIPm8APEPX5nByqMyCav5YN8GCmLseDey1/+P9b3clM9BZu8fhRES/g+7R8XrC1dpyhPUBnaviwy3HduLttfr4F0YJHY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786087476; c=relaxed/simple; bh=6Ih9I4ohdYbWZHBWLD/wT1JxnLPTpmeN72qMDmHgw0g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=guLmiAyTOyDiFruBbPtRPGXKbtjkJoKIak9Emmvcax1qbsmgyGr6xwbYm7p5IOCHXpOv3dbCEa+nca4Dh5ahUCZSVmxzXtffUCG1n8I3DWEQdGepab2EN7eETRolJ290L9HSnPD9HI60LDPFz0dxocRxu/gxnzArg5LV2a5Htfg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=CqVG7rCZ; arc=fail smtp.client-ip=52.101.84.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="CqVG7rCZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CDRGpNZf5XDbX7Nz3/Eeyc27ShcDsbV+cj+TqzKS7URUBnnlA3RaXz9y93X1zyHCOvCoklVNuwW0jC40XOmim4XWgzORapBEQ7dS6T++jizaTbSNpJqjFEVtQq7H45fOUKG+P8n+mZFpOLzn7Zgeo17dH4IqVeoBanDrXEyVVeE4qlaVf9n4VlsHMVEHXCY75tX4m5tG368f4trJH0lj8DUArI2su/T+TTyr7/cC20npLiwdFIlmgVw57K1yMjwgLIYzLtarPZc1S0WZgmvdzoMZPn/pmDH8jqR9Inq9Xahetw+eeb5WxqDXndjpyt0ekg5uaNqptihX8UODh0JT0g== 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=Xh0VWp5wozXPxuEbuHUmtXOUYFqebVxNiY65/eIeE+o=; b=dnML84TCHusecb5sxgNiF967R0/k7n+eJ3nlxyrMiybmXzGWHDaLC/oowea3LujqaCL9+lGFTB7a+MZzO1xgNupvkDUQujsKOC/l89KmFQ578EGS1nwdoUGW9vNP/IvE1K/dkcv0KoJR0rYRajSb1IVvo04Z2xog+XhRCtvDClzS79PrLJl4qT1Wir+PyI8vCWFYtUWdp2GF6EB0H64ofWYYkL5Tu4U1qVvuGMdZ9bPYjVG2gmIkUDqdiUA84wk8LLFY9goEhIHd+/w0h5Q5tqpOYyLjhFwPZBxe4q/MnSQit5kPey2sL1phzTQsFilN+0TEcVs4GwBEeLAcX+HSOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xh0VWp5wozXPxuEbuHUmtXOUYFqebVxNiY65/eIeE+o=; b=CqVG7rCZHFQfJPVK43SawZM8d2g+9YRkgLA2/9+tn4PiLPVbl4wZHgtuVt9G0Pt2/ygO331ej9/FLc4Q7OWOryOBiSowvAoBmO3UvtmQHfrhxXe35dY8XXM5s0eL389l4rvSOSyGHCGKmsGIktTzdoKQjOFEhMD04b2faofhMUG8QcyBTh+fbuJXAZL3vYBDayGV8MsdAi3JQTMtpfcG9mBw4M4Kr9r+X5nNNHmbny8a29PZgXYRN9HPGBD1AQmlr4Z4aKsqboiZPu2UgpS8Q0l6FHgrmBlvQq7PYiIq6K4ESgu5UY2yRpjPB/x7Y1l01cwLr++ErVoiR7BJ8uqOkw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from DB8PR04MB6858.eurprd04.prod.outlook.com (2603:10a6:10:113::9) by DU7PR04MB11188.eurprd04.prod.outlook.com (2603:10a6:10:5b0::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.23; Fri, 7 Aug 2026 07:24:27 +0000 Received: from DB8PR04MB6858.eurprd04.prod.outlook.com ([fe80::bc6f:5fd7:462:d0b5]) by DB8PR04MB6858.eurprd04.prod.outlook.com ([fe80::bc6f:5fd7:462:d0b5%4]) with mapi id 15.21.0292.021; Fri, 7 Aug 2026 07:24:27 +0000 From: Zhipeng.wang_1@oss.nxp.com To: Thomas Gleixner , Marc Zyngier , Frank Li Cc: Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Jindong Yue , xuegang.liu@nxp.com, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 1/4] irqchip/imx-irqsteer: Fix error handling path in probe() Date: Fri, 7 Aug 2026 16:23:43 +0900 Message-Id: <20260807072346.1222389-2-Zhipeng.wang_1@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com> References: <20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0008.apcprd02.prod.outlook.com (2603:1096:4:1f7::14) To DB8PR04MB6858.eurprd04.prod.outlook.com (2603:10a6:10:113::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB8PR04MB6858:EE_|DU7PR04MB11188:EE_ X-MS-Office365-Filtering-Correlation-Id: 5c2b2cbf-2207-4d84-c255-08def454e9cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|1800799024|19092799006|376014|18002099003|22082099003|10067099003|56012099006|3023799007|11063799006; X-Microsoft-Antispam-Message-Info: yLqaO6Mt3uy2uRXVBmc+gFi57MRsIezkH08F+OUE7Qi+XHEKq9xJa0Ew0TSpQKuGG0JQxTiDUCX42eRIgQ39s2fhUs4AWp+fLhF9t6Geq3i3kIGu+GB67VSgvdnfEfScVht+XugniJSgycugmYXlpHes2pFXvPZ3W5aQixZbBoj5P1MlJ3qEiEJ2/YEuFwcLxMpwOKto5J5f1ZzKf6RIwB2oJ1qtSerMe3EhtsCMNF/ic9fh28Qi+liqT2BGuBXIf+JuJKJJvysrlAoxfwWrI4GP2dTCTLx7Gyoe7uHiB4HiWLWx9CfVqXG3lPYrWRtJgxVHFaayxgK/AL5McqigeZoa5FFE7iF5p46aV7eU6JtDuclcX7Vm8CmYHoXi5zoPXQ/UgyqNxHvDCzcSJNYqJyWK16WET/nLKiCfcbbfAWQQWKILTAOACalxfJeBlINEXxc5kpEKhnb8QlKFYPj3BVYeqKRxchTHAiTPoRSNfQjePNxruSEdafbVVW8Xq9nmh8/LHfp7ZQ/mcKj/7JH3DubpixBVcBfxTeuYTbpw7VKYoL6RqnamIrcJT/bt5l7kzmI9f86O1IY2MifHHjfy8oyPtzSRKxTFh9fn33hBwqVQVynFIh2k+4YP9P656vLc4BVzvJ26hVSnmw7QwztKOt6bnV62mS6+CEKb4NiuAUM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR04MB6858.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(1800799024)(19092799006)(376014)(18002099003)(22082099003)(10067099003)(56012099006)(3023799007)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?X5fb7Wf/9x1I4DEi5R/n2m5ZpCNa3Hf/nFgHsNsE6TLPIEJc18XNIY+8D4SV?= =?us-ascii?Q?NR0PtIrjgq6zdwBcC3Namol3JD8e9PDfqXjsGlrQ+bsti+0P4Ur4aqHyD1bl?= =?us-ascii?Q?P/yiehs5ikrQAFVEaNU1G58YKAg8PbLa/fb/Q9wzKIPHvAxGrtbSh4V6n435?= =?us-ascii?Q?QLJqW9Na6+npAY0zjP7OvnwQ98FTTjMKhuGbUateXfedayGsW7zCYKmlMzey?= =?us-ascii?Q?77toCvWguzEAoS2YDUUDMJHw3dfwWanhKIwl3yLDuqPDf7uEdxXSIWlhg5dn?= =?us-ascii?Q?UjO9wSqe6ipANWV1BZ1QuM0RZoIAHYnRZ2WioL8RqxTL0Dzyue04KTR3P4JG?= =?us-ascii?Q?irfZN/AIIakZXGh116OxVE4X1xYIUroE6qYkQsRm2sG52ieeUNv/6um1TiaO?= =?us-ascii?Q?KPa7vkNhPb7/ZpBOKGr+DN558T8LXNzMGl7H4KpmftxKhYQaIISk4PsuOeus?= =?us-ascii?Q?/En7I9rudmGbjOoCqTH8cN+UsmiQZlugyarwQ+lBJ396QyFxMt0DQYuQ3ArX?= =?us-ascii?Q?Lb57kdjRZm/u1Q/vWV4pxSfh/xoSk7WsyQSZ/CFaru1MJjzwtaqrSXaWLYmk?= =?us-ascii?Q?rTJlSTmaFlB24UXTS9f9hxZQ83Zw69qzpEhEr2qaw4+ISJcRJfB66MiNvvI8?= =?us-ascii?Q?qVNx4qjHNAEBCxvDBstaGNtz5hI1lmmWsQdak0Q/C0hrrd3ntM4BCgX1Q2PS?= =?us-ascii?Q?JcCBaRHFU67hLhW1jYc6iqoL+S3P9NNFyAgy79+rvn7hEMPQ61uoW3oH0grV?= =?us-ascii?Q?AhtbNZgcEawEwTwV8Aef/woe/BH9eRlxZ4uwOXscl0Ey43QmnOlIH16TanlD?= =?us-ascii?Q?mB+8KNIjFlgcCUDhvp3vmUeEZCN9ByNOG5ShLok/TAOLapfKDUPgb8qX9lNB?= =?us-ascii?Q?BmH2R1xYQVVTkA8yXyE+b9NU1xcWor2jTNjvkN0BBHo4G0U7smQ3Axt2AJmy?= =?us-ascii?Q?3io8zZ414TL2ZgElAqN+h3EzbF0ryDCD3m7GjSiZXIFZvsT6SKZFPEMhE6KT?= =?us-ascii?Q?OSEmOujKUkNOlbq0iAWIPzdeAUrhYLzvg2eUTrnw3S1BPAu4oQq1jQkiTE7Y?= =?us-ascii?Q?abEQuTFLqV/3ZjqWXeS/qheXvZk690uiLCCRP3iOL4dyhOHyT1/Oe50OTMwA?= =?us-ascii?Q?jLli8EagyzEmWG6Bj673pxVojWkBClvD2r4kRS3KHTr37oRGd2uBoBYDW5sS?= =?us-ascii?Q?ul/h6dI3YO60Lm/p/xgvvZ95KaW6r+NhIVmLW/PcLAiI1wU0vxyInZmQkjNk?= =?us-ascii?Q?bCy7mWddl2mEGgGS8gemJX4xfZEx7Fr0H+TXMzoatcXWXNVBKBTqHK1DSd4J?= =?us-ascii?Q?vmPtQa00VY2KR4wGkqGJqjMT6BFwWGiprmLDO//sZLzRnO6fqzLg6nIqHOZS?= =?us-ascii?Q?nEOdx+vlAhXRfgRZkCypqnIIL4sz1nRkyOjD1NS7pQa2fK38TD4oftfqjjGL?= =?us-ascii?Q?A7DaepB39HzpmRTwguEMS4Rch/sIGulcBMdoCPlsM1qWmqD+a2e1wOiUj7ZU?= =?us-ascii?Q?zOHvVYRGnTw6PQ0hSeWsI17StbPYnzXI7wz8R+OP9fTWqkCFm0xNyER7uyOw?= =?us-ascii?Q?ftx/2eABMEeOxGOekXCbS+KmlfrEw5m9m9FnP7JqAreX7NKPI59pzE2W9+vn?= =?us-ascii?Q?32hcUIoJ/eA8db6UGn9CXFPmEwyEi0ZbGSCMSnr/4/iMQNxtvEt2Ow1tJjp/?= =?us-ascii?Q?yTU6QCKl30NCaE9GrIWyak9dKp+WTaA77lfWku1mxb+ps48UboVsFwTPj8rn?= =?us-ascii?Q?C7QvWzQIx3x8llRzeclRxmLEZUQjphwXsMvjW3N6oJ7eGwxbhQrV?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c2b2cbf-2207-4d84-c255-08def454e9cb X-MS-Exchange-CrossTenant-AuthSource: DB8PR04MB6858.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2026 07:24:27.2299 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XeVPUiBrk+iqphu5MhVE7ue1vQuiPKUtq9ApFVQQLrBYSlPlhthGtDpjS/X8UeXdgmL5cbNeoiku8XlFZvUfIblGvN41oCKDG/TV4o5/wlqWpJ6SCAusR6950kcXpQX6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU7PR04MB11188 Content-Type: text/plain; charset="utf-8" From: Zhipeng Wang If the fsl,num-irqs sanity check rejects the value after the IRQ domain has already been created, probe() jumps to a single label that only calls clk_disable_unprepare(), leaving the freshly created IRQ domain leaked. The domain-creation failure path shares the same label, which is correct only because the domain is NULL there. Split the error path so that a failure after the domain has been created removes it before disabling the clock, and a failure before that goes straight to the clock cleanup. Fixes: 28528fca4908 ("irqchip/imx-irqsteer: Add multi output interrupts sup= port") Signed-off-by: Zhipeng Wang --- Changes in v3: - New patch, split out of the single v2 patch. Fixes the irq_domain leak on the probe() error path reported by Sashiko AI on v2. drivers/irqchip/irq-imx-irqsteer.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/irqchip/irq-imx-irqsteer.c b/drivers/irqchip/irq-imx-i= rqsteer.c index 87b07f517be3..a2f0629b22a3 100644 --- a/drivers/irqchip/irq-imx-irqsteer.c +++ b/drivers/irqchip/irq-imx-irqsteer.c @@ -241,13 +241,13 @@ static int imx_irqsteer_probe(struct platform_device = *pdev) if (!data->domain) { dev_err(&pdev->dev, "failed to create IRQ domain\n"); ret =3D -ENOMEM; - goto out; + goto err_clk; } irq_domain_set_pm_device(data->domain, &pdev->dev); =20 if (!data->irq_count || data->irq_count > CHAN_MAX_OUTPUT_INT) { ret =3D -EINVAL; - goto out; + goto err_domain; } =20 for (i =3D 0; i < data->irq_count; i++) { @@ -266,7 +266,10 @@ static int imx_irqsteer_probe(struct platform_device *= pdev) pm_runtime_enable(&pdev->dev); =20 return 0; -out: + +err_domain: + irq_domain_remove(data->domain); +err_clk: clk_disable_unprepare(data->ipg_clk); return ret; } --=20 2.34.1 From nobody Tue Sep 29 13:20:31 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013071.outbound.protection.outlook.com [52.101.83.71]) (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 B7FDA3C2BBA for ; Fri, 7 Aug 2026 07:24:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786087484; cv=fail; b=e3dtTWU/6wgWHMALMAUW7yF++EYD6+1bb17oNyBSJpaaWY3R29iwmpwGStNC8hQ1TJbKwydZ9v1cKWfjwTBuJa4tVfdnRsJB3/2oqSipY9KtpiTUv2D9J7lS8QlP9l0yio19HszaL/T4rTRzzq4svsbCE5d1jSie6PWHkwlG6FY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786087484; c=relaxed/simple; bh=MsPTaL1fQuI6GbdLlqqGd9wSxq/HuduL7wwWn8/IJ3M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=GrL1KP7a0oDSbupjK9LcUJ0q7fvnmFYnkxBGYynZ07aSgKNuy9izLu8JC/Ne1y3eRfNLj9qLri1gETPMG68zdy5R2W/yCU96cl7C2LJ7o1pCVJSv2Y8hvoM8BNB8S4ynADuQFmEB1Xo+FOl8vaQtjIuMXTkHhnbiYRie+tYUcQc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=u2DQ+VUj; arc=fail smtp.client-ip=52.101.83.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="u2DQ+VUj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c4Vu1Gs4txm26FrPwqnkD43AVyXGm/5+DMZ9tlTf9KKPREGx3135XP1na6wF8qjdUmrvV8BjHIYKM8nNKv6h6SHH+aIOHUmqWHY1YkYr2IRcqQRPY4RJQ9FfXZqzafTz6gmkOECdpsUba6Glx+BzFnBIVcUXu4hAADwkMACh/a8AffX0v8MPodyTjjSlPC5xXc6Rup5ziH5gKv5OCyT/DESujX6TIVowekE1XvE8rnZkNwGBhVDaSGdRxoiUjrCNl+GE1FV0KjVme7re1Ptp44HocFyNP8ovq0LHtVwue8/vHcpWt1fm0+VWhVvJMaFCPuebTu1W6q+xC/DJoxMi2g== 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=Zm6KVbYKDu9zsL1gDblsx3YGOaGbkuLBo0C+D2+dGrg=; b=kEpbxIKyNVlAe79xTOejCckFZ+qFeKeNyLbcR+JfsFmBR0/XJZ4xIc7Q3mjoRP5tuHNCEU4rBzkBN7ikwlXle4UAmytj1MpRQWZcYDToPDnRiUr1gFAhIoxubi7d4XwhIJf240amXRWfv768q6aU+E0JvA6WoZy4sjMF0w4On2LprD6vx5VvmMplch8c6PJ1gQC4I+h3zPbn7dBTcBcPOOhNZr7pIa/ew0V7597WVzFIhsqkk25BiYs9d1FlLNNikkc99GrEYCOrKiqA9lqrODdblzz4ckLp5j4vyuOw4b01vKmSEq2Ge5wC7yGqZD+/7yKRTdxZjSU++VZPkvFQUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Zm6KVbYKDu9zsL1gDblsx3YGOaGbkuLBo0C+D2+dGrg=; b=u2DQ+VUjEA07CtrbFpwls4QnX700Irfg7ZvHDcRffcR+AizU9YgROgIJGtcQmHMx54j0RE3rGJttyRhY2+lz2WeK7hSPZOVD2wWZ3ZKyrPnXPII0/CMf3tmKYTSYEASZYTNI/etf7sUjxOgWUgD143TJIF6XjoT+PLKyaXyf+BlieiOy+Lh9t5CnXE5JL11KNGgfD0MRXOCtqC6u3Ya3WnaokLM7ClaKao0zLPyxS8bjvbsrmo1Kyr9yXcQXms15o1DIKy4GeM9ewyX15jHqGIzNLaaHgV5TBsBMtzmG400BFEhJR7m3tCvsS5ir49JCZbfv1ycD3FBWg72uBOPP0A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from DB8PR04MB6858.eurprd04.prod.outlook.com (2603:10a6:10:113::9) by DB9PR04MB9233.eurprd04.prod.outlook.com (2603:10a6:10:361::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.21; Fri, 7 Aug 2026 07:24:35 +0000 Received: from DB8PR04MB6858.eurprd04.prod.outlook.com ([fe80::bc6f:5fd7:462:d0b5]) by DB8PR04MB6858.eurprd04.prod.outlook.com ([fe80::bc6f:5fd7:462:d0b5%4]) with mapi id 15.21.0292.021; Fri, 7 Aug 2026 07:24:35 +0000 From: Zhipeng.wang_1@oss.nxp.com To: Thomas Gleixner , Marc Zyngier , Frank Li Cc: Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Jindong Yue , xuegang.liu@nxp.com, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 2/4] irqchip/imx-irqsteer: Dispose of IRQ mappings in remove() Date: Fri, 7 Aug 2026 16:23:44 +0900 Message-Id: <20260807072346.1222389-3-Zhipeng.wang_1@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com> References: <20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0010.apcprd02.prod.outlook.com (2603:1096:4:1f7::17) To DB8PR04MB6858.eurprd04.prod.outlook.com (2603:10a6:10:113::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB8PR04MB6858:EE_|DB9PR04MB9233:EE_ X-MS-Office365-Filtering-Correlation-Id: 48846a1d-ff3b-47c7-365b-08def454ee7a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|376014|23010399003|11063799006|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: xuteOrg7RBRass6J8kE2TrcvRFFUokMmjmwydc1zuuqERwfNI+a+/mV3q3dZCQyRan3YROxaZfX4n2LQPehtd4KZsxTZ50ggLmwyOoQpzrNqcS9XoV1eixUoQS8v8ULoXhbd1S8frYy8PkoOj72pZ0gvl7YeasBQ4xc342I6QuGvRY4kSl0AHn3/R1tQCCahTcbAif7NJOH+L+cJOdhoYuO2fxJAndmyLi3U/I3om9aNUd+QixhY2UZM9mc4Tbn03/9+wcHGUKQtg0+wIn1KUgkCUhgdet/mDka3nPgBj7SIT2dgce2ZNgfj0JO8YEGWZ3GrYta9dYlND6eC0+d+5R0Ym+Fuum3CrqN0LUIO0R8nRWFmyvrHQkYdkRIrfgAESJSskcs7zSrm+4LZpMcjyHOpl2GQtIouKY0vl2tt3AdW0r0tVGyaR0VwLAWuMPOSInTAOmsyCsuoSNKhm7eHjXiFCo/Eyvps7aUEHEpoV4Ym3iFORMYJQW/ytQyn5S4+DN4Vt9YIhciQbnIVs3kloK7XiwD5aGEtntxu+PcGu5j9aM1tzI3+aqwmdVcd3ppwPpchg08cGi7Qnlv7AV0favJL29BEh2k9HhR60eaPmzC6qnhVHk4Yyqt3dHLRIT3I8rE93u91yp58wRpulL44hrjZf/k0IcVpZAZhdzQaHvw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR04MB6858.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(376014)(23010399003)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fVAYuDUkfoK17pc3Haxl3Tvex/KLZmzyPXSwDYrj2bcwDY6k40RRkVmC4vtg?= =?us-ascii?Q?xJSjcrE1oqs1iy2FQM6RiDRu022+SxsKV9+5rfyedM5vPQwV8KF7r9as3W/u?= =?us-ascii?Q?/zdz94vJPw+9JinGUVZYt3HzAd/nEec2JRFe4QziXDSlqgZKxBg/9pk7Nqf9?= =?us-ascii?Q?acc+uR4vX8T9IUddDzVL5A5NmDtxwtRc6KlCFmZvgQtlnikyGSeqMyzdYEx6?= =?us-ascii?Q?gvuXYj7tAXgQIv8LFtbfuM37/8Gg5B7fywSsF4/HFPL9fF6zXf8TERy++c2z?= =?us-ascii?Q?krO3ChQzF4uUiphzvNCvVjEX5T7VESrJ+pS0P6omfNJpBS4Armz0lbnQ+B02?= =?us-ascii?Q?U54M5D8lGIr8+slK9fU1qpfw17zigoA1mzIjAUJBQYltt4jBMLLD7LZCw9I7?= =?us-ascii?Q?1mFNtQ3QkJrN+wY0nKPFfG7h7Yar0CmWYZTS0BYN1mxXTOo3Z+gkfXKdFC98?= =?us-ascii?Q?EAWaLhe3y8DXKKp6sJa0ASZ5jCuJYQJ4qIhYuWIMPYfUtbKqIvVzZ54lmRYC?= =?us-ascii?Q?cvkU8MIb2Wh652QQN34l0LZYKdObK3pElncR9WPFtIUIy5kdAVJLGiVpJEdN?= =?us-ascii?Q?R3jM4cxvi2fbJJCHRiDce2/bx8/LR+edgSKV+94az3bf7LZMqhg8dF+0LkCa?= =?us-ascii?Q?0MVBVRyU3amUfPUyb0wy6zpVNzwE9e7p++5NwOL0g+ZnXSML7Y/KQFbvVoBq?= =?us-ascii?Q?O3KFuKzLAWwAsAiwmC5pZrCfhu95cGfimGIylLNPEn+B6RdD9CjKztWnbUKd?= =?us-ascii?Q?ErgLDen6uQdYHWBh0W0hTA+Yz7pfNZtV8lXrdkOV4NHr0xYE2G7KcwotQXim?= =?us-ascii?Q?Rce32k/MgsL0bS50Ucu5pzcxU7CQbtJ/6t5bhsZ11UkJYRcZiQKaLMc/eybf?= =?us-ascii?Q?4iFXm4ocxCX8OpXpdVqnpWiNbiS9xWVy71faKU7RS18mn5dzsi8P3nShAJwG?= =?us-ascii?Q?9VadXqaydD1tvVUzrUbOogIMtgmwy/aLCdN8vSE9h9Pj+JNjdr/Nf4d0/Jc0?= =?us-ascii?Q?5o2t13UGQVGPaKNIxpkm4bB+MFShvuJi1TzK9F08xaF73MO96x+FucZQsamI?= =?us-ascii?Q?5LqlEMpqYJtrWs7AWL7fuGkwvrnyNRPte4CM5V0aXI5E5Aw+w2/TIFw0wXrw?= =?us-ascii?Q?rwMGda9IrtLXUkm3xstjFe61SrF40rAwD6CDNbPS+0861xFCW4Nel0xc3ey/?= =?us-ascii?Q?94N8H06pdXoezEcqe00Q1mwDmAutkZmnEIKoPngfmEc7nEUOEQZdGtsrC/d+?= =?us-ascii?Q?NpGaFKu/SdQL8Nt8mA5UUOddvVHmMbbTe4bnxDqhFkODdOBKuqw3orXXZSow?= =?us-ascii?Q?7mxs+0eY5QcoPwiUB5DJd5TzugdYaX4tChxJR3cnRJ0yDF+C/1tfZ8BXwS6C?= =?us-ascii?Q?J6i047ykltkMqxGwvRvgq2u2u2ZPTUiLOKuHsfs84sPSugH8cjf9gwTK2UI6?= =?us-ascii?Q?j+L/1xN0hWzPENcFgad5QKpxpNQMwKUNv17pfX89/rNVfG49FIBjTAgiB/3a?= =?us-ascii?Q?kCR4dU51aSLeOjxtBklVN6na3YKX8OOSqsnUdVdLBhsyH3qiwUvPbzNNMWMY?= =?us-ascii?Q?Z6J7mipCtA6XlYgIc7HmxPX9fU4BE+LeuVGnnbEH9ROTBDji9PmNdm7w3wjX?= =?us-ascii?Q?PjV3FrbFIeGCLtJilYIc/IIr1sDGUtn/AQfftYn3z8sYItWKDBkFsWcNBFZJ?= =?us-ascii?Q?44YtdxIuznq5c2Bn//Ut6x2Z/Ttcmkcq8OKLeHSSJza59SsZll5Un9qrL+iY?= =?us-ascii?Q?UmfUDwvw01PA/KjSxZsV3SLZDqKXaCveL8PTQIP/iwqlB1C5gdhL?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48846a1d-ff3b-47c7-365b-08def454ee7a X-MS-Exchange-CrossTenant-AuthSource: DB8PR04MB6858.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2026 07:24:34.9602 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5Mqs8HvwLR2w3LEcY5RdSgBJ5lxRQFRMSV1gvAV/KkTwcQxYjPryQmFVR/N/kwA3QUSn9bkR9mmb6lpik4JU3yQOQurbGyuA+EBt8WdXTcnO6IxEg7KtvmkI9ZhwbQCq X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9233 Content-Type: text/plain; charset="utf-8" From: Zhipeng Wang remove() tears down the chained handlers and the IRQ domain but never disposes of the IRQ mappings it created. The parent mappings from irq_of_parse_and_map() and the child mappings handed out by the domain are leaked, and the child irq_descs are left pointing at the driver's irq_chip past irq_domain_remove(). Dispose of the parent mappings alongside the chained handler teardown, and dispose of the child mappings before removing the domain. Fixes: 0136afa08967 ("irqchip: Add driver for imx-irqsteer controller") Signed-off-by: Zhipeng Wang --- Changes in v3: - Split out of the single v2 patch. In v2 this was folded into the module-conversion patch; no functional change. drivers/irqchip/irq-imx-irqsteer.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/irqchip/irq-imx-irqsteer.c b/drivers/irqchip/irq-imx-i= rqsteer.c index a2f0629b22a3..4a2fe8ba97f5 100644 --- a/drivers/irqchip/irq-imx-irqsteer.c +++ b/drivers/irqchip/irq-imx-irqsteer.c @@ -277,7 +277,7 @@ static int imx_irqsteer_probe(struct platform_device *p= dev) static void imx_irqsteer_remove(struct platform_device *pdev) { struct irqsteer_data *irqsteer_data =3D platform_get_drvdata(pdev); - int i; + int hwirq, i; =20 for (i =3D 0; i < irqsteer_data->irq_count; i++) { if (!irqsteer_data->irq[i]) @@ -285,8 +285,13 @@ static void imx_irqsteer_remove(struct platform_device= *pdev) =20 irq_set_chained_handler_and_data(irqsteer_data->irq[i], NULL, NULL); + irq_dispose_mapping(irqsteer_data->irq[i]); } =20 + for (hwirq =3D 0; hwirq < irqsteer_data->reg_num * 32; hwirq++) + irq_dispose_mapping(irq_find_mapping(irqsteer_data->domain, + hwirq)); + irq_domain_remove(irqsteer_data->domain); =20 clk_disable_unprepare(irqsteer_data->ipg_clk); --=20 2.34.1 From nobody Tue Sep 29 13:20:31 2026 Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11013071.outbound.protection.outlook.com [52.101.83.71]) (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 AE3123C09EE for ; Fri, 7 Aug 2026 07:24:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.83.71 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786087488; cv=fail; b=Esko+UZVE0I6tev4msYqHxlsvn8CGNdIef4qivyfWXXWFXfBrXKF/UcmbU9BBeeypY8elKTT2xQtsVXYQsIsVVRMnSLfqjmGIKwZSz12RJh/Uphx+3HEgTo/un7m1yKBtm5m2gchGpteeDpa91FMvcuHUU/GXTaYCJqAFT++yvY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786087488; c=relaxed/simple; bh=qkt3nSYgTkfmmgmHR9TMfUUkc/+USF0tlHufyAe5cZM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=RkyGf8kkNn/7A9P60uNC8FX0rmQd/O+Bha51nlLUFHiW6U0hsvjEAaPaKu+tE0o+CSCqvbW7OOAzYFXa2pqw+Swji4XRzB/l1+PPqYnaNJ586NTSrCWdXkovXzNULqP+1VX28rTd5SKgxTQiDMdl7A+eBpmYgsuOqYVmVC8/qMc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=Ntfm2i5s; arc=fail smtp.client-ip=52.101.83.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="Ntfm2i5s" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jxkakN5rjCbiCdjlsGbG2fOGkbCTOQ1kMH5JE09IBPG1zuVC32yvN17YO6HCbsl2P9hpAhxQY0ixmTxvYq6SdNSNwjLEPONGmXf7X7UUCcx4lg1f3PeJG46kahY9YHDc/DINHZ22tLHjLwChC0xqeGUUJ+Q9Xr4OS/kntEY+DyjPnsRmfS1Fq0+1tUUQvXNhG4Gm6dZ8dNFRovWj2Ey5CT45ZgZ7YH+MXqc2R0K8b/K/wruCsU0cxwttyoFnsIbL172d7aypA1Pntw7k9TyIOAFetbJcX9gnAsUAJd8+y9v1swplqtm5w8iJJs/fqqb6uelNTQ1zgmzDeJttEFXdeg== 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=lN1491HHeC44AURk6rIG5zkjMFGwgS5ngwbBifv0LKM=; b=bYuGIlz1usks97XbCdcVNFJxlklOsPYDb9SSO/urKKjUq8hX4NvqQjGH+op6Dvr9z0LknZN1CTo4vo2+KQbeR53+p30bdh7K0jkMsZ64mi7HtIkxvniwVIt1p56s0QhHULGqIV+GvI3EHPyBw9HQmm3SrUfEYeYe0Cg9RSHHC+RNVbQR8z6gKzMOZxsOv8wElPwOdMy1jc74wBTC4ZkjZcT7GzNzc8bzomBfh5sTuJz8PgK+LM3CSZeuOMg90rNIcn4Fr4+YduWIh1EFI9qOyTGNF0+rW2po8kvKOjZpO36REv6QnWJvsJSz0eTfHRVEfErbgGhS47qdGHkxJv1BRQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lN1491HHeC44AURk6rIG5zkjMFGwgS5ngwbBifv0LKM=; b=Ntfm2i5sx5Qj+SZA3RR/pSke9UQxFNT0xI6ZHa/RntJUyp4yxuZRaeBjNMpjyC76OhnLv5u/dh60muB/DuiiInXHeydGaaQWloo4bc6sjuvLSNmRFyNXuG/w/D3vTPjLsKMsHpzGmAwi0dmuKudy5umZ44vX2xjztR3LEBnL4slZOexA3IA9HL4xuQ7py5LXYe2pbSuGBBkBsZwVk9Uxj/z9j96tJIKAioNZ6AM8znvOJGc29wnRpXuby6tO1huF3+TO9fzAXRSB2Vp/r7F7raUxdHeTtUseRDwEjaMLvfWAdNPvXtQj8IGCmbs+YzrEhcpgnteg7647GoOlADDlxQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from DB8PR04MB6858.eurprd04.prod.outlook.com (2603:10a6:10:113::9) by DB9PR04MB9233.eurprd04.prod.outlook.com (2603:10a6:10:361::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.21; Fri, 7 Aug 2026 07:24:42 +0000 Received: from DB8PR04MB6858.eurprd04.prod.outlook.com ([fe80::bc6f:5fd7:462:d0b5]) by DB8PR04MB6858.eurprd04.prod.outlook.com ([fe80::bc6f:5fd7:462:d0b5%4]) with mapi id 15.21.0292.021; Fri, 7 Aug 2026 07:24:42 +0000 From: Zhipeng.wang_1@oss.nxp.com To: Thomas Gleixner , Marc Zyngier , Frank Li Cc: Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Jindong Yue , xuegang.liu@nxp.com, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 3/4] irqchip/imx-irqsteer: Mask all interrupts in probe() and remove() Date: Fri, 7 Aug 2026 16:23:45 +0900 Message-Id: <20260807072346.1222389-4-Zhipeng.wang_1@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com> References: <20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI3PR01CA0012.apcprd01.prod.exchangelabs.com (2603:1096:4:296::11) To DB8PR04MB6858.eurprd04.prod.outlook.com (2603:10a6:10:113::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB8PR04MB6858:EE_|DB9PR04MB9233:EE_ X-MS-Office365-Filtering-Correlation-Id: 30b8dccf-16a3-4adc-ec5d-08def454f331 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|376014|23010399003|11063799006|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 52zUwAFry28zdDZxHL+PxrpgqyvZ9441qLf230fasfw4OwYNFOz5xtR263M0dDF7l+8BWfgh4H19sB+30uWgWO0ur9LRSyZ5d9/5WjbEXucGgj0uJWMFE6iUUkWodb+I+yfjG28rIks0emW9uX0iiyDtJnk1GLqcoIHOhxkA7cPXoHVQif9KQtQiQCUPHJm6YgLtvLTKYW5DDJWfXzjQYmM99qe+kYA3anUM7dU3+toOVPjWUw/CTT1353Dt3jnEVWHGjmLlLciyd4b1GA64uaIAmQ2SfMJR9HYUeQg2ct2gdSUc2qpgUlWk6DyAZ/ZeaL7cxdS633uP4l2OrDOc7bcuI3iiJoedqhSYP+Epuskizey7l6RDNy/eZZsn5N78qg5jO+P/MuofrIS1Xsaz8uRaNPmlGBfXGpzi6v5HTO/CFrnNB3aICqjERF3Gk7/23jn9nBSfBFrR9bQjlkFcKWC4rsgAUVm9YoTI/Bdi3bpKjEintXplaxctC/S2BCqi5eJLR/M6uAk24JAP6oEZ8ZGHN1x3/ADGydVurQ6uES84J54WcWwYCQlXQ4IpG2Bjp3wTOXuT+QrJsYahmRI8E3HbnIcG6x2rNQ74+k/SbdL8eYMYtaebFslxjprJcs2lfSO6ohbMYkns++Rri6Kaap/gXnUcRdRizYSiDTeC3Kg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR04MB6858.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(376014)(23010399003)(11063799006)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hmIZls8WD/ct7qsMfz7b+GsUdErbEGrwgDnbtsQGFGZfCpEs8krllAufsVbi?= =?us-ascii?Q?5RGomXi5u2tdMf2z3wZwn1QrYHnlGfGrn2tpt5Ls/FMlZmwQUU96ztASxoGX?= =?us-ascii?Q?Q8BMwezpBR0k10sC51RZAWal9WZCafxYRCDaq6RCJiY4bNNVxEA76SS3T/IV?= =?us-ascii?Q?7hM+DQc8XG+EC0j533HJv0SLn7uqgCB4AgHS7WGPcWmIUpBe23RiZEb7ppoz?= =?us-ascii?Q?AcbwkxenTJgePgB/fL0vuI/4HTYzLsoWu4L64k/f72jWs5PcPFxTk9ZrRMXq?= =?us-ascii?Q?09lT+DCOcpOm3npRzY7okbv0BCWLfzuSMxNviGk4SlrW9FrFDE3LH8vzj+ku?= =?us-ascii?Q?APmTldJItZz2l06RI+J8mrtEEAjBRFgsG76NiOW2rK525m6MmBtcmOBTis5R?= =?us-ascii?Q?sASBWcH4xtfZl/B3FFaCsHoT7VZ4TApWY1LrTKKbGV2AVEIewXbkaAedD1iI?= =?us-ascii?Q?P5n60FM6VMT5fTxIKSZ7JTUXSW1vqrkNj7JFH49W58MQBaTVgBRk4j4Ycs4u?= =?us-ascii?Q?7DW8rq3W1nRJmMfp8SedPj1oyD9vFjPm/o1KQqyCkH44qacKpA2a3pKL5A9H?= =?us-ascii?Q?T2+Wp2m/vhqzK5mZsON9Bf7AI9fkj1AIoHMs7wy5/fdSaoSPvllxrNhaEyQb?= =?us-ascii?Q?mK6tNmUBB/+hxZawx8K5b5mSxjJKY9nIZ7VcWpnZhG9S0DDVWRAC+Af7Y06P?= =?us-ascii?Q?f4P9frcb11KMAVNeYXQJguVO/BY/BZom3xmyv0UshvorBAzB9ikA2i8k30CK?= =?us-ascii?Q?+3Q2fBTk7++8JeRrx0Tl3XSzfOzmNipo9wCsYFJCqQ6khAcItUMf+VdIrdQ1?= =?us-ascii?Q?Y6jiFobloSnf275VotnR+pmT/FLRX97PhV2OjvE/docHz6zPUbzMO0wQKIH8?= =?us-ascii?Q?sOTRoKFza32P3voXaxNdBId+wWHr9zae8kuVj9Vwp2JlvhKPhPgjHmYij7jQ?= =?us-ascii?Q?812A/FJx8z/xpQTd9GQj0nRQysMPCr2+P95yBFQFSaKZnjcVrirnQzK7aUbV?= =?us-ascii?Q?KoT7Sp1v+oABjaCVOLH5hV8siOGXBRq4D477ecIROrP9CEoayUZQFCjCCI6S?= =?us-ascii?Q?HIDQ6EJAOPNMd5Lw19bzPDpznt9JQYYchy5VmJY+h7cyiZS/KPQTolWoARPT?= =?us-ascii?Q?JUH9DSVeJf4XU5YtiMMWsBt42vSTMRNQGHUmFYbcT/ZTrjU26DCRQO+4b0uO?= =?us-ascii?Q?TtKd1GiACU7pbr0trl5z7dRNgwCmIAPESrOSmiNycXgh0WgwHOD3S1PKEwi8?= =?us-ascii?Q?aNowyz73N+9qV5AKZcEB/4Ys3eYrNa59875+Pim2puqYzYYnjKXAx8cIfbR2?= =?us-ascii?Q?hd25E9AunBjfCz1u8/LzNHzIUxVlcWDvajk9/v7s4uOw6F5HMjjT3zJKAEX8?= =?us-ascii?Q?vgv6VV/0NVH5oAfdRopELfNmxJHoW38P35KG0SMKtd6jk2JGKpWiFxKV5Ebu?= =?us-ascii?Q?EicT0/35lljh6zMutdGsQaSiDNecBhbmAa/8rq0NNkgplyhgTOPYm/Yfn/+4?= =?us-ascii?Q?CTrmcyEbtsVK7a+cvGVdWS//6vGv+vfXknVlm7RuXsMY9b+U2UVMtDYAaYL9?= =?us-ascii?Q?fakHvKbRr9kzdRaB1nuuXjx5fGwELhnulvwIkSsU2W7dh6z5AP0YP+fMCRLl?= =?us-ascii?Q?timA6Vejtc/vmmtMyRwwycuZafkF1Z1arLpqTNSldbP/pnFckmFUOfG1i564?= =?us-ascii?Q?JiJ9dWWvLxax1mqps49ELB0CAbFE0eM2xP5vKYbKHEnz0Uc1hWM3c13/fGkF?= =?us-ascii?Q?YcAVyqCx5BnaQhgOtF1nC2Gu3u3jr4+4Lm0Up0jaueQOTe3OtXrB?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30b8dccf-16a3-4adc-ec5d-08def454f331 X-MS-Exchange-CrossTenant-AuthSource: DB8PR04MB6858.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2026 07:24:42.8861 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HHVZnCQ2d3znPmg0NknjFWv7MRDeSKI/I51AEvHK0b5UsNRvTZq+o3xlWpU1wZAFAuqW/gp9sPDbcQCYkvLIGzA1iW/emifMNoMfbSGQ9MTS0x9KR5me+ceFjt75gEBG X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9233 Content-Type: text/plain; charset="utf-8" From: Zhipeng Wang probe() sets up the chained handlers without first masking the input interrupts, and remove() leaves the CHANMASK registers untouched. For a built-in driver this happened to be harmless because CHANMASK resets to all-masked, but once the driver can be unloaded and reloaded a child interrupt left unmasked at unload time survives in hardware. On the next probe() the parent interrupts are re-mapped and unmasked before the new domain is ready, so a still-asserted line immediately storms the parent with no handler to service it. Mask all interrupts in probe() before wiring up the chained handlers, and again in remove() so the hardware is left quiesced for the next probe(). Note CHANMASK uses inverted polarity (a set bit enables the interrupt), so masking means writing zero. This mirrors the sibling NXP chained mux irq-imx-intmux.c, which has masked all sources in both probe() and remove() since commit 2fbb13961e74 ("irqchip: Add NXP INTMUX interrupt multiplexer support"). Signed-off-by: Zhipeng Wang --- Changes in v3: - New patch. Masks all CHANMASK interrupts in probe() and remove() to prevent the interrupt storm on module reload reported by Sashiko AI on v2. drivers/irqchip/irq-imx-irqsteer.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/irqchip/irq-imx-irqsteer.c b/drivers/irqchip/irq-imx-i= rqsteer.c index 4a2fe8ba97f5..0c9c99f1141a 100644 --- a/drivers/irqchip/irq-imx-irqsteer.c +++ b/drivers/irqchip/irq-imx-irqsteer.c @@ -236,6 +236,10 @@ static int imx_irqsteer_probe(struct platform_device *= pdev) if (irqsteer_has_chanctrl(data->devtype_data)) writel_relaxed(BIT(data->channel), data->regs + CHANCTRL); =20 + /* mask all interrupts before setting up the chained handlers */ + for (i =3D 0; i < data->reg_num; i++) + writel_relaxed(0, data->regs + CHANMASK(i, data->reg_num)); + data->domain =3D irq_domain_create_linear(dev_fwnode(&pdev->dev), data->r= eg_num * 32, &imx_irqsteer_domain_ops, data); if (!data->domain) { @@ -279,6 +283,11 @@ static void imx_irqsteer_remove(struct platform_device= *pdev) struct irqsteer_data *irqsteer_data =3D platform_get_drvdata(pdev); int hwirq, i; =20 + /* mask all interrupts so a stale line cannot storm on the next probe */ + for (i =3D 0; i < irqsteer_data->reg_num; i++) + writel_relaxed(0, irqsteer_data->regs + + CHANMASK(i, irqsteer_data->reg_num)); + for (i =3D 0; i < irqsteer_data->irq_count; i++) { if (!irqsteer_data->irq[i]) break; --=20 2.34.1 From nobody Tue Sep 29 13:20:31 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011036.outbound.protection.outlook.com [52.101.65.36]) (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 5B87D3C1983 for ; Fri, 7 Aug 2026 07:24:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.36 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786087501; cv=fail; b=tQYKGXAlwSJs64Dsz05MtGVhldkZxSxqIe5MtlQLJTdUyJ6d9ylo6FmFDl2gyqLDUNJDJLHlStZFTSE2ow7hpUp1tk9McB+fnBfsgOXJKRqddmUAoQVkd1rHai+xDT4XkVCxDCVl1FArsVRE18bo668zoVnL6Gduoxhvtz31WFI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786087501; c=relaxed/simple; bh=5ZXNYbkgM9tJOJTkRE1GvBXclXQMIYQQxITjmYwWFms=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=KE4ya3pomLooq0lI9O5VHDcCkrnqr/B4nYFIajRB3nHp9i54WMPBPxYpHFRxAYjcvEKUUjNUXeV12+gUMcnMv/pGifLmHlX+BzRGux2K2ldRqISrZuy2DPBPcu4i9UmusIuh9668PgyVA/YhPR0o6S7i46vmtRFB/KniSQi+oh8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=vvz0rZlE; arc=fail smtp.client-ip=52.101.65.36 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="vvz0rZlE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ov886/CHk9k0/QTKt7to4pnKwvmFMHN/cgMb55wD1ePHnj0auxGvxSp1r+6+/HFV+fb9KQo4rhXfBHuQ6Ifte29Hdzi9qRwMKqj62zclbuk+Zdv+ajLabwz/bp0Jq2tU0Ovmkyl/Ubq3XSwAtETxftotsdoBFyYEWkhV9uHV/kmDk7YUbE5RYGQGOO4NA8xZki6I0hgiYnA3/hRV6r9CH0bBtsFbYCFTZTuoAC+RxRlfGv01h1oQhdyT6CO+xqbb5JgMNqiMOSAvExlj7M479cbXRyTKbSMaskzPu7cCt0nQtcgWwxCC4s6j2vaDFa/0bgSyQqftG0rKf+DLbtJOLw== 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=J0SRXHMAqE+PYATKunHCXjPTtvCifr4YjxrbQ1ZX6fQ=; b=c1w46LP4+18TwiL3yx6nEZJNzgaPSCGLYE5zKTSISsXz9pbnoqNOfN8F++4BoSBj+uRMHktW8/dhU8akc1LfputD9NJOPngJ+1hNS9lC1y9qqKw1AQA6M0bWdQh3sRbtC9Eq4fz3kZhphcawex3DaFLCMzBgBAF3ngjPAVuR3zMNwtivi+pgY9IWX1wLQlcDT+OmM8G3PDMLXCAuR28Hu69+wfcp/KdLh6yiW3Bb2lrEUZVUmgI9VQP7r4dZyVgXIaU31HRMq7g24QLDwi/CpzjNXfsoqgNrznPNc2lJUHkM3RK1AVk5JmtlMHEergPdM+zbRHiReQTVgmi7VbBHWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J0SRXHMAqE+PYATKunHCXjPTtvCifr4YjxrbQ1ZX6fQ=; b=vvz0rZlEH4EU0EsR9+QFYvKWma0QpG7hj2P0hGxNtk+hPb7Ozw6l5mRxP3PD1fJ3GQbAQDSqnDl/iqA8ZyhwfCKFNOTqS4pVXdh2mYUDBtfxn95fpX3eKsnZRgQuUFeriet7DYkR6lf2VmNF40Iz7abXo/vKkedQheqcx8sN7H3V0+aZAKerJnB2gML8n3NiDmEjnRXiKZbysDOfKTpd9a6ohPCWRphgzPIOBGeFAYcWWuSfs35Uwtfm1e3Kfobzw2XQdpk+8ShkNAV9hbPhVXKND2+rQRpoJHTryEmLhFtQ59N06gRP9XG/OdkKydZdvVAYVeEeq5Yeynfb0US4bA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from DB8PR04MB6858.eurprd04.prod.outlook.com (2603:10a6:10:113::9) by DB9PR04MB9233.eurprd04.prod.outlook.com (2603:10a6:10:361::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.21; Fri, 7 Aug 2026 07:24:49 +0000 Received: from DB8PR04MB6858.eurprd04.prod.outlook.com ([fe80::bc6f:5fd7:462:d0b5]) by DB8PR04MB6858.eurprd04.prod.outlook.com ([fe80::bc6f:5fd7:462:d0b5%4]) with mapi id 15.21.0292.021; Fri, 7 Aug 2026 07:24:49 +0000 From: Zhipeng.wang_1@oss.nxp.com To: Thomas Gleixner , Marc Zyngier , Frank Li Cc: Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Jindong Yue , xuegang.liu@nxp.com, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 4/4] irqchip/imx-irqsteer: Allow building as module Date: Fri, 7 Aug 2026 16:23:46 +0900 Message-Id: <20260807072346.1222389-5-Zhipeng.wang_1@oss.nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com> References: <20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI3PR01CA0008.apcprd01.prod.exchangelabs.com (2603:1096:4:296::7) To DB8PR04MB6858.eurprd04.prod.outlook.com (2603:10a6:10:113::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB8PR04MB6858:EE_|DB9PR04MB9233:EE_ X-MS-Office365-Filtering-Correlation-Id: dc20942d-ddeb-4585-93be-08def454f72c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|19092799006|376014|23010399003|11063799006|56012099006|10067099003|3023799007|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: UbuXwEDMb+hJdSg4is6lqI5WMWvp/9pkFAnf3vPYUntfcH1pPm2UiUZA8Yw4srB6UamidpeQd1YH9o67Bmq45n0wYXXSefoornXJukkhk3L4fPrmPLeByl+yALIc/OqssL/ZJ95Kkzp/43qnNgv4INWKd2+zIoEAFS9uAR/oiP6okGj5/kB7y6P/LCArEO0uhH0/a7r91llhTkmfB0FtvuOreKv7nuoLEMlA6vKLomc2lsblA3TkY+/IMYX7aJRwJMiREGNqKbMFDjju8fTPpW5gW2Z+Bm6JhQcD655aWFVYORN/0OnhZNKYDghD+P8/5YWhrDhCTR1SX0kfL8lHbWSq0ZWmNTZGFnIuUoFzvZNc6Wnk02f+kR4Vg5RIrktCz/i0OqHi4VSBRF5RGBzyNohVtEYWkCu5qnUdN8nxTY5oug+w4yMi+9p98KBPTqWckvS71sswJAIo7NiH5PLh+yU6Rkc4eMx6czCOw8N6rAEYjBtzMnir62becO8VqTDCxP2IrilzDm5K7230rnQKa5Ufs5XpB7U/FO1psGHHcQwSo4oOXNP7xM4FSNKXQahPHUtI52xWnbzl1QI42c1FpV2y9SQZOJkjqx9qfZtgaX00DEAhxmZOZBd5/fARxFEG7fxIT+ngYqCMGJYDPRRlYXhq8JtPvFcIXQCeS/tdAEc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR04MB6858.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(19092799006)(376014)(23010399003)(11063799006)(56012099006)(10067099003)(3023799007)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3lgUxmpaj8JRjUw/e90bv7Ir5RaE8Rdv2RINQJrptgixeIeVQznCTH/z43eU?= =?us-ascii?Q?x8whK3j+XbctIzdxfpN1WcPktROIRlSpXKqEn35yaVp0W8DgsaNoRa8zILyA?= =?us-ascii?Q?5YVKHGbVIul8wAlLZ0Kq3ogLtbYzK8e3NsXnUmUmwZgXs43Z+Gta2IQ3e68d?= =?us-ascii?Q?e8h/jPQjk08PbAsmFJ0tDHAF8Rme6KC/x2OkhFCxugryGlZMk12WxWSKv9A0?= =?us-ascii?Q?E3yU4ios5hdbl9Cimwu3TA7PFxESL/ZrFY+g+vDV9DEFTcDuLtzrbW6STPrB?= =?us-ascii?Q?z7JXTEZJUDIQv5xy/Zo8eb5i8W1PjDlY55oyn1IfDTnLGE8iQ5FrzkXpu286?= =?us-ascii?Q?Oiziy7fshfuGYizMTaztUPUKRK5n1p/CQ3kJ0M30PlgloV2GbnfxRXWlMudh?= =?us-ascii?Q?ZUimGGdbIJHIr5YWTu0+RBYeBZur0RVsS6EcrC1pz+Vt/+6g7a+2+bXrJiYd?= =?us-ascii?Q?59H8sWR6VU7Snkz4Sg2AqbhHXaJL+Ya8gQlBr5ksg1MBKBvi/mjHw69hvotU?= =?us-ascii?Q?rbLFKfxKLCTH2PR34a3SaHtupJDPiA6nnJNtG7aC+d4pGv0m3wHIo2Y9ukH6?= =?us-ascii?Q?NSld6uYKT/NgL+M7wdpEtrk98UWuSJvaSflra3ZqTodHhi14qD9wdixnJDAx?= =?us-ascii?Q?RJl1M89mBX4t1RH/JEGzthBJSaOYpaZthu4Sc0O5vKIgRhJWqFKKK5OPkZnT?= =?us-ascii?Q?gyL3cTVNelqPb/huMgoFKdh6vfipp1TnoFgHOneiwgZKL/HcFwJCO/kRtXxQ?= =?us-ascii?Q?ilRdpX3n1OCd3x5MXU8bNIUqwXrSX5vWfW+hOlXmEFndgidtxg//FUxBRsUn?= =?us-ascii?Q?UKKjzeakLze2z3rWxB47j0887m9vNrk22lpqj2PmKUfMVyS2e5Fht/iwJKUr?= =?us-ascii?Q?IC27Z/qWSlT+43j0suq8Ob2Xls5+86fe5d0h6z7HLACxYfbSVoRyKY17Qclu?= =?us-ascii?Q?loLkfWNRyjKn3wdvCxjfn7Ne7rhVV3FTSNLuVzkUKs124Erm67a6fgKVaEBF?= =?us-ascii?Q?VDZMbNSwHqlMbrRNHIV8HC6Gc5ygzV1HKWVb6db+GJgmQLLPiJtt3lP15ikn?= =?us-ascii?Q?Sg/zmw/Y1MyU1lwqRtIuuWOU2HFFGIv2WCxjP+3CaWpQklrMBWeqo6A9rrri?= =?us-ascii?Q?RMrfvl8zjS/c2/OfwCD9XCoWQre1NELJiRELJ+kl14q1sodzJu9qEaLKeDRf?= =?us-ascii?Q?u/QMhdtmSzmbavH3TOWOdBgsfkmISBnhFIORXqM49Zo0zrGGTR5bs128hOws?= =?us-ascii?Q?rbUS93e43Gjktukhe43tejjhmxqn8FRDMkkXraqQ151MavQT/ftmG2CGaNIg?= =?us-ascii?Q?5RkM6kjs2W/bNGdFm3Ihg5eK0JrBZwEKGX5QIO30ewuym1Xlcdc4SiQJR2Kt?= =?us-ascii?Q?zknO9wqkrwxbp/Ah/pwNhTi4cQOxG5GeIRMTZHPwF20G8i9VewF0Y0GJLyLI?= =?us-ascii?Q?I1wdI8tdxOwmCIZJqNb3FaJIzENjfxVgZTvSfzb+0y4fcebULK6l0fjGcnxV?= =?us-ascii?Q?nt/be8hxym4FRSewlyrSDjjzgneRylZdzrc49cEu2qnfAR/14dfrpM2nMtNy?= =?us-ascii?Q?8wuZ2IO0gK/pmxes0cwxtU/ReVPA7+WTgK9LgJhRnuWeq9qeqRBeKHmlFb/i?= =?us-ascii?Q?/7fji+6qBQehmunqr6ZCZR8lFL/fnbGj6YwKV1VxHKbNdY9DiU/GCtp5qm8C?= =?us-ascii?Q?foqZNNzyEykPboh75JvHKu6hm5Z8BwAhBhmsIQJ1CdEAV88KuksCZ+arQe30?= =?us-ascii?Q?YQv84On2BgW4hQcanoMg6sKzbTXkXWHnkZo34yJiXuFdMJmWut4I?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: dc20942d-ddeb-4585-93be-08def454f72c X-MS-Exchange-CrossTenant-AuthSource: DB8PR04MB6858.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2026 07:24:49.5585 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iHzf0hzaDJcERlEY4A5UBH33uuTZilmTVutCmj3QKyCrrR+16DZAmCDBVnKV8h0V67bEDJLjlsboRagAoBnAPoRnqapHJybByy85aRgCmM/+RsI1NfGca/FkD3vJsQlS X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9233 Content-Type: text/plain; charset="utf-8" From: Jindong Yue Make the driver buildable as a module by turning the Kconfig symbol into a tristate and using module_platform_driver() instead of builtin_platform_driver(). Now that the driver can be unloaded and reloaded, let the driver core own the clock and runtime PM lifetime so that remove() does not have to hand-balance them: - acquire the clock with devm_clk_get_enabled() instead of a bare devm_clk_get() followed by a manual clk_prepare_enable(), so it is prepared/enabled for the device lifetime and released on unbind; - keep only clk_enable()/clk_disable() in the runtime PM callbacks, since prepare/unprepare is now handled once by devres; - enable runtime PM with devm_pm_runtime_set_active_enabled(), which marks the device active (matching the enabled clock) and disables runtime PM on unbind. With the clock and runtime PM owned by devres, the probe() error path and remove() only need to tear down the IRQ mappings and the domain. Signed-off-by: Jindong Yue Signed-off-by: Zhipeng Wang --- Changes in v3: - Let devres own the clock and runtime PM: acquire the clock with devm_clk_get_enabled() and enable runtime PM with devm_pm_runtime_set_active_enabled(), dropping the manual pm_runtime_get_sync()/pm_runtime_disable()/clk_disable_unprepare() balancing that v2 open-coded in remove() (Frank Li). - The IRQ mapping disposal and the CHANMASK masking that v2 folded into this patch are now separate patches (2/4 and 3/4). drivers/irqchip/Kconfig | 2 +- drivers/irqchip/irq-imx-irqsteer.c | 39 ++++++++++++++++-------------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig index 42f2278a702d..07db3b678f94 100644 --- a/drivers/irqchip/Kconfig +++ b/drivers/irqchip/Kconfig @@ -560,7 +560,7 @@ config CSKY_APB_INTC the controller's register. =20 config IMX_IRQSTEER - bool "i.MX IRQSTEER support" + tristate "i.MX IRQSTEER support" depends on ARCH_MXC || ARCH_S32 || COMPILE_TEST default y if ARCH_MXC || ARCH_S32 select IRQ_DOMAIN diff --git a/drivers/irqchip/irq-imx-irqsteer.c b/drivers/irqchip/irq-imx-i= rqsteer.c index 0c9c99f1141a..e62862617b8d 100644 --- a/drivers/irqchip/irq-imx-irqsteer.c +++ b/drivers/irqchip/irq-imx-irqsteer.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -193,7 +194,7 @@ static int imx_irqsteer_probe(struct platform_device *p= dev) return PTR_ERR(data->regs); } =20 - data->ipg_clk =3D devm_clk_get(&pdev->dev, "ipg"); + data->ipg_clk =3D devm_clk_get_enabled(&pdev->dev, "ipg"); if (IS_ERR(data->ipg_clk)) return dev_err_probe(&pdev->dev, PTR_ERR(data->ipg_clk), "failed to get ipg clk\n"); @@ -226,12 +227,6 @@ static int imx_irqsteer_probe(struct platform_device *= pdev) return -ENOMEM; } =20 - ret =3D clk_prepare_enable(data->ipg_clk); - if (ret) { - dev_err(&pdev->dev, "failed to enable ipg clk: %d\n", ret); - return ret; - } - /* steer all IRQs into configured channel */ if (irqsteer_has_chanctrl(data->devtype_data)) writel_relaxed(BIT(data->channel), data->regs + CHANCTRL); @@ -244,8 +239,7 @@ static int imx_irqsteer_probe(struct platform_device *p= dev) &imx_irqsteer_domain_ops, data); if (!data->domain) { dev_err(&pdev->dev, "failed to create IRQ domain\n"); - ret =3D -ENOMEM; - goto err_clk; + return -ENOMEM; } irq_domain_set_pm_device(data->domain, &pdev->dev); =20 @@ -266,15 +260,22 @@ static int imx_irqsteer_probe(struct platform_device = *pdev) =20 platform_set_drvdata(pdev, data); =20 - pm_runtime_set_active(&pdev->dev); - pm_runtime_enable(&pdev->dev); + ret =3D devm_pm_runtime_set_active_enabled(&pdev->dev); + if (ret) + goto err_irq; =20 return 0; =20 +err_irq: + for (i =3D 0; i < data->irq_count; i++) { + if (!data->irq[i]) + break; + + irq_set_chained_handler_and_data(data->irq[i], NULL, NULL); + irq_dispose_mapping(data->irq[i]); + } err_domain: irq_domain_remove(data->domain); -err_clk: - clk_disable_unprepare(data->ipg_clk); return ret; } =20 @@ -302,8 +303,6 @@ static void imx_irqsteer_remove(struct platform_device = *pdev) hwirq)); =20 irq_domain_remove(irqsteer_data->domain); - - clk_disable_unprepare(irqsteer_data->ipg_clk); } =20 #ifdef CONFIG_PM @@ -333,7 +332,7 @@ static int imx_irqsteer_suspend(struct device *dev) struct irqsteer_data *irqsteer_data =3D dev_get_drvdata(dev); =20 imx_irqsteer_save_regs(irqsteer_data); - clk_disable_unprepare(irqsteer_data->ipg_clk); + clk_disable(irqsteer_data->ipg_clk); =20 return 0; } @@ -343,7 +342,7 @@ static int imx_irqsteer_resume(struct device *dev) struct irqsteer_data *irqsteer_data =3D dev_get_drvdata(dev); int ret; =20 - ret =3D clk_prepare_enable(irqsteer_data->ipg_clk); + ret =3D clk_enable(irqsteer_data->ipg_clk); if (ret) { dev_err(dev, "failed to enable ipg clk: %d\n", ret); return ret; @@ -366,6 +365,7 @@ static const struct of_device_id imx_irqsteer_dt_ids[] = =3D { { .compatible =3D "nxp,s32n79-irqsteer", .data =3D &s32n79_data }, {}, }; +MODULE_DEVICE_TABLE(of, imx_irqsteer_dt_ids); =20 static struct platform_driver imx_irqsteer_driver =3D { .driver =3D { @@ -376,4 +376,7 @@ static struct platform_driver imx_irqsteer_driver =3D { .probe =3D imx_irqsteer_probe, .remove =3D imx_irqsteer_remove, }; -builtin_platform_driver(imx_irqsteer_driver); +module_platform_driver(imx_irqsteer_driver); + +MODULE_DESCRIPTION("i.MX IRQSTEER interrupt multiplexer/remapper driver"); +MODULE_LICENSE("GPL"); --=20 2.34.1