mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
![Eric W. Biederman](/assets/img/avatar_default.png)
This refactors the irq handling code to make the vectors a per cpu resource so the same vector number can be simultaneously used on multiple cpus for different irqs. This should make systems that were hitting limits on the total number of irqs much more livable. [akpm@osdl.org: build fix] [akpm@osdl.org: __target_IO_APIC_irq is unneeded on UP] Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Rajesh Shah <rajesh.shah@intel.com> Cc: Andi Kleen <ak@muc.de> Cc: "Protasevich, Natalie" <Natalie.Protasevich@UNISYS.com> Cc: "Luck, Tony" <tony.luck@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
51 lines
1.2 KiB
C
51 lines
1.2 KiB
C
#ifndef _ASM_IRQ_H
|
|
#define _ASM_IRQ_H
|
|
|
|
/*
|
|
* linux/include/asm/irq.h
|
|
*
|
|
* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar
|
|
*
|
|
* IRQ/IPI changes taken from work by Thomas Radke
|
|
* <tomsoft@informatik.tu-chemnitz.de>
|
|
*/
|
|
|
|
#define TIMER_IRQ 0
|
|
|
|
/*
|
|
* 16 8259A IRQ's, 208 potential APIC interrupt sources.
|
|
* Right now the APIC is mostly only used for SMP.
|
|
* 256 vectors is an architectural limit. (we can have
|
|
* more than 256 devices theoretically, but they will
|
|
* have to use shared interrupts)
|
|
* Since vectors 0x00-0x1f are used/reserved for the CPU,
|
|
* the usable vector space is 0x20-0xff (224 vectors)
|
|
*/
|
|
|
|
/*
|
|
* The maximum number of vectors supported by x86_64 processors
|
|
* is limited to 256. For processors other than x86_64, NR_VECTORS
|
|
* should be changed accordingly.
|
|
*/
|
|
#define NR_VECTORS 256
|
|
|
|
#define FIRST_SYSTEM_VECTOR 0xef /* duplicated in hw_irq.h */
|
|
|
|
#define NR_IRQS (NR_VECTORS + (32 *NR_CPUS))
|
|
#define NR_IRQ_VECTORS NR_IRQS
|
|
|
|
static __inline__ int irq_canonicalize(int irq)
|
|
{
|
|
return ((irq == 2) ? 9 : irq);
|
|
}
|
|
|
|
#define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */
|
|
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
#include <linux/cpumask.h>
|
|
extern void fixup_irqs(cpumask_t map);
|
|
#endif
|
|
|
|
#define __ARCH_HAS_DO_SOFTIRQ 1
|
|
|
|
#endif /* _ASM_IRQ_H */
|