From: Naman Jain <[email protected]> Sent: Tuesday, August 18, 2026 
12:31 AM
> 
> On 8/18/2026 10:40 AM, Michael Kelley wrote:
> > From: Naman Jain <[email protected]> Sent: Monday, August 10, 
> > 2026 2:07 AM

[snip]

> >
> > Sashiko pointed out that irq_chip_retrigger_hierarchy() doesn't check
> > the outermost domain -- it immediately goes the parent. In v1 of this patch
> > series, you categorized this as a false positive. But I don't understand
> > your explanation. Even if there aren't currently any outermost domains
> > with a custom retrigger function, there could be at some point in the
> > future. So it seems wrong to skip it. But maybe I'm missing something.
> > Could you elaborate on your reasoning?
> >
> > Michael
> >
> 
> irq_chip_retrigger_hierarchy() deliberately skips the chip passed to it
> and begins with its parent, i.e. apic_retrigger_irq(). The new code was
> doing the same. However, if someone adds a custom .irq_retrigger, hoping
> that it would get executed, it would not.
> 
> Sashiko's example was valid in principle, but it is not relevant to
> these device interrupts because desc->irq_data is the outer
> MSI/IOAPIC/Hyper-V chip. The LAPIC data is its parent, not the starting
> data. I found no device IRQ in this path whose descriptor starts
> directly at lapic_controller.
> 
> I am all in for adding this as a fallback -
> +    if (chip->irq_retrigger)
> +        ret = chip->irq_retrigger(data);
> +    else
> +        ret = irq_chip_retrigger_hierarchy(data);
> 
> This should solve this problem while still covering the chips which can
> forget to add a retrigger function.
> 
> Please let me know if this looks good to you.

In principle, I think what you have is correct.  But there's a
problem in that irq_chip_retrigger_hierarchy() isn't defined
unless CONFIG_IRQ_DOMAIN_HIERARCHY=y.  try_retrigger()
is what you want, but it's static. You could add the #ifdef's here
like in try_retrigger(), but the same problem will occur in Patch 3
with msi_set_affinity(). Really need a non-static version of
try_retrigger(). Or maybe just doing the #ifdef's here and in
msi_set_affinity() is the simplest approach. I don't have a
strong opinion either way.  Sorry this is getting so messy ....

Michael

Reply via email to