genirq/affinity: Provide smarter irq spreading infrastructure
authorThomas Gleixner <tglx@linutronix.de>
Wed, 14 Sep 2016 14:18:48 +0000 (16:18 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 14 Sep 2016 20:11:08 +0000 (22:11 +0200)
commit34c3d9819fda464be4f1bec59b63353814f76c73
tree752917d25a7099573d698595578a334cce9d78af
parent28f4b04143c56135b1ca742fc64b664ed04de6a4
genirq/affinity: Provide smarter irq spreading infrastructure

The current irq spreading infrastructure is just looking at a cpumask and
tries to spread the interrupts over the mask. Thats suboptimal as it does
not take numa nodes into account.

Change the logic so the interrupts are spread across numa nodes and inside
the nodes. If there are more cpus than vectors per node, then we set the
affinity to several cpus. If HT siblings are available we take that into
account and try to set all siblings to a single vector.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Christoph Hellwig <hch@lst.de>
Cc: axboe@fb.com
Cc: keith.busch@intel.com
Cc: agordeev@redhat.com
Cc: linux-block@vger.kernel.org
Link: http://lkml.kernel.org/r/1473862739-15032-3-git-send-email-hch@lst.de
include/linux/interrupt.h
kernel/irq/affinity.c