linux/arch/x86/kernel/apic
Thomas Gleixner d6ffc6ac83 x86/vector: Respect affinity mask in irq descriptor
The interrupt descriptor has a preset affinity mask at allocation
time, which is usually the default affinity mask.

The current code does not respect that mask and places the vector at some
random CPU, which gets corrected later by a set_affinity() call. That's
silly because the vector allocation can respect the mask upfront and place
the interrupt on a CPU which is in the mask. If that fails, then the
affinity is broken and a interrupt assigned on any online CPU.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Juergen Gross <jgross@suse.com>
Tested-by: Yu Chen <yu.c.chen@intel.com>
Acked-by: Juergen Gross <jgross@suse.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Alok Kataria <akataria@vmware.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Rui Zhang <rui.zhang@intel.com>
Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Len Brown <lenb@kernel.org>
Link: https://lkml.kernel.org/r/20170913213156.431670325@linutronix.de
2017-09-25 20:52:03 +02:00
..
apic_common.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
apic_flat_64.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
apic_noop.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
apic_numachip.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
apic.c x86/apic: Move common APIC callbacks 2017-09-25 20:51:50 +02:00
bigsmp_32.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
htirq.c genirq/irqdomain: Update irq_domain_ops.activate() signature 2017-09-25 20:38:24 +02:00
hw_nmi.c kernel/watchdog: split up config options 2017-07-12 16:26:02 -07:00
io_apic.c x86/io_apic: Reevaluate vector configuration on activate() 2017-09-25 20:52:01 +02:00
ipi.c x86/kernel: Audit and remove any unnecessary uses of module.h 2016-07-14 15:06:41 +02:00
Makefile x86/apic: Sanitize 32/64bit APIC callbacks 2017-09-25 20:51:50 +02:00
msi.c x86/apic/msi: Force reactivation of interrupts at startup time 2017-09-25 20:52:00 +02:00
probe_32.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
probe_64.c x86/apic: Remove duplicated include from probe_64.c 2016-07-19 16:02:31 +02:00
vector.c x86/vector: Respect affinity mask in irq descriptor 2017-09-25 20:52:03 +02:00
x2apic_cluster.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
x2apic_phys.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
x2apic_uv_x.c x86/apic: Remove unused callbacks 2017-09-25 20:51:58 +02:00
x2apic.h x86/apic: Sanitize return value of apic.set_apic_id() 2017-09-25 20:51:48 +02:00