linux_dsm_epyc7002/arch/x86/kernel/apic
Thomas Gleixner 2cffad7bad x86/irq: Simplify hotplug vector accounting
Before a CPU is taken offline the number of active interrupt vectors on the
outgoing CPU and the number of vectors which are available on the other
online CPUs are counted and compared. If the active vectors are more than
the available vectors on the other CPUs then the CPU hot-unplug operation
is aborted. This again uses loop based search and is inaccurate.

The bitmap matrix allocator has accurate accounting information and can
tell exactly whether the vector space is sufficient or not.

Emit a message when the number of globaly reserved (unallocated) vectors is
larger than the number of available vectors after offlining a CPU because
after that point request_irq() might fail.

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.351193962@linutronix.de
2017-09-25 20:52:02 +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/irq: Simplify hotplug vector accounting 2017-09-25 20:52:02 +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