All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] x86/irq: fixes for CPU hot{,un}plug
@ 2024-06-13 16:56 Roger Pau Monne
  2024-06-13 16:56 ` [PATCH v3 1/3] x86/irq: deal with old_cpu_mask for interrupts in movement in fixup_irqs() Roger Pau Monne
                   ` (3 more replies)
  0 siblings, 4 replies; 22+ messages in thread
From: Roger Pau Monne @ 2024-06-13 16:56 UTC (permalink / raw)
  To: xen-devel; +Cc: Roger Pau Monne, Jan Beulich, Andrew Cooper

Hello,

The following series aim to fix interrupt handling when doing CPU
plug/unplug operations.  Without this series running:

cpus=`xl info max_cpu_id`
while [ 1 ]; do
    for i in `seq 1 $cpus`; do
        xen-hptool cpu-offline $i;
        xen-hptool cpu-online $i;
    done
done

Quite quickly results in interrupts getting lost and "No irq handler for
vector" messages on the Xen console.  Drivers in dom0 also start getting
interrupt timeouts and the system becomes unusable.

After applying the series running the loop over night still result in a
fully usable system, no  "No irq handler for vector" messages at all, no
interrupt loses reported by dom0.  Test with x2apic-mode={mixed,cluster}.

I've attempted to document all code as good as I could, interrupt
handling has some unexpected corner cases that are hard to diagnose and
reason about.

Some XenRT testing is undergoing to ensure no breakages.

Thanks, Roger.

Roger Pau Monne (3):
  x86/irq: deal with old_cpu_mask for interrupts in movement in
    fixup_irqs()
  x86/irq: handle moving interrupts in _assign_irq_vector()
  x86/irq: forward pending interrupts to new destination in fixup_irqs()

 xen/arch/x86/include/asm/apic.h |   5 +
 xen/arch/x86/irq.c              | 163 +++++++++++++++++++++++++-------
 2 files changed, 132 insertions(+), 36 deletions(-)

-- 
2.45.2



^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2024-06-19  9:10 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-13 16:56 [PATCH v3 0/3] x86/irq: fixes for CPU hot{,un}plug Roger Pau Monne
2024-06-13 16:56 ` [PATCH v3 1/3] x86/irq: deal with old_cpu_mask for interrupts in movement in fixup_irqs() Roger Pau Monne
2024-06-17 13:18   ` [PATCH v3 for-4.19 " Jan Beulich
2024-06-18  8:11     ` Oleksii K.
2024-06-18 11:15     ` Roger Pau Monné
2024-06-13 16:56 ` [PATCH v3 2/3] x86/irq: handle moving interrupts in _assign_irq_vector() Roger Pau Monne
2024-06-17 13:31   ` [PATCH v3 for-4.19 " Jan Beulich
2024-06-18  8:16     ` Oleksii K.
2024-06-18 11:22     ` Roger Pau Monné
2024-06-13 16:56 ` [PATCH v3 3/3] x86/irq: forward pending interrupts to new destination in fixup_irqs() Roger Pau Monne
2024-06-17 13:41   ` Jan Beulich
2024-06-18 11:30     ` Roger Pau Monné
2024-06-18 14:34       ` Jan Beulich
2024-06-18 14:50         ` Roger Pau Monné
2024-06-18 16:30           ` Jan Beulich
2024-06-19  7:05             ` Roger Pau Monné
2024-06-19  7:24               ` Jan Beulich
2024-06-19  8:32                 ` Roger Pau Monné
2024-06-19  9:10                   ` Jan Beulich
2024-06-14  7:28 ` [PATCH v3 0/3] x86/irq: fixes for CPU hot{,un}plug Roger Pau Monné
2024-06-14 11:52   ` Oleksii K.
2024-06-14 12:33     ` Roger Pau Monné

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.