Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [High] The use of irq_chip_retrigger_hierarchy() silently drops pending interrupts for root-level irq_chips (like lapic_controller) during CPU hotplug, because it intentionally bypasses the outermost chip. --
commit 25a8009ce9e28c732ed15d13383d7819cd1539c8 Author: Naman Jain <[email protected]> x86/irq: Use irq_chip_retrigger_hierarchy() in fixup_irqs() This patch modifies fixup_irqs() to re-inject pending interrupts by walking the interrupt hierarchy using irq_chip_retrigger_hierarchy(), rather than relying solely on the outermost chip. It also introduces scoped guards for the descriptor locks and conditionally sets VECTOR_RETRIGGERED only when the retrigger operation succeeds. > diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c > --- a/arch/x86/kernel/irq.c > +++ b/arch/x86/kernel/irq.c [ ... ] > @@ -490,21 +490,19 @@ void fixup_irqs(void) [ ... ] > if (is_vector_pending(vector)) { > - desc = __this_cpu_read(vector_irq[vector]); > - > - raw_spin_lock(&desc->lock); > + guard(raw_spinlock)(&desc->lock); > data = irq_desc_get_irq_data(desc); > - chip = irq_data_get_irq_chip(data); > - if (chip->irq_retrigger) { > - chip->irq_retrigger(data); > + ret = irq_chip_retrigger_hierarchy(data); > + if (ret) > __this_cpu_write(vector_irq[vector], > VECTOR_RETRIGGERED); > - } > - raw_spin_unlock(&desc->lock); > } [Severity: High] Does this silently drop pending interrupts for root-level irq_chips like lapic_controller? Looking at irq_chip_retrigger_hierarchy(), it initializes its loop by stepping immediately to the parent data: kernel/irq/chip.c:irq_chip_retrigger_hierarchy() { for (data = data->parent_data; data; data = data->parent_data) if (data->chip && data->chip->irq_retrigger) return data->chip->irq_retrigger(data); return 0; } If the interrupt relies on a non-hierarchical root domain where parent_data is NULL, this loop will immediately exit and return 0. The valid irq_retrigger callback on the outermost leaf chip is never executed. Could this lead to lost hardware interrupts (such as legacy timer or ISA interrupts) during CPU hot-unplug for these devices? -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=2
