Re: [PATCH v3 5/5] watchdog: qcom: Register pretimeout interrupt as NMI

From: Mayank Rungta

Date: Thu Sep 03 2026 - 17:06:15 EST


Hi,

> > When a system is completely unresponsive due to an interrupt storm or
> > deadlocked CPU cores with standard interrupts disabled, a standard
> > watchdog pretimeout bark interrupt will fail to execute, preventing the
> > pretimeout governor from capturing CPU backtraces before the hardware
> > reset bite.
>
> [...]
>
> > - ret = devm_request_irq(dev, irq, qcom_wdt_isr, 0,
> > - "wdt_bark", &wdt->wdd);
> > - if (ret)
> > - return ret;
> > + wdt->irq = irq;
> > + irq_flags = IRQF_PERCPU | IRQF_NOBALANCING |
> > + IRQF_NO_AUTOEN | IRQF_NO_THREAD;
> > +
> > + ret = request_nmi(irq, qcom_wdt_isr, irq_flags,
> > + "wdt_bark", &wdt->wdd);
> > + if (ret) {
> > + /* Fallback to normal interrupt if NMI not supported */
> > + ret = devm_request_irq(dev, irq, qcom_wdt_isr, 0,
> > + "wdt_bark", &wdt->wdd);
>
> GPT noticed this IRQ is requested but never enabled (NO_AUTOEN)

For the NMI path: request_nmi() requires IRQF_NO_AUTOEN. To balance
this, enable_nmi(irq) is called immediately upon successful
registration in the probe function:

For the IRQ fallback: devm_request_irq() passes 0 (not irq_flags). In
__setup_irq(), when IRQF_NO_AUTOEN is absent, the core calls
irq_startup(), automatically enabling the interrupt line as it has
always done in mainline.

Both paths are therefore enabled upon probe.

Thanks,
Mayank