From: Zhipeng.wang_1@oss.nxp.com
To: Thomas Gleixner <tglx@kernel.org>, Marc Zyngier <maz@kernel.org>,
Frank Li <Frank.Li@nxp.com>
Cc: Radu Rendec <radu@rendec.net>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>,
Jindong Yue <jindong.yue@nxp.com>,
xuegang.liu@nxp.com, linux-kernel@vger.kernel.org,
imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 0/9] irqchip/imx-irqsteer: Allow building as module
Date: Thu, 8 Oct 2026 18:02:22 +0900 [thread overview]
Message-ID: <20261008090231.796511-1-Zhipeng.wang_1@oss.nxp.com> (raw)
From: Zhipeng Wang <zhipeng.wang_1@nxp.com>
This series makes the i.MX IRQSTEER driver buildable as a module, along
with the pre-existing bug fixes that become reachable once the driver
can be unbound and reloaded.
The fixes come first so they can be picked up (and backported) on their
own, followed by the runtime-PM/clock rework, the module conversion and
the irqdomain helper cleanup:
1. Call chained_irq_exit() on the handler error path.
2. Validate IRQ count before creating the domain (Fabio).
3. Dispose of the parent IRQ mappings in remove().
4. Convert to devm_pm_runtime_set_active_enabled() - fixes the
"Unbalanced pm_runtime_enable!" on unbind, with a Fixes tag so it can
be backported to stable (e.g. 6.18).
5. Let devres own the clock.
6. Mask all interrupts in probe().
7. Allow building as module.
8. genirq/irqdomain: add devm_irq_domain_create_linear().
9. Use devm_irq_domain_create_linear() in the driver.
Changes in v6:
- Split the runtime-PM fix out of the devres rework into its own patch
(patch 4) with Fixes: 4730d2233311, so the "Unbalanced
pm_runtime_enable!" fix can be backported to stable independently of
the clock rework (Fabio Estevam). devm_pm_runtime_set_active_enabled()
is now set up before the IRQ domain is created, so its error path just
bails out and no err_irq unwind is needed.
- Drop the err_irq and out labels in probe(); each failure path now
returns directly (Radu Rendec).
- In remove(), drop the runtime-PM reference taken by
pm_runtime_resume_and_get() with pm_runtime_put_noidle() (guarded by
the return value), so the usage count is not leaked and autosuspend
keeps working across module reload (Sashiko AI).
- Reorder so the Fixes-tagged patches come before the rework/cleanup.
- Rebased onto the current irq/core.
Changes in v5:
- Consolidate the three previously-scattered series/patches into one
coherent series (Thomas Gleixner).
v5: https://lore.kernel.org/r/20260821101039.4037925-1-Zhipeng.wang_1@oss.nxp.com
v4: https://lore.kernel.org/r/20260819090543.585131-1-Zhipeng.wang_1@oss.nxp.com
v3: https://lore.kernel.org/r/20260807072346.1222389-1-Zhipeng.wang_1@oss.nxp.com
v2: https://lore.kernel.org/r/20260728092219.525449-1-Zhipeng.wang_1@oss.nxp.com
v1: https://lore.kernel.org/r/20260724090136.3595894-1-Zhipeng.wang_1@oss.nxp.com
Fabio Estevam (1):
irqchip/imx-irqsteer: Validate IRQ count before creating domain
Jindong Yue (1):
irqchip/imx-irqsteer: Allow building as module
Zhipeng Wang (7):
irqchip/imx-irqsteer: Call chained_irq_exit() on the handler error
path
irqchip/imx-irqsteer: Dispose of parent IRQ mappings in remove()
irqchip/imx-irqsteer: Convert to devm_pm_runtime_set_active_enabled()
irqchip/imx-irqsteer: Mask all interrupts in probe()
irqchip/imx-irqsteer: Let devres own the clock
genirq/irqdomain: Add devm_irq_domain_create_linear()
irqchip/imx-irqsteer: Use devm_irq_domain_create_linear()
drivers/irqchip/Kconfig | 2 +-
drivers/irqchip/irq-imx-irqsteer.c | 74 ++++++++++++++++++------------
include/linux/irqdomain.h | 30 ++++++++++++
3 files changed, 75 insertions(+), 31 deletions(-)
base-commit: a0e1fdb96578ea562a03c487f70673d228824d0a
--
2.34.1
next reply other threads:[~2026-10-08 9:03 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-08 9:02 Zhipeng.wang_1 [this message]
2026-10-08 9:02 ` [PATCH v6 1/9] irqchip/imx-irqsteer: Call chained_irq_exit() on the handler error path Zhipeng.wang_1
2026-10-08 9:02 ` [PATCH v6 2/9] irqchip/imx-irqsteer: Validate IRQ count before creating domain Zhipeng.wang_1
2026-10-08 20:36 ` Frank Li
2026-10-08 9:02 ` [PATCH v6 3/9] irqchip/imx-irqsteer: Dispose of parent IRQ mappings in remove() Zhipeng.wang_1
2026-10-08 9:02 ` [PATCH v6 4/9] irqchip/imx-irqsteer: Convert to devm_pm_runtime_set_active_enabled() Zhipeng.wang_1
2026-10-08 20:41 ` Frank Li
2026-10-08 9:02 ` [PATCH v6 5/9] irqchip/imx-irqsteer: Mask all interrupts in probe() Zhipeng.wang_1
2026-10-08 9:02 ` [PATCH v6 6/9] irqchip/imx-irqsteer: Let devres own the clock Zhipeng.wang_1
2026-10-08 20:54 ` Frank Li
2026-10-08 9:02 ` [PATCH v6 7/9] irqchip/imx-irqsteer: Allow building as module Zhipeng.wang_1
2026-10-08 9:02 ` [PATCH v6 8/9] genirq/irqdomain: Add devm_irq_domain_create_linear() Zhipeng.wang_1
2026-10-08 9:02 ` [PATCH v6 9/9] irqchip/imx-irqsteer: Use devm_irq_domain_create_linear() Zhipeng.wang_1
2026-10-08 21:01 ` Frank Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261008090231.796511-1-Zhipeng.wang_1@oss.nxp.com \
--to=zhipeng.wang_1@oss.nxp.com \
--cc=Frank.Li@nxp.com \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=jindong.yue@nxp.com \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=radu@rendec.net \
--cc=s.hauer@pengutronix.de \
--cc=tglx@kernel.org \
--cc=xuegang.liu@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox