Now, Spreading the interrupt affinity info by a cpumask pointer is not enough, meets a problem[1] and hard to expand in the future. Fix it by: +-----------------------------------+ | | | struct cpumask *affinity | | | +-----------------------------------+ | +------------------v-------------------+ | | | struct irq_affinity_desc { | | struct cpumask mask; | | unsigned int is_managed : 1; | | }; | | | +--------------------------------------+ [1]:https://marc.info/?l=linux-kernel&m=153543887027997&w=2 Dou Liyang (3): genirq/affinity: Add a new interrupt affinity descriptor irq/affinity: Add is_managed into struct irq_affinity_desc irq/affinity: Fix a possible breakage drivers/pci/msi.c | 9 ++++----- include/linux/interrupt.h | 15 +++++++++++++-- include/linux/irq.h | 6 ++++-- include/linux/irqdomain.h | 6 ++++-- include/linux/msi.h | 4 ++-- kernel/irq/affinity.c | 38 +++++++++++++++++++++++++------------- kernel/irq/devres.c | 4 ++-- kernel/irq/irqdesc.c | 25 +++++++++++++++++-------- kernel/irq/irqdomain.c | 4 ++-- kernel/irq/msi.c | 7 ++++--- 10 files changed, 77 insertions(+), 41 deletions(-) -- 2.17.2