diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2006-10-04 05:16:50 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 10:55:28 -0400 |
commit | e500f57436b9056a245216c53113613928155eba (patch) | |
tree | 2b93aae3dfbe82fd5387ec7e0cb5945951655d07 /arch/x86_64/kernel/irq.c | |
parent | 23d0b8b053391afe15c9667d80de77ca88e18b8b (diff) |
[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/irq.c')
-rw-r--r-- | arch/x86_64/kernel/irq.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86_64/kernel/irq.c b/arch/x86_64/kernel/irq.c index 609f97153b88..4542fb031994 100644 --- a/arch/x86_64/kernel/irq.c +++ b/arch/x86_64/kernel/irq.c | |||
@@ -105,7 +105,12 @@ skip: | |||
105 | asmlinkage unsigned int do_IRQ(struct pt_regs *regs) | 105 | asmlinkage unsigned int do_IRQ(struct pt_regs *regs) |
106 | { | 106 | { |
107 | /* high bit used in ret_from_ code */ | 107 | /* high bit used in ret_from_ code */ |
108 | unsigned irq = ~regs->orig_rax; | 108 | unsigned vector = ~regs->orig_rax; |
109 | unsigned irq; | ||
110 | |||
111 | exit_idle(); | ||
112 | irq_enter(); | ||
113 | irq = vector_irq[vector]; | ||
109 | 114 | ||
110 | if (unlikely(irq >= NR_IRQS)) { | 115 | if (unlikely(irq >= NR_IRQS)) { |
111 | printk(KERN_EMERG "%s: cannot handle IRQ %d\n", | 116 | printk(KERN_EMERG "%s: cannot handle IRQ %d\n", |
@@ -113,8 +118,6 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs) | |||
113 | BUG(); | 118 | BUG(); |
114 | } | 119 | } |
115 | 120 | ||
116 | exit_idle(); | ||
117 | irq_enter(); | ||
118 | #ifdef CONFIG_DEBUG_STACKOVERFLOW | 121 | #ifdef CONFIG_DEBUG_STACKOVERFLOW |
119 | stack_overflow_check(regs); | 122 | stack_overflow_check(regs); |
120 | #endif | 123 | #endif |