diff options
author | Yinghai Lu <yhlu.kernel@gmail.com> | 2008-08-20 03:50:15 (GMT) |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-16 14:52:50 (GMT) |
commit | 46926b67fc663d357a1a8174328998a9e49da0b8 (patch) | |
tree | 33870a6c416bbc4d246ecfbf015a78c61943a36d /arch/x86/kernel/irq_64.c | |
parent | 7d94f7ca401dd7f445fda9a971a48aa5427b3e55 (diff) | |
download | linux-46926b67fc663d357a1a8174328998a9e49da0b8.tar.xz |
generic: add irq_desc in function in parameter
So we could remove some duplicated calling to irq_desc
v2: make sure irq_desc in init/main.c is not used without generic_hardirqs
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/irq_64.c')
-rw-r--r-- | arch/x86/kernel/irq_64.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c index a3e3633..f58b995 100644 --- a/arch/x86/kernel/irq_64.c +++ b/arch/x86/kernel/irq_64.c @@ -189,6 +189,7 @@ u64 arch_irq_stat(void) asmlinkage unsigned int do_IRQ(struct pt_regs *regs) { struct pt_regs *old_regs = set_irq_regs(regs); + struct irq_desc *desc; /* high bit used in ret_from_ code */ unsigned vector = ~regs->orig_ax; @@ -202,8 +203,9 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs) stack_overflow_check(regs); #endif - if (likely(__irq_to_desc(irq))) - generic_handle_irq(irq); + desc = __irq_to_desc(irq); + if (likely(desc)) + generic_handle_irq_desc(irq, desc); else { if (!disable_apic) ack_APIC_irq(); |