Skip to contentSkip to conversation

bus: mhi: ep: Use IRQF_NO_AUTOEN flag in request_irq()

PATCH Applied Yuho Choi 2 participants 3 messages Sep 23 – Sep 26

Subsystems (2)
lore
Share & tools
lore

Yuho Choi

author
#0 lore raw

PATCH 1/1 bus: mhi: ep: Use IRQF_NO_AUTOEN flag in request_irq()

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.

---
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(-)
drivers/bus/mhi/ep/main.c +2 -2
index db7ee6547eef..da498570113a 100644
@@ -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

Signature · 1 line
2.43.0
maintainer Reviewed-by on v1 1/1
#1 lore raw
Quoted 10 lines · Yuho Choi

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.

- Mani

Signature · 1 line
மணிவண்ணன் சதாசிவம்
maintainer Applied
#2 lore raw
In reply to Yuho Choi
Quoted 10 lines · Yuho Choi

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.

[...]

Applied, thanks!

[1/1] bus: mhi: ep: Use IRQF_NO_AUTOEN flag in request_irq()

      commit: 3ae2c076ed38afe76b4c223fbc2e87738a5b44dd

Best regards,

Signature · 1 line
மணிவண்ணன் சதாசிவம்