diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2006-10-04 02:16:50 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 07:55:28 -0700 |
commit | e500f57436b9056a245216c53113613928155eba (patch) | |
tree | 2b93aae3dfbe82fd5387ec7e0cb5945951655d07 /arch/x86_64/kernel/io_apic.c | |
parent | 23d0b8b053391afe15c9667d80de77ca88e18b8b (diff) | |
download | lwn-e500f57436b9056a245216c53113613928155eba.tar.gz lwn-e500f57436b9056a245216c53113613928155eba.zip |
[PATCH] genirq: x86_64 irq: Make the external irq handlers report their vector, not the irq number
This is a small pessimization but it paves the way for making this information
per cpu. Which allows the the maximum number of IRQS to become NR_CPUS*224.
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>
Diffstat (limited to 'arch/x86_64/kernel/io_apic.c')
-rw-r--r-- | arch/x86_64/kernel/io_apic.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c index bb16f3790f09..9f849492c296 100644 --- a/arch/x86_64/kernel/io_apic.c +++ b/arch/x86_64/kernel/io_apic.c @@ -615,6 +615,7 @@ next: } vector = current_vector; + vector_irq[vector] = irq; IO_APIC_VECTOR(irq) = vector; return vector; @@ -649,7 +650,6 @@ static void ioapic_register_intr(int irq, int vector, unsigned long trigger) else set_irq_chip_and_handler(irq, &ioapic_chip, handle_edge_irq); - set_intr_gate(vector, interrupt[irq]); } static void __init setup_IO_APIC_irqs(void) @@ -1420,7 +1420,6 @@ static inline void check_timer(void) */ disable_8259A_irq(0); vector = assign_irq_vector(0); - set_intr_gate(vector, interrupt[0]); /* * Subtle, code in do_timer_interrupt() expects an AEOI @@ -1671,7 +1670,6 @@ int create_irq(void) spin_unlock_irqrestore(&vector_lock, flags); if (irq >= 0) { - set_intr_gate(vector, interrupt[irq]); dynamic_irq_init(irq); } return irq; |