From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from xmbghk7.mail.qq.com (xmbghk7.mail.qq.com [43.163.128.53]) (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 2E0D73191CE for ; Tue, 14 Jul 2026 13:29:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=43.163.128.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784035762; cv=none; b=IYznG7F3BQCf3ia0EpUgjou1pTSWfyXI9an0WiPVlM35SQ5sjmyNTzM1je8yI1bYfJFc6jj6GCd+1hIcjieZW43vsF/eUqJbbsD5JiTIIfVI4AGW7G6WSKufeJXJjPdC2niRW+ZwpzgQde9jUSd9oMRSV/hJPuGHka9/E305ras= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784035762; c=relaxed/simple; bh=kZnpwwAkmCQ1PwLzOVfjqSBRk7ikGucWInHzpIhB5P8=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=cEdycMd+3NOJPU2r8+XnYwO4BpqXkiWIcEb5ZL6fAwOOOsbt7L40LtirIIO5MdG8nNnhqrrxIHTbofyuwANsozMJPaNiEtwy1+CkKkNAMtfCQl1S0LLIx+hBtJzjm+oRZ1CLFCc/h+VC3pGFxUSId3KJ118b+SepZ7fY3QI51sw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=qq.com; spf=pass smtp.mailfrom=qq.com; dkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b=umaL3aKd; arc=none smtp.client-ip=43.163.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=qq.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=qq.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b="umaL3aKd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1784035758; bh=jYE1lRdALLx4vHobOJiTjDYmt+CsOTzJuU5X1GfmIBE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=umaL3aKdvery8RgHmgQEPZHm2DCNemY4t/+7CJxED1u5/qx/njb5XCXje+urtvo6Q JR3s/IPsTESTPjBglttJcdLAG7pdvfUFjuZmQQ8jSY0pq7AICcn6lkGlJA6engmSlt eQVGLTGNpjSnuQxRkOpyJtl/pvi3RsVSq3Zlwu1Q= Received: from localhost.localdomain ([116.128.244.169]) by newxmesmtplogicsvrsza63-0.qq.com (NewEsmtp) with SMTP id 74E34E85; Tue, 14 Jul 2026 21:29:14 +0800 X-QQ-mid: xmsmtpt1784035756taj2mqdi0 Message-ID: X-QQ-XMAILINFO: McQ2ZMlMYdZ8pZiFfIOerxfXD3bt3pAQqhBlrcPROYzgP4fzUfeI3KTDkEzDGq EnZgqxFHr3oECpzaH32NxemCfFilqVU0udj3gnOhBqlHYXbmnHbgdROH7YTUH0OmeUjKybtjwCoY bz86IpglCbP5G8Oh5Aaj9EyJaZkhUXt0S3PkjbvXYh3sfZgQM2l6pURVC90v8x2zds1I2XoeWn1x vC2yHXWq87K3cLdzdXKiOSdhZceLLx8ZxVxGTh0muDDfrUdlEPYOueeLOsAxF1zE4818EZkJWq5z yF/7FPSVneSu9jTLKTufwRbJRfUaDLMpT0/aIqLkbiZjGocrLZqNo3p1gC/4joTE1/0SvphqEYjl 0I0vp6FZ2dvyXX0zeo+rSSEpyxB8z+BbXjlQy7BTLZc75hgBvPCFCICSzmOdaQh0sKLGLZO4gOY1 H9X9LN89aWvITBD5rNtxBBPw2HG17owabeIjCjrPJ6bErDu38cHFfkzBOa78Fa4ZC/6MqAV54lso FkYoGAH/y0j/MTMy2ojoLlvWGD4/e2dcx4LjAvR7bZUN2S51o7j4zNq1TERMaoTPTNFSTwg6gpug bo6nBgV21UOK8AJjB6rURO6caMgqmYoy6qxt5VoIHlFPUhysn1JcOStgZ2ABOdfyxtzNsRsaL3dV Eo9NtNAKDGrpjSnuYmoHuBuXcp5cUT4HREa3IuEY52uYhqng72VrP1Yn7XiBeSK9JKWlTE3BubLg D0YGYbQuJl5VzfOQTi8Vs8braKn1Hky29grO6vezEDTYVl9sFStXXoXSzJW4cggRrxDaBkqxWwOb Qg7IuKG/pdM2pgLR8VpGB4MXOkZ9U1XwJFM+/usTxDGiaTERDaRuwm9OGoGTuJBdZEhhgdCrb687 gsQSgzs8I9ByXtZKtKFjc++mAcdQjGw+aGO6UcN+brD8XJMmBdxua5ri6JHMPNUoW6VM0n+aT0rq 2DWlr7XAAIF0LtDhthiJBFBrRmXWxeLITjkBSTO3hlCK2vrNEW4AT3PZZMFitP2H6WywQnDEntod xntdtJzTFpIgsbI1g69KnRfQlMxR90Is5lx5KMhlB/Zc03xxsjB/VRI1LHUhCM2yS3PhCyUe9c6V r12iNa X-QQ-XMRINFO: NI4Ajvh11aEjEMj13RCX7UuhPEoou2bs1g== From: Haofeng Li <920484857@qq.com> To: tglx@kernel.org Cc: linux-kernel@vger.kernel.org, Haofeng Li <13266079573@163.com>, Haofeng Li , Markus Stockhausen Subject: [PATCH 12/16] irqchip/realtek-rtl: unmap per-CPU bases on init failure Date: Tue, 14 Jul 2026 21:24:48 +0800 X-OQ-MSGID: <20260714132453.3302672-10-920484857@qq.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260714132453.3302672-1-920484857@qq.com> References: <20260714122351.3274006-1-lihaofeng@kylinos.cn> <20260714132453.3302672-1-920484857@qq.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Haofeng Li realtek_rtl_of_init() maps a separate register base for every present CPU. If mapping CPU n fails, mappings for earlier CPUs remain. Parent IRQ lookup and domain creation failures also leave all per-CPU mappings allocated. Add realtek_rtl_unmap_bases() and use it on every error path after mapping starts. Fixes: a1a35c09241f ("irqchip/irq-realtek-rtl: Add multicore support") Signed-off-by: Haofeng Li --- drivers/irqchip/irq-realtek-rtl.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/drivers/irqchip/irq-realtek-rtl.c b/drivers/irqchip/irq-realtek-rtl.c index 2ae3be7fa633..1f1dfa6e3d84 100644 --- a/drivers/irqchip/irq-realtek-rtl.c +++ b/drivers/irqchip/irq-realtek-rtl.c @@ -147,6 +147,18 @@ static void realtek_irq_dispatch(struct irq_desc *desc) chained_irq_exit(chip, desc); } +static void __init realtek_rtl_unmap_bases(void) +{ + int cpu; + + for_each_present_cpu(cpu) { + if (realtek_ictl_base[cpu]) { + iounmap(realtek_ictl_base[cpu]); + realtek_ictl_base[cpu] = NULL; + } + } +} + static int __init realtek_rtl_of_init(struct device_node *node, struct device_node *parent) { struct of_phandle_args oirq; @@ -155,8 +167,10 @@ static int __init realtek_rtl_of_init(struct device_node *node, struct device_no for_each_present_cpu(cpu) { realtek_ictl_base[cpu] = of_iomap(node, cpu); - if (!realtek_ictl_base[cpu]) + if (!realtek_ictl_base[cpu]) { + realtek_rtl_unmap_bases(); return -ENXIO; + } /* Disable all cascaded interrupts and clear routing */ for (unsigned int hw_irq = 0; hw_irq < RTL_ICTL_NUM_INPUTS; hw_irq++) { @@ -183,14 +197,19 @@ static int __init realtek_rtl_of_init(struct device_node *node, struct device_no parent_irq = of_irq_get(node, 0); } - if (parent_irq < 0) + if (parent_irq < 0) { + realtek_rtl_unmap_bases(); return parent_irq; - else if (!parent_irq) + } else if (!parent_irq) { + realtek_rtl_unmap_bases(); return -ENODEV; + } domain = irq_domain_create_linear(of_fwnode_handle(node), RTL_ICTL_NUM_INPUTS, &irq_domain_ops, NULL); - if (!domain) + if (!domain) { + realtek_rtl_unmap_bases(); return -ENOMEM; + } irq_set_chained_handler_and_data(parent_irq, realtek_irq_dispatch, domain); -- 2.25.1