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