Re: [PATCH 0/3] x86/irq: Fix lost interrupts on CPU hot-unplug for Hyper-V PCI/MSI

Shradha Gupta <[email protected]>
Newsgroups gmane.linux.kernel.pci,gmane.linux.kernel
Message-ID <anHYJEeHlszuj/38@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
On Tue, Jul 28, 2026 at 01:51:14PM +0000, Naman Jain wrote:
> On CPU hot-unplug, fixup_irqs() re-injects interrupts that are still
> pending in the outgoing CPU's IRR via the irqchip's irq_retrigger()
> callback. The Hyper-V vPCI MSI irqchip never installs one, so such a
> pending interrupt is silently dropped, leading to lost interrupts, stalls
> and "No irq handler for vector" messages.
> 
> Patch 1 is the minimal, backportable fix (Fixes:/Cc: stable) that installs
> irq_chip_retrigger_hierarchy() on the Hyper-V PCI/MSI chip. Patch 2 then
> switches fixup_irqs() to call irq_chip_retrigger_hierarchy() directly, so
> the retrigger works for any stacked irqchip without a per-chip callback.
> Patch 3 drops the now-redundant irq_retrigger() initializations.
> This way, patch 2 and 3 do not need to be backported.

Thanks Naman, the series looks good to me.

I just have a small nit. In the old code, VECTOR_RETRIGGERED is set
unconditionally after calling chip->irq_retrigger(), regardless of its
return value. In the new code, VECTOR_RETRIGGERED is only set when
irq_chip_retrigger_hierarchy() returns non-zero. So retrigger failures
would now result in VECTOR_UNUSED instead of VECTOR_RETRIGGERED.

In practice this doesn't matter since apic_retrigger_irq() always returns
1, but it is technically a behavior change and I think it is a correct
one. Just that it might be worth noting this in the commit message to
avoid confusion.

Reviewed-by: Shradha Gupta <[email protected]>

> 
> The series follows the original RFC:
> Link: https://lore.kernel.org/all/87y0f3jhd6.ffs@fw13/
> 
> Naman Jain (3):
>   PCI: hv: Set irq_retrigger callback for the Hyper-V PCI MSI irqchip
>   x86/irq: Use irq_chip_retrigger_hierarchy() in fixup_irqs()
>   x86/irq, iommu/amd, PCI: Drop redundant irq_retrigger inits
> 
>  arch/x86/kernel/apic/io_apic.c |  2 --
>  arch/x86/kernel/apic/msi.c     |  4 +---
>  arch/x86/kernel/hpet.c         |  1 -
>  arch/x86/kernel/irq.c          | 23 +++++++----------------
>  drivers/iommu/amd/init.c       |  1 -
>  5 files changed, 8 insertions(+), 23 deletions(-)
> 
> 
> base-commit: 0d33d21e47d9dc66f91e44da3fc9220c74d93df7
> -- 
> 2.43.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.