[PATCH v1] bus: mhi: ep: Use IRQF_NO_AUTOEN flag in request_irq()

From: Yuho Choi

Date: Wed Sep 23 2026 - 19:54:38 EST


mhi_ep_register_controller() sets IRQ_NOAUTOEN on the doorbell IRQ
descriptor before request_irq(), and the flag is never cleared on the
error paths or in mhi_ep_unregister_controller(), so it stays on the
descriptor after the IRQ is freed.

Pass IRQF_NO_AUTOEN to request_irq() instead. It keeps the IRQ disabled
until mhi_ep_power_up() enables it, without leaving state behind on the
descriptor.

Signed-off-by: Yuho Choi <oss.patchbox@xxxxxxxxx>
---
Compile-tested only (x86_64 and arm64 defconfig + CONFIG_MHI_BUS_EP=m, W=1).

drivers/bus/mhi/ep/main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/bus/mhi/ep/main.c b/drivers/bus/mhi/ep/main.c
index db7ee6547eef..da498570113a 100644
--- a/drivers/bus/mhi/ep/main.c
+++ b/drivers/bus/mhi/ep/main.c
@@ -1534,8 +1534,8 @@ int mhi_ep_register_controller(struct mhi_ep_cntrl *mhi_cntrl,

mhi_cntrl->index = ret;

- irq_set_status_flags(mhi_cntrl->irq, IRQ_NOAUTOEN);
- ret = request_irq(mhi_cntrl->irq, mhi_ep_irq, IRQF_TRIGGER_HIGH,
+ ret = request_irq(mhi_cntrl->irq, mhi_ep_irq,
+ IRQF_TRIGGER_HIGH | IRQF_NO_AUTOEN,
"doorbell_irq", mhi_cntrl);
if (ret) {
dev_err(mhi_cntrl->cntrl_dev, "Failed to request Doorbell IRQ\n");

base-commit: f0100363d8c374bd8e9ea7c9ba02744f0b802ca4
--
2.43.0