On Fri, Jan 25, 2019 at 05:53:42PM +0800, Ming Lei wrote: > Hi, > > The current support for allocating interrupt sets requires that same 'max_vec' > and 'min_vec' is passed to pci_alloc_irq_vectors_affinity(), then driver has to > try to allocate again and again until it succeeds. > > This patch introduces .setup_affinity callback, and we can use it to > re-caculate interrupt sets and build affinity for each set after > irq vectors are allocated. > > Turns out both genirq/affinity and nvme code get simplified a lot. > > Please review and comment! > > Ming Lei (5): > genirq/affinity: move allocation of 'node_to_cpumask' to > irq_build_affinity_masks > genirq/affinity: allow driver to setup managed IRQ's affinity > genirq/affinity: introduce irq_build_affinity() > nvme-pci: simplify nvme_setup_irqs() via .setup_affinity callback > genirq/affinity: remove support for allocating interrupt sets > > drivers/nvme/host/pci.c | 97 +++++++++++++++++++++-------------------- > drivers/pci/msi.c | 14 ------ > include/linux/interrupt.h | 42 ++++++++++++------ > kernel/irq/affinity.c | 108 ++++++++++++++++++++++++---------------------- > 4 files changed, 133 insertions(+), 128 deletions(-) oops, forget to CC Keith. Thanks, Ming