[PATCH 0/4][RFC v2] x86/irq: Spread vectors on different CPUs

From: Chen Yu
Date: Fri Sep 01 2017 - 01:01:54 EST


This patch set tries to spread the vectors assigned on different
CPUs as much as possible. The requirement to do this came from
a hibernation issue encountered on a vector-heavily-used system
which has many multi queue devices on that, the CPUs failed to be
brought offline due to insufficient free vector slots on the
remaining CPUs. In theory this problem should be fixed in lastest
kernel, because the managed interrupt mechanism for multi queue
devices, which no longer migrates these interrupts. It simply shuts
them down and restarts them when the CPU comes back online. However
there is still one corner case that the solution mentioned above
does not cover, so this patch set tries to address this issue
by spreading the vectors for that case too.

The previous discussion is here:
https://patchwork.kernel.org/patch/9725227/
Thomas has given many useful suggestion on this, and this patch set
tries to address them one-by-one, please refer to the commit
description in '[PATCH 4/4] Spread the vectors by choosing the idlest
CPU' for detail.

Chen Yu (4):
x86/apic: Extend the defination for vector_irq
x86/apic: Record the number of vectors assigned on a CPU
x86/apic: Introduce the per vector cpumask array
x86/apic: Spread the vectors by choosing the idlest CPU

arch/x86/include/asm/hw_irq.h | 16 +++++-
arch/x86/kernel/apic/vector.c | 129 +++++++++++++++++++++++++++++++++++++-----
arch/x86/kernel/irq.c | 21 ++++---
arch/x86/kernel/irqinit.c | 10 ++--
arch/x86/lguest/boot.c | 3 +-
5 files changed, 148 insertions(+), 31 deletions(-)

--
2.7.4