Re: [PATCH] genirq/PM: Re-enable chained interrupts after hibernation

From: Thomas Gleixner

Date: Tue Sep 08 2026 - 16:28:37 EST


On Sat, Sep 05 2026 at 23:27, Zhu Ling wrote:
> Chained interrupts remain enabled across suspend because they can be part
> of a wakeup path. Consequently, suspend_device_irq() does not set
> IRQS_SUSPENDED for them, and they do not have IRQF_FORCE_RESUME accounting.
>
> After restoring a hibernation image, the interrupt controller can have a
> chained parent interrupt masked while the restored descriptor still marks
> it started and enabled. For example, the restore kernel may initialize the
> controller without probing the driver that installs the chained handler.
> resume_irq() skips the parent in this state, leaving interrupts from the
> devices below it blocked.
>
> Pass the hibernation restore context from dpm_resume_noirq() to the IRQ PM
> code and force active chained interrupts through the existing force-resume
> path. Set the disabled and masked state before enabling the interrupt so
> that cached descriptor state cannot suppress the irqchip callback. Calling
> irq_startup() alone on an already started and enabled interrupt can skip
> the hardware access when the descriptor also records it as unmasked.
>
> Leave disabled and unstarted chained interrupts alone. Keep the existing
> behavior for ordinary resume, hibernation thaw and recovery, and the early
> syscore resume pass.
>
> Fixes: 0a0c5168df27 ("PM: Introduce functions for suspending and resuming device interrupts")

This fixes nothing than a theoretical problem hallucinated by a LLM and
we don't fix hallucinations.

If that would be a real world problem then this change would cure the
symptom and not the root cause.

Thanks,

tglx