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. 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

