summaryrefslogtreecommitdiff
path: root/arch/x86_64/kernel/io_apic.c
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2006-10-04 02:16:50 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-04 07:55:28 -0700
commite500f57436b9056a245216c53113613928155eba (patch)
tree2b93aae3dfbe82fd5387ec7e0cb5945951655d07 /arch/x86_64/kernel/io_apic.c
parent23d0b8b053391afe15c9667d80de77ca88e18b8b (diff)
downloadlwn-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.c4
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;